From b2d9795cda0dd88a34becb2c49a2501a87366989 Mon Sep 17 00:00:00 2001 From: Alexandra Gherghina Date: Tue, 11 Nov 2014 11:47:54 +0000 Subject: [PATCH] Reorganize sync state menu options for accounts settings Fixes inverted condition for displaying the buttons, updates at the right time and removes the useless dependence on mFirstAccount Bug: 18310988 Change-Id: Id55e11a210aa58a10ee9613891470862d42b65ad --- .../settings/accounts/AccountSyncSettings.java | 3 ++- .../accounts/ManageAccountsSettings.java | 16 +++++++--------- 2 files changed, 9 insertions(+), 10 deletions(-) diff --git a/src/com/android/settings/accounts/AccountSyncSettings.java b/src/com/android/settings/accounts/AccountSyncSettings.java index d51610d5bc4..12a63e6cb4c 100644 --- a/src/com/android/settings/accounts/AccountSyncSettings.java +++ b/src/com/android/settings/accounts/AccountSyncSettings.java @@ -258,7 +258,7 @@ public class AccountSyncSettings extends AccountPreferenceBase { public void onPrepareOptionsMenu(Menu menu) { super.onPrepareOptionsMenu(menu); // Note that this also counts accounts that are not currently displayed - boolean syncActive = ContentResolver.getCurrentSyncsAsUser( + boolean syncActive = !ContentResolver.getCurrentSyncsAsUser( mUserHandle.getIdentifier()).isEmpty(); menu.findItem(MENU_SYNC_NOW_ID).setVisible(!syncActive); menu.findItem(MENU_SYNC_CANCEL_ID).setVisible(syncActive); @@ -367,6 +367,7 @@ public class AccountSyncSettings extends AccountPreferenceBase { protected void onSyncStateUpdated() { if (!isResumed()) return; setFeedsState(); + getActivity().invalidateOptionsMenu(); } private void setFeedsState() { diff --git a/src/com/android/settings/accounts/ManageAccountsSettings.java b/src/com/android/settings/accounts/ManageAccountsSettings.java index 00a7a7f2037..ef3e40b24a2 100644 --- a/src/com/android/settings/accounts/ManageAccountsSettings.java +++ b/src/com/android/settings/accounts/ManageAccountsSettings.java @@ -28,7 +28,6 @@ import android.content.SyncInfo; import android.content.SyncStatusInfo; import android.content.pm.ActivityInfo; import android.content.pm.ApplicationInfo; -import android.content.pm.PackageInfo; import android.content.pm.PackageManager; import android.content.pm.PackageManager.NameNotFoundException; import android.content.pm.ResolveInfo; @@ -84,6 +83,7 @@ public class ManageAccountsSettings extends AccountPreferenceBase // If an account type is set, then show only accounts of that type private String mAccountType; // Temporary hack, to deal with backward compatibility + // mFirstAccount is used for the injected preferences private Account mFirstAccount; @Override @@ -170,11 +170,9 @@ public class ManageAccountsSettings extends AccountPreferenceBase @Override public void onCreateOptionsMenu(Menu menu, MenuInflater inflater) { - MenuItem syncNow = menu.add(0, MENU_SYNC_NOW_ID, 0, - getString(R.string.sync_menu_sync_now)) + menu.add(0, MENU_SYNC_NOW_ID, 0, getString(R.string.sync_menu_sync_now)) .setIcon(R.drawable.ic_menu_refresh_holo_dark); - MenuItem syncCancel = menu.add(0, MENU_SYNC_CANCEL_ID, 0, - getString(R.string.sync_menu_sync_cancel)) + menu.add(0, MENU_SYNC_CANCEL_ID, 0, getString(R.string.sync_menu_sync_cancel)) .setIcon(com.android.internal.R.drawable.ic_menu_close_clear_cancel); super.onCreateOptionsMenu(menu, inflater); } @@ -182,10 +180,10 @@ public class ManageAccountsSettings extends AccountPreferenceBase @Override public void onPrepareOptionsMenu(Menu menu) { super.onPrepareOptionsMenu(menu); - boolean syncActive = ContentResolver.getCurrentSyncsAsUser( + boolean syncActive = !ContentResolver.getCurrentSyncsAsUser( mUserHandle.getIdentifier()).isEmpty(); - menu.findItem(MENU_SYNC_NOW_ID).setVisible(!syncActive && mFirstAccount != null); - menu.findItem(MENU_SYNC_CANCEL_ID).setVisible(syncActive && mFirstAccount != null); + menu.findItem(MENU_SYNC_NOW_ID).setVisible(!syncActive); + menu.findItem(MENU_SYNC_CANCEL_ID).setVisible(syncActive); } @Override @@ -233,6 +231,7 @@ public class ManageAccountsSettings extends AccountPreferenceBase @Override protected void onSyncStateUpdated() { showSyncState(); + getActivity().invalidateOptionsMenu(); } /** @@ -380,7 +379,6 @@ public class ManageAccountsSettings extends AccountPreferenceBase getPreferenceScreen().addPreference(preference); if (mFirstAccount == null) { mFirstAccount = account; - getActivity().invalidateOptionsMenu(); } } }