diff --git a/java/AndroidManifest.xml b/java/AndroidManifest.xml
index 5d8ef43f5..6f4e602ce 100644
--- a/java/AndroidManifest.xml
+++ b/java/AndroidManifest.xml
@@ -86,7 +86,7 @@
@@ -95,7 +95,7 @@
@@ -103,7 +103,7 @@
@@ -150,7 +150,7 @@
diff --git a/java/res/values-v21/platform-theme.xml b/java/res/values-v20/platform-theme.xml
similarity index 51%
rename from java/res/values-v21/platform-theme.xml
rename to java/res/values-v20/platform-theme.xml
index a49e36459..52e7f3521 100644
--- a/java/res/values-v21/platform-theme.xml
+++ b/java/res/values-v20/platform-theme.xml
@@ -18,21 +18,9 @@
*/
-->
+
+
-
-
-
-
diff --git a/java/res/values/keyboard-themes.xml b/java/res/values/keyboard-themes.xml
index 28a34c315..a06082c6e 100644
--- a/java/res/values/keyboard-themes.xml
+++ b/java/res/values/keyboard-themes.xml
@@ -20,14 +20,13 @@
-
- - @string/keyboard_theme_material_dark
- - @string/keyboard_theme_holo_white
- - @string/keyboard_theme_holo_blue
+
+ - Material
+ - @string/keyboard_color_scheme_white
+ - @string/keyboard_color_scheme_blue
-
- 3
- 2
- 0
diff --git a/java/res/values/platform-theme.xml b/java/res/values/platform-theme.xml
index e68859712..8e131a2b0 100644
--- a/java/res/values/platform-theme.xml
+++ b/java/res/values/platform-theme.xml
@@ -20,6 +20,5 @@
-
diff --git a/java/res/values/strings.xml b/java/res/values/strings.xml
index 9ec3f469c..884911565 100644
--- a/java/res/values/strings.xml
+++ b/java/res/values/strings.xml
@@ -36,18 +36,22 @@
Popup on keypress
-
- Input preferences
-
- Appearance
-
- Multi lingual options
-
- Gesture typing preferences
-
- Text correction
-
- Advanced
+
+ General
+
+
+ Text correction
+
+
+ Gesture typing
+
+
+ Other options
+
+
+ Advanced settings
+
+ Options for experts
Switch to other input methods
@@ -291,16 +295,12 @@ mobile devices. [CHAR LIMIT=25] -->
Emoji
-
- Keyboard theme
-
- Holo White
-
- Holo Blue
-
- Material Dark
-
- Material Light
+
+ Color scheme
+
+ White
+
+ Blue
Custom input styles
diff --git a/java/res/xml/prefs.xml b/java/res/xml/prefs.xml
index cb951d264..0e9c16190 100644
--- a/java/res/xml/prefs.xml
+++ b/java/res/xml/prefs.xml
@@ -18,117 +18,39 @@
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:latin="http://schemas.android.com/apk/res/com.android.inputmethod.latin"
android:key="english_ime_settings">
-
-
+
-
-
-
+
-
+
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
+
@@ -145,12 +67,10 @@
android:value="@string/dictionary_pack_client_id" />
-
-
-
+
-
+
+
+
+
+
+
+
+
-
-
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
-
+
diff --git a/java/res/xml/prefs_for_debug.xml b/java/res/xml/prefs_for_debug.xml
index be4c8b3e1..0bcc5cbe4 100644
--- a/java/res/xml/prefs_for_debug.xml
+++ b/java/res/xml/prefs_for_debug.xml
@@ -20,26 +20,20 @@
android:title="@string/prefs_debug_mode"
android:key="english_ime_debug_settings"
>
-
-
-
-
+ xmlns:android="http://schemas.android.com/apk/res/android">
+
diff --git a/java/src/com/android/inputmethod/latin/settings/DebugSettings.java b/java/src/com/android/inputmethod/latin/settings/DebugSettings.java
index c17e86892..845ddb377 100644
--- a/java/src/com/android/inputmethod/latin/settings/DebugSettings.java
+++ b/java/src/com/android/inputmethod/latin/settings/DebugSettings.java
@@ -21,13 +21,14 @@ import android.content.SharedPreferences;
import android.content.res.Resources;
import android.os.Bundle;
import android.os.Process;
+import android.preference.CheckBoxPreference;
import android.preference.Preference;
import android.preference.Preference.OnPreferenceClickListener;
import android.preference.PreferenceFragment;
import android.preference.PreferenceGroup;
import android.preference.PreferenceScreen;
-import android.preference.TwoStatePreference;
+import com.android.inputmethod.latin.Dictionary;
import com.android.inputmethod.latin.DictionaryDumpBroadcastReceiver;
import com.android.inputmethod.latin.DictionaryFacilitator;
import com.android.inputmethod.latin.R;
@@ -56,7 +57,7 @@ public final class DebugSettings extends PreferenceFragment
public static final String PREF_KEY_LONGPRESS_TIMEOUT = "pref_key_longpress_timeout";
private boolean mServiceNeedsRestart = false;
- private TwoStatePreference mDebugMode;
+ private CheckBoxPreference mDebugMode;
@Override
public void onCreate(Bundle icicle) {
@@ -106,7 +107,7 @@ public final class DebugSettings extends PreferenceFragment
res, R.fraction.config_key_preview_dismiss_end_scale));
mServiceNeedsRestart = false;
- mDebugMode = (TwoStatePreference) findPreference(PREF_DEBUG_MODE);
+ mDebugMode = (CheckBoxPreference) findPreference(PREF_DEBUG_MODE);
updateDebugMode();
}
diff --git a/java/src/com/android/inputmethod/latin/settings/Settings.java b/java/src/com/android/inputmethod/latin/settings/Settings.java
index fb1a210bb..235847799 100644
--- a/java/src/com/android/inputmethod/latin/settings/Settings.java
+++ b/java/src/com/android/inputmethod/latin/settings/Settings.java
@@ -39,14 +39,8 @@ import java.util.concurrent.locks.ReentrantLock;
public final class Settings implements SharedPreferences.OnSharedPreferenceChangeListener {
private static final String TAG = Settings.class.getSimpleName();
- // Settings screens
- public static final String SCREEN_INPUT = "screen_input";
- public static final String SCREEN_MULTI_LINGUAL = "screen_multi_lingual";
- public static final String SCREEN_GESTURE = "screen_gesture";
- public static final String SCREEN_CORRECTION = "screen_correction";
- public static final String SCREEN_ADVANCED = "screen_advanced";
- public static final String SCREEN_DEBUG = "screen_debug";
// In the same order as xml/prefs.xml
+ public static final String PREF_GENERAL_SETTINGS = "general_settings";
public static final String PREF_AUTO_CAP = "auto_cap";
public static final String PREF_VIBRATE_ON = "vibrate_on";
public static final String PREF_SOUND_ON = "sound_on";
@@ -54,10 +48,13 @@ public final class Settings implements SharedPreferences.OnSharedPreferenceChang
// PREF_VOICE_MODE_OBSOLETE is obsolete. Use PREF_VOICE_INPUT_KEY instead.
public static final String PREF_VOICE_MODE_OBSOLETE = "voice_mode";
public static final String PREF_VOICE_INPUT_KEY = "pref_voice_input_key";
+ public static final String PREF_CORRECTION_SETTINGS = "correction_settings";
public static final String PREF_EDIT_PERSONAL_DICTIONARY = "edit_personal_dictionary";
public static final String PREF_CONFIGURE_DICTIONARIES_KEY = "configure_dictionaries_key";
public static final String PREF_AUTO_CORRECTION_THRESHOLD = "auto_correction_threshold";
public static final String PREF_SHOW_SUGGESTIONS_SETTING = "show_suggestions_setting";
+ public static final String PREF_MISC_SETTINGS = "misc_settings";
+ public static final String PREF_ADVANCED_SETTINGS = "pref_advanced_settings";
public static final String PREF_KEY_USE_CONTACTS_DICT = "pref_key_use_contacts_dict";
public static final String PREF_KEY_USE_PERSONALIZED_DICTS = "pref_key_use_personalized_dicts";
public static final String PREF_KEY_USE_DOUBLE_SPACE_PERIOD =
@@ -78,6 +75,7 @@ public final class Settings implements SharedPreferences.OnSharedPreferenceChang
public static final String PREF_KEY_PREVIEW_POPUP_DISMISS_DELAY =
"pref_key_preview_popup_dismiss_delay";
public static final String PREF_BIGRAM_PREDICTIONS = "next_word_prediction";
+ public static final String PREF_GESTURE_SETTINGS = "gesture_typing_settings";
public static final String PREF_GESTURE_INPUT = "gesture_input";
public static final String PREF_VIBRATION_DURATION_SETTINGS =
"pref_vibration_duration_settings";
@@ -91,6 +89,7 @@ public final class Settings implements SharedPreferences.OnSharedPreferenceChang
public static final String PREF_INPUT_LANGUAGE = "input_language";
public static final String PREF_SELECTED_LANGUAGES = "selected_languages";
+ public static final String PREF_DEBUG_SETTINGS = "debug_settings";
public static final String PREF_KEY_IS_INTERNAL = "pref_key_is_internal";
public static final String PREF_ENABLE_METRICS_LOGGING = "pref_enable_metrics_logging";
@@ -106,6 +105,8 @@ public final class Settings implements SharedPreferences.OnSharedPreferenceChang
"pref_last_used_personalization_dict_wiped_time";
private static final String PREF_CORPUS_HANDLES_FOR_PERSONALIZATION =
"pref_corpus_handles_for_personalization";
+ public static final String PREF_SEND_FEEDBACK = "send_feedback";
+ public static final String PREF_ABOUT_KEYBOARD = "about_keyboard";
// Emoji
public static final String PREF_EMOJI_RECENT_KEYS = "emoji_recent_keys";
diff --git a/java/src/com/android/inputmethod/latin/settings/SettingsFragment.java b/java/src/com/android/inputmethod/latin/settings/SettingsFragment.java
index 9d824121c..5eb0377c7 100644
--- a/java/src/com/android/inputmethod/latin/settings/SettingsFragment.java
+++ b/java/src/com/android/inputmethod/latin/settings/SettingsFragment.java
@@ -27,15 +27,13 @@ import android.content.res.Resources;
import android.media.AudioManager;
import android.os.Build;
import android.os.Bundle;
+import android.preference.CheckBoxPreference;
import android.preference.ListPreference;
import android.preference.Preference;
+import android.preference.Preference.OnPreferenceClickListener;
import android.preference.PreferenceGroup;
import android.preference.PreferenceScreen;
-import android.preference.TwoStatePreference;
import android.util.Log;
-import android.view.Menu;
-import android.view.MenuInflater;
-import android.view.MenuItem;
import android.view.inputmethod.InputMethodSubtype;
import com.android.inputmethod.dictionarypack.DictionarySettingsActivity;
@@ -63,10 +61,6 @@ public final class SettingsFragment extends InputMethodSettingsFragment
DBG_USE_INTERNAL_PERSONAL_DICTIONARY_SETTINGS
|| Build.VERSION.SDK_INT <= Build.VERSION_CODES.JELLY_BEAN_MR2;
- private static final int NO_MENU_GROUP = Menu.NONE; // We don't care about menu grouping.
- private static final int MENU_FEEDBACK = Menu.FIRST; // The first menu item id and order.
- private static final int MENU_ABOUT = Menu.FIRST + 1; // The second menu item id and order.
-
private void setPreferenceEnabled(final String preferenceKey, final boolean enabled) {
final Preference preference = findPreference(preferenceKey);
if (preference != null) {
@@ -99,7 +93,6 @@ public final class SettingsFragment extends InputMethodSettingsFragment
@Override
public void onCreate(final Bundle icicle) {
super.onCreate(icicle);
- setHasOptionsMenu(true);
setInputMethodSettingsCategoryTitle(R.string.language_selection_title);
setSubtypeEnablerTitle(R.string.select_language);
addPreferencesFromResource(R.xml.prefs);
@@ -124,42 +117,66 @@ public final class SettingsFragment extends InputMethodSettingsFragment
ensureConsistencyOfAutoCorrectionSettings();
- final PreferenceScreen inputScreen =
- (PreferenceScreen) findPreference(Settings.SCREEN_INPUT);
- final PreferenceScreen advancedScreen =
- (PreferenceScreen) findPreference(Settings.SCREEN_ADVANCED);
- final Preference debugScreen = findPreference(Settings.SCREEN_DEBUG);
- if (Settings.isInternal(prefs)) {
- final Intent debugSettingsIntent = new Intent(Intent.ACTION_MAIN);
- debugSettingsIntent.setClassName(
- context.getPackageName(), DebugSettingsActivity.class.getName());
- debugScreen.setIntent(debugSettingsIntent);
- } else {
- advancedScreen.removePreference(debugScreen);
+ final PreferenceGroup generalSettings =
+ (PreferenceGroup) findPreference(Settings.PREF_GENERAL_SETTINGS);
+ final PreferenceGroup miscSettings =
+ (PreferenceGroup) findPreference(Settings.PREF_MISC_SETTINGS);
+
+ final Preference debugSettings = findPreference(Settings.PREF_DEBUG_SETTINGS);
+ if (debugSettings != null) {
+ if (Settings.isInternal(prefs)) {
+ final Intent debugSettingsIntent = new Intent(Intent.ACTION_MAIN);
+ debugSettingsIntent.setClassName(
+ context.getPackageName(), DebugSettingsActivity.class.getName());
+ debugSettings.setIntent(debugSettingsIntent);
+ } else {
+ miscSettings.removePreference(debugSettings);
+ }
+ }
+
+ final Preference feedbackSettings = findPreference(Settings.PREF_SEND_FEEDBACK);
+ final Preference aboutSettings = findPreference(Settings.PREF_ABOUT_KEYBOARD);
+ if (feedbackSettings != null) {
+ if (FeedbackUtils.isFeedbackFormSupported()) {
+ feedbackSettings.setOnPreferenceClickListener(new OnPreferenceClickListener() {
+ @Override
+ public boolean onPreferenceClick(final Preference pref) {
+ FeedbackUtils.showFeedbackForm(getActivity());
+ return true;
+ }
+ });
+ aboutSettings.setTitle(FeedbackUtils.getAboutKeyboardTitleResId());
+ aboutSettings.setIntent(FeedbackUtils.getAboutKeyboardIntent(getActivity()));
+ } else {
+ miscSettings.removePreference(feedbackSettings);
+ miscSettings.removePreference(aboutSettings);
+ }
}
final boolean showVoiceKeyOption = res.getBoolean(
R.bool.config_enable_show_voice_key_option);
if (!showVoiceKeyOption) {
- removePreference(Settings.PREF_VOICE_INPUT_KEY, inputScreen);
+ removePreference(Settings.PREF_VOICE_INPUT_KEY, generalSettings);
}
+ final PreferenceGroup advancedSettings =
+ (PreferenceGroup) findPreference(Settings.PREF_ADVANCED_SETTINGS);
if (!AudioAndHapticFeedbackManager.getInstance().hasVibrator()) {
- removePreference(Settings.PREF_VIBRATE_ON, inputScreen);
- removePreference(Settings.PREF_VIBRATION_DURATION_SETTINGS, advancedScreen);
+ removePreference(Settings.PREF_VIBRATE_ON, generalSettings);
+ removePreference(Settings.PREF_VIBRATION_DURATION_SETTINGS, advancedSettings);
}
if (!Settings.ENABLE_SHOW_LANGUAGE_SWITCH_KEY_SETTINGS) {
- final PreferenceScreen multiLingualScreen =
- (PreferenceScreen) findPreference(Settings.SCREEN_MULTI_LINGUAL);
- removePreference(Settings.PREF_SHOW_LANGUAGE_SWITCH_KEY, multiLingualScreen);
removePreference(
- Settings.PREF_INCLUDE_OTHER_IMES_IN_LANGUAGE_SWITCH_LIST, multiLingualScreen);
+ Settings.PREF_SHOW_LANGUAGE_SWITCH_KEY, advancedSettings);
+ removePreference(
+ Settings.PREF_INCLUDE_OTHER_IMES_IN_LANGUAGE_SWITCH_LIST, advancedSettings);
}
+
// TODO: consolidate key preview dismiss delay with the key preview animation parameters.
if (!Settings.readFromBuildConfigIfToShowKeyPreviewPopupOption(res)) {
- removePreference(Settings.PREF_POPUP_ON, inputScreen);
- removePreference(Settings.PREF_KEY_PREVIEW_POPUP_DISMISS_DELAY, advancedScreen);
+ removePreference(Settings.PREF_POPUP_ON, generalSettings);
+ removePreference(Settings.PREF_KEY_PREVIEW_POPUP_DISMISS_DELAY, advancedSettings);
} else {
// TODO: Cleanup this setup.
final ListPreference keyPreviewPopupDismissDelay =
@@ -182,18 +199,18 @@ public final class SettingsFragment extends InputMethodSettingsFragment
}
if (!res.getBoolean(R.bool.config_setup_wizard_available)) {
- removePreference(Settings.PREF_SHOW_SETUP_WIZARD_ICON, advancedScreen);
+ removePreference(Settings.PREF_SHOW_SETUP_WIZARD_ICON, advancedSettings);
}
- final PreferenceScreen correctionScreen =
- (PreferenceScreen) findPreference(Settings.SCREEN_CORRECTION);
+ final PreferenceGroup textCorrectionGroup =
+ (PreferenceGroup) findPreference(Settings.PREF_CORRECTION_SETTINGS);
final PreferenceScreen dictionaryLink =
(PreferenceScreen) findPreference(Settings.PREF_CONFIGURE_DICTIONARIES_KEY);
final Intent intent = dictionaryLink.getIntent();
intent.setClassName(context.getPackageName(), DictionarySettingsActivity.class.getName());
final int number = context.getPackageManager().queryIntentActivities(intent, 0).size();
if (0 >= number) {
- correctionScreen.removePreference(dictionaryLink);
+ textCorrectionGroup.removePreference(dictionaryLink);
}
if (ProductionFlag.IS_METRICS_LOGGING_SUPPORTED) {
@@ -207,7 +224,7 @@ public final class SettingsFragment extends InputMethodSettingsFragment
enableMetricsLogging.setTitle(enableMetricsLoggingTitle);
}
} else {
- removePreference(Settings.PREF_ENABLE_METRICS_LOGGING, advancedScreen);
+ removePreference(Settings.PREF_ENABLE_METRICS_LOGGING, textCorrectionGroup);
}
final Preference editPersonalDictionary =
@@ -221,7 +238,7 @@ public final class SettingsFragment extends InputMethodSettingsFragment
}
if (!Settings.readFromBuildConfigIfGestureInputEnabled(res)) {
- removePreference(Settings.SCREEN_GESTURE, getPreferenceScreen());
+ removePreference(Settings.PREF_GESTURE_SETTINGS, getPreferenceScreen());
}
AdditionalFeaturesSettingUtils.addAdditionalFeaturesPreferences(context, this);
@@ -244,8 +261,8 @@ public final class SettingsFragment extends InputMethodSettingsFragment
voiceInputKeyOption.setSummary(isShortcutImeEnabled ? null
: res.getText(R.string.voice_input_disabled_summary));
}
- final TwoStatePreference showSetupWizardIcon =
- (TwoStatePreference)findPreference(Settings.PREF_SHOW_SETUP_WIZARD_ICON);
+ final CheckBoxPreference showSetupWizardIcon =
+ (CheckBoxPreference)findPreference(Settings.PREF_SHOW_SETUP_WIZARD_ICON);
if (showSetupWizardIcon != null) {
showSetupWizardIcon.setChecked(Settings.readShowSetupWizardIcon(prefs, getActivity()));
}
@@ -459,29 +476,4 @@ public final class SettingsFragment extends InputMethodSettingsFragment
userDictionaryPreference.setFragment(UserDictionaryList.class.getName());
}
}
-
- @Override
- public void onCreateOptionsMenu(final Menu menu, final MenuInflater inflater) {
- if (!FeedbackUtils.isFeedbackFormSupported()) {
- return;
- }
- menu.add(NO_MENU_GROUP, MENU_FEEDBACK /* itemId */, MENU_FEEDBACK /* order */,
- R.string.send_feedback);
- menu.add(NO_MENU_GROUP, MENU_ABOUT /* itemId */, MENU_ABOUT /* order */,
- FeedbackUtils.getAboutKeyboardTitleResId());
- }
-
- @Override
- public boolean onOptionsItemSelected(final MenuItem item) {
- final int itemId = item.getItemId();
- if (itemId == MENU_FEEDBACK) {
- FeedbackUtils.showFeedbackForm(getActivity());
- return true;
- }
- if (itemId == MENU_ABOUT) {
- startActivity(FeedbackUtils.getAboutKeyboardIntent(getActivity()));
- return true;
- }
- return super.onOptionsItemSelected(item);
- }
}