diff options
author | Jeff Brown <jeffbrown@google.com> | 2012-04-13 20:40:06 -0700 |
---|---|---|
committer | Android (Google) Code Review <android-gerrit@google.com> | 2012-04-13 20:40:06 -0700 |
commit | 08c9dcc0833bbe79c2d327d1859d31fc0b15cf96 (patch) | |
tree | 0b43a276ac929a431892dad1e97baf6788827c22 | |
parent | d350f8556e45ea40855ca23702bed25c8dcb16c3 (diff) | |
parent | f8fb0e5b240b1e954660b8221eaa9a18a310a1df (diff) | |
download | packages_apps_Settings-08c9dcc0833bbe79c2d327d1859d31fc0b15cf96.zip packages_apps_Settings-08c9dcc0833bbe79c2d327d1859d31fc0b15cf96.tar.gz packages_apps_Settings-08c9dcc0833bbe79c2d327d1859d31fc0b15cf96.tar.bz2 |
Merge "Add setting to redirect vibrator to game controller."
-rw-r--r-- | res/values/strings.xml | 8 | ||||
-rw-r--r-- | res/xml/language_settings.xml | 10 | ||||
-rw-r--r-- | src/com/android/settings/inputmethod/InputMethodAndLanguageSettings.java | 49 |
3 files changed, 61 insertions, 6 deletions
diff --git a/res/values/strings.xml b/res/values/strings.xml index 97ee27c..fc34c35 100644 --- a/res/values/strings.xml +++ b/res/values/strings.xml @@ -2613,11 +2613,19 @@ card numbers. It comes from the app <xliff:g id="spellchecker_application_name">%1$s</xliff:g>. Use this spell checker?</string> + <!-- On Language & input settings screen, heading. Inside the "Language & input settings" screen, this is the header for settings that relate to mouse and trackpad devices. [CHAR LIMIT=40] --> <string name="pointer_settings_category">Mouse/trackpad</string> <!-- On Language & input settings screen, setting summary. Setting for mouse pointer speed. [CHAR LIMIT=35] --> <string name="pointer_speed">Pointer speed</string> + <!-- On Language & input settings screen, heading. Inside the "Language & input settings" screen, this is the header for settings that relate to game controller devices. [CHAR LIMIT=40] --> + <string name="game_controller_settings_category">Game Controller</string> + <!-- On Language & input settings screen, setting title. Setting to redirect vibration to input devices. [CHAR LIMIT=35] --> + <string name="vibrate_input_devices">Use vibrator</string> + <!-- On Language & input settings screen, setting summary. Setting to redirect vibration to input devices. [CHAR LIMIT=100] --> + <string name="vibrate_input_devices_summary">Redirect vibrator to game controller when connected.</string> + <!-- Keyboard Layout Picker --> <skip /> <!-- Title for the keyboard layout picker activity. [CHAR LIMIT=35] --> <string name="keyboard_layout_picker_title">Choose keyboard layout</string> diff --git a/res/xml/language_settings.xml b/res/xml/language_settings.xml index cfcc341..f001486 100644 --- a/res/xml/language_settings.xml +++ b/res/xml/language_settings.xml @@ -92,4 +92,14 @@ android:title="@string/pointer_speed" android:dialogTitle="@string/pointer_speed" /> </PreferenceCategory> + + <PreferenceCategory android:key="game_controller_settings_category" + android:title="@string/game_controller_settings_category"> + <CheckBoxPreference + android:key="vibrate_input_devices" + android:title="@string/vibrate_input_devices" + android:summaryOn="@string/vibrate_input_devices_summary" + android:summaryOff="@string/vibrate_input_devices_summary" + android:persistent="false"/> + </PreferenceCategory> </PreferenceScreen> diff --git a/src/com/android/settings/inputmethod/InputMethodAndLanguageSettings.java b/src/com/android/settings/inputmethod/InputMethodAndLanguageSettings.java index 7d02a1f..e764a73 100644 --- a/src/com/android/settings/inputmethod/InputMethodAndLanguageSettings.java +++ b/src/com/android/settings/inputmethod/InputMethodAndLanguageSettings.java @@ -73,6 +73,7 @@ public class InputMethodAndLanguageSettings extends SettingsPreferenceFragment private ListPreference mShowInputMethodSelectorPref; private PreferenceCategory mKeyboardSettingsCategory; private PreferenceCategory mHardKeyboardCategory; + private PreferenceCategory mGameControllerCategory; private Preference mLanguagePref; private final ArrayList<InputMethodPreference> mInputMethodPreferenceList = new ArrayList<InputMethodPreference>(); @@ -118,6 +119,8 @@ public class InputMethodAndLanguageSettings extends SettingsPreferenceFragment mHardKeyboardCategory = (PreferenceCategory)findPreference("hard_keyboard"); mKeyboardSettingsCategory = (PreferenceCategory)findPreference( "keyboard_settings_category"); + mGameControllerCategory = (PreferenceCategory)findPreference( + "game_controller_settings_category"); // Filter out irrelevant features if invoked from IME settings button. mIsOnlyImeSettings = Settings.ACTION_INPUT_METHOD_SETTINGS.equals( @@ -159,9 +162,9 @@ public class InputMethodAndLanguageSettings extends SettingsPreferenceFragment } } - // Build hard keyboard preference category. + // Build hard keyboard and game controller preference categories. mIm = (InputManager)getActivity().getSystemService(Context.INPUT_SERVICE); - updateHardKeyboards(); + updateInputDevices(); // Spell Checker final Intent intent = new Intent(Intent.ACTION_MAIN); @@ -245,7 +248,7 @@ public class InputMethodAndLanguageSettings extends SettingsPreferenceFragment } } - updateHardKeyboards(); + updateInputDevices(); // IME InputMethodAndSubtypeUtil.loadInputMethodSubtypeList( @@ -268,17 +271,17 @@ public class InputMethodAndLanguageSettings extends SettingsPreferenceFragment @Override public void onInputDeviceAdded(int deviceId) { - updateHardKeyboards(); + updateInputDevices(); } @Override public void onInputDeviceChanged(int deviceId) { - updateHardKeyboards(); + updateInputDevices(); } @Override public void onInputDeviceRemoved(int deviceId) { - updateHardKeyboards(); + updateInputDevices(); } @Override @@ -306,6 +309,11 @@ public class InputMethodAndLanguageSettings extends SettingsPreferenceFragment } } } + if (chkPref == mGameControllerCategory.findPreference("vibrate_input_devices")) { + System.putInt(getContentResolver(), Settings.System.VIBRATE_INPUT_DEVICES, + chkPref.isChecked() ? 1 : 0); + return true; + } } return super.onPreferenceTreeClick(preferenceScreen, preference); } @@ -382,6 +390,11 @@ public class InputMethodAndLanguageSettings extends SettingsPreferenceFragment return pref; } + private void updateInputDevices() { + updateHardKeyboards(); + updateGameControllers(); + } + private void updateHardKeyboards() { mHardKeyboardPreferenceList.clear(); if (getResources().getConfiguration().keyboard == Configuration.KEYBOARD_QWERTY) { @@ -436,6 +449,30 @@ public class InputMethodAndLanguageSettings extends SettingsPreferenceFragment } } + private void updateGameControllers() { + if (haveInputDeviceWithVibrator()) { + getPreferenceScreen().addPreference(mGameControllerCategory); + + CheckBoxPreference chkPref = (CheckBoxPreference) + mGameControllerCategory.findPreference("vibrate_input_devices"); + chkPref.setChecked(System.getInt(getContentResolver(), + Settings.System.VIBRATE_INPUT_DEVICES, 1) > 0); + } else { + getPreferenceScreen().removePreference(mGameControllerCategory); + } + } + + private boolean haveInputDeviceWithVibrator() { + final int[] devices = InputDevice.getDeviceIds(); + for (int i = 0; i < devices.length; i++) { + InputDevice device = InputDevice.getDevice(devices[i]); + if (device != null && !device.isVirtual() && device.getVibrator().hasVibrator()) { + return true; + } + } + return false; + } + private class SettingsObserver extends ContentObserver { public SettingsObserver(Handler handler, Context context) { super(handler); |