Reorganize Keyboard settings screen

This CL must be checked in together with Ie45df15b18.

Bug: 11866784
Change-Id: I44d6ceb45108be135e3eaa361f4ee2c83f04fb57
main
Tadashi G. Takaoka 2014-06-19 17:47:11 -07:00
parent 7d6bc4d063
commit 058c6c6491
8 changed files with 236 additions and 227 deletions

View File

@ -20,13 +20,14 @@
<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2"> <resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
<!-- For keyboard color scheme option dialog. --> <!-- For keyboard color scheme option dialog. -->
<string-array name="keyboard_theme_names" translatable="false"> <string-array name="keyboard_theme_names" translatable="false">
<!-- TODO: Make this item as translatable string resource. --> <!-- TODO: Implement Material Light theme. -->
<item>Material</item> <item>@string/keyboard_theme_material_dark</item>
<item>@string/keyboard_color_scheme_white</item> <item>@string/keyboard_theme_holo_white</item>
<item>@string/keyboard_color_scheme_blue</item> <item>@string/keyboard_theme_holo_blue</item>
</string-array> </string-array>
<!-- An element must be a keyboard theme id of {@link KeyboardTheme#THEME_ID_*}. --> <!-- An element must be a keyboard theme id of {@link KeyboardTheme#THEME_ID_*}. -->
<string-array name="keyboard_theme_ids" translatable="false"> <string-array name="keyboard_theme_ids" translatable="false">
<!-- TODO: Implement Material Light theme. -->
<item>3</item> <item>3</item>
<item>2</item> <item>2</item>
<item>0</item> <item>0</item>

View File

@ -36,22 +36,18 @@
<!-- Option to control whether or not to show a popup with a larger font on each key press. --> <!-- Option to control whether or not to show a popup with a larger font on each key press. -->
<string name="popup_on_keypress">Popup on keypress</string> <string name="popup_on_keypress">Popup on keypress</string>
<!-- Category title for general settings for Android keyboard --> <!-- Settings screen title for input preferences [CHAR LIMIT=25]-->
<string name="general_category">General</string> <string name="settings_screen_input">Input preferences</string>
<!-- Settings screen title for appearance preferences [CHAR LIMIT=25] -->
<!-- Category title for text prediction --> <string name="settings_screen_appearances">Appearance</string>
<string name="correction_category">Text correction</string> <!-- Settings screen title for multi lingual options [CHAR_LIMIT=25] -->
<string name="settings_screen_multi_lingual">Multi lingual options</string>
<!-- Category title for gesture typing --> <!-- Settings screen title for gesture typing preferences [CHAR_LIMIT=25] -->
<string name="gesture_typing_category">Gesture typing</string> <string name="settings_screen_gesture">Gesture typing preferences</string>
<!-- Settings screen title for text correction options [CHAR_LIMIT=25] -->
<!-- Category title for misc options --> <string name="settings_screen_correction">Text correction</string>
<string name="misc_category">Other options</string> <!-- Settings screen title for advanced settings [CHAR LIMIT=25] -->
<string name="settings_screen_advanced">Advanced</string>
<!-- Option name for advanced settings screen [CHAR LIMIT=25] -->
<string name="advanced_settings">Advanced settings</string>
<!-- Option summary for advanced settings screen [CHAR LIMIT=65 (two lines) or 30 (fits on one line, preferable)] -->
<string name="advanced_settings_summary">Options for experts</string>
<!-- Option name for including other IMEs in the language switch list [CHAR LIMIT=30] --> <!-- 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> <string name="include_other_imes_in_language_switch_list">Switch to other input methods</string>
@ -295,12 +291,16 @@ mobile devices. [CHAR LIMIT=25] -->
<!-- Description for Emoji keyboard subtype [CHAR LIMIT=25] --> <!-- Description for Emoji keyboard subtype [CHAR LIMIT=25] -->
<string name="subtype_emoji">Emoji</string> <string name="subtype_emoji">Emoji</string>
<!-- Title of the preference settings for switching keyboard color scheme [CHAR LIMIT=35] --> <!-- Title of the preference settings for switching keyboard theme [CHAR LIMIT=35] -->
<string name="keyboard_color_scheme">Color scheme</string> <string name="keyboard_theme">Keyboard theme</string>
<!-- The keyboard color scheme name, White [CHAR LIMIT=16] --> <!-- The keyboard theme name, Holo White [CHAR LIMIT=25] -->
<string name="keyboard_color_scheme_white">White</string> <string name="keyboard_theme_holo_white">Holo White</string>
<!-- The keyboard color scheme name, Blue [CHAR LIMIT=16] --> <!-- The keyboard theme name, Holo Blue [CHAR LIMIT=25] -->
<string name="keyboard_color_scheme_blue">Blue</string> <string name="keyboard_theme_holo_blue">Holo Blue</string>
<!-- The keyboard theme name, Material Dark [CHAR LIMIT=25] -->
<string name="keyboard_theme_material_dark">Material Dark</string>
<!-- The keyboard theme name, Material Light [CHAR LIMIT=25] -->
<string name="keyboard_theme_material_light">Material Light</string>
<!-- Title of the preference settings for custom input styles (language and keyboard layout pairs) [CHAR LIMIT=35]--> <!-- Title of the preference settings for custom input styles (language and keyboard layout pairs) [CHAR LIMIT=35]-->
<string name="custom_input_styles_title">Custom input styles</string> <string name="custom_input_styles_title">Custom input styles</string>

View File

@ -18,15 +18,21 @@
xmlns:android="http://schemas.android.com/apk/res/android" xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:latin="http://schemas.android.com/apk/res/com.android.inputmethod.latin" xmlns:latin="http://schemas.android.com/apk/res/com.android.inputmethod.latin"
android:key="english_ime_settings"> android:key="english_ime_settings">
<PreferenceCategory <PreferenceScreen
android:title="@string/general_category" android:title="@string/settings_screen_input"
android:key="general_settings"> android:key="screen_input">
<CheckBoxPreference <CheckBoxPreference
android:key="auto_cap" android:key="auto_cap"
android:title="@string/auto_cap" android:title="@string/auto_cap"
android:summary="@string/auto_cap_summary" android:summary="@string/auto_cap_summary"
android:persistent="true" android:defaultValue="true"
android:defaultValue="true" /> android:persistent="true" />
<CheckBoxPreference
android:key="pref_key_use_double_space_period"
android:title="@string/use_double_space_period"
android:summary="@string/use_double_space_period_summary"
android:defaultValue="true"
android:persistent="true" />
<CheckBoxPreference <CheckBoxPreference
android:key="vibrate_on" android:key="vibrate_on"
android:title="@string/vibrate_on_keypress" android:title="@string/vibrate_on_keypress"
@ -40,17 +46,67 @@
<CheckBoxPreference <CheckBoxPreference
android:key="popup_on" android:key="popup_on"
android:title="@string/popup_on_keypress" android:title="@string/popup_on_keypress"
android:persistent="true" android:defaultValue="@bool/config_default_key_preview_popup"
android:defaultValue="@bool/config_default_key_preview_popup" /> android:persistent="true" />
<CheckBoxPreference <CheckBoxPreference
android:key="pref_voice_input_key" android:key="pref_voice_input_key"
android:title="@string/voice_input" android:title="@string/voice_input"
android:persistent="true" android:defaultValue="true"
android:defaultValue="true" /> android:persistent="true" />
</PreferenceCategory> </PreferenceScreen>
<PreferenceCategory <ListPreference
android:title="@string/correction_category" android:key="pref_keyboard_theme"
android:key="correction_settings"> android:title="@string/keyboard_theme"
android:entryValues="@array/keyboard_theme_ids"
android:entries="@array/keyboard_theme_names"
android:persistent="true" />
<PreferenceScreen
android:title="@string/settings_screen_multi_lingual"
android:key="screen_multi_lingual">
<CheckBoxPreference
android:key="pref_show_language_switch_key"
android:title="@string/show_language_switch_key"
android:summary="@string/show_language_switch_key_summary"
android:defaultValue="true"
android:persistent="true" />
<CheckBoxPreference
android:key="pref_include_other_imes_in_language_switch_list"
android:dependency="pref_show_language_switch_key"
android:title="@string/include_other_imes_in_language_switch_list"
android:summary="@string/include_other_imes_in_language_switch_list_summary"
android:defaultValue="false"
android:persistent="true" />
<PreferenceScreen
android:fragment="com.android.inputmethod.latin.settings.AdditionalSubtypeSettings"
android:key="custom_input_styles"
android:title="@string/custom_input_styles_title" />
</PreferenceScreen>
<PreferenceScreen
android:title="@string/settings_screen_gesture"
android:key="screen_gesture">
<CheckBoxPreference
android:key="gesture_input"
android:title="@string/gesture_input"
android:summary="@string/gesture_input_summary"
android:defaultValue="true"
android:persistent="true" />
<CheckBoxPreference
android:key="pref_gesture_floating_preview_text"
android:dependency="gesture_input"
android:title="@string/gesture_floating_preview_text"
android:summary="@string/gesture_floating_preview_text_summary"
android:defaultValue="true"
android:persistent="true" />
<CheckBoxPreference
android:key="pref_gesture_preview_trail"
android:dependency="gesture_input"
android:title="@string/gesture_preview_trail"
android:defaultValue="true"
android:persistent="true" />
</PreferenceScreen>
<PreferenceScreen
android:title="@string/settings_screen_correction"
android:key="screen_correction">
<PreferenceScreen <PreferenceScreen
android:key="edit_personal_dictionary" android:key="edit_personal_dictionary"
android:title="@string/edit_personal_dictionary"> android:title="@string/edit_personal_dictionary">
@ -71,109 +127,46 @@
android:key="pref_key_block_potentially_offensive" android:key="pref_key_block_potentially_offensive"
android:title="@string/prefs_block_potentially_offensive_title" android:title="@string/prefs_block_potentially_offensive_title"
android:summary="@string/prefs_block_potentially_offensive_summary" android:summary="@string/prefs_block_potentially_offensive_summary"
android:persistent="true" android:defaultValue="@bool/config_block_potentially_offensive"
android:defaultValue="@bool/config_block_potentially_offensive" /> android:persistent="true" />
<ListPreference <ListPreference
android:key="auto_correction_threshold" android:key="auto_correction_threshold"
android:title="@string/auto_correction" android:title="@string/auto_correction"
android:summary="@string/auto_correction_summary" android:summary="@string/auto_correction_summary"
android:persistent="true"
android:entryValues="@array/auto_correction_threshold_mode_indexes" android:entryValues="@array/auto_correction_threshold_mode_indexes"
android:entries="@array/auto_correction_threshold_modes" android:entries="@array/auto_correction_threshold_modes"
android:defaultValue="@string/auto_correction_threshold_mode_index_modest" /> android:defaultValue="@string/auto_correction_threshold_mode_index_modest"
android:persistent="true" />
<ListPreference <ListPreference
android:key="show_suggestions_setting" android:key="show_suggestions_setting"
android:summary="@string/prefs_show_suggestions_summary" android:summary="@string/prefs_show_suggestions_summary"
android:title="@string/prefs_show_suggestions" android:title="@string/prefs_show_suggestions"
android:persistent="true"
android:entryValues="@array/prefs_suggestion_visibility_values" android:entryValues="@array/prefs_suggestion_visibility_values"
android:entries="@array/prefs_suggestion_visibilities" android:entries="@array/prefs_suggestion_visibilities"
android:defaultValue="@string/prefs_suggestion_visibility_default_value" /> android:defaultValue="@string/prefs_suggestion_visibility_default_value"
android:persistent="true" />
<CheckBoxPreference <CheckBoxPreference
android:key="pref_key_use_personalized_dicts" android:key="pref_key_use_personalized_dicts"
android:title="@string/use_personalized_dicts" android:title="@string/use_personalized_dicts"
android:summary="@string/use_personalized_dicts_summary" android:summary="@string/use_personalized_dicts_summary"
android:persistent="true" android:defaultValue="true"
android:defaultValue="true" /> android:persistent="true" />
<!-- title will be set programmatically to embed application name -->
<CheckBoxPreference
android:key="pref_enable_metrics_logging"
android:summary="@string/enable_metrics_logging_summary"
android:persistent="true"
android:defaultValue="true" />
</PreferenceCategory>
<PreferenceCategory
android:title="@string/gesture_typing_category"
android:key="gesture_typing_settings">
<CheckBoxPreference
android:key="gesture_input"
android:title="@string/gesture_input"
android:summary="@string/gesture_input_summary"
android:persistent="true"
android:defaultValue="true" />
<!-- TODO: Move these two options to the advanced settings. -->
<CheckBoxPreference
android:key="pref_gesture_floating_preview_text"
android:dependency="gesture_input"
android:title="@string/gesture_floating_preview_text"
android:summary="@string/gesture_floating_preview_text_summary"
android:persistent="true"
android:defaultValue="true" />
<CheckBoxPreference
android:key="pref_gesture_preview_trail"
android:dependency="gesture_input"
android:title="@string/gesture_preview_trail"
android:persistent="true"
android:defaultValue="true" />
</PreferenceCategory>
<PreferenceCategory
android:title="@string/misc_category"
android:key="misc_settings">
<CheckBoxPreference
android:key="next_word_prediction"
android:title="@string/bigram_prediction"
android:summary="@string/bigram_prediction_summary"
android:persistent="true"
android:defaultValue="true" />
<PreferenceScreen
android:key="pref_advanced_settings"
android:title="@string/advanced_settings"
android:summary="@string/advanced_settings_summary">
<CheckBoxPreference <CheckBoxPreference
android:key="pref_key_use_contacts_dict" android:key="pref_key_use_contacts_dict"
android:title="@string/use_contacts_dict" android:title="@string/use_contacts_dict"
android:summary="@string/use_contacts_dict_summary" android:summary="@string/use_contacts_dict_summary"
android:persistent="true" android:defaultValue="true"
android:defaultValue="true" /> android:persistent="true" />
<CheckBoxPreference <CheckBoxPreference
android:key="pref_key_use_double_space_period" android:key="next_word_prediction"
android:title="@string/use_double_space_period" android:title="@string/bigram_prediction"
android:summary="@string/use_double_space_period_summary" android:summary="@string/bigram_prediction_summary"
android:persistent="true" android:defaultValue="true"
android:defaultValue="true" /> android:persistent="true" />
<CheckBoxPreference </PreferenceScreen>
android:key="pref_show_language_switch_key"
android:title="@string/show_language_switch_key"
android:summary="@string/show_language_switch_key_summary"
android:persistent="true"
android:defaultValue="true" />
<CheckBoxPreference
android:key="pref_include_other_imes_in_language_switch_list"
android:dependency="pref_show_language_switch_key"
android:title="@string/include_other_imes_in_language_switch_list"
android:summary="@string/include_other_imes_in_language_switch_list_summary"
android:persistent="true"
android:defaultValue="false" />
<ListPreference
android:key="pref_keyboard_theme"
android:title="@string/keyboard_color_scheme"
android:persistent="true"
android:entryValues="@array/keyboard_theme_ids"
android:entries="@array/keyboard_theme_names" />
<PreferenceScreen <PreferenceScreen
android:fragment="com.android.inputmethod.latin.settings.AdditionalSubtypeSettings" android:title="@string/settings_screen_advanced"
android:key="custom_input_styles" android:key="screen_advanced">
android:title="@string/custom_input_styles_title" />
<!-- TODO: consolidate key preview dismiss delay with the key preview animation parameters. --> <!-- TODO: consolidate key preview dismiss delay with the key preview animation parameters. -->
<ListPreference <ListPreference
android:key="pref_key_preview_popup_dismiss_delay" android:key="pref_key_preview_popup_dismiss_delay"
@ -192,16 +185,16 @@
android:key="pref_show_setup_wizard_icon" android:key="pref_show_setup_wizard_icon"
android:title="@string/show_setup_wizard_icon" android:title="@string/show_setup_wizard_icon"
android:summary="@string/show_setup_wizard_icon_summary" /> android:summary="@string/show_setup_wizard_icon_summary" />
</PreferenceScreen> <!-- title will be set programmatically to embed application name -->
<CheckBoxPreference
android:key="pref_enable_metrics_logging"
android:summary="@string/enable_metrics_logging_summary"
android:defaultValue="true"
android:persistent="true" />
<PreferenceScreen <PreferenceScreen
android:key="send_feedback" android:key="screen_debug"
android:title="@string/send_feedback" />
<PreferenceScreen
android:key="about_keyboard" />
<PreferenceScreen
android:key="debug_settings"
android:title="Debug settings" android:title="Debug settings"
android:persistent="true" android:defaultValue="false"
android:defaultValue="false" /> android:persistent="true" />
</PreferenceCategory> </PreferenceScreen>
</PreferenceScreen> </PreferenceScreen>

View File

@ -23,19 +23,19 @@
<CheckBoxPreference <CheckBoxPreference
android:key="debug_mode" android:key="debug_mode"
android:title="@string/prefs_debug_mode" android:title="@string/prefs_debug_mode"
android:persistent="true" android:defaultValue="false"
android:defaultValue="false" /> android:persistent="true" />
<CheckBoxPreference <CheckBoxPreference
android:key="force_non_distinct_multitouch" android:key="force_non_distinct_multitouch"
android:title="@string/prefs_force_non_distinct_multitouch" android:title="@string/prefs_force_non_distinct_multitouch"
android:persistent="true" android:defaultValue="false"
android:defaultValue="false" /> android:persistent="true" />
<CheckBoxPreference <CheckBoxPreference
android:key="pref_sliding_key_input_preview" android:key="pref_sliding_key_input_preview"
android:title="@string/sliding_key_input_preview" android:title="@string/sliding_key_input_preview"
android:summary="@string/sliding_key_input_preview_summary" android:summary="@string/sliding_key_input_preview_summary"
android:persistent="true" android:defaultValue="true"
android:defaultValue="true" /> android:persistent="true" />
<com.android.inputmethod.latin.settings.SeekBarDialogPreference <com.android.inputmethod.latin.settings.SeekBarDialogPreference
android:key="pref_key_longpress_timeout" android:key="pref_key_longpress_timeout"
android:title="@string/prefs_key_longpress_timeout_settings" android:title="@string/prefs_key_longpress_timeout_settings"

View File

@ -15,11 +15,12 @@
--> -->
<PreferenceScreen <PreferenceScreen
xmlns:android="http://schemas.android.com/apk/res/android"> xmlns:android="http://schemas.android.com/apk/res/android"
>
<CheckBoxPreference <CheckBoxPreference
android:key="pref_spellcheck_use_contacts" android:key="pref_spellcheck_use_contacts"
android:title="@string/use_contacts_for_spellchecking_option_title" android:title="@string/use_contacts_for_spellchecking_option_title"
android:summary="@string/use_contacts_for_spellchecking_option_summary" android:summary="@string/use_contacts_for_spellchecking_option_summary"
android:persistent="true" android:defaultValue="true"
android:defaultValue="true" /> android:persistent="true" />
</PreferenceScreen> </PreferenceScreen>

View File

@ -21,14 +21,13 @@ import android.content.SharedPreferences;
import android.content.res.Resources; import android.content.res.Resources;
import android.os.Bundle; import android.os.Bundle;
import android.os.Process; import android.os.Process;
import android.preference.CheckBoxPreference;
import android.preference.Preference; import android.preference.Preference;
import android.preference.Preference.OnPreferenceClickListener; import android.preference.Preference.OnPreferenceClickListener;
import android.preference.PreferenceFragment; import android.preference.PreferenceFragment;
import android.preference.PreferenceGroup; import android.preference.PreferenceGroup;
import android.preference.PreferenceScreen; 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.DictionaryDumpBroadcastReceiver;
import com.android.inputmethod.latin.DictionaryFacilitator; import com.android.inputmethod.latin.DictionaryFacilitator;
import com.android.inputmethod.latin.R; import com.android.inputmethod.latin.R;
@ -57,7 +56,7 @@ public final class DebugSettings extends PreferenceFragment
public static final String PREF_KEY_LONGPRESS_TIMEOUT = "pref_key_longpress_timeout"; public static final String PREF_KEY_LONGPRESS_TIMEOUT = "pref_key_longpress_timeout";
private boolean mServiceNeedsRestart = false; private boolean mServiceNeedsRestart = false;
private CheckBoxPreference mDebugMode; private TwoStatePreference mDebugMode;
@Override @Override
public void onCreate(Bundle icicle) { public void onCreate(Bundle icicle) {
@ -107,7 +106,7 @@ public final class DebugSettings extends PreferenceFragment
res, R.fraction.config_key_preview_dismiss_end_scale)); res, R.fraction.config_key_preview_dismiss_end_scale));
mServiceNeedsRestart = false; mServiceNeedsRestart = false;
mDebugMode = (CheckBoxPreference) findPreference(PREF_DEBUG_MODE); mDebugMode = (TwoStatePreference) findPreference(PREF_DEBUG_MODE);
updateDebugMode(); updateDebugMode();
} }

