From cdc4fb5559f088e0bf540017495b53cdf1c75acb Mon Sep 17 00:00:00 2001 From: Josep del Rio Date: Mon, 4 Dec 2023 14:28:01 +0000 Subject: [PATCH] Sort keyboard layouts At the moment it's not easy to find a layout in the physical keyboard layout list as they are not sorted; this CL will sort the keyboard layout list before it is presented to the user. Bug: 279281653 Test: Flashed on device, confirmed the layout list is sorted Change-Id: Ibc7e329190785cce9a8d9c33bc2fcaca6b8c169a --- .../inputmethod/NewKeyboardLayoutPickerController.java | 1 + .../settings/inputmethod/NewKeyboardSettingsUtils.java | 9 +++++++++ 2 files changed, 10 insertions(+) diff --git a/src/com/android/settings/inputmethod/NewKeyboardLayoutPickerController.java b/src/com/android/settings/inputmethod/NewKeyboardLayoutPickerController.java index 879f1341f19..9545276b91c 100644 --- a/src/com/android/settings/inputmethod/NewKeyboardLayoutPickerController.java +++ b/src/com/android/settings/inputmethod/NewKeyboardLayoutPickerController.java @@ -83,6 +83,7 @@ public class NewKeyboardLayoutPickerController extends BasePreferenceController mFinalSelectedLayout = mLayout; mKeyboardLayouts = mIm.getKeyboardLayoutListForInputDevice( mInputDeviceIdentifier, mUserId, mInputMethodInfo, mInputMethodSubtype); + NewKeyboardSettingsUtils.sortKeyboardLayoutsByLabel(mKeyboardLayouts); parent.getActivity().setTitle(mTitle); } diff --git a/src/com/android/settings/inputmethod/NewKeyboardSettingsUtils.java b/src/com/android/settings/inputmethod/NewKeyboardSettingsUtils.java index f3dc0a3eef7..a927165cb88 100644 --- a/src/com/android/settings/inputmethod/NewKeyboardSettingsUtils.java +++ b/src/com/android/settings/inputmethod/NewKeyboardSettingsUtils.java @@ -27,6 +27,8 @@ import android.view.inputmethod.InputMethodManager; import android.view.inputmethod.InputMethodSubtype; import java.util.ArrayList; +import java.util.Arrays; +import java.util.Comparator; import java.util.List; /** @@ -123,4 +125,11 @@ public class NewKeyboardSettingsUtils { InputDeviceIdentifier identifier, InputMethodInfo info, InputMethodSubtype subtype) { return inputManager.getKeyboardLayoutForInputDevice(identifier, userId, info, subtype); } + + static void sortKeyboardLayoutsByLabel(KeyboardLayout[] keyboardLayouts) { + Arrays.sort( + keyboardLayouts, + Comparator.comparing(KeyboardLayout::getLabel) + ); + } }