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

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

Merge "Show touchpad entry when input device is detected as touchpad."

parents cb5dc7fb cfd02f52
Loading
Loading
Loading
Loading
+10 −7
Original line number Original line Diff line number Diff line
@@ -27,13 +27,13 @@ import com.android.settings.core.BasePreferenceController;
import com.android.settings.core.PreferenceControllerMixin;
import com.android.settings.core.PreferenceControllerMixin;
import com.android.settings.inputmethod.PhysicalKeyboardFragment.HardKeyboardDeviceInfo;
import com.android.settings.inputmethod.PhysicalKeyboardFragment.HardKeyboardDeviceInfo;
import com.android.settingslib.core.lifecycle.LifecycleObserver;
import com.android.settingslib.core.lifecycle.LifecycleObserver;
import com.android.settingslib.core.lifecycle.events.OnPause;
import com.android.settingslib.core.lifecycle.events.OnStart;
import com.android.settingslib.core.lifecycle.events.OnResume;
import com.android.settingslib.core.lifecycle.events.OnStop;


import java.util.List;
import java.util.List;


public class KeyboardPreferenceController extends BasePreferenceController
public class KeyboardPreferenceController extends BasePreferenceController
        implements PreferenceControllerMixin, LifecycleObserver, OnResume, OnPause,
        implements PreferenceControllerMixin, LifecycleObserver, OnStart, OnStop,
        InputManager.InputDeviceListener {
        InputManager.InputDeviceListener {


    private final InputManager mIm;
    private final InputManager mIm;
@@ -61,13 +61,13 @@ public class KeyboardPreferenceController extends BasePreferenceController
    }
    }


    @Override
    @Override
    public void onPause() {
    public void onStart() {
        mIm.unregisterInputDeviceListener(this);
        mIm.registerInputDeviceListener(this, null);
    }
    }


    @Override
    @Override
    public void onResume() {
    public void onStop() {
        mIm.registerInputDeviceListener(this, null);
        mIm.unregisterInputDeviceListener(this);
    }
    }


    @Override
    @Override
