diff options
Diffstat (limited to 'java')
4 files changed, 69 insertions, 1 deletions
diff --git a/java/res/values/strings.xml b/java/res/values/strings.xml index 76da5ce3d..6aea637c5 100644 --- a/java/res/values/strings.xml +++ b/java/res/values/strings.xml @@ -56,6 +56,10 @@ <!-- Option for enabling or disabling the split keyboard layout. [CHAR LIMIT=65]--> <string name="enable_split_keyboard">Enable split keyboard</string> + <string name="sync_now_title" translatable="false">Sync Now</string> + <string name="sync_now_summary" translatable="false">Sync your personal dictionary</string> + <string name="sync_now_summary_disabled_signed_out" translatable="false">Select an account to enable sync</string> + <!-- Option name for including other IMEs in the language switch list [CHAR LIMIT=30] --> <string name="include_other_imes_in_language_switch_list">Switch to other input methods</string> <!-- Option summary for including other IMEs in the language switch list [CHAR LIMIT=65] --> diff --git a/java/res/xml/prefs_screen_accounts.xml b/java/res/xml/prefs_screen_accounts.xml index b5d526a3a..003a37ff7 100644 --- a/java/res/xml/prefs_screen_accounts.xml +++ b/java/res/xml/prefs_screen_accounts.xml @@ -34,4 +34,9 @@ android:summary="@string/enable_metrics_logging_summary" android:defaultValue="true" android:persistent="true" /> + + <!-- This preference (acts like a button) enables the user to initiate an one time sync. --> + <Preference android:key="pref_beanstalk" + android:persistent="false" + android:title="@string/sync_now_title" /> </PreferenceScreen> diff --git a/java/src/com/android/inputmethod/latin/LatinIME.java b/java/src/com/android/inputmethod/latin/LatinIME.java index 2be99a90f..77477d2d3 100644 --- a/java/src/com/android/inputmethod/latin/LatinIME.java +++ b/java/src/com/android/inputmethod/latin/LatinIME.java @@ -85,6 +85,7 @@ import com.android.inputmethod.latin.settings.SettingsActivity; import com.android.inputmethod.latin.settings.SettingsValues; import com.android.inputmethod.latin.suggestions.SuggestionStripView; import com.android.inputmethod.latin.suggestions.SuggestionStripViewAccessor; +import com.android.inputmethod.latin.sync.BeanstalkManager; import com.android.inputmethod.latin.touchinputconsumer.GestureConsumer; import com.android.inputmethod.latin.utils.ApplicationUtils; import com.android.inputmethod.latin.utils.CapsModeUtils; @@ -557,6 +558,7 @@ public class LatinIME extends InputMethodService implements KeyboardActionListen AudioAndHapticFeedbackManager.init(this); AccessibilityUtils.init(this); mStatsUtilsManager.onCreate(this /* context */); + BeanstalkManager.getInstance(this /* context */).onCreate(); super.onCreate(); mHandler.onCreate(); @@ -704,6 +706,7 @@ public class LatinIME extends InputMethodService implements KeyboardActionListen unregisterReceiver(mDictionaryPackInstallReceiver); unregisterReceiver(mDictionaryDumpBroadcastReceiver); mStatsUtilsManager.onDestroy(); + BeanstalkManager.getInstance(this /* context */).onDestroy(); super.onDestroy(); } 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; + } + } } |