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

Commit f145881a authored by TreeHugger Robot's avatar TreeHugger Robot Committed by Android (Google) Code Review
Browse files

Merge "Open the settings page for a specific physical keyboard" into udc-dev

parents c49b5084 cc749159
Loading
Loading
Loading
Loading
+1 −2
Original line number Diff line number Diff line
@@ -30,8 +30,7 @@
        <Preference
            android:key="physical_keyboard_pref"
            android:title="@string/physical_keyboard_title"
            android:summary="@string/summary_placeholder"
            android:fragment="com.android.settings.inputmethod.PhysicalKeyboardFragment"/>
            android:summary="@string/summary_placeholder"/>
    </PreferenceCategory>

    <PreferenceCategory
+1 −1
Original line number Diff line number Diff line
@@ -172,7 +172,7 @@ public class BluetoothDeviceDetailsFragment extends RestrictedDashboardFragment
        }
        use(AdvancedBluetoothDetailsHeaderController.class).init(mCachedDevice);
        use(LeAudioBluetoothDetailsHeaderController.class).init(mCachedDevice, mManager);
        use(KeyboardSettingsPreferenceController.class).init(mCachedDevice, getActivity());
        use(KeyboardSettingsPreferenceController.class).init(mCachedDevice);

        final BluetoothFeatureProvider featureProvider = FeatureFactory.getFactory(
                context).getBluetoothFeatureProvider();
+22 −14
Original line number Diff line number Diff line
@@ -16,16 +16,15 @@

package com.android.settings.inputmethod;

import android.app.Activity;
import android.content.Context;
import android.content.Intent;
import android.provider.Settings;
import android.util.FeatureFlagUtils;

import androidx.annotation.NonNull;
import androidx.annotation.VisibleForTesting;
import androidx.preference.Preference;

import com.android.settings.Settings.PhysicalKeyboardActivity;
import com.android.settings.core.BasePreferenceController;
import com.android.settings.inputmethod.PhysicalKeyboardFragment.HardKeyboardDeviceInfo;
import com.android.settingslib.bluetooth.CachedBluetoothDevice;
@@ -34,18 +33,14 @@ import java.util.List;

public class KeyboardSettingsPreferenceController extends BasePreferenceController {

    private Context mContext;
    private CachedBluetoothDevice mCachedDevice;
    private Activity mActivity;

    public KeyboardSettingsPreferenceController(Context context, String key) {
        super(context, key);
        mContext = context;
    }

    public void init(@NonNull CachedBluetoothDevice cachedDevice, @NonNull Activity activity) {
    public void init(@NonNull CachedBluetoothDevice cachedDevice) {
        mCachedDevice = cachedDevice;
        mActivity = activity;
    }

    @Override
@@ -53,18 +48,26 @@ public class KeyboardSettingsPreferenceController extends BasePreferenceControll
        if (!getPreferenceKey().equals(preference.getKey())) {
            return false;
        }

        final Intent intent = new Intent(Settings.ACTION_HARD_KEYBOARD_SETTINGS);
        intent.setClass(mContext, PhysicalKeyboardActivity.class);
        intent.putExtra(PhysicalKeyboardFragment.EXTRA_BT_ADDRESS, mCachedDevice.getAddress());
        mActivity.startActivityForResult(intent, 0);
        List<HardKeyboardDeviceInfo> newHardKeyboards = getHardKeyboardList();
        for (HardKeyboardDeviceInfo hardKeyboardDeviceInfo : newHardKeyboards) {
            if (mCachedDevice.getAddress().equals(hardKeyboardDeviceInfo.mBluetoothAddress)) {
                Intent intent = new Intent(Settings.ACTION_HARD_KEYBOARD_SETTINGS);
                intent.putExtra(
                        NewKeyboardSettingsUtils.EXTRA_INTENT_FROM,
                        "com.android.settings.inputmethod.KeyboardSettingsPreferenceController");
                intent.putExtra(
                        Settings.EXTRA_INPUT_DEVICE_IDENTIFIER,
                        hardKeyboardDeviceInfo.mDeviceIdentifier);
                mContext.startActivity(intent);
                break;
            }
        }
        return true;
    }

    @Override
    public int getAvailabilityStatus() {
        final List<HardKeyboardDeviceInfo> newHardKeyboards =
                PhysicalKeyboardFragment.getHardKeyboards(mContext);
        List<HardKeyboardDeviceInfo> newHardKeyboards = getHardKeyboardList();
        if (FeatureFlagUtils.isEnabled(mContext, FeatureFlagUtils.SETTINGS_NEW_KEYBOARD_UI)
                && !newHardKeyboards.isEmpty()) {
            for (HardKeyboardDeviceInfo hardKeyboardDeviceInfo : newHardKeyboards) {
@@ -78,4 +81,9 @@ public class KeyboardSettingsPreferenceController extends BasePreferenceControll
        }
        return CONDITIONALLY_UNAVAILABLE;
    }

    @VisibleForTesting
    List<HardKeyboardDeviceInfo> getHardKeyboardList() {
        return PhysicalKeyboardFragment.getHardKeyboards(mContext);
    }
}
+12 −2
Original line number Diff line number Diff line
@@ -23,6 +23,7 @@ import android.hardware.input.InputManager;
import android.hardware.input.KeyboardLayout;
import android.os.Bundle;
import android.os.UserHandle;
import android.util.Log;
import android.view.InputDevice;
import android.view.inputmethod.InputMethodInfo;
import android.view.inputmethod.InputMethodManager;
@@ -59,10 +60,19 @@ public class NewKeyboardLayoutEnabledLocalesFragment extends DashboardFragment
    public void onActivityCreated(final Bundle icicle) {
        super.onActivityCreated(icicle);
        Bundle arguments = getArguments();
        final String title =
                arguments.getString(NewKeyboardSettingsUtils.EXTRA_KEYBOARD_DEVICE_NAME);
        mInputDeviceIdentifier =
                arguments.getParcelable(NewKeyboardSettingsUtils.EXTRA_INPUT_DEVICE_IDENTIFIER);
        if (mInputDeviceIdentifier == null) {
            Log.e(TAG, "The inputDeviceIdentifier should not be null");
            return;
        }
        InputDevice inputDevice =
                NewKeyboardSettingsUtils.getInputDevice(mIm, mInputDeviceIdentifier);
        if (inputDevice == null) {
            Log.e(TAG, "inputDevice is null");
            return;
        }
        final String title = inputDevice.getName();
        getActivity().setTitle(title);
        updateCheckedState();
    }
+1 −0
Original line number Diff line number Diff line
@@ -47,6 +47,7 @@ public class NewKeyboardLayoutPickerContent extends DashboardFragment {
                arguments.getParcelable(NewKeyboardSettingsUtils.EXTRA_INPUT_METHOD_SUBTYPE);
        if (identifier == null
                || NewKeyboardSettingsUtils.getInputDevice(inputManager, identifier) == null) {
            getActivity().finish();
            return;
        }
        getActivity().setTitle(title);
Loading