View File

@ -39,8 +39,14 @@ import java.util.concurrent.locks.ReentrantLock;
public final class Settings implements SharedPreferences.OnSharedPreferenceChangeListener { public final class Settings implements SharedPreferences.OnSharedPreferenceChangeListener {
private static final String TAG = Settings.class.getSimpleName(); 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 // 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_AUTO_CAP = "auto_cap";
public static final String PREF_VIBRATE_ON = "vibrate_on"; public static final String PREF_VIBRATE_ON = "vibrate_on";
public static final String PREF_SOUND_ON = "sound_on"; public static final String PREF_SOUND_ON = "sound_on";
@ -48,13 +54,10 @@ public final class Settings implements SharedPreferences.OnSharedPreferenceChang
// PREF_VOICE_MODE_OBSOLETE is obsolete. Use PREF_VOICE_INPUT_KEY instead. // 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_MODE_OBSOLETE = "voice_mode";
public static final String PREF_VOICE_INPUT_KEY = "pref_voice_input_key"; 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_EDIT_PERSONAL_DICTIONARY = "edit_personal_dictionary";
public static final String PREF_CONFIGURE_DICTIONARIES_KEY = "configure_dictionaries_key"; 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_AUTO_CORRECTION_THRESHOLD = "auto_correction_threshold";
public static final String PREF_SHOW_SUGGESTIONS_SETTING = "show_suggestions_setting"; 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_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_PERSONALIZED_DICTS = "pref_key_use_personalized_dicts";
public static final String PREF_KEY_USE_DOUBLE_SPACE_PERIOD = public static final String PREF_KEY_USE_DOUBLE_SPACE_PERIOD =
@ -75,7 +78,6 @@ public final class Settings implements SharedPreferences.OnSharedPreferenceChang
public static final String PREF_KEY_PREVIEW_POPUP_DISMISS_DELAY = public static final String PREF_KEY_PREVIEW_POPUP_DISMISS_DELAY =
"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_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_GESTURE_INPUT = "gesture_input";
public static final String PREF_VIBRATION_DURATION_SETTINGS = public static final String PREF_VIBRATION_DURATION_SETTINGS =
"pref_vibration_duration_settings"; "pref_vibration_duration_settings";
@ -89,7 +91,6 @@ public final class Settings implements SharedPreferences.OnSharedPreferenceChang
public static final String PREF_INPUT_LANGUAGE = "input_language"; public static final String PREF_INPUT_LANGUAGE = "input_language";
public static final String PREF_SELECTED_LANGUAGES = "selected_languages"; 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_KEY_IS_INTERNAL = "pref_key_is_internal";
public static final String PREF_ENABLE_METRICS_LOGGING = "pref_enable_metrics_logging"; public static final String PREF_ENABLE_METRICS_LOGGING = "pref_enable_metrics_logging";
@ -105,8 +106,6 @@ public final class Settings implements SharedPreferences.OnSharedPreferenceChang
"pref_last_used_personalization_dict_wiped_time"; "pref_last_used_personalization_dict_wiped_time";
private static final String PREF_CORPUS_HANDLES_FOR_PERSONALIZATION = private static final String PREF_CORPUS_HANDLES_FOR_PERSONALIZATION =
"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 // Emoji
public static final String PREF_EMOJI_RECENT_KEYS = "emoji_recent_keys"; public static final String PREF_EMOJI_RECENT_KEYS = "emoji_recent_keys";

View File

@ -27,13 +27,15 @@ import android.content.res.Resources;
import android.media.AudioManager; import android.media.AudioManager;
import android.os.Build; import android.os.Build;
import android.os.Bundle; import android.os.Bundle;
import android.preference.CheckBoxPreference;
import android.preference.ListPreference; import android.preference.ListPreference;
import android.preference.Preference; import android.preference.Preference;
import android.preference.Preference.OnPreferenceClickListener;
import android.preference.PreferenceGroup; import android.preference.PreferenceGroup;
import android.preference.PreferenceScreen; import android.preference.PreferenceScreen;
import android.preference.TwoStatePreference;
import android.util.Log; import android.util.Log;
import android.view.Menu;
import android.view.MenuInflater;
import android.view.MenuItem;
import android.view.inputmethod.InputMethodSubtype; import android.view.inputmethod.InputMethodSubtype;
import com.android.inputmethod.dictionarypack.DictionarySettingsActivity; import com.android.inputmethod.dictionarypack.DictionarySettingsActivity;
@ -61,6 +63,10 @@ public final class SettingsFragment extends InputMethodSettingsFragment
DBG_USE_INTERNAL_PERSONAL_DICTIONARY_SETTINGS DBG_USE_INTERNAL_PERSONAL_DICTIONARY_SETTINGS
|| Build.VERSION.SDK_INT <= Build.VERSION_CODES.JELLY_BEAN_MR2; || 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) { private void setPreferenceEnabled(final String preferenceKey, final boolean enabled) {
final Preference preference = findPreference(preferenceKey); final Preference preference = findPreference(preferenceKey);
if (preference != null) { if (preference != null) {
@ -93,6 +99,7 @@ public final class SettingsFragment extends InputMethodSettingsFragment
@Override @Override
public void onCreate(final Bundle icicle) { public void onCreate(final Bundle icicle) {
super.onCreate(icicle); super.onCreate(icicle);
setHasOptionsMenu(true);
setInputMethodSettingsCategoryTitle(R.string.language_selection_title); setInputMethodSettingsCategoryTitle(R.string.language_selection_title);
setSubtypeEnablerTitle(R.string.select_language); setSubtypeEnablerTitle(R.string.select_language);
addPreferencesFromResource(R.xml.prefs); addPreferencesFromResource(R.xml.prefs);
@ -117,66 +124,48 @@ public final class SettingsFragment extends InputMethodSettingsFragment
ensureConsistencyOfAutoCorrectionSettings(); ensureConsistencyOfAutoCorrectionSettings();
final PreferenceGroup generalSettings = final PreferenceScreen inputScreen =
(PreferenceGroup) findPreference(Settings.PREF_GENERAL_SETTINGS); (PreferenceScreen) findPreference(Settings.SCREEN_INPUT);
final PreferenceGroup miscSettings = final PreferenceScreen multiLingualScreen =
(PreferenceGroup) findPreference(Settings.PREF_MISC_SETTINGS); (PreferenceScreen) findPreference(Settings.SCREEN_MULTI_LINGUAL);
final PreferenceScreen gestureScreen =
(PreferenceScreen) findPreference(Settings.SCREEN_GESTURE);
final PreferenceScreen correctionScreen =
(PreferenceScreen) findPreference(Settings.SCREEN_CORRECTION);
final PreferenceScreen advancedScreen =
(PreferenceScreen) findPreference(Settings.SCREEN_ADVANCED);
final PreferenceScreen debugScreen =
(PreferenceScreen) findPreference(Settings.SCREEN_DEBUG);
final Preference debugSettings = findPreference(Settings.PREF_DEBUG_SETTINGS);
if (debugSettings != null) {
if (Settings.isInternal(prefs)) { if (Settings.isInternal(prefs)) {
final Intent debugSettingsIntent = new Intent(Intent.ACTION_MAIN); final Intent debugSettingsIntent = new Intent(Intent.ACTION_MAIN);
debugSettingsIntent.setClassName( debugSettingsIntent.setClassName(
context.getPackageName(), DebugSettingsActivity.class.getName()); context.getPackageName(), DebugSettingsActivity.class.getName());
debugSettings.setIntent(debugSettingsIntent); debugScreen.setIntent(debugSettingsIntent);
} else { } else {
miscSettings.removePreference(debugSettings); advancedScreen.removePreference(debugScreen);
}
}
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( final boolean showVoiceKeyOption = res.getBoolean(
R.bool.config_enable_show_voice_key_option); R.bool.config_enable_show_voice_key_option);
if (!showVoiceKeyOption) { if (!showVoiceKeyOption) {
removePreference(Settings.PREF_VOICE_INPUT_KEY, generalSettings); removePreference(Settings.PREF_VOICE_INPUT_KEY, inputScreen);
} }
final PreferenceGroup advancedSettings =
(PreferenceGroup) findPreference(Settings.PREF_ADVANCED_SETTINGS);
if (!AudioAndHapticFeedbackManager.getInstance().hasVibrator()) { if (!AudioAndHapticFeedbackManager.getInstance().hasVibrator()) {
removePreference(Settings.PREF_VIBRATE_ON, generalSettings); removePreference(Settings.PREF_VIBRATE_ON, inputScreen);
removePreference(Settings.PREF_VIBRATION_DURATION_SETTINGS, advancedSettings); removePreference(Settings.PREF_VIBRATION_DURATION_SETTINGS, advancedScreen);
} }
if (!Settings.ENABLE_SHOW_LANGUAGE_SWITCH_KEY_SETTINGS) { if (!Settings.ENABLE_SHOW_LANGUAGE_SWITCH_KEY_SETTINGS) {
removePreference(Settings.PREF_SHOW_LANGUAGE_SWITCH_KEY, multiLingualScreen);
removePreference( removePreference(
Settings.PREF_SHOW_LANGUAGE_SWITCH_KEY, advancedSettings); Settings.PREF_INCLUDE_OTHER_IMES_IN_LANGUAGE_SWITCH_LIST, multiLingualScreen);
removePreference(
Settings.PREF_INCLUDE_OTHER_IMES_IN_LANGUAGE_SWITCH_LIST, advancedSettings);
} }
// TODO: consolidate key preview dismiss delay with the key preview animation parameters. // TODO: consolidate key preview dismiss delay with the key preview animation parameters.
if (!Settings.readFromBuildConfigIfToShowKeyPreviewPopupOption(res)) { if (!Settings.readFromBuildConfigIfToShowKeyPreviewPopupOption(res)) {
removePreference(Settings.PREF_POPUP_ON, generalSettings); removePreference(Settings.PREF_POPUP_ON, inputScreen);
removePreference(Settings.PREF_KEY_PREVIEW_POPUP_DISMISS_DELAY, advancedSettings); removePreference(Settings.PREF_KEY_PREVIEW_POPUP_DISMISS_DELAY, advancedScreen);
} else { } else {
// TODO: Cleanup this setup. // TODO: Cleanup this setup.
final ListPreference keyPreviewPopupDismissDelay = final ListPreference keyPreviewPopupDismissDelay =
@ -199,18 +188,16 @@ public final class SettingsFragment extends InputMethodSettingsFragment
} }
if (!res.getBoolean(R.bool.config_setup_wizard_available)) { if (!res.getBoolean(R.bool.config_setup_wizard_available)) {
removePreference(Settings.PREF_SHOW_SETUP_WIZARD_ICON, advancedSettings); removePreference(Settings.PREF_SHOW_SETUP_WIZARD_ICON, advancedScreen);
} }
final PreferenceGroup textCorrectionGroup =
(PreferenceGroup) findPreference(Settings.PREF_CORRECTION_SETTINGS);
final PreferenceScreen dictionaryLink = final PreferenceScreen dictionaryLink =
(PreferenceScreen) findPreference(Settings.PREF_CONFIGURE_DICTIONARIES_KEY); (PreferenceScreen) findPreference(Settings.PREF_CONFIGURE_DICTIONARIES_KEY);
final Intent intent = dictionaryLink.getIntent(); final Intent intent = dictionaryLink.getIntent();
intent.setClassName(context.getPackageName(), DictionarySettingsActivity.class.getName()); intent.setClassName(context.getPackageName(), DictionarySettingsActivity.class.getName());
final int number = context.getPackageManager().queryIntentActivities(intent, 0).size(); final int number = context.getPackageManager().queryIntentActivities(intent, 0).size();
if (0 >= number) { if (0 >= number) {
textCorrectionGroup.removePreference(dictionaryLink); correctionScreen.removePreference(dictionaryLink);
} }
if (ProductionFlag.IS_METRICS_LOGGING_SUPPORTED) { if (ProductionFlag.IS_METRICS_LOGGING_SUPPORTED) {
@ -224,7 +211,7 @@ public final class SettingsFragment extends InputMethodSettingsFragment
enableMetricsLogging.setTitle(enableMetricsLoggingTitle); enableMetricsLogging.setTitle(enableMetricsLoggingTitle);
} }
} else { } else {
removePreference(Settings.PREF_ENABLE_METRICS_LOGGING, textCorrectionGroup); removePreference(Settings.PREF_ENABLE_METRICS_LOGGING, advancedScreen);
} }
final Preference editPersonalDictionary = final Preference editPersonalDictionary =
@ -238,7 +225,7 @@ public final class SettingsFragment extends InputMethodSettingsFragment
} }
if (!Settings.readFromBuildConfigIfGestureInputEnabled(res)) { if (!Settings.readFromBuildConfigIfGestureInputEnabled(res)) {
removePreference(Settings.PREF_GESTURE_SETTINGS, getPreferenceScreen()); getPreferenceScreen().removePreference(gestureScreen);
} }
AdditionalFeaturesSettingUtils.addAdditionalFeaturesPreferences(context, this); AdditionalFeaturesSettingUtils.addAdditionalFeaturesPreferences(context, this);
@ -261,8 +248,8 @@ public final class SettingsFragment extends InputMethodSettingsFragment
voiceInputKeyOption.setSummary(isShortcutImeEnabled ? null voiceInputKeyOption.setSummary(isShortcutImeEnabled ? null
: res.getText(R.string.voice_input_disabled_summary)); : res.getText(R.string.voice_input_disabled_summary));
} }
final CheckBoxPreference showSetupWizardIcon = final TwoStatePreference showSetupWizardIcon =
(CheckBoxPreference)findPreference(Settings.PREF_SHOW_SETUP_WIZARD_ICON); (TwoStatePreference)findPreference(Settings.PREF_SHOW_SETUP_WIZARD_ICON);
if (showSetupWizardIcon != null) { if (showSetupWizardIcon != null) {
showSetupWizardIcon.setChecked(Settings.readShowSetupWizardIcon(prefs, getActivity())); showSetupWizardIcon.setChecked(Settings.readShowSetupWizardIcon(prefs, getActivity()));
} }
@ -476,4 +463,33 @@ public final class SettingsFragment extends InputMethodSettingsFragment
userDictionaryPreference.setFragment(UserDictionaryList.class.getName()); userDictionaryPreference.setFragment(UserDictionaryList.class.getName());
} }
} }
@Override
public void onCreateOptionsMenu(final Menu menu, final MenuInflater inflater) {
if (FeedbackUtils.isFeedbackFormSupported()) {
menu.add(NO_MENU_GROUP, MENU_FEEDBACK /* itemId */, MENU_FEEDBACK /* order */,
R.string.send_feedback);
}
final int aboutResId = FeedbackUtils.getAboutKeyboardTitleResId();
if (aboutResId != 0) {
menu.add(NO_MENU_GROUP, MENU_ABOUT /* itemId */, MENU_ABOUT /* order */, aboutResId);
}
}
@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) {
final Intent aboutIntent = FeedbackUtils.getAboutKeyboardIntent(getActivity());
if (aboutIntent != null) {
startActivity(aboutIntent);
return true;
}
}
return super.onOptionsItemSelected(item);
}
} }