@@ -84,6 +84,9 @@ public class KeyboardPreferenceController extends BasePreferenceController
    }
    }


    private void updateSummary() {
    private void updateSummary() {
        if (mPreference == null) {
            return;
        }
        final List<HardKeyboardDeviceInfo> keyboards =
        final List<HardKeyboardDeviceInfo> keyboards =
                PhysicalKeyboardFragment.getHardKeyboards(mContext);
                PhysicalKeyboardFragment.getHardKeyboards(mContext);
        if (keyboards.isEmpty()) {
        if (keyboards.isEmpty()) {
+11 −10
Original line number Original line Diff line number Diff line
@@ -17,7 +17,7 @@
package com.android.settings.inputmethod;
package com.android.settings.inputmethod;


import android.content.Context;
import android.content.Context;
import android.provider.Settings;
import android.view.InputDevice;
import android.view.inputmethod.InputMethodInfo;
import android.view.inputmethod.InputMethodInfo;
import android.view.inputmethod.InputMethodManager;
import android.view.inputmethod.InputMethodManager;
import android.view.inputmethod.InputMethodSubtype;
import android.view.inputmethod.InputMethodSubtype;
@@ -38,17 +38,18 @@ public class NewKeyboardSettingsUtils {
    static final String EXTRA_INPUT_METHOD_INFO = "input_method_info";
    static final String EXTRA_INPUT_METHOD_INFO = "input_method_info";
    static final String EXTRA_INPUT_METHOD_SUBTYPE = "input_method_subtype";
    static final String EXTRA_INPUT_METHOD_SUBTYPE = "input_method_subtype";


    static InputMethodInfo getActiveIme(Context context, InputMethodManager imm) {
    static boolean isTouchpad() {
        InputMethodInfo activeIme = null;
        for (int deviceId : InputDevice.getDeviceIds()) {
        List<InputMethodInfo> infoList = imm.getEnabledInputMethodList();
            final InputDevice device = InputDevice.getDevice(deviceId);
        String imeId = Settings.Secure.getStringForUser(context.getContentResolver(),
            if (device == null) {
                Settings.Secure.DEFAULT_INPUT_METHOD, context.getUserId());
                continue;
        for (InputMethodInfo method : infoList) {
            if (method.getId().equals(imeId)) {
                activeIme = method;
            }
            }
            if ((device.getSources() & InputDevice.SOURCE_TOUCHPAD)
                    == InputDevice.SOURCE_TOUCHPAD) {
                return true;
            }
            }
        return activeIme;
        }
        return false;
    }
    }


    static List<String> getSuitableImeLabels(Context context, InputMethodManager imm, int userId) {
    static List<String> getSuitableImeLabels(Context context, InputMethodManager imm, int userId) {
+3 −1
Original line number Original line Diff line number Diff line
@@ -63,7 +63,9 @@ public class TouchGesturesButtonPreferenceController extends BasePreferenceContr


    @Override
    @Override
    public int getAvailabilityStatus() {
    public int getAvailabilityStatus() {
        return AVAILABLE;
        boolean touchGestureDeveloperMode = FeatureFlagUtils
                .isEnabled(mContext, FeatureFlagUtils.SETTINGS_NEW_KEYBOARD_TRACKPAD_GESTURE);
        return touchGestureDeveloperMode ? AVAILABLE : CONDITIONALLY_UNAVAILABLE;
    }
    }


    private void showTouchpadGestureEducation() {
    private void showTouchpadGestureEducation() {
+55 −3
Original line number Original line Diff line number Diff line
@@ -17,21 +17,73 @@
package com.android.settings.inputmethod;
package com.android.settings.inputmethod;


import android.content.Context;
import android.content.Context;
import android.hardware.input.InputManager;
import android.util.FeatureFlagUtils;
import android.util.FeatureFlagUtils;


import androidx.preference.Preference;

import com.android.settings.core.BasePreferenceController;
import com.android.settings.core.BasePreferenceController;
import com.android.settings.core.PreferenceControllerMixin;
import com.android.settingslib.core.lifecycle.LifecycleObserver;
import com.android.settingslib.core.lifecycle.events.OnStart;
import com.android.settingslib.core.lifecycle.events.OnStop;

public class TrackpadSettingsController extends BasePreferenceController
        implements PreferenceControllerMixin, LifecycleObserver, OnStart, OnStop,
        InputManager.InputDeviceListener {

    private final InputManager mIm;


public class TrackpadSettingsController extends BasePreferenceController {
    private Preference mPreference;


    public TrackpadSettingsController(Context context, String key) {
    public TrackpadSettingsController(Context context, String key) {
        super(context, key);
        super(context, key);
        mIm = context.getSystemService(InputManager.class);
    }

    @Override
    public void onInputDeviceAdded(int deviceId) {
        updateEntry();
    }

    @Override
    public void onInputDeviceRemoved(int deviceId) {
        updateEntry();
    }

    @Override
    public void onInputDeviceChanged(int deviceId) {
        updateEntry();
    }

    @Override
    public void onStart() {
        mIm.registerInputDeviceListener(this, null);
    }

    @Override
    public void onStop() {
        mIm.unregisterInputDeviceListener(this);
    }

    @Override
    public void updateState(Preference preference) {
        mPreference = preference;
        updateEntry();
    }

    private void updateEntry() {
        if (mPreference == null) {
            return;
        }
        mPreference.setVisible(isAvailable());
    }
    }


    @Override
    @Override
    public int getAvailabilityStatus() {
    public int getAvailabilityStatus() {
        // TODO: Need to detect if trackpad is connected with device.
        boolean isFeatureOn = FeatureFlagUtils
        boolean isFeatureOn = FeatureFlagUtils
                .isEnabled(mContext, FeatureFlagUtils.SETTINGS_NEW_KEYBOARD_TRACKPAD);
                .isEnabled(mContext, FeatureFlagUtils.SETTINGS_NEW_KEYBOARD_TRACKPAD);
        return isFeatureOn ? AVAILABLE : CONDITIONALLY_UNAVAILABLE;
        boolean isTouchpad = NewKeyboardSettingsUtils.isTouchpad();
        return (isFeatureOn && isTouchpad) ? AVAILABLE : CONDITIONALLY_UNAVAILABLE;
    }
    }
}
}