Loading src/com/android/settings/inputmethod/ModifierKeysPickerDialogFragment.java +27 −0 Original line number Diff line number Diff line Loading @@ -21,6 +21,7 @@ import static android.view.WindowManager.LayoutParams.TYPE_SYSTEM_DIALOG; import android.app.Activity; import android.app.AlertDialog; import android.app.Dialog; import android.app.settings.SettingsEnums; import android.content.Context; import android.graphics.drawable.Drawable; import android.hardware.input.InputManager; Loading @@ -47,6 +48,7 @@ import androidx.preference.Preference; import com.android.settings.R; import com.android.settings.overlay.FeatureFactory; import com.android.settingslib.Utils; import com.android.settingslib.core.instrumentation.MetricsFeatureProvider; import java.util.ArrayList; import java.util.Arrays; Loading @@ -68,6 +70,7 @@ public class ModifierKeysPickerDialogFragment extends DialogFragment { private TextView mLeftBracket; private TextView mRightBracket; private ImageView mActionKeyIcon; private MetricsFeatureProvider mMetricsFeatureProvider; private List<int[]> mRemappableKeyList = new ArrayList<>(Arrays.asList( Loading @@ -91,6 +94,7 @@ public class ModifierKeysPickerDialogFragment extends DialogFragment { super.onCreateDialog(savedInstanceState); mActivity = getActivity(); mMetricsFeatureProvider = FeatureFactory.getFactory(mActivity).getMetricsFeatureProvider(); FeatureFactory featureFactory = FeatureFactory.getFactory(mActivity); mFeatureProvider = featureFactory.getKeyboardSettingsFeatureProvider(); InputManager inputManager = mActivity.getSystemService(InputManager.class); Loading Loading @@ -139,6 +143,7 @@ public class ModifierKeysPickerDialogFragment extends DialogFragment { doneButton.setOnClickListener(v -> { String selectedItem = modifierKeys.get(adapter.getCurrentItem()); Spannable itemSummary; logMetricsForRemapping(selectedItem); if (selectedItem.equals(mKeyDefaultName)) { itemSummary = new SpannableString( mActivity.getString(R.string.modifier_keys_default_summary)); Loading Loading @@ -189,6 +194,28 @@ public class ModifierKeysPickerDialogFragment extends DialogFragment { return modifierKeyDialog; } private void logMetricsForRemapping(String selectedItem) { if (mKeyDefaultName.equals("Caps lock")) { mMetricsFeatureProvider.action( mActivity, SettingsEnums.ACTION_FROM_CAPS_LOCK_TO, selectedItem); } if (mKeyDefaultName.equals("Ctrl")) { mMetricsFeatureProvider.action( mActivity, SettingsEnums.ACTION_FROM_CTRL_TO, selectedItem); } if (mKeyDefaultName.equals("Action key")) { mMetricsFeatureProvider.action( mActivity, SettingsEnums.ACTION_FROM_ACTION_KEY_TO, selectedItem); } if (mKeyDefaultName.equals("Alt")) { mMetricsFeatureProvider.action( mActivity, SettingsEnums.ACTION_FROM_ALT_TO, selectedItem); } } private void setInitialFocusItem( List<String> modifierKeys, ModifierKeyAdapter adapter) { if (modifierKeys.indexOf(mKeyFocus) == -1) { Loading src/com/android/settings/inputmethod/ModifierKeysResetDialogFragment.java +8 −0 Original line number Diff line number Diff line Loading @@ -21,6 +21,7 @@ import static android.view.WindowManager.LayoutParams.TYPE_SYSTEM_DIALOG; import android.app.Activity; import android.app.AlertDialog; import android.app.Dialog; import android.app.settings.SettingsEnums; import android.hardware.input.InputManager; import android.os.Bundle; import android.view.LayoutInflater; Loading @@ -31,13 +32,18 @@ import android.widget.Button; import androidx.fragment.app.DialogFragment; import com.android.settings.R; import com.android.settings.overlay.FeatureFactory; import com.android.settingslib.core.instrumentation.MetricsFeatureProvider; public class ModifierKeysResetDialogFragment extends DialogFragment { private static final String MODIFIER_KEYS_CAPS_LOCK = "modifier_keys_caps_lock"; private static final String MODIFIER_KEYS_CTRL = "modifier_keys_ctrl"; private static final String MODIFIER_KEYS_META = "modifier_keys_meta"; private static final String MODIFIER_KEYS_ALT = "modifier_keys_alt"; private MetricsFeatureProvider mMetricsFeatureProvider; private String[] mKeys = { MODIFIER_KEYS_CAPS_LOCK, MODIFIER_KEYS_CTRL, Loading @@ -51,6 +57,7 @@ public class ModifierKeysResetDialogFragment extends DialogFragment { super.onCreateDialog(savedInstanceState); Activity activity = getActivity(); mMetricsFeatureProvider = FeatureFactory.getFactory(activity).getMetricsFeatureProvider(); InputManager inputManager = activity.getSystemService(InputManager.class); View dialoglayout = LayoutInflater.from(activity).inflate(R.layout.modifier_key_reset_dialog, null); Loading @@ -60,6 +67,7 @@ public class ModifierKeysResetDialogFragment extends DialogFragment { Button restoreButton = dialoglayout.findViewById(R.id.modifier_key_reset_restore_button); restoreButton.setOnClickListener(v -> { mMetricsFeatureProvider.action(activity, SettingsEnums.ACTION_CLEAR_REMAPPINGS); inputManager.clearAllModifierKeyRemappings(); dismiss(); activity.recreate(); Loading src/com/android/settings/inputmethod/NewKeyboardLayoutPickerContent.java +7 −43 Original line number Diff line number Diff line Loading @@ -20,10 +20,6 @@ import android.app.settings.SettingsEnums; import android.content.Context; import android.hardware.input.InputDeviceIdentifier; import android.hardware.input.InputManager; import android.hardware.input.KeyboardLayout; import android.os.Bundle; import android.view.inputmethod.InputMethodInfo; import android.view.inputmethod.InputMethodSubtype; import com.android.settings.R; import com.android.settings.dashboard.DashboardFragment; Loading @@ -32,55 +28,23 @@ public class NewKeyboardLayoutPickerContent extends DashboardFragment { private static final String TAG = "KeyboardLayoutPicker"; private InputManager mIm; private int mUserId; private InputDeviceIdentifier mIdentifier; private InputMethodInfo mInputMethodInfo; private InputMethodSubtype mInputMethodSubtype; @Override public void onAttach(Context context) { super.onAttach(context); mIm = getContext().getSystemService(InputManager.class); Bundle arguments = getArguments(); final CharSequence title = arguments.getCharSequence(NewKeyboardSettingsUtils.EXTRA_TITLE); mUserId = arguments.getInt(NewKeyboardSettingsUtils.EXTRA_USER_ID); mIdentifier = arguments.getParcelable(NewKeyboardSettingsUtils.EXTRA_INPUT_DEVICE_IDENTIFIER); mInputMethodInfo = arguments.getParcelable(NewKeyboardSettingsUtils.EXTRA_INPUT_METHOD_INFO); mInputMethodSubtype = arguments.getParcelable(NewKeyboardSettingsUtils.EXTRA_INPUT_METHOD_SUBTYPE); if (mIdentifier == null || NewKeyboardSettingsUtils.getInputDevice(mIm, mIdentifier) == null) { InputManager im = getContext().getSystemService(InputManager.class); InputDeviceIdentifier identifier = getArguments().getParcelable( NewKeyboardSettingsUtils.EXTRA_INPUT_DEVICE_IDENTIFIER); if (identifier == null || NewKeyboardSettingsUtils.getInputDevice(im, identifier) == null) { getActivity().finish(); return; } getActivity().setTitle(title); use(NewKeyboardLayoutPickerController.class).initialize(this /*parent*/, mUserId, mIdentifier, mInputMethodInfo, mInputMethodSubtype, getSelectedLayoutLabel()); } private String getSelectedLayoutLabel() { String label = getContext().getString(R.string.keyboard_default_layout); String layout = NewKeyboardSettingsUtils.getKeyboardLayout( mIm, mUserId, mIdentifier, mInputMethodInfo, mInputMethodSubtype); KeyboardLayout[] keyboardLayouts = NewKeyboardSettingsUtils.getKeyboardLayouts( mIm, mUserId, mIdentifier, mInputMethodInfo, mInputMethodSubtype); if (layout != null) { for (int i = 0; i < keyboardLayouts.length; i++) { if (keyboardLayouts[i].getDescriptor().equals(layout)) { label = keyboardLayouts[i].getLabel(); break; } } } return label; use(NewKeyboardLayoutPickerController.class).initialize(this); } @Override public int getMetricsCategory() { // TODO: add new SettingsEnums SETTINGS_KEYBOARDS_LAYOUT_PICKER_CONTENT return SettingsEnums.SETTINGS_KEYBOARDS_LAYOUT_PICKER; } Loading src/com/android/settings/inputmethod/NewKeyboardLayoutPickerController.java +47 −10 Original line number Diff line number Diff line Loading @@ -16,10 +16,12 @@ package com.android.settings.inputmethod; import android.app.settings.SettingsEnums; import android.content.Context; import android.hardware.input.InputDeviceIdentifier; import android.hardware.input.InputManager; import android.hardware.input.KeyboardLayout; import android.os.Bundle; import android.view.inputmethod.InputMethodInfo; import android.view.inputmethod.InputMethodSubtype; Loading @@ -27,8 +29,11 @@ import androidx.fragment.app.Fragment; import androidx.preference.Preference; import androidx.preference.PreferenceScreen; import com.android.settings.R; import com.android.settings.core.BasePreferenceController; import com.android.settings.overlay.FeatureFactory; import com.android.settings.widget.TickButtonPreference; import com.android.settingslib.core.instrumentation.MetricsFeatureProvider; import com.android.settingslib.core.lifecycle.LifecycleObserver; import com.android.settingslib.core.lifecycle.events.OnStart; import com.android.settingslib.core.lifecycle.events.OnStop; Loading @@ -38,38 +43,47 @@ import java.util.Map; public class NewKeyboardLayoutPickerController extends BasePreferenceController implements InputManager.InputDeviceListener, LifecycleObserver, OnStart, OnStop { private final InputManager mIm; private final Map<TickButtonPreference, KeyboardLayout> mPreferenceMap; private Fragment mParent; private CharSequence mTitle; private int mInputDeviceId; private int mUserId; private InputDeviceIdentifier mInputDeviceIdentifier; private InputMethodInfo mInputMethodInfo; private InputMethodSubtype mInputMethodSubtype; private KeyboardLayout[] mKeyboardLayouts; private PreferenceScreen mScreen; private String mPreviousSelection; private String mFinalSelectedLayout; private String mLayout; private MetricsFeatureProvider mMetricsFeatureProvider; public NewKeyboardLayoutPickerController(Context context, String key) { super(context, key); mIm = context.getSystemService(InputManager.class); mInputDeviceId = -1; mPreferenceMap = new HashMap<>(); mMetricsFeatureProvider = FeatureFactory.getFactory(context).getMetricsFeatureProvider(); } public void initialize(Fragment parent, int userId, InputDeviceIdentifier inputDeviceIdentifier, InputMethodInfo imeInfo, InputMethodSubtype imeSubtype, String layout) { public void initialize(Fragment parent) { mParent = parent; mUserId = userId; mInputDeviceIdentifier = inputDeviceIdentifier; mInputMethodInfo = imeInfo; mInputMethodSubtype = imeSubtype; mLayout = layout; Bundle arguments = parent.getArguments(); mTitle = arguments.getCharSequence(NewKeyboardSettingsUtils.EXTRA_TITLE); mUserId = arguments.getInt(NewKeyboardSettingsUtils.EXTRA_USER_ID); mInputDeviceIdentifier = arguments.getParcelable(NewKeyboardSettingsUtils.EXTRA_INPUT_DEVICE_IDENTIFIER); mInputMethodInfo = arguments.getParcelable(NewKeyboardSettingsUtils.EXTRA_INPUT_METHOD_INFO); mInputMethodSubtype = arguments.getParcelable(NewKeyboardSettingsUtils.EXTRA_INPUT_METHOD_SUBTYPE); mLayout = getSelectedLayoutLabel(); mFinalSelectedLayout = mLayout; mKeyboardLayouts = mIm.getKeyboardLayoutListForInputDevice( inputDeviceIdentifier, userId, imeInfo, imeSubtype); mInputDeviceIdentifier, mUserId, mInputMethodInfo, mInputMethodSubtype); parent.getActivity().setTitle(mTitle); } @Override Loading @@ -85,6 +99,11 @@ public class NewKeyboardLayoutPickerController extends BasePreferenceController @Override public void onStop() { if (!mLayout.equals(mFinalSelectedLayout)) { String change = "From:" + mLayout + ", to:" + mFinalSelectedLayout; mMetricsFeatureProvider.action( mContext, SettingsEnums.ACTION_PK_LAYOUT_CHANGED, change); } mIm.unregisterInputDeviceListener(this); mInputDeviceId = -1; } Loading Loading @@ -115,6 +134,7 @@ public class NewKeyboardLayoutPickerController extends BasePreferenceController } setLayout(pref); mPreviousSelection = preference.getKey(); mFinalSelectedLayout = pref.getTitle().toString(); return true; } Loading Loading @@ -162,4 +182,21 @@ public class NewKeyboardLayoutPickerController extends BasePreferenceController mInputMethodSubtype, mPreferenceMap.get(preference).getDescriptor()); } private String getSelectedLayoutLabel() { String label = mContext.getString(R.string.keyboard_default_layout); String layout = NewKeyboardSettingsUtils.getKeyboardLayout( mIm, mUserId, mInputDeviceIdentifier, mInputMethodInfo, mInputMethodSubtype); KeyboardLayout[] keyboardLayouts = NewKeyboardSettingsUtils.getKeyboardLayouts( mIm, mUserId, mInputDeviceIdentifier, mInputMethodInfo, mInputMethodSubtype); if (layout != null) { for (KeyboardLayout keyboardLayout : keyboardLayouts) { if (keyboardLayout.getDescriptor().equals(layout)) { label = keyboardLayout.getLabel(); break; } } } return label; } } src/com/android/settings/inputmethod/NewKeyboardLayoutPickerTitle.java +1 −2 Original line number Diff line number Diff line Loading @@ -34,8 +34,7 @@ public class NewKeyboardLayoutPickerTitle extends SettingsPreferenceFragment { @Override public int getMetricsCategory() { // TODO: add new SettingsEnums SETTINGS_KEYBOARDS_LAYOUT_PICKER_TITLE return SettingsEnums.SETTINGS_KEYBOARDS_LAYOUT_PICKER; return SettingsEnums.SETTINGS_KEYBOARDS_LAYOUT_PICKER_TITLE; } public static final BaseSearchIndexProvider SEARCH_INDEX_DATA_PROVIDER = Loading Loading
src/com/android/settings/inputmethod/ModifierKeysPickerDialogFragment.java +27 −0 Original line number Diff line number Diff line Loading @@ -21,6 +21,7 @@ import static android.view.WindowManager.LayoutParams.TYPE_SYSTEM_DIALOG; import android.app.Activity; import android.app.AlertDialog; import android.app.Dialog; import android.app.settings.SettingsEnums; import android.content.Context; import android.graphics.drawable.Drawable; import android.hardware.input.InputManager; Loading @@ -47,6 +48,7 @@ import androidx.preference.Preference; import com.android.settings.R; import com.android.settings.overlay.FeatureFactory; import com.android.settingslib.Utils; import com.android.settingslib.core.instrumentation.MetricsFeatureProvider; import java.util.ArrayList; import java.util.Arrays; Loading @@ -68,6 +70,7 @@ public class ModifierKeysPickerDialogFragment extends DialogFragment { private TextView mLeftBracket; private TextView mRightBracket; private ImageView mActionKeyIcon; private MetricsFeatureProvider mMetricsFeatureProvider; private List<int[]> mRemappableKeyList = new ArrayList<>(Arrays.asList( Loading @@ -91,6 +94,7 @@ public class ModifierKeysPickerDialogFragment extends DialogFragment { super.onCreateDialog(savedInstanceState); mActivity = getActivity(); mMetricsFeatureProvider = FeatureFactory.getFactory(mActivity).getMetricsFeatureProvider(); FeatureFactory featureFactory = FeatureFactory.getFactory(mActivity); mFeatureProvider = featureFactory.getKeyboardSettingsFeatureProvider(); InputManager inputManager = mActivity.getSystemService(InputManager.class); Loading Loading @@ -139,6 +143,7 @@ public class ModifierKeysPickerDialogFragment extends DialogFragment { doneButton.setOnClickListener(v -> { String selectedItem = modifierKeys.get(adapter.getCurrentItem()); Spannable itemSummary; logMetricsForRemapping(selectedItem); if (selectedItem.equals(mKeyDefaultName)) { itemSummary = new SpannableString( mActivity.getString(R.string.modifier_keys_default_summary)); Loading Loading @@ -189,6 +194,28 @@ public class ModifierKeysPickerDialogFragment extends DialogFragment { return modifierKeyDialog; } private void logMetricsForRemapping(String selectedItem) { if (mKeyDefaultName.equals("Caps lock")) { mMetricsFeatureProvider.action( mActivity, SettingsEnums.ACTION_FROM_CAPS_LOCK_TO, selectedItem); } if (mKeyDefaultName.equals("Ctrl")) { mMetricsFeatureProvider.action( mActivity, SettingsEnums.ACTION_FROM_CTRL_TO, selectedItem); } if (mKeyDefaultName.equals("Action key")) { mMetricsFeatureProvider.action( mActivity, SettingsEnums.ACTION_FROM_ACTION_KEY_TO, selectedItem); } if (mKeyDefaultName.equals("Alt")) { mMetricsFeatureProvider.action( mActivity, SettingsEnums.ACTION_FROM_ALT_TO, selectedItem); } } private void setInitialFocusItem( List<String> modifierKeys, ModifierKeyAdapter adapter) { if (modifierKeys.indexOf(mKeyFocus) == -1) { Loading
src/com/android/settings/inputmethod/ModifierKeysResetDialogFragment.java +8 −0 Original line number Diff line number Diff line Loading @@ -21,6 +21,7 @@ import static android.view.WindowManager.LayoutParams.TYPE_SYSTEM_DIALOG; import android.app.Activity; import android.app.AlertDialog; import android.app.Dialog; import android.app.settings.SettingsEnums; import android.hardware.input.InputManager; import android.os.Bundle; import android.view.LayoutInflater; Loading @@ -31,13 +32,18 @@ import android.widget.Button; import androidx.fragment.app.DialogFragment; import com.android.settings.R; import com.android.settings.overlay.FeatureFactory; import com.android.settingslib.core.instrumentation.MetricsFeatureProvider; public class ModifierKeysResetDialogFragment extends DialogFragment { private static final String MODIFIER_KEYS_CAPS_LOCK = "modifier_keys_caps_lock"; private static final String MODIFIER_KEYS_CTRL = "modifier_keys_ctrl"; private static final String MODIFIER_KEYS_META = "modifier_keys_meta"; private static final String MODIFIER_KEYS_ALT = "modifier_keys_alt"; private MetricsFeatureProvider mMetricsFeatureProvider; private String[] mKeys = { MODIFIER_KEYS_CAPS_LOCK, MODIFIER_KEYS_CTRL, Loading @@ -51,6 +57,7 @@ public class ModifierKeysResetDialogFragment extends DialogFragment { super.onCreateDialog(savedInstanceState); Activity activity = getActivity(); mMetricsFeatureProvider = FeatureFactory.getFactory(activity).getMetricsFeatureProvider(); InputManager inputManager = activity.getSystemService(InputManager.class); View dialoglayout = LayoutInflater.from(activity).inflate(R.layout.modifier_key_reset_dialog, null); Loading @@ -60,6 +67,7 @@ public class ModifierKeysResetDialogFragment extends DialogFragment { Button restoreButton = dialoglayout.findViewById(R.id.modifier_key_reset_restore_button); restoreButton.setOnClickListener(v -> { mMetricsFeatureProvider.action(activity, SettingsEnums.ACTION_CLEAR_REMAPPINGS); inputManager.clearAllModifierKeyRemappings(); dismiss(); activity.recreate(); Loading
src/com/android/settings/inputmethod/NewKeyboardLayoutPickerContent.java +7 −43 Original line number Diff line number Diff line Loading @@ -20,10 +20,6 @@ import android.app.settings.SettingsEnums; import android.content.Context; import android.hardware.input.InputDeviceIdentifier; import android.hardware.input.InputManager; import android.hardware.input.KeyboardLayout; import android.os.Bundle; import android.view.inputmethod.InputMethodInfo; import android.view.inputmethod.InputMethodSubtype; import com.android.settings.R; import com.android.settings.dashboard.DashboardFragment; Loading @@ -32,55 +28,23 @@ public class NewKeyboardLayoutPickerContent extends DashboardFragment { private static final String TAG = "KeyboardLayoutPicker"; private InputManager mIm; private int mUserId; private InputDeviceIdentifier mIdentifier; private InputMethodInfo mInputMethodInfo; private InputMethodSubtype mInputMethodSubtype; @Override public void onAttach(Context context) { super.onAttach(context); mIm = getContext().getSystemService(InputManager.class); Bundle arguments = getArguments(); final CharSequence title = arguments.getCharSequence(NewKeyboardSettingsUtils.EXTRA_TITLE); mUserId = arguments.getInt(NewKeyboardSettingsUtils.EXTRA_USER_ID); mIdentifier = arguments.getParcelable(NewKeyboardSettingsUtils.EXTRA_INPUT_DEVICE_IDENTIFIER); mInputMethodInfo = arguments.getParcelable(NewKeyboardSettingsUtils.EXTRA_INPUT_METHOD_INFO); mInputMethodSubtype = arguments.getParcelable(NewKeyboardSettingsUtils.EXTRA_INPUT_METHOD_SUBTYPE); if (mIdentifier == null || NewKeyboardSettingsUtils.getInputDevice(mIm, mIdentifier) == null) { InputManager im = getContext().getSystemService(InputManager.class); InputDeviceIdentifier identifier = getArguments().getParcelable( NewKeyboardSettingsUtils.EXTRA_INPUT_DEVICE_IDENTIFIER); if (identifier == null || NewKeyboardSettingsUtils.getInputDevice(im, identifier) == null) { getActivity().finish(); return; } getActivity().setTitle(title); use(NewKeyboardLayoutPickerController.class).initialize(this /*parent*/, mUserId, mIdentifier, mInputMethodInfo, mInputMethodSubtype, getSelectedLayoutLabel()); } private String getSelectedLayoutLabel() { String label = getContext().getString(R.string.keyboard_default_layout); String layout = NewKeyboardSettingsUtils.getKeyboardLayout( mIm, mUserId, mIdentifier, mInputMethodInfo, mInputMethodSubtype); KeyboardLayout[] keyboardLayouts = NewKeyboardSettingsUtils.getKeyboardLayouts( mIm, mUserId, mIdentifier, mInputMethodInfo, mInputMethodSubtype); if (layout != null) { for (int i = 0; i < keyboardLayouts.length; i++) { if (keyboardLayouts[i].getDescriptor().equals(layout)) { label = keyboardLayouts[i].getLabel(); break; } } } return label; use(NewKeyboardLayoutPickerController.class).initialize(this); } @Override public int getMetricsCategory() { // TODO: add new SettingsEnums SETTINGS_KEYBOARDS_LAYOUT_PICKER_CONTENT return SettingsEnums.SETTINGS_KEYBOARDS_LAYOUT_PICKER; } Loading
src/com/android/settings/inputmethod/NewKeyboardLayoutPickerController.java +47 −10 Original line number Diff line number Diff line Loading @@ -16,10 +16,12 @@ package com.android.settings.inputmethod; import android.app.settings.SettingsEnums; import android.content.Context; import android.hardware.input.InputDeviceIdentifier; import android.hardware.input.InputManager; import android.hardware.input.KeyboardLayout; import android.os.Bundle; import android.view.inputmethod.InputMethodInfo; import android.view.inputmethod.InputMethodSubtype; Loading @@ -27,8 +29,11 @@ import androidx.fragment.app.Fragment; import androidx.preference.Preference; import androidx.preference.PreferenceScreen; import com.android.settings.R; import com.android.settings.core.BasePreferenceController; import com.android.settings.overlay.FeatureFactory; import com.android.settings.widget.TickButtonPreference; import com.android.settingslib.core.instrumentation.MetricsFeatureProvider; import com.android.settingslib.core.lifecycle.LifecycleObserver; import com.android.settingslib.core.lifecycle.events.OnStart; import com.android.settingslib.core.lifecycle.events.OnStop; Loading @@ -38,38 +43,47 @@ import java.util.Map; public class NewKeyboardLayoutPickerController extends BasePreferenceController implements InputManager.InputDeviceListener, LifecycleObserver, OnStart, OnStop { private final InputManager mIm; private final Map<TickButtonPreference, KeyboardLayout> mPreferenceMap; private Fragment mParent; private CharSequence mTitle; private int mInputDeviceId; private int mUserId; private InputDeviceIdentifier mInputDeviceIdentifier; private InputMethodInfo mInputMethodInfo; private InputMethodSubtype mInputMethodSubtype; private KeyboardLayout[] mKeyboardLayouts; private PreferenceScreen mScreen; private String mPreviousSelection; private String mFinalSelectedLayout; private String mLayout; private MetricsFeatureProvider mMetricsFeatureProvider; public NewKeyboardLayoutPickerController(Context context, String key) { super(context, key); mIm = context.getSystemService(InputManager.class); mInputDeviceId = -1; mPreferenceMap = new HashMap<>(); mMetricsFeatureProvider = FeatureFactory.getFactory(context).getMetricsFeatureProvider(); } public void initialize(Fragment parent, int userId, InputDeviceIdentifier inputDeviceIdentifier, InputMethodInfo imeInfo, InputMethodSubtype imeSubtype, String layout) { public void initialize(Fragment parent) { mParent = parent; mUserId = userId; mInputDeviceIdentifier = inputDeviceIdentifier; mInputMethodInfo = imeInfo; mInputMethodSubtype = imeSubtype; mLayout = layout; Bundle arguments = parent.getArguments(); mTitle = arguments.getCharSequence(NewKeyboardSettingsUtils.EXTRA_TITLE); mUserId = arguments.getInt(NewKeyboardSettingsUtils.EXTRA_USER_ID); mInputDeviceIdentifier = arguments.getParcelable(NewKeyboardSettingsUtils.EXTRA_INPUT_DEVICE_IDENTIFIER); mInputMethodInfo = arguments.getParcelable(NewKeyboardSettingsUtils.EXTRA_INPUT_METHOD_INFO); mInputMethodSubtype = arguments.getParcelable(NewKeyboardSettingsUtils.EXTRA_INPUT_METHOD_SUBTYPE); mLayout = getSelectedLayoutLabel(); mFinalSelectedLayout = mLayout; mKeyboardLayouts = mIm.getKeyboardLayoutListForInputDevice( inputDeviceIdentifier, userId, imeInfo, imeSubtype); mInputDeviceIdentifier, mUserId, mInputMethodInfo, mInputMethodSubtype); parent.getActivity().setTitle(mTitle); } @Override Loading @@ -85,6 +99,11 @@ public class NewKeyboardLayoutPickerController extends BasePreferenceController @Override public void onStop() { if (!mLayout.equals(mFinalSelectedLayout)) { String change = "From:" + mLayout + ", to:" + mFinalSelectedLayout; mMetricsFeatureProvider.action( mContext, SettingsEnums.ACTION_PK_LAYOUT_CHANGED, change); } mIm.unregisterInputDeviceListener(this); mInputDeviceId = -1; } Loading Loading @@ -115,6 +134,7 @@ public class NewKeyboardLayoutPickerController extends BasePreferenceController } setLayout(pref); mPreviousSelection = preference.getKey(); mFinalSelectedLayout = pref.getTitle().toString(); return true; } Loading Loading @@ -162,4 +182,21 @@ public class NewKeyboardLayoutPickerController extends BasePreferenceController mInputMethodSubtype, mPreferenceMap.get(preference).getDescriptor()); } private String getSelectedLayoutLabel() { String label = mContext.getString(R.string.keyboard_default_layout); String layout = NewKeyboardSettingsUtils.getKeyboardLayout( mIm, mUserId, mInputDeviceIdentifier, mInputMethodInfo, mInputMethodSubtype); KeyboardLayout[] keyboardLayouts = NewKeyboardSettingsUtils.getKeyboardLayouts( mIm, mUserId, mInputDeviceIdentifier, mInputMethodInfo, mInputMethodSubtype); if (layout != null) { for (KeyboardLayout keyboardLayout : keyboardLayouts) { if (keyboardLayout.getDescriptor().equals(layout)) { label = keyboardLayout.getLabel(); break; } } } return label; } }
src/com/android/settings/inputmethod/NewKeyboardLayoutPickerTitle.java +1 −2 Original line number Diff line number Diff line Loading @@ -34,8 +34,7 @@ public class NewKeyboardLayoutPickerTitle extends SettingsPreferenceFragment { @Override public int getMetricsCategory() { // TODO: add new SettingsEnums SETTINGS_KEYBOARDS_LAYOUT_PICKER_TITLE return SettingsEnums.SETTINGS_KEYBOARDS_LAYOUT_PICKER; return SettingsEnums.SETTINGS_KEYBOARDS_LAYOUT_PICKER_TITLE; } public static final BaseSearchIndexProvider SEARCH_INDEX_DATA_PROVIDER = Loading