Merge "Disable the sync now menu while no any synced item" into rvc-dev am: cdaf5d38b5

Change-Id: I6af9222e1a643d9f7cb669ea01fc3918ed4da407
This commit is contained in:
TreeHugger Robot
2020-03-20 15:44:24 +00:00
committed by Automerger Merge Worker
3 changed files with 77 additions and 10 deletions

View File

@@ -66,8 +66,8 @@ public class AccountSyncPreferenceController extends AbstractPreferenceControlle
new SubSettingLauncher(mContext)
.setDestination(AccountSyncSettings.class.getName())
.setArguments(args)
.setSourceMetricsCategory( SettingsEnums.ACCOUNT)
.setTitleRes( R.string.account_sync_title)
.setSourceMetricsCategory(SettingsEnums.ACCOUNT)
.setTitleRes(R.string.account_sync_title)
.launch();
return true;

View File

@@ -42,6 +42,7 @@ import android.view.Menu;
import android.view.MenuInflater;
import android.view.MenuItem;
import androidx.annotation.VisibleForTesting;
import androidx.appcompat.app.AlertDialog;
import androidx.preference.Preference;
@@ -221,9 +222,8 @@ public class AccountSyncSettings extends AccountPreferenceBase {
// Note that this also counts accounts that are not currently displayed
boolean syncActive = !ContentResolver.getCurrentSyncsAsUser(
mUserHandle.getIdentifier()).isEmpty();
menu.findItem(MENU_SYNC_NOW_ID).setVisible(!syncActive);
menu.findItem(MENU_SYNC_NOW_ID).setVisible(!syncActive).setEnabled(enabledSyncNowMenu());
menu.findItem(MENU_SYNC_CANCEL_ID).setVisible(syncActive);
}
@Override
@@ -562,6 +562,23 @@ public class AccountSyncSettings extends AccountPreferenceBase {
return R.string.help_url_accounts;
}
@VisibleForTesting
boolean enabledSyncNowMenu() {
boolean enabled = false;
for (int i = 0, count = getPreferenceScreen().getPreferenceCount(); i < count; i++) {
final Preference pref = getPreferenceScreen().getPreference(i);
if (!(pref instanceof SyncStateSwitchPreference)) {
continue;
}
final SyncStateSwitchPreference syncPref = (SyncStateSwitchPreference) pref;
if (syncPref.isChecked()) {
enabled = true;
break;
}
}
return enabled;
}
private static String formatSyncDate(Context context, Date date) {
return DateUtils.formatDateTime(context, date.getTime(),
DateUtils.FORMAT_SHOW_DATE