Loading res/values/strings.xml +0 −4 Original line number Diff line number Diff line Loading @@ -4177,10 +4177,6 @@ <string name="keyboard_shortcuts_helper">Keyboard shortcuts helper</string> <!-- Summary text for the 'keyboard shortcuts helper' dialog. [CHAR LIMIT=100] --> <string name="keyboard_shortcuts_helper_summary">Display available shortcuts</string> <!-- Format string for a physical device in the form: InputMethodSubtype - InputMethodEditor. e.g. English (US) - X Keyboard --> <string name="physical_device_title" translatable="false"><xliff:g id="input_method_editor" example="X Keyboard">%1$s</xliff:g> - <xliff:g id="input_method_subtype" example="English (US)">%2$s</xliff:g></string> <!-- Summary text for keyboards when no layout has been selected. [CHAR LIMIT=35] --> <string name="default_keyboard_layout">Default</string> Loading src/com/android/settings/inputmethod/KeyboardLayoutPickerFragment.java +43 −45 Original line number Diff line number Diff line Loading @@ -16,43 +16,31 @@ package com.android.settings.inputmethod; import android.annotation.Nullable; import android.app.Activity; import android.content.Context; 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.CheckBoxPreference; 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.logging.nano.MetricsProto.MetricsEvent; import com.android.internal.util.Preconditions; import com.android.settings.R; import com.android.settings.SettingsPreferenceFragment; import com.android.settings.inputmethod.PhysicalKeyboardFragment.KeyboardInfoPreference; import java.util.Arrays; import java.util.HashMap; import java.util.Map; public final class KeyboardLayoutPickerFragment extends SettingsPreferenceFragment public class KeyboardLayoutPickerFragment extends SettingsPreferenceFragment implements InputDeviceListener { private InputDeviceIdentifier mInputDeviceIdentifier; private int mInputDeviceId = -1; private InputManager mIm; private InputMethodInfo mImi; @Nullable private InputMethodSubtype mSubtype; private KeyboardLayout[] mKeyboardLayouts; private Map<Preference, KeyboardLayout> mPreferenceMap = new HashMap<>(); // TODO: Make these constants public API for b/25752827 private HashMap<CheckBoxPreference, KeyboardLayout> mPreferenceMap = new HashMap<>(); /** * Intent extra: The input device descriptor of the keyboard whose keyboard Loading @@ -60,16 +48,6 @@ public final class KeyboardLayoutPickerFragment extends SettingsPreferenceFragme */ 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 public int getMetricsCategory() { return MetricsEvent.INPUTMETHOD_KEYBOARD; Loading @@ -78,18 +56,14 @@ public final class KeyboardLayoutPickerFragment extends SettingsPreferenceFragme @Override public void onCreate(Bundle icicle) { super.onCreate(icicle); Activity activity = Preconditions.checkNotNull(getActivity()); mInputDeviceIdentifier = activity.getIntent().getParcelableExtra( mInputDeviceIdentifier = getActivity().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) { activity.finish(); if (mInputDeviceIdentifier == null) { getActivity().finish(); } mIm = activity.getSystemService(InputManager.class); mIm = (InputManager) getSystemService(Context.INPUT_SERVICE); mKeyboardLayouts = mIm.getKeyboardLayoutsForInputDevice(mInputDeviceIdentifier); Arrays.sort(mKeyboardLayouts); setPreferenceScreen(createPreferenceHierarchy()); Loading @@ -108,6 +82,8 @@ public final class KeyboardLayoutPickerFragment extends SettingsPreferenceFragme return; } mInputDeviceId = inputDevice.getId(); updateCheckedState(); } @Override Loading @@ -120,21 +96,34 @@ public final class KeyboardLayoutPickerFragment extends SettingsPreferenceFragme @Override public boolean onPreferenceTreeClick(Preference preference) { KeyboardLayout layout = mPreferenceMap.get(preference); if (preference instanceof CheckBoxPreference) { CheckBoxPreference checkboxPref = (CheckBoxPreference)preference; KeyboardLayout layout = mPreferenceMap.get(checkboxPref); if (layout != null) { mIm.setKeyboardLayoutForInputDevice(mInputDeviceIdentifier, mImi, mSubtype, boolean checked = checkboxPref.isChecked(); if (checked) { mIm.addKeyboardLayoutForInputDevice(mInputDeviceIdentifier, layout.getDescriptor()); getActivity().finish(); } else { mIm.removeKeyboardLayoutForInputDevice(mInputDeviceIdentifier, layout.getDescriptor()); } return true; } } return super.onPreferenceTreeClick(preference); } @Override public void onInputDeviceAdded(int deviceId) {} public void onInputDeviceAdded(int deviceId) { } @Override public void onInputDeviceChanged(int deviceId) {} public void onInputDeviceChanged(int deviceId) { if (mInputDeviceId >= 0 && deviceId == mInputDeviceId) { updateCheckedState(); } } @Override public void onInputDeviceRemoved(int deviceId) { Loading @@ -147,14 +136,23 @@ public final class KeyboardLayoutPickerFragment extends SettingsPreferenceFragme PreferenceScreen root = getPreferenceManager().createPreferenceScreen(getActivity()); for (KeyboardLayout layout : mKeyboardLayouts) { Preference pref = new Preference(getPrefContext()); CheckBoxPreference pref = new CheckBoxPreference(getPrefContext()); pref.setTitle(layout.getLabel()); pref.setSummary(layout.getCollection()); root.addPreference(pref); mPreferenceMap.put(pref, layout); } root.setTitle(KeyboardInfoPreference.getDisplayName(getContext(), mImi, mSubtype)); return root; } private void updateCheckedState() { String[] enabledKeyboardLayouts = mIm.getEnabledKeyboardLayoutsForInputDevice( mInputDeviceIdentifier); Arrays.sort(enabledKeyboardLayouts); for (Map.Entry<CheckBoxPreference, KeyboardLayout> entry : mPreferenceMap.entrySet()) { entry.getKey().setChecked(Arrays.binarySearch(enabledKeyboardLayouts, entry.getValue().getDescriptor()) >= 0); } } } src/com/android/settings/inputmethod/PhysicalKeyboardFragment.java +120 −310 File changed.Preview size limit exceeded, changes collapsed. Show changes src/com/android/settings/inputmethod/PhysicalKeyboardPreferenceController.java +1 −1 Original line number Diff line number Diff line Loading @@ -94,7 +94,7 @@ public class PhysicalKeyboardPreferenceController extends AbstractPreferenceCont return; } final List<HardKeyboardDeviceInfo> keyboards = PhysicalKeyboardFragment.getHardKeyboards(); PhysicalKeyboardFragment.getHardKeyboards(mContext); if (keyboards.isEmpty()) { mPreference.setSummary(R.string.disconnected); return; Loading tests/robotests/src/com/android/settings/inputmethod/PhysicalKeyboardPreferenceControllerTest.java +1 −1 Original line number Diff line number Diff line Loading @@ -55,7 +55,7 @@ public class PhysicalKeyboardPreferenceControllerTest { @Before public void setUp() { MockitoAnnotations.initMocks(this); when(mContext.getSystemService(Context.INPUT_SERVICE)).thenReturn(mIm); when(mContext.getSystemService(InputManager.class)).thenReturn(mIm); mController = new PhysicalKeyboardPreferenceController(mContext, null /* lifecycle */); } Loading Loading
res/values/strings.xml +0 −4 Original line number Diff line number Diff line Loading @@ -4177,10 +4177,6 @@ <string name="keyboard_shortcuts_helper">Keyboard shortcuts helper</string> <!-- Summary text for the 'keyboard shortcuts helper' dialog. [CHAR LIMIT=100] --> <string name="keyboard_shortcuts_helper_summary">Display available shortcuts</string> <!-- Format string for a physical device in the form: InputMethodSubtype - InputMethodEditor. e.g. English (US) - X Keyboard --> <string name="physical_device_title" translatable="false"><xliff:g id="input_method_editor" example="X Keyboard">%1$s</xliff:g> - <xliff:g id="input_method_subtype" example="English (US)">%2$s</xliff:g></string> <!-- Summary text for keyboards when no layout has been selected. [CHAR LIMIT=35] --> <string name="default_keyboard_layout">Default</string> Loading
src/com/android/settings/inputmethod/KeyboardLayoutPickerFragment.java +43 −45 Original line number Diff line number Diff line Loading @@ -16,43 +16,31 @@ package com.android.settings.inputmethod; import android.annotation.Nullable; import android.app.Activity; import android.content.Context; 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.CheckBoxPreference; 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.logging.nano.MetricsProto.MetricsEvent; import com.android.internal.util.Preconditions; import com.android.settings.R; import com.android.settings.SettingsPreferenceFragment; import com.android.settings.inputmethod.PhysicalKeyboardFragment.KeyboardInfoPreference; import java.util.Arrays; import java.util.HashMap; import java.util.Map; public final class KeyboardLayoutPickerFragment extends SettingsPreferenceFragment public class KeyboardLayoutPickerFragment extends SettingsPreferenceFragment implements InputDeviceListener { private InputDeviceIdentifier mInputDeviceIdentifier; private int mInputDeviceId = -1; private InputManager mIm; private InputMethodInfo mImi; @Nullable private InputMethodSubtype mSubtype; private KeyboardLayout[] mKeyboardLayouts; private Map<Preference, KeyboardLayout> mPreferenceMap = new HashMap<>(); // TODO: Make these constants public API for b/25752827 private HashMap<CheckBoxPreference, KeyboardLayout> mPreferenceMap = new HashMap<>(); /** * Intent extra: The input device descriptor of the keyboard whose keyboard Loading @@ -60,16 +48,6 @@ public final class KeyboardLayoutPickerFragment extends SettingsPreferenceFragme */ 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 public int getMetricsCategory() { return MetricsEvent.INPUTMETHOD_KEYBOARD; Loading @@ -78,18 +56,14 @@ public final class KeyboardLayoutPickerFragment extends SettingsPreferenceFragme @Override public void onCreate(Bundle icicle) { super.onCreate(icicle); Activity activity = Preconditions.checkNotNull(getActivity()); mInputDeviceIdentifier = activity.getIntent().getParcelableExtra( mInputDeviceIdentifier = getActivity().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) { activity.finish(); if (mInputDeviceIdentifier == null) { getActivity().finish(); } mIm = activity.getSystemService(InputManager.class); mIm = (InputManager) getSystemService(Context.INPUT_SERVICE); mKeyboardLayouts = mIm.getKeyboardLayoutsForInputDevice(mInputDeviceIdentifier); Arrays.sort(mKeyboardLayouts); setPreferenceScreen(createPreferenceHierarchy()); Loading @@ -108,6 +82,8 @@ public final class KeyboardLayoutPickerFragment extends SettingsPreferenceFragme return; } mInputDeviceId = inputDevice.getId(); updateCheckedState(); } @Override Loading @@ -120,21 +96,34 @@ public final class KeyboardLayoutPickerFragment extends SettingsPreferenceFragme @Override public boolean onPreferenceTreeClick(Preference preference) { KeyboardLayout layout = mPreferenceMap.get(preference); if (preference instanceof CheckBoxPreference) { CheckBoxPreference checkboxPref = (CheckBoxPreference)preference; KeyboardLayout layout = mPreferenceMap.get(checkboxPref); if (layout != null) { mIm.setKeyboardLayoutForInputDevice(mInputDeviceIdentifier, mImi, mSubtype, boolean checked = checkboxPref.isChecked(); if (checked) { mIm.addKeyboardLayoutForInputDevice(mInputDeviceIdentifier, layout.getDescriptor()); getActivity().finish(); } else { mIm.removeKeyboardLayoutForInputDevice(mInputDeviceIdentifier, layout.getDescriptor()); } return true; } } return super.onPreferenceTreeClick(preference); } @Override public void onInputDeviceAdded(int deviceId) {} public void onInputDeviceAdded(int deviceId) { } @Override public void onInputDeviceChanged(int deviceId) {} public void onInputDeviceChanged(int deviceId) { if (mInputDeviceId >= 0 && deviceId == mInputDeviceId) { updateCheckedState(); } } @Override public void onInputDeviceRemoved(int deviceId) { Loading @@ -147,14 +136,23 @@ public final class KeyboardLayoutPickerFragment extends SettingsPreferenceFragme PreferenceScreen root = getPreferenceManager().createPreferenceScreen(getActivity()); for (KeyboardLayout layout : mKeyboardLayouts) { Preference pref = new Preference(getPrefContext()); CheckBoxPreference pref = new CheckBoxPreference(getPrefContext()); pref.setTitle(layout.getLabel()); pref.setSummary(layout.getCollection()); root.addPreference(pref); mPreferenceMap.put(pref, layout); } root.setTitle(KeyboardInfoPreference.getDisplayName(getContext(), mImi, mSubtype)); return root; } private void updateCheckedState() { String[] enabledKeyboardLayouts = mIm.getEnabledKeyboardLayoutsForInputDevice( mInputDeviceIdentifier); Arrays.sort(enabledKeyboardLayouts); for (Map.Entry<CheckBoxPreference, KeyboardLayout> entry : mPreferenceMap.entrySet()) { entry.getKey().setChecked(Arrays.binarySearch(enabledKeyboardLayouts, entry.getValue().getDescriptor()) >= 0); } } }
src/com/android/settings/inputmethod/PhysicalKeyboardFragment.java +120 −310 File changed.Preview size limit exceeded, changes collapsed. Show changes
src/com/android/settings/inputmethod/PhysicalKeyboardPreferenceController.java +1 −1 Original line number Diff line number Diff line Loading @@ -94,7 +94,7 @@ public class PhysicalKeyboardPreferenceController extends AbstractPreferenceCont return; } final List<HardKeyboardDeviceInfo> keyboards = PhysicalKeyboardFragment.getHardKeyboards(); PhysicalKeyboardFragment.getHardKeyboards(mContext); if (keyboards.isEmpty()) { mPreference.setSummary(R.string.disconnected); return; Loading
tests/robotests/src/com/android/settings/inputmethod/PhysicalKeyboardPreferenceControllerTest.java +1 −1 Original line number Diff line number Diff line Loading @@ -55,7 +55,7 @@ public class PhysicalKeyboardPreferenceControllerTest { @Before public void setUp() { MockitoAnnotations.initMocks(this); when(mContext.getSystemService(Context.INPUT_SERVICE)).thenReturn(mIm); when(mContext.getSystemService(InputManager.class)).thenReturn(mIm); mController = new PhysicalKeyboardPreferenceController(mContext, null /* lifecycle */); } Loading