diff options
author | tmfang <tmfang@android.com> | 2018-03-29 18:18:59 +0800 |
---|---|---|
committer | Fan Zhang <zhfan@google.com> | 2018-04-17 17:35:29 -0700 |
commit | f1191f6bf906f998afb17da35267c51b9300e16b (patch) | |
tree | d09e403284a1184724e85264e2608a786dc664e1 /src/com/android/settings/inputmethod/KeyboardLayoutPickerFragment.java | |
parent | 435e4ad516dfa0c3f773523949e4e11135f67d53 (diff) | |
download | packages_apps_Settings-f1191f6bf906f998afb17da35267c51b9300e16b.tar.gz packages_apps_Settings-f1191f6bf906f998afb17da35267c51b9300e16b.tar.bz2 packages_apps_Settings-f1191f6bf906f998afb17da35267c51b9300e16b.zip |
KeyboardLayoutPickerFragment uses DashboardFragment
- Build a controller to generate a list of preferences and add to screen.
- Move some logic to controller.
- Add some test cases for controller.
Test: manual
Test: make RunSettingsRoboTests -j ROBOTEST_FILTER=com.android.settings.inputmethod
make RunSettingsRoboTests -j ROBOTEST_FILTER=com.android.settings.core
make RunSettingsRoboTests -j ROBOTEST_FILTER=com.android.settings.dashboard
atest UniquePreferenceTest
Change-Id: I4ebe486ade3439b9814b11866c402dcf881f21a7
Diffstat (limited to 'src/com/android/settings/inputmethod/KeyboardLayoutPickerFragment.java')
-rw-r--r-- | src/com/android/settings/inputmethod/KeyboardLayoutPickerFragment.java | 126 |
1 files changed, 16 insertions, 110 deletions
diff --git a/src/com/android/settings/inputmethod/KeyboardLayoutPickerFragment.java b/src/com/android/settings/inputmethod/KeyboardLayoutPickerFragment.java index 4c9715ca46..2c3f89ba63 100644 --- a/src/com/android/settings/inputmethod/KeyboardLayoutPickerFragment.java +++ b/src/com/android/settings/inputmethod/KeyboardLayoutPickerFragment.java @@ -18,29 +18,15 @@ package com.android.settings.inputmethod; 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 com.android.internal.logging.nano.MetricsProto.MetricsEvent; -import com.android.settings.SettingsPreferenceFragment; +import com.android.settings.R; +import com.android.settings.dashboard.DashboardFragment; -import java.util.Arrays; -import java.util.HashMap; -import java.util.Map; -public class KeyboardLayoutPickerFragment extends SettingsPreferenceFragment - implements InputDeviceListener { - private InputDeviceIdentifier mInputDeviceIdentifier; - private int mInputDeviceId = -1; - private InputManager mIm; - private KeyboardLayout[] mKeyboardLayouts; - private HashMap<CheckBoxPreference, KeyboardLayout> mPreferenceMap = new HashMap<>(); +public class KeyboardLayoutPickerFragment extends DashboardFragment { + + private static final String TAG = "KeyboardLayoutPicker"; /** * Intent extra: The input device descriptor of the keyboard whose keyboard @@ -54,105 +40,25 @@ public class KeyboardLayoutPickerFragment extends SettingsPreferenceFragment } @Override - public void onCreate(Bundle icicle) { - super.onCreate(icicle); - - mInputDeviceIdentifier = getActivity().getIntent().getParcelableExtra( - EXTRA_INPUT_DEVICE_IDENTIFIER); - if (mInputDeviceIdentifier == null) { - getActivity().finish(); - } - - mIm = (InputManager) getSystemService(Context.INPUT_SERVICE); - mKeyboardLayouts = mIm.getKeyboardLayoutsForInputDevice(mInputDeviceIdentifier); - Arrays.sort(mKeyboardLayouts); - setPreferenceScreen(createPreferenceHierarchy()); - } - - @Override - public void onResume() { - super.onResume(); + public void onAttach(Context context) { + super.onAttach(context); - mIm.registerInputDeviceListener(this, null); - - InputDevice inputDevice = - mIm.getInputDeviceByDescriptor(mInputDeviceIdentifier.getDescriptor()); - if (inputDevice == null) { + final InputDeviceIdentifier inputDeviceIdentifier = getActivity().getIntent(). + getParcelableExtra(EXTRA_INPUT_DEVICE_IDENTIFIER); + if (inputDeviceIdentifier == null) { getActivity().finish(); - return; - } - mInputDeviceId = inputDevice.getId(); - - updateCheckedState(); - } - - @Override - public void onPause() { - mIm.unregisterInputDeviceListener(this); - mInputDeviceId = -1; - - super.onPause(); - } - - @Override - public boolean onPreferenceTreeClick(Preference preference) { - if (preference instanceof CheckBoxPreference) { - CheckBoxPreference checkboxPref = (CheckBoxPreference)preference; - KeyboardLayout layout = mPreferenceMap.get(checkboxPref); - if (layout != null) { - boolean checked = checkboxPref.isChecked(); - if (checked) { - mIm.addKeyboardLayoutForInputDevice(mInputDeviceIdentifier, - layout.getDescriptor()); - } else { - mIm.removeKeyboardLayoutForInputDevice(mInputDeviceIdentifier, - layout.getDescriptor()); - } - return true; - } } - return super.onPreferenceTreeClick(preference); - } - - @Override - public void onInputDeviceAdded(int deviceId) { - } - @Override - public void onInputDeviceChanged(int deviceId) { - if (mInputDeviceId >= 0 && deviceId == mInputDeviceId) { - updateCheckedState(); - } + use(KeyboardLayoutPickerController.class).initialize(this /*parent*/, + inputDeviceIdentifier); } @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) { - CheckBoxPreference pref = new CheckBoxPreference(getPrefContext()); - pref.setTitle(layout.getLabel()); - pref.setSummary(layout.getCollection()); - root.addPreference(pref); - mPreferenceMap.put(pref, layout); - } - return root; + protected String getLogTag() { + return TAG; } - 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); - } + protected int getPreferenceScreenResId() { + return R.xml.keyboard_layout_picker_fragment; } } |