diff options
Diffstat (limited to 'java/src/com/android/inputmethod/latin/settings/AccountsSettingsFragment.java')
-rw-r--r-- | java/src/com/android/inputmethod/latin/settings/AccountsSettingsFragment.java | 58 |
1 files changed, 57 insertions, 1 deletions
diff --git a/java/src/com/android/inputmethod/latin/settings/AccountsSettingsFragment.java b/java/src/com/android/inputmethod/latin/settings/AccountsSettingsFragment.java index ffb0ad7bf..a02cb5539 100644 --- a/java/src/com/android/inputmethod/latin/settings/AccountsSettingsFragment.java +++ b/java/src/com/android/inputmethod/latin/settings/AccountsSettingsFragment.java @@ -32,6 +32,7 @@ import com.android.inputmethod.latin.R; import com.android.inputmethod.latin.SubtypeSwitcher; import com.android.inputmethod.latin.accounts.LoginAccountUtils; import com.android.inputmethod.latin.define.ProductionFlags; +import com.android.inputmethod.latin.sync.BeanstalkManager; import javax.annotation.Nullable; @@ -42,14 +43,17 @@ import javax.annotation.Nullable; * <li> Account selection/management for IME * <li> TODO: Sync preferences * <li> TODO: Privacy preferences + * <li> Sync now */ public final class AccountsSettingsFragment extends SubScreenFragment { static final String PREF_ACCCOUNT_SWITCHER = "account_switcher"; + static final String PREF_SYNC_NOW = "pref_beanstalk"; private final DialogInterface.OnClickListener mAccountSelectedListener = new AccountSelectedListener(); private final DialogInterface.OnClickListener mAccountSignedOutListener = new AccountSignedOutListener(); + private final Preference.OnPreferenceClickListener mSyncNowListener = new SyncNowListener(); @Override public void onCreate(final Bundle icicle) { @@ -75,21 +79,39 @@ public final class AccountsSettingsFragment extends SubScreenFragment { } else { removePreference(Settings.PREF_ENABLE_METRICS_LOGGING); } + + if (!ProductionFlags.ENABLE_PERSONAL_DICTIONARY_SYNC) { + removePreference(PREF_SYNC_NOW); + } else { + final Preference syncNowPreference = findPreference(PREF_SYNC_NOW); + if (syncNowPreference != null) { + syncNowPreference.setOnPreferenceClickListener(mSyncNowListener); + } + } } @Override public void onResume() { super.onResume(); - refreshAccountSelection(); + refreshUi(); } @Override public void onSharedPreferenceChanged(final SharedPreferences prefs, final String key) { // TODO: Look at the preference that changed before refreshing the view. + refreshUi(); + } + + private void refreshUi() { refreshAccountSelection(); + refreshSyncNow(); } private void refreshAccountSelection() { + if (!ProductionFlags.ENABLE_ACCOUNT_SIGN_IN) { + return; + } + final String currentAccount = getCurrentlySelectedAccount(); final Preference accountSwitcher = findPreference(PREF_ACCCOUNT_SWITCHER); if (currentAccount == null) { @@ -119,6 +141,29 @@ public final class AccountsSettingsFragment extends SubScreenFragment { // depend on an account. } + /** + * Refreshes the "Sync Now" feature + */ + private void refreshSyncNow() { + if (!ProductionFlags.ENABLE_PERSONAL_DICTIONARY_SYNC) { + return; + } + + final Preference syncNowPreference = findPreference(PREF_SYNC_NOW); + if (syncNowPreference == null) { + return; + } + + final String currentAccount = getCurrentlySelectedAccount(); + if (currentAccount == null) { + syncNowPreference.setEnabled(false); + syncNowPreference.setSummary(R.string.sync_now_summary); + } else { + syncNowPreference.setEnabled(true); + syncNowPreference.setSummary(R.string.sync_now_summary_disabled_signed_out); + } + } + @Nullable private String getCurrentlySelectedAccount() { return getSharedPreferences().getString(Settings.PREF_ACCOUNT_NAME, null); @@ -190,4 +235,15 @@ public final class AccountsSettingsFragment extends SubScreenFragment { .apply(); } } + + /** + * Listener that initates the process of sync in the background. + */ + class SyncNowListener implements Preference.OnPreferenceClickListener { + @Override + public boolean onPreferenceClick(final Preference preference) { + BeanstalkManager.getInstance(getActivity() /* context */).requestSync(); + return true; + } + } } |