[Touchpad & Mouse] Update title based on conditions

Update preference and page title based on device condition.

Bug: 364536531
Flag: NONE, bug fix for string title.
Test: verify on device
Change-Id: Id5b01680314c45f1b86661c60f9e7acedca8b6eb
This commit is contained in:
shaoweishen
2024-11-05 08:28:04 +00:00
committed by Shaowei Shen
parent 1c57667439
commit 3ec1567922
5 changed files with 46 additions and 1 deletions

View File

@@ -4607,6 +4607,8 @@
<string name="trackpad_settings">Touchpad</string>
<!-- Title for the button to trigger the 'trackpad settings' page if connect with a touchpad and a mouse. [CHAR LIMIT=35] -->
<string name="trackpad_mouse_settings">Touchpad &amp; mouse</string>
<!-- Title for the button to trigger the 'mouse settings' page if connect with a mouse. [CHAR LIMIT=35] -->
<string name="mouse_settings">Mouse</string>
<!-- Summary text for the 'trackpad settings' page. [CHAR LIMIT=100] -->
<string name="trackpad_settings_summary">Pointer speed, gestures</string>

View File

@@ -36,6 +36,8 @@ import android.view.inputmethod.InputMethodInfo;
import android.view.inputmethod.InputMethodManager;
import android.view.inputmethod.InputMethodSubtype;
import androidx.annotation.StringRes;
import com.android.settings.R;
import java.util.Arrays;
@@ -80,6 +82,18 @@ public class NewKeyboardSettingsUtils {
return false;
}
static @StringRes int getTouchpadAndMouseTitleTitleResId() {
boolean isMouse = isMouse();
boolean isTouchpad = isTouchpad();
if (isMouse && isTouchpad) {
return R.string.trackpad_mouse_settings;
} else if (isMouse) {
return R.string.mouse_settings;
} else {
return R.string.trackpad_settings;
}
}
@SuppressLint("MissingPermission")
@Nullable
static String getSelectedKeyboardLayoutLabelForUser(Context context, @UserIdInt int userId,

View File

@@ -18,8 +18,11 @@ package com.android.settings.inputmethod;
import android.app.settings.SettingsEnums;
import android.content.Context;
import android.os.Bundle;
import android.util.FeatureFlagUtils;
import androidx.annotation.NonNull;
import com.android.settings.R;
import com.android.settings.dashboard.DashboardFragment;
import com.android.settings.search.BaseSearchIndexProvider;
@@ -31,11 +34,18 @@ public class TrackpadSettings extends DashboardFragment {
private static final String TAG = "TrackpadSettings";
@Override
public void onAttach(Context context) {
public void onAttach(@NonNull Context context) {
super.onAttach(context);
use(TouchGesturesButtonPreferenceController.class).setFragment(this /*parent*/);
}
@Override
public void onCreate(@NonNull Bundle icicle) {
super.onCreate(icicle);
getPreferenceScreen().setTitle(
NewKeyboardSettingsUtils.getTouchpadAndMouseTitleTitleResId());
}
@Override
public int getMetricsCategory() {
return SettingsEnums.SETTINGS_KEYBOARDS_TOUCHPAD;

View File

@@ -77,6 +77,7 @@ public class TrackpadSettingsController extends BasePreferenceController
return;
}
mPreference.setVisible(isAvailable());
mPreference.setTitle(NewKeyboardSettingsUtils.getTouchpadAndMouseTitleTitleResId());
}
@Override

View File

@@ -25,6 +25,7 @@ import static org.junit.Assume.assumeTrue;
import android.content.Context;
import android.view.InputDevice;
import androidx.preference.Preference;
import androidx.test.core.app.ApplicationProvider;
import com.android.settings.core.BasePreferenceController;
@@ -53,14 +54,31 @@ public class TrackpadSettingsControllerTest {
private Context mContext;
private TrackpadSettingsController mController;
private Preference mPreference;
@Before
public void setUp() {
mContext = ApplicationProvider.getApplicationContext();
mController = new TrackpadSettingsController(mContext, PREFERENCE_KEY);
mPreference = new Preference(mContext);
ShadowInputDevice.reset();
}
@Test
public void updateState_setTitleBasedOnDeviceSource() {
int deviceId = 1;
ShadowInputDevice.sDeviceIds = new int[]{deviceId};
InputDevice device = ShadowInputDevice.makeInputDevicebyIdWithSources(deviceId,
InputDevice.SOURCE_TOUCHPAD);
ShadowInputDevice.addDevice(deviceId, device);
String expectedTitle = mContext.getString(
NewKeyboardSettingsUtils.getTouchpadAndMouseTitleTitleResId());
mController.updateState(mPreference);
assertThat(mPreference.getTitle()).isEqualTo(expectedTitle);
}
@Test
public void getAvailabilityStatus_isTouchpadAvailable() {
int deviceId = 1;