diff options
author | 2014-09-16 10:27:01 -0700 | |
---|---|---|
committer | 2014-10-07 12:30:12 -0700 | |
commit | 734733d8ad84c1dbd575dd938f752afef57a9cf3 (patch) | |
tree | 591144c1407a54774daf795341e55a3d66f66437 /java/src/com/android/inputmethod/latin/settings/AccountsSettingsFragment.java | |
parent | 37ba3ddd542274819abfc024529ffbcd8f2e1790 (diff) | |
download | latinime-734733d8ad84c1dbd575dd938f752afef57a9cf3.tar.gz latinime-734733d8ad84c1dbd575dd938f752afef57a9cf3.tar.xz latinime-734733d8ad84c1dbd575dd938f752afef57a9cf3.zip |
Skeleton code for user dictionary sync
Bug:17464069
Change-Id: If683b80e882c07fba576959346ae74cd445dd83e
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; + } + } } |