Loading AndroidManifest.xml +1 −1 Original line number Diff line number Diff line Loading @@ -638,7 +638,7 @@ <category android:name="android.intent.category.DEFAULT" /> </intent-filter> <meta-data android:name="com.android.settings.FRAGMENT_CLASS" android:value="com.android.settings.inputmethod.KeyboardLayoutPickerFragment" /> android:value="com.android.settings.inputmethod.KeyboardLayoutPickerFragment2" /> </activity> <!-- Keep compatibility with old shortcuts. --> Loading res/values/strings.xml +4 −0 Original line number Diff line number Diff line Loading @@ -3557,6 +3557,10 @@ <string name="show_ime_summary">Keep it on screen while physical keyboard is active</string> <!-- Title for the button to trigger the 'keyboard shortcuts helper' dialog. [CHAR LIMIT=35] --> <string name="keyboard_shortcuts_helper">Keyboard shortcuts helper</string> <!-- Format string for a physical device in the form: InputMethodSubtype - InputMethodEditor. e.g. English (US) - X Keyboard --> <string name="physical_device_title"><xliff:g id="input_method_subtype" example="English (US)">%1$s</xliff:g> - <xliff:g id="input_method_editor" example="X Keyboard">%2$s</xliff:g></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> Loading src/com/android/settings/SettingsActivity.java +2 −0 Original line number Diff line number Diff line Loading @@ -79,6 +79,7 @@ import com.android.settings.fuelgauge.PowerUsageSummary; import com.android.settings.inputmethod.AvailableVirtualKeyboardFragment; import com.android.settings.inputmethod.InputMethodAndLanguageSettings; import com.android.settings.inputmethod.KeyboardLayoutPickerFragment; import com.android.settings.inputmethod.KeyboardLayoutPickerFragment2; import com.android.settings.inputmethod.SpellCheckersSettings; import com.android.settings.inputmethod.UserDictionaryList; import com.android.settings.localepicker.LocaleListEditor; Loading Loading @@ -292,6 +293,7 @@ public class SettingsActivity extends SettingsDrawerActivity TrustedCredentialsSettings.class.getName(), PaymentSettings.class.getName(), KeyboardLayoutPickerFragment.class.getName(), KeyboardLayoutPickerFragment2.class.getName(), ZenModeSettings.class.getName(), SoundSettings.class.getName(), ConfigureNotificationSettings.class.getName(), Loading src/com/android/settings/inputmethod/KeyboardLayoutDialogFragment.java +1 −1 Original line number Diff line number Diff line Loading @@ -301,7 +301,7 @@ public class KeyboardLayoutDialogFragment extends DialogFragment } } static final class KeyboardLayoutLoader extends AsyncTaskLoader<Keyboards> { private static final class KeyboardLayoutLoader extends AsyncTaskLoader<Keyboards> { private final InputDeviceIdentifier mInputDeviceIdentifier; public KeyboardLayoutLoader(Context context, InputDeviceIdentifier inputDeviceIdentifier) { Loading src/com/android/settings/inputmethod/KeyboardLayoutPickerFragment2.java 0 → 100644 +155 −0 Original line number Diff line number Diff line /* * Copyright (C) 2012 The Android Open Source Project * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package com.android.settings.inputmethod; import android.app.Activity; import android.hardware.input.InputDeviceIdentifier; import android.hardware.input.InputManager; import android.hardware.input.InputManager.InputDeviceListener; import android.hardware.input.KeyboardLayout; import android.os.Bundle; import android.support.v7.preference.Preference; import android.support.v7.preference.PreferenceScreen; import android.view.InputDevice; import android.view.inputmethod.InputMethodInfo; import android.view.inputmethod.InputMethodSubtype; import com.android.internal.logging.MetricsLogger; import com.android.internal.util.Preconditions; import com.android.settings.R; import com.android.settings.SettingsPreferenceFragment; import java.util.Arrays; import java.util.HashMap; import java.util.Map; public final class KeyboardLayoutPickerFragment2 extends SettingsPreferenceFragment implements InputDeviceListener { private InputDeviceIdentifier mInputDeviceIdentifier; private int mInputDeviceId = -1; private InputManager mIm; private InputMethodInfo mImi; private InputMethodSubtype mSubtype; private KeyboardLayout[] mKeyboardLayouts; private Map<Preference, KeyboardLayout> mPreferenceMap = new HashMap<>(); // TODO: Make these constants public API for b/25752827 /** * Intent extra: The input device descriptor of the keyboard whose keyboard * layout is to be changed. */ public static final String EXTRA_INPUT_DEVICE_IDENTIFIER = "input_device_identifier"; /** * Intent extra: The associated {@link InputMethodInfo}. */ public static final String EXTRA_INPUT_METHOD_INFO = "input_method_info"; /** * Intent extra: The associated {@link InputMethodSubtype}. */ public static final String EXTRA_INPUT_METHOD_SUBTYPE = "input_method_subtype"; @Override protected int getMetricsCategory() { return MetricsLogger.INPUTMETHOD_KEYBOARD; } @Override public void onCreate(Bundle icicle) { super.onCreate(icicle); Activity activity = Preconditions.checkNotNull(getActivity()); mInputDeviceIdentifier = activity.getIntent().getParcelableExtra( EXTRA_INPUT_DEVICE_IDENTIFIER); mImi = activity.getIntent().getParcelableExtra(EXTRA_INPUT_METHOD_INFO); mSubtype = activity.getIntent().getParcelableExtra(EXTRA_INPUT_METHOD_SUBTYPE); if (mInputDeviceIdentifier == null || mImi == null || mSubtype == null) { activity.finish(); } mIm = activity.getSystemService(InputManager.class); mKeyboardLayouts = mIm.getKeyboardLayoutsForInputDevice(mInputDeviceIdentifier); Arrays.sort(mKeyboardLayouts); setPreferenceScreen(createPreferenceHierarchy()); } @Override public void onResume() { super.onResume(); mIm.registerInputDeviceListener(this, null); InputDevice inputDevice = mIm.getInputDeviceByDescriptor(mInputDeviceIdentifier.getDescriptor()); if (inputDevice == null) { getActivity().finish(); return; } mInputDeviceId = inputDevice.getId(); } @Override public void onPause() { mIm.unregisterInputDeviceListener(this); mInputDeviceId = -1; super.onPause(); } @Override public boolean onPreferenceTreeClick(Preference preference) { KeyboardLayout layout = mPreferenceMap.get(preference); if (layout != null) { mIm.setKeyboardLayoutForInputDevice(mInputDeviceIdentifier, mImi, mSubtype, layout.getDescriptor()); getActivity().finish(); return true; } return super.onPreferenceTreeClick(preference); } @Override public void onInputDeviceAdded(int deviceId) {} @Override public void onInputDeviceChanged(int deviceId) {} @Override public void onInputDeviceRemoved(int deviceId) { if (mInputDeviceId >= 0 && deviceId == mInputDeviceId) { getActivity().finish(); } } private PreferenceScreen createPreferenceHierarchy() { PreferenceScreen root = getPreferenceManager().createPreferenceScreen(getActivity()); for (KeyboardLayout layout : mKeyboardLayouts) { Preference pref = new Preference(getPrefContext()); pref.setTitle(layout.getLabel()); root.addPreference(pref); mPreferenceMap.put(pref, layout); } root.setTitle(PhysicalKeyboardFragment.getDisplayName(getContext(), mImi, mSubtype)); return root; } } Loading
AndroidManifest.xml +1 −1 Original line number Diff line number Diff line Loading @@ -638,7 +638,7 @@ <category android:name="android.intent.category.DEFAULT" /> </intent-filter> <meta-data android:name="com.android.settings.FRAGMENT_CLASS" android:value="com.android.settings.inputmethod.KeyboardLayoutPickerFragment" /> android:value="com.android.settings.inputmethod.KeyboardLayoutPickerFragment2" /> </activity> <!-- Keep compatibility with old shortcuts. --> Loading
res/values/strings.xml +4 −0 Original line number Diff line number Diff line Loading @@ -3557,6 +3557,10 @@ <string name="show_ime_summary">Keep it on screen while physical keyboard is active</string> <!-- Title for the button to trigger the 'keyboard shortcuts helper' dialog. [CHAR LIMIT=35] --> <string name="keyboard_shortcuts_helper">Keyboard shortcuts helper</string> <!-- Format string for a physical device in the form: InputMethodSubtype - InputMethodEditor. e.g. English (US) - X Keyboard --> <string name="physical_device_title"><xliff:g id="input_method_subtype" example="English (US)">%1$s</xliff:g> - <xliff:g id="input_method_editor" example="X Keyboard">%2$s</xliff:g></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> Loading
src/com/android/settings/SettingsActivity.java +2 −0 Original line number Diff line number Diff line Loading @@ -79,6 +79,7 @@ import com.android.settings.fuelgauge.PowerUsageSummary; import com.android.settings.inputmethod.AvailableVirtualKeyboardFragment; import com.android.settings.inputmethod.InputMethodAndLanguageSettings; import com.android.settings.inputmethod.KeyboardLayoutPickerFragment; import com.android.settings.inputmethod.KeyboardLayoutPickerFragment2; import com.android.settings.inputmethod.SpellCheckersSettings; import com.android.settings.inputmethod.UserDictionaryList; import com.android.settings.localepicker.LocaleListEditor; Loading Loading @@ -292,6 +293,7 @@ public class SettingsActivity extends SettingsDrawerActivity TrustedCredentialsSettings.class.getName(), PaymentSettings.class.getName(), KeyboardLayoutPickerFragment.class.getName(), KeyboardLayoutPickerFragment2.class.getName(), ZenModeSettings.class.getName(), SoundSettings.class.getName(), ConfigureNotificationSettings.class.getName(), Loading
src/com/android/settings/inputmethod/KeyboardLayoutDialogFragment.java +1 −1 Original line number Diff line number Diff line Loading @@ -301,7 +301,7 @@ public class KeyboardLayoutDialogFragment extends DialogFragment } } static final class KeyboardLayoutLoader extends AsyncTaskLoader<Keyboards> { private static final class KeyboardLayoutLoader extends AsyncTaskLoader<Keyboards> { private final InputDeviceIdentifier mInputDeviceIdentifier; public KeyboardLayoutLoader(Context context, InputDeviceIdentifier inputDeviceIdentifier) { Loading
src/com/android/settings/inputmethod/KeyboardLayoutPickerFragment2.java 0 → 100644 +155 −0 Original line number Diff line number Diff line /* * Copyright (C) 2012 The Android Open Source Project * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package com.android.settings.inputmethod; import android.app.Activity; import android.hardware.input.InputDeviceIdentifier; import android.hardware.input.InputManager; import android.hardware.input.InputManager.InputDeviceListener; import android.hardware.input.KeyboardLayout; import android.os.Bundle; import android.support.v7.preference.Preference; import android.support.v7.preference.PreferenceScreen; import android.view.InputDevice; import android.view.inputmethod.InputMethodInfo; import android.view.inputmethod.InputMethodSubtype; import com.android.internal.logging.MetricsLogger; import com.android.internal.util.Preconditions; import com.android.settings.R; import com.android.settings.SettingsPreferenceFragment; import java.util.Arrays; import java.util.HashMap; import java.util.Map; public final class KeyboardLayoutPickerFragment2 extends SettingsPreferenceFragment implements InputDeviceListener { private InputDeviceIdentifier mInputDeviceIdentifier; private int mInputDeviceId = -1; private InputManager mIm; private InputMethodInfo mImi; private InputMethodSubtype mSubtype; private KeyboardLayout[] mKeyboardLayouts; private Map<Preference, KeyboardLayout> mPreferenceMap = new HashMap<>(); // TODO: Make these constants public API for b/25752827 /** * Intent extra: The input device descriptor of the keyboard whose keyboard * layout is to be changed. */ public static final String EXTRA_INPUT_DEVICE_IDENTIFIER = "input_device_identifier"; /** * Intent extra: The associated {@link InputMethodInfo}. */ public static final String EXTRA_INPUT_METHOD_INFO = "input_method_info"; /** * Intent extra: The associated {@link InputMethodSubtype}. */ public static final String EXTRA_INPUT_METHOD_SUBTYPE = "input_method_subtype"; @Override protected int getMetricsCategory() { return MetricsLogger.INPUTMETHOD_KEYBOARD; } @Override public void onCreate(Bundle icicle) { super.onCreate(icicle); Activity activity = Preconditions.checkNotNull(getActivity()); mInputDeviceIdentifier = activity.getIntent().getParcelableExtra( EXTRA_INPUT_DEVICE_IDENTIFIER); mImi = activity.getIntent().getParcelableExtra(EXTRA_INPUT_METHOD_INFO); mSubtype = activity.getIntent().getParcelableExtra(EXTRA_INPUT_METHOD_SUBTYPE); if (mInputDeviceIdentifier == null || mImi == null || mSubtype == null) { activity.finish(); } mIm = activity.getSystemService(InputManager.class); mKeyboardLayouts = mIm.getKeyboardLayoutsForInputDevice(mInputDeviceIdentifier); Arrays.sort(mKeyboardLayouts); setPreferenceScreen(createPreferenceHierarchy()); } @Override public void onResume() { super.onResume(); mIm.registerInputDeviceListener(this, null); InputDevice inputDevice = mIm.getInputDeviceByDescriptor(mInputDeviceIdentifier.getDescriptor()); if (inputDevice == null) { getActivity().finish(); return; } mInputDeviceId = inputDevice.getId(); } @Override public void onPause() { mIm.unregisterInputDeviceListener(this); mInputDeviceId = -1; super.onPause(); } @Override public boolean onPreferenceTreeClick(Preference preference) { KeyboardLayout layout = mPreferenceMap.get(preference); if (layout != null) { mIm.setKeyboardLayoutForInputDevice(mInputDeviceIdentifier, mImi, mSubtype, layout.getDescriptor()); getActivity().finish(); return true; } return super.onPreferenceTreeClick(preference); } @Override public void onInputDeviceAdded(int deviceId) {} @Override public void onInputDeviceChanged(int deviceId) {} @Override public void onInputDeviceRemoved(int deviceId) { if (mInputDeviceId >= 0 && deviceId == mInputDeviceId) { getActivity().finish(); } } private PreferenceScreen createPreferenceHierarchy() { PreferenceScreen root = getPreferenceManager().createPreferenceScreen(getActivity()); for (KeyboardLayout layout : mKeyboardLayouts) { Preference pref = new Preference(getPrefContext()); pref.setTitle(layout.getLabel()); root.addPreference(pref); mPreferenceMap.put(pref, layout); } root.setTitle(PhysicalKeyboardFragment.getDisplayName(getContext(), mImi, mSubtype)); return root; } }