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

Commit 0b95f956 authored by Daniel Huang's avatar Daniel Huang Committed by Automerger Merge Worker
Browse files

Merge "Log metrics for PK settings topics" into udc-qpr-dev am: 114d068f

parents 477102b9 114d068f
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