Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 114d068f authored by Daniel Huang's avatar Daniel Huang Committed by Android (Google) Code Review
Browse files

Merge "Log metrics for PK settings topics" into udc-qpr-dev

parents 5d207a7b 7aaff67c
Loading
Loading
Loading
Loading
+27 −0
Original line number Diff line number Diff line
@@ -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;
@@ -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;
@@ -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(
@@ -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);
@@ -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));
@@ -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) {
+8 −0
Original line number Diff line number Diff line
@@ -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;
@@ -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,
@@ -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);
@@ -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();
+7 −43
Original line number Diff line number Diff line
@@ -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;
@@ -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;
    }

+47 −10
Original line number Diff line number Diff line
@@ -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;

@@ -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;
@@ -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
@@ -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;
    }
@@ -115,6 +134,7 @@ public class NewKeyboardLayoutPickerController extends BasePreferenceController
        }
        setLayout(pref);
        mPreviousSelection = preference.getKey();
        mFinalSelectedLayout = pref.getTitle().toString();
        return true;
    }

@@ -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;
    }
}
+1 −2
Original line number Diff line number Diff line
@@ -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