diff --git a/app/src/googleplay/AndroidManifest.xml b/app/src/googleplay/AndroidManifest.xml index a3e0d8ab8..d92eea818 100644 --- a/app/src/googleplay/AndroidManifest.xml +++ b/app/src/googleplay/AndroidManifest.xml @@ -44,11 +44,6 @@ android:name="com.todoroo.astrid.gtasks.auth.GtasksLoginActivity" android:theme="@style/TranslucentDialog"/> - - + + { - Intent intent = new Intent(this, CaldavAccountSettingsActivity.class); - intent.putExtra(CaldavAccountSettingsActivity.EXTRA_CALDAV_DATA, caldavAccount); - startActivityForResult(intent, REQUEST_CALDAV_SETTINGS); - return false; - }); - caldavPreferences.addPreference(accountPreferences); + setTitle(R.string.synchronization); + //noinspection ConstantConditions + if (BuildConfig.FLAVOR.equals("googleplay")) { + addPreferencesFromResource(R.xml.preferences_google_tasks); } - Preference addCaldavAccount = new Preference(this); - addCaldavAccount.setKey(KEY_ADD_CALDAV); - addCaldavAccount.setTitle(R.string.add_account); - caldavPreferences.addPreference(addCaldavAccount); - PreferenceCategory googleTaskPreferences = - (PreferenceCategory) findPreference(getString(R.string.gtasks_GPr_header)); - for (GoogleTaskAccount googleTaskAccount : googleTaskListDao.getAccounts()) { - String account = googleTaskAccount.getAccount(); - Preference accountPreferences = new Preference(this); - accountPreferences.setTitle(account); - accountPreferences.setSummary(googleTaskAccount.getError()); - accountPreferences.setOnPreferenceClickListener( - preference -> { - dialogBuilder - .newDialog() - .setTitle(account) - .setItems( - asList(getString(R.string.reinitialize_account), getString(R.string.logout)), - (dialog, which) -> { - if (which == 0) { - addGoogleTaskAccount(); - } else { - logoutConfirmation(googleTaskAccount); - } - }) - .showThemedListView(); - return false; - }); - googleTaskPreferences.addPreference(accountPreferences); - } - Preference addGoogleTaskAccount = new Preference(this); - addGoogleTaskAccount.setKey(KEY_ADD_GOOGLE_TASKS); - addGoogleTaskAccount.setTitle(R.string.add_account); - googleTaskPreferences.addPreference(addGoogleTaskAccount); + addPreferencesFromResource(R.xml.preferences_synchronization); findPreference(getString(R.string.p_background_sync_unmetered_only)) .setOnPreferenceChangeListener( @@ -163,19 +119,94 @@ public class SynchronizationPreferences extends InjectingPreferenceActivity { protected void onResume() { super.onResume(); - Preference addCaldavAccount = findPreference(KEY_ADD_CALDAV); - Preference addGoogleTasks = findPreference(KEY_ADD_GOOGLE_TASKS); - if (inventory.hasPro()) { - addCaldavAccount.setSummary(null); - addGoogleTasks.setSummary(null); - addCaldavAccount.setOnPreferenceClickListener( + //noinspection ConstantConditions + if (BuildConfig.FLAVOR.equals("googleplay")) { + addGoogleTasksAccounts(); + } + + addCaldavAccounts(); + } + + private void addGoogleTasksAccounts() { + PreferenceCategory googleTaskPreferences = + (PreferenceCategory) findPreference(getString(R.string.gtasks_GPr_header)); + googleTaskPreferences.removeAll(); + for (GoogleTaskAccount googleTaskAccount : googleTaskListDao.getAccounts()) { + String account = googleTaskAccount.getAccount(); + Preference accountPreferences = new Preference(this); + accountPreferences.setTitle(account); + accountPreferences.setSummary(googleTaskAccount.getError()); + accountPreferences.setOnPreferenceClickListener( preference -> { - addCaldavAccount(); + dialogBuilder + .newDialog() + .setTitle(account) + .setItems( + asList(getString(R.string.reinitialize_account), getString(R.string.logout)), + (dialog, which) -> { + if (which == 0) { + addGoogleTaskAccount(); + } else { + logoutConfirmation(googleTaskAccount); + } + }) + .showThemedListView(); + return false; + }); + googleTaskPreferences.addPreference(accountPreferences); + } + Preference addGoogleTaskAccount = new Preference(this); + addGoogleTaskAccount.setKey(KEY_ADD_GOOGLE_TASKS); + addGoogleTaskAccount.setTitle(R.string.add_account); + if (inventory.hasPro() || googleTaskListDao.getAccounts().isEmpty()) { + addGoogleTaskAccount.setOnPreferenceClickListener(preference -> { + addGoogleTaskAccount(); + return false; + }); + } else { + addGoogleTaskAccount.setSummary(R.string.requires_pro_subscription); + addGoogleTaskAccount.setOnPreferenceClickListener(preference -> { + startActivityForResult( + new Intent(this, PurchaseActivity.class), REQUEST_GOOGLE_TASKS_SUBSCRIBE); + return false; + }); + } + googleTaskPreferences.addPreference(addGoogleTaskAccount); + } + + private void addGoogleTaskAccount() { + if (!playServices.refreshAndCheck()) { + playServices.resolve(this); + } else if (permissionRequestor.requestAccountPermissions()) { + requestLogin(); + } + } + + private void addCaldavAccounts() { + PreferenceCategory caldavPreferences = + (PreferenceCategory) findPreference(getString(R.string.CalDAV)); + caldavPreferences.removeAll(); + for (CaldavAccount caldavAccount : caldavDao.getAccounts()) { + Preference accountPreferences = new Preference(this); + accountPreferences.setTitle(caldavAccount.getName()); + accountPreferences.setSummary(caldavAccount.getError()); + accountPreferences.setOnPreferenceClickListener( + preference -> { + Intent intent = new Intent(this, CaldavAccountSettingsActivity.class); + intent.putExtra(CaldavAccountSettingsActivity.EXTRA_CALDAV_DATA, caldavAccount); + startActivityForResult(intent, REQUEST_CALDAV_SETTINGS); return false; }); - addGoogleTasks.setOnPreferenceClickListener( + caldavPreferences.addPreference(accountPreferences); + } + Preference addCaldavAccount = new Preference(this); + addCaldavAccount.setKey(KEY_ADD_CALDAV); + addCaldavAccount.setTitle(R.string.add_account); + + if (inventory.hasPro()) { + addCaldavAccount.setOnPreferenceClickListener( preference -> { - addGoogleTaskAccount(); + addCaldavAccount(); return false; }); } else { @@ -186,35 +217,8 @@ public class SynchronizationPreferences extends InjectingPreferenceActivity { new Intent(this, PurchaseActivity.class), REQUEST_CALDAV_SUBSCRIBE); return false; }); - if (googleTaskListDao.getAccounts().isEmpty()) { - addGoogleTasks.setSummary(null); - addGoogleTasks.setOnPreferenceClickListener( - preference -> { - addGoogleTaskAccount(); - return false; - }); - } else { - addGoogleTasks.setSummary(R.string.requires_pro_subscription); - addGoogleTasks.setOnPreferenceClickListener( - preference -> { - startActivityForResult( - new Intent(this, PurchaseActivity.class), REQUEST_GOOGLE_TASKS_SUBSCRIBE); - return false; - }); - } - } - - if (!permissionChecker.canAccessAccounts()) { - // TODO: clear google task preference category - } - } - - private void addGoogleTaskAccount() { - if (!playServices.refreshAndCheck()) { - playServices.resolve(this); - } else if (permissionRequestor.requestAccountPermissions()) { - requestLogin(); } + caldavPreferences.addPreference(addCaldavAccount); } private void addCaldavAccount() { diff --git a/app/src/main/res/xml/preferences_google_tasks.xml b/app/src/main/res/xml/preferences_google_tasks.xml new file mode 100644 index 000000000..e29e4c07e --- /dev/null +++ b/app/src/main/res/xml/preferences_google_tasks.xml @@ -0,0 +1,12 @@ + + + + + + diff --git a/app/src/main/res/xml/preferences_synchronization.xml b/app/src/main/res/xml/preferences_synchronization.xml index 51f1e6129..fd14fdba0 100644 --- a/app/src/main/res/xml/preferences_synchronization.xml +++ b/app/src/main/res/xml/preferences_synchronization.xml @@ -3,12 +3,7 @@ ** ** See the file "LICENSE" for the full license governing this code. --> - - - +