Merge "[Physical Keyboard] Null check before using layout descriptor" into main

This commit is contained in:
Shaowei Shen
2025-03-13 20:00:45 -07:00
committed by Android (Google) Code Review
2 changed files with 18 additions and 6 deletions

View File

@@ -26,6 +26,7 @@ import android.os.Bundle;
import android.view.inputmethod.InputMethodInfo; import android.view.inputmethod.InputMethodInfo;
import android.view.inputmethod.InputMethodSubtype; import android.view.inputmethod.InputMethodSubtype;
import androidx.annotation.Nullable;
import androidx.fragment.app.Fragment; import androidx.fragment.app.Fragment;
import androidx.preference.Preference; import androidx.preference.Preference;
import androidx.preference.PreferenceScreen; import androidx.preference.PreferenceScreen;
@@ -58,7 +59,7 @@ public class NewKeyboardLayoutPickerController extends BasePreferenceController
private PreferenceScreen mScreen; private PreferenceScreen mScreen;
private String mPreviousSelection; private String mPreviousSelection;
private String mFinalSelectedLayoutDescriptor; private String mFinalSelectedLayoutDescriptor;
private String mSelectedLayoutDescriptor; @Nullable private String mSelectedLayoutDescriptor;
private MetricsFeatureProvider mMetricsFeatureProvider; private MetricsFeatureProvider mMetricsFeatureProvider;
private KeyboardLayoutSelectedCallback mKeyboardLayoutSelectedCallback; private KeyboardLayoutSelectedCallback mKeyboardLayoutSelectedCallback;
@@ -186,7 +187,8 @@ public class NewKeyboardLayoutPickerController extends BasePreferenceController
pref = new TickButtonPreference(mScreen.getContext()); pref = new TickButtonPreference(mScreen.getContext());
pref.setTitle(layout.getLabel()); pref.setTitle(layout.getLabel());
if (mSelectedLayoutDescriptor.equals(layout.getDescriptor())) { if (mSelectedLayoutDescriptor != null && mSelectedLayoutDescriptor.equals(
layout.getDescriptor())) {
if (mKeyboardLayoutSelectedCallback != null) { if (mKeyboardLayoutSelectedCallback != null) {
mKeyboardLayoutSelectedCallback.onSelected(layout); mKeyboardLayoutSelectedCallback.onSelected(layout);
} }
@@ -197,6 +199,12 @@ public class NewKeyboardLayoutPickerController extends BasePreferenceController
mScreen.addPreference(pref); mScreen.addPreference(pref);
mPreferenceMap.put(pref, layout); mPreferenceMap.put(pref, layout);
} }
if (mSelectedLayoutDescriptor == null && mKeyboardLayoutSelectedCallback != null) {
// Pass null here since getKeyboardLayoutPreview() accept null layout, which will
// return default preview image
mKeyboardLayoutSelectedCallback.onSelected(null);
}
} }
private void setLayout(TickButtonPreference preference) { private void setLayout(TickButtonPreference preference) {
@@ -233,6 +241,6 @@ public class NewKeyboardLayoutPickerController extends BasePreferenceController
/** /**
* Called when KeyboardLayout been selected. * Called when KeyboardLayout been selected.
*/ */
void onSelected(KeyboardLayout keyboardLayout); void onSelected(@Nullable KeyboardLayout keyboardLayout);
} }
} }

View File

@@ -31,6 +31,7 @@ import android.view.ViewGroup;
import android.widget.ImageView; import android.widget.ImageView;
import android.widget.TextView; import android.widget.TextView;
import androidx.annotation.Nullable;
import androidx.fragment.app.Fragment; import androidx.fragment.app.Fragment;
import com.android.settings.R; import com.android.settings.R;
@@ -48,10 +49,10 @@ public class NewKeyboardLayoutPickerFragment extends Fragment {
mKeyboardLayoutSelectedCallback = mKeyboardLayoutSelectedCallback =
new NewKeyboardLayoutPickerController.KeyboardLayoutSelectedCallback() { new NewKeyboardLayoutPickerController.KeyboardLayoutSelectedCallback() {
@Override @Override
public void onSelected(KeyboardLayout keyboardLayout) { public void onSelected(@Nullable KeyboardLayout keyboardLayout) {
if (mInputManager != null if (mInputManager != null
&& mKeyboardLayoutPreview != null && mKeyboardLayoutPreview != null
&& mKeyboardLayoutPreviewText != null && keyboardLayout != null) { && mKeyboardLayoutPreviewText != null) {
Drawable previewDrawable = mInputManager.getKeyboardLayoutPreview( Drawable previewDrawable = mInputManager.getKeyboardLayoutPreview(
keyboardLayout, keyboardLayout,
DEFAULT_KEYBOARD_PREVIEW_WIDTH, DEFAULT_KEYBOARD_PREVIEW_HEIGHT); DEFAULT_KEYBOARD_PREVIEW_WIDTH, DEFAULT_KEYBOARD_PREVIEW_HEIGHT);
@@ -60,9 +61,12 @@ public class NewKeyboardLayoutPickerFragment extends Fragment {
mKeyboardLayoutPreviewText.setVisibility( mKeyboardLayoutPreviewText.setVisibility(
previewDrawable == null ? GONE : VISIBLE); previewDrawable == null ? GONE : VISIBLE);
if (previewDrawable != null) { if (previewDrawable != null) {
mKeyboardLayoutPreviewText.setText(keyboardLayout.getLabel());
mKeyboardLayoutPreview.setImageDrawable(previewDrawable); mKeyboardLayoutPreview.setImageDrawable(previewDrawable);
} }
mKeyboardLayoutPreviewText.setText(
keyboardLayout != null ? keyboardLayout.getLabel()
: requireContext().getString(
R.string.keyboard_default_layout));
} }
} }
}; };