summaryrefslogtreecommitdiffstats
path: root/src/com/android/settings/inputmethod/KeyboardLayoutPickerFragment.java
diff options
context:
space:
mode:
authortmfang <tmfang@android.com>2018-03-29 18:18:59 +0800
committerFan Zhang <zhfan@google.com>2018-04-17 17:35:29 -0700
commitf1191f6bf906f998afb17da35267c51b9300e16b (patch)
treed09e403284a1184724e85264e2608a786dc664e1 /src/com/android/settings/inputmethod/KeyboardLayoutPickerFragment.java
parent435e4ad516dfa0c3f773523949e4e11135f67d53 (diff)
downloadpackages_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.java126
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;
}
}