From 986213dda5e7319c654ba136f16c3ee36765654d Mon Sep 17 00:00:00 2001 From: Ricki Hirner Date: Wed, 11 Mar 2015 14:01:43 +0100 Subject: [PATCH] Fix Settings rendering issues * fix Settings rendering issues (fixes #459) * version bump to 0.7.1 --- app/src/androidTest/assets/reference.vcf | 2 +- .../at/bitfire/davdroid/TestConstants.java | 2 +- app/src/main/AndroidManifest.xml | 8 +- .../java/at/bitfire/davdroid/Constants.java | 2 +- .../at/bitfire/davdroid/MainActivity.java | 2 +- .../davdroid/syncadapter/AccountSettings.java | 6 +- .../syncadapter/SettingsActivity.java | 73 ------------------- .../davdroid/ui/settings/AccountActivity.java | 43 +++++++++++ .../settings/AccountFragment.java} | 16 ++-- .../ui/settings/SettingsActivity.java | 57 +++++++++++++++ .../settings}/SettingsScopeFragment.java | 11 ++- ...ity_settings.xml => settings_activity.xml} | 4 +- ...ings.xml => settings_account_activity.xml} | 10 +-- ...ttings_scope.xml => settings_activity.xml} | 10 +-- ...t_prefs.xml => settings_account_prefs.xml} | 0 15 files changed, 139 insertions(+), 107 deletions(-) delete mode 100644 app/src/main/java/at/bitfire/davdroid/syncadapter/SettingsActivity.java create mode 100644 app/src/main/java/at/bitfire/davdroid/ui/settings/AccountActivity.java rename app/src/main/java/at/bitfire/davdroid/{syncadapter/SettingsAccountFragment.java => ui/settings/AccountFragment.java} (91%) create mode 100644 app/src/main/java/at/bitfire/davdroid/ui/settings/SettingsActivity.java rename app/src/main/java/at/bitfire/davdroid/{syncadapter => ui/settings}/SettingsScopeFragment.java (81%) rename app/src/main/res/layout-sw720dp/{activity_settings.xml => settings_activity.xml} (87%) rename app/src/main/res/layout/{activity_settings.xml => settings_account_activity.xml} (68%) rename app/src/main/res/layout/{settings_scope.xml => settings_activity.xml} (60%) rename app/src/main/res/xml/{account_prefs.xml => settings_account_prefs.xml} (100%) diff --git a/app/src/androidTest/assets/reference.vcf b/app/src/androidTest/assets/reference.vcf index 401d0791..cfa7759f 100644 --- a/app/src/androidTest/assets/reference.vcf +++ b/app/src/androidTest/assets/reference.vcf @@ -4,7 +4,7 @@ N:Gump;Forrest;Mr. FN:Forrest Gump ORG:Bubba Gump Shrimp Co. TITLE:Shrimp Man -PHOTO;VALUE=URL;TYPE=PNG:http://10.0.0.11:3000/assets/davdroid-logo-192.png +PHOTO;VALUE=URL;TYPE=PNG:http://192.168.0.11:3000/assets/davdroid-logo-192.png TEL;TYPE=WORK,VOICE:(111) 555-1212 TEL;TYPE=HOME,VOICE:(404) 555-1212 ADR;TYPE=WORK:;;100 Waters Edge;Baytown;LA;30314;United States of America diff --git a/app/src/androidTest/java/at/bitfire/davdroid/TestConstants.java b/app/src/androidTest/java/at/bitfire/davdroid/TestConstants.java index 0f7cb842..bb2f4fdb 100644 --- a/app/src/androidTest/java/at/bitfire/davdroid/TestConstants.java +++ b/app/src/androidTest/java/at/bitfire/davdroid/TestConstants.java @@ -14,7 +14,7 @@ import java.net.URISyntaxException; import android.util.Log; public class TestConstants { - public static final String ROBOHYDRA_BASE = "http://10.0.0.11:3000/"; + public static final String ROBOHYDRA_BASE = "http://192.168.0.11:3000/"; public static URI roboHydra; static { diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml index d8cf83a6..2099a5b9 100644 --- a/app/src/main/AndroidManifest.xml +++ b/app/src/main/AndroidManifest.xml @@ -9,7 +9,7 @@ + + diff --git a/app/src/main/java/at/bitfire/davdroid/Constants.java b/app/src/main/java/at/bitfire/davdroid/Constants.java index 320089d3..a84d5789 100644 --- a/app/src/main/java/at/bitfire/davdroid/Constants.java +++ b/app/src/main/java/at/bitfire/davdroid/Constants.java @@ -9,7 +9,7 @@ package at.bitfire.davdroid; public class Constants { public static final String - APP_VERSION = "0.7", + APP_VERSION = "0.7.1", ACCOUNT_TYPE = "bitfire.at.davdroid", WEB_URL_HELP = "https://davdroid.bitfire.at/configuration?pk_campaign=davdroid-app", WEB_URL_VIEW_LOGS = "https://github.com/bitfireAT/davdroid/wiki/How-to-view-the-logs"; diff --git a/app/src/main/java/at/bitfire/davdroid/MainActivity.java b/app/src/main/java/at/bitfire/davdroid/MainActivity.java index c5524280..d64221f4 100644 --- a/app/src/main/java/at/bitfire/davdroid/MainActivity.java +++ b/app/src/main/java/at/bitfire/davdroid/MainActivity.java @@ -21,7 +21,7 @@ import android.view.View; import android.widget.TextView; import at.bitfire.davdroid.syncadapter.AddAccountActivity; -import at.bitfire.davdroid.syncadapter.SettingsActivity; +import at.bitfire.davdroid.ui.settings.SettingsActivity; public class MainActivity extends Activity { diff --git a/app/src/main/java/at/bitfire/davdroid/syncadapter/AccountSettings.java b/app/src/main/java/at/bitfire/davdroid/syncadapter/AccountSettings.java index 2636242b..99e38fdd 100644 --- a/app/src/main/java/at/bitfire/davdroid/syncadapter/AccountSettings.java +++ b/app/src/main/java/at/bitfire/davdroid/syncadapter/AccountSettings.java @@ -89,15 +89,15 @@ public class AccountSettings { public String getUserName() { return accountManager.getUserData(account, KEY_USERNAME); } - void setUserName(String userName) { accountManager.setUserData(account, KEY_USERNAME, userName); } + public void setUserName(String userName) { accountManager.setUserData(account, KEY_USERNAME, userName); } public String getPassword() { return accountManager.getPassword(account); } - void setPassword(String password) { accountManager.setPassword(account, password); } + public void setPassword(String password) { accountManager.setPassword(account, password); } public boolean getPreemptiveAuth() { return Boolean.parseBoolean(accountManager.getUserData(account, KEY_AUTH_PREEMPTIVE)); } - void setPreemptiveAuth(boolean preemptive) { accountManager.setUserData(account, KEY_AUTH_PREEMPTIVE, Boolean.toString(preemptive)); } + public void setPreemptiveAuth(boolean preemptive) { accountManager.setUserData(account, KEY_AUTH_PREEMPTIVE, Boolean.toString(preemptive)); } // sync. settings diff --git a/app/src/main/java/at/bitfire/davdroid/syncadapter/SettingsActivity.java b/app/src/main/java/at/bitfire/davdroid/syncadapter/SettingsActivity.java deleted file mode 100644 index cf2d8979..00000000 --- a/app/src/main/java/at/bitfire/davdroid/syncadapter/SettingsActivity.java +++ /dev/null @@ -1,73 +0,0 @@ -/* - * Copyright (c) 2013 – 2015 Ricki Hirner (bitfire web engineering). - * All rights reserved. This program and the accompanying materials - * are made available under the terms of the GNU Public License v3.0 - * which accompanies this distribution, and is available at - * http://www.gnu.org/licenses/gpl.html - */ - -package at.bitfire.davdroid.syncadapter; - -import android.accounts.Account; -import android.app.Activity; -import android.app.Fragment; -import android.app.FragmentManager; -import android.app.FragmentTransaction; -import android.os.Bundle; -import android.util.Log; - -import at.bitfire.davdroid.R; - -public class SettingsActivity extends Activity { - private final static String KEY_SELECTED_ACCOUNT = "selected_account"; - - protected Account selectedAccount; - boolean tabletLayout; - - @Override - protected void onCreate(Bundle savedInstanceState) { - super.onCreate(savedInstanceState); - - setContentView(R.layout.activity_settings); - - tabletLayout = findViewById(R.id.right_pane) != null; - if (!tabletLayout) - getFragmentManager().beginTransaction() - .add(R.id.content_pane, new SettingsScopeFragment()) - .commit(); - - if (savedInstanceState != null) { - selectedAccount = savedInstanceState.getParcelable(KEY_SELECTED_ACCOUNT); - if (selectedAccount != null) - showAccountSettings(selectedAccount); - } - } - - @Override - protected void onSaveInstanceState(Bundle outState) { - outState.putParcelable(KEY_SELECTED_ACCOUNT, selectedAccount); - super.onSaveInstanceState(outState); - } - - void showAccountSettings(Account account) { - selectedAccount = account; - - FragmentManager fm = getFragmentManager(); - Fragment settingsFragment = new SettingsAccountFragment(); - Bundle args = new Bundle(); - args.putParcelable(SettingsAccountFragment.KEY_ACCOUNT, account); - settingsFragment.setArguments(args); - - FragmentTransaction ft = fm - .beginTransaction() - .setTransition(FragmentTransaction.TRANSIT_FRAGMENT_OPEN); - - if (tabletLayout) - ft .replace(R.id.right_pane, settingsFragment); - else // phone layout - ft .replace(R.id.content_pane, settingsFragment) - .addToBackStack(null); - - ft.commit(); - } -} diff --git a/app/src/main/java/at/bitfire/davdroid/ui/settings/AccountActivity.java b/app/src/main/java/at/bitfire/davdroid/ui/settings/AccountActivity.java new file mode 100644 index 00000000..d31f2022 --- /dev/null +++ b/app/src/main/java/at/bitfire/davdroid/ui/settings/AccountActivity.java @@ -0,0 +1,43 @@ +/* + * Copyright (c) 2013 – 2015 Ricki Hirner (bitfire web engineering). + * All rights reserved. This program and the accompanying materials + * are made available under the terms of the GNU Public License v3.0 + * which accompanies this distribution, and is available at + * http://www.gnu.org/licenses/gpl.html + */ + +package at.bitfire.davdroid.ui.settings; + +import android.accounts.Account; +import android.app.Activity; +import android.app.FragmentManager; +import android.os.Bundle; +import android.util.Log; + +import at.bitfire.davdroid.R; + +public class AccountActivity extends Activity { + static final String EXTRA_ACCOUNT = "account"; + + @Override + protected void onCreate(Bundle savedInstanceState) { + super.onCreate(savedInstanceState); + + setContentView(R.layout.settings_account_activity); + + final FragmentManager fm = getFragmentManager(); + + AccountFragment fragment = (AccountFragment)fm.findFragmentById(R.id.account_fragment); + if (fragment == null) { + fragment = new AccountFragment(); + final Bundle args = new Bundle(1); + Account account = getIntent().getExtras().getParcelable(EXTRA_ACCOUNT); + args.putParcelable(AccountFragment.ARG_ACCOUNT, account); + fragment.setArguments(args); + + getFragmentManager().beginTransaction() + .add(R.id.account_fragment, fragment) + .commit(); + } + } +} diff --git a/app/src/main/java/at/bitfire/davdroid/syncadapter/SettingsAccountFragment.java b/app/src/main/java/at/bitfire/davdroid/ui/settings/AccountFragment.java similarity index 91% rename from app/src/main/java/at/bitfire/davdroid/syncadapter/SettingsAccountFragment.java rename to app/src/main/java/at/bitfire/davdroid/ui/settings/AccountFragment.java index 685aef04..cbaba0ff 100644 --- a/app/src/main/java/at/bitfire/davdroid/syncadapter/SettingsAccountFragment.java +++ b/app/src/main/java/at/bitfire/davdroid/ui/settings/AccountFragment.java @@ -6,11 +6,9 @@ * http://www.gnu.org/licenses/gpl.html */ -package at.bitfire.davdroid.syncadapter; +package at.bitfire.davdroid.ui.settings; import android.accounts.Account; -import android.accounts.AccountManager; -import android.content.SharedPreferences; import android.os.Bundle; import android.preference.CheckBoxPreference; import android.preference.EditTextPreference; @@ -19,19 +17,21 @@ import android.preference.Preference; import android.preference.PreferenceFragment; import at.bitfire.davdroid.R; +import at.bitfire.davdroid.syncadapter.AccountSettings; +import lombok.Setter; -public class SettingsAccountFragment extends PreferenceFragment { - final static String KEY_ACCOUNT = "account"; +public class AccountFragment extends PreferenceFragment { + final static String ARG_ACCOUNT = "account"; - protected Account account; + Account account; @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); - addPreferencesFromResource(R.xml.account_prefs); + addPreferencesFromResource(R.xml.settings_account_prefs); - account = getArguments().getParcelable(KEY_ACCOUNT); + account = getArguments().getParcelable(ARG_ACCOUNT); readFromAccount(); } diff --git a/app/src/main/java/at/bitfire/davdroid/ui/settings/SettingsActivity.java b/app/src/main/java/at/bitfire/davdroid/ui/settings/SettingsActivity.java new file mode 100644 index 00000000..1c333854 --- /dev/null +++ b/app/src/main/java/at/bitfire/davdroid/ui/settings/SettingsActivity.java @@ -0,0 +1,57 @@ +/* + * Copyright (c) 2013 – 2015 Ricki Hirner (bitfire web engineering). + * All rights reserved. This program and the accompanying materials + * are made available under the terms of the GNU Public License v3.0 + * which accompanies this distribution, and is available at + * http://www.gnu.org/licenses/gpl.html + */ + +package at.bitfire.davdroid.ui.settings; + +import android.accounts.Account; +import android.app.Activity; +import android.app.FragmentTransaction; +import android.app.ListFragment; +import android.content.Intent; +import android.os.Bundle; +import android.widget.ListView; + +import at.bitfire.davdroid.R; + +public class SettingsActivity extends Activity { + private final static String KEY_SELECTED_ACCOUNT = "selected_account"; + + boolean tabletLayout; + + @Override + protected void onCreate(Bundle savedInstanceState) { + super.onCreate(savedInstanceState); + + setContentView(R.layout.settings_activity); + + tabletLayout = findViewById(R.id.right_pane) != null; + if (tabletLayout) { + SettingsScopeFragment scope = (SettingsScopeFragment)getFragmentManager().findFragmentById(R.id.settings_scope); + scope.setLayout(true); + } + } + + void showAccountSettings(Account account) { + if (tabletLayout) { + AccountFragment fragment = new AccountFragment(); + + Bundle args = new Bundle(1); + args.putParcelable(AccountFragment.ARG_ACCOUNT, account); + fragment.setArguments(args); + + getFragmentManager().beginTransaction() + .setTransition(FragmentTransaction.TRANSIT_FRAGMENT_OPEN) + .replace(R.id.right_pane, fragment) + .commit(); + } else { // phone layout + Intent intent = new Intent(getApplicationContext(), AccountActivity.class); + intent.putExtra(AccountActivity.EXTRA_ACCOUNT, account); + startActivity(intent); + } + } +} diff --git a/app/src/main/java/at/bitfire/davdroid/syncadapter/SettingsScopeFragment.java b/app/src/main/java/at/bitfire/davdroid/ui/settings/SettingsScopeFragment.java similarity index 81% rename from app/src/main/java/at/bitfire/davdroid/syncadapter/SettingsScopeFragment.java rename to app/src/main/java/at/bitfire/davdroid/ui/settings/SettingsScopeFragment.java index 0686374c..f43c556f 100644 --- a/app/src/main/java/at/bitfire/davdroid/syncadapter/SettingsScopeFragment.java +++ b/app/src/main/java/at/bitfire/davdroid/ui/settings/SettingsScopeFragment.java @@ -6,7 +6,7 @@ * http://www.gnu.org/licenses/gpl.html */ -package at.bitfire.davdroid.syncadapter; +package at.bitfire.davdroid.ui.settings; import android.accounts.Account; import android.accounts.AccountManager; @@ -26,17 +26,22 @@ public class SettingsScopeFragment extends ListFragment { @Override public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { - final AccountManager manager = AccountManager.get(this.getActivity()); + final AccountManager manager = AccountManager.get(getActivity()); accounts = manager.getAccountsByType(Constants.ACCOUNT_TYPE); final String[] accountNames = new String[accounts.length]; for (int i = 0; i < accounts.length; i++) accountNames[i] = accounts[i].name; - setListAdapter(new ArrayAdapter(this.getActivity(), android.R.layout.simple_list_item_activated_1, accountNames)); + setListAdapter(new ArrayAdapter(getActivity(), android.R.layout.simple_list_item_activated_1, accountNames)); return super.onCreateView(inflater, container, savedInstanceState); } + public void setLayout(boolean tabletLayout) { + if (tabletLayout) + getListView().setChoiceMode(ListView.CHOICE_MODE_SINGLE); + } + @Override public void onViewCreated(View view, Bundle savedInstanceState) { super.onViewCreated(view, savedInstanceState); diff --git a/app/src/main/res/layout-sw720dp/activity_settings.xml b/app/src/main/res/layout-sw720dp/settings_activity.xml similarity index 87% rename from app/src/main/res/layout-sw720dp/activity_settings.xml rename to app/src/main/res/layout-sw720dp/settings_activity.xml index 1cf7aa2b..d1f63173 100644 --- a/app/src/main/res/layout-sw720dp/activity_settings.xml +++ b/app/src/main/res/layout-sw720dp/settings_activity.xml @@ -16,8 +16,8 @@ + android:id="@+id/settings_scope" + android:name="at.bitfire.davdroid.ui.settings.SettingsScopeFragment" /> - - \ No newline at end of file + android:layout_width="match_parent" + android:layout_height="match_parent" + android:id="@+id/account_fragment" /> diff --git a/app/src/main/res/layout/settings_scope.xml b/app/src/main/res/layout/settings_activity.xml similarity index 60% rename from app/src/main/res/layout/settings_scope.xml rename to app/src/main/res/layout/settings_activity.xml index a749e777..4423b86e 100644 --- a/app/src/main/res/layout/settings_scope.xml +++ b/app/src/main/res/layout/settings_activity.xml @@ -7,8 +7,8 @@ ~ http://www.gnu.org/licenses/gpl.html --> - + diff --git a/app/src/main/res/xml/account_prefs.xml b/app/src/main/res/xml/settings_account_prefs.xml similarity index 100% rename from app/src/main/res/xml/account_prefs.xml rename to app/src/main/res/xml/settings_account_prefs.xml