Merge "[Physical Keyboard Setting] Update layout for one pane land screen" into main
diff --git a/res/layout/keyboard_layout_picker_one_pane_land.xml b/res/layout/keyboard_layout_picker_one_pane_land.xml
new file mode 100644
index 0000000..fb5554f
--- /dev/null
+++ b/res/layout/keyboard_layout_picker_one_pane_land.xml
@@ -0,0 +1,75 @@
+<?xml version="1.0" encoding="utf-8"?><!--
+  ~ Copyright (C) 2024 The Android Open Source Project
+  ~
+  ~ Licensed under the Apache License, Version 2.0 (the "License");
+  ~ you may not use this file except in compliance with the License.
+  ~ You may obtain a copy of the License at
+  ~
+  ~      http://www.apache.org/licenses/LICENSE-2.0
+  ~
+  ~ Unless required by applicable law or agreed to in writing, software
+  ~ distributed under the License is distributed on an "AS IS" BASIS,
+  ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+  ~ See the License for the specific language governing permissions and
+  ~ limitations under the License.
+  -->
+<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
+    android:id="@+id/keyboard_layout_picker_container"
+    android:layout_width="match_parent"
+    android:layout_height="wrap_content"
+    android:layout_marginHorizontal="@dimen/keyboard_picker_margin_one_pane"
+    android:layout_marginVertical="@dimen/keyboard_picker_margin_one_pane_large"
+    android:orientation="horizontal">
+
+    <FrameLayout
+        android:id="@+id/keyboard_layout_preview_container"
+        android:layout_width="wrap_content"
+        android:layout_height="match_parent"
+        android:layout_marginEnd="@dimen/keyboard_picker_margin_one_pane"
+        android:background="@drawable/keyboard_review_layout_background">
+
+        <ImageView
+            android:id="@+id/keyboard_layout_preview"
+            android:layout_width="match_parent"
+            android:layout_height="wrap_content"
+            android:layout_marginHorizontal="@dimen/keyboard_picker_margin_small"
+            android:layout_marginTop="@dimen/keyboard_picker_margin_small"
+            android:layout_marginBottom="@dimen/keyboard_picker_margin_large"
+            android:adjustViewBounds="true"
+            android:scaleType="fitCenter" />
+
+        <TextView
+            android:id="@+id/keyboard_layout_preview_name"
+            android:layout_width="match_parent"
+            android:layout_height="@dimen/keyboard_picker_margin_large"
+            android:layout_gravity="bottom"
+            android:gravity="center"
+            android:textColor="?android:attr/textColorPrimary"
+            android:textSize="@dimen/keyboard_picker_text_size" />
+    </FrameLayout>
+
+    <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
+        android:layout_width="0dp"
+        android:layout_height="match_parent"
+        android:layout_marginStart="@dimen/keyboard_picker_margin_one_pane"
+        android:layout_weight="1"
+        android:orientation="vertical">
+
+        <FrameLayout
+            android:id="@+id/keyboard_layout_title"
+            android:layout_width="match_parent"
+            android:layout_height="wrap_content"
+            android:background="?android:attr/colorBackground"
+            android:elevation="1dp"
+            android:outlineAmbientShadowColor="@android:color/transparent"
+            android:outlineSpotShadowColor="@android:color/transparent" />
+
+        <FrameLayout
+            android:id="@+id/keyboard_layouts"
+            android:layout_width="match_parent"
+            android:layout_height="wrap_content"
+            android:layout_marginTop="@dimen/keyboard_picker_margin_small"
+            android:background="?android:attr/colorBackground" />
+    </LinearLayout>
+
+</LinearLayout>
\ No newline at end of file
diff --git a/res/values/dimens.xml b/res/values/dimens.xml
index bdf329c..cbfd3a8 100755
--- a/res/values/dimens.xml
+++ b/res/values/dimens.xml
@@ -168,6 +168,8 @@
     <!-- Keyboard -->
     <dimen name="keyboard_picker_margin_large">68dp</dimen>
     <dimen name="keyboard_picker_margin">24dp</dimen>
+    <dimen name="keyboard_picker_margin_one_pane_large">48dp</dimen>
+    <dimen name="keyboard_picker_margin_one_pane">24dp</dimen>
     <dimen name="keyboard_picker_margin_small">16dp</dimen>
     <dimen name="keyboard_picker_radius">28dp</dimen>
     <dimen name="keyboard_picker_text_size">16sp</dimen>
diff --git a/src/com/android/settings/inputmethod/NewKeyboardLayoutPickerFragment.java b/src/com/android/settings/inputmethod/NewKeyboardLayoutPickerFragment.java
index 85ba5fb..674b5bf 100644
--- a/src/com/android/settings/inputmethod/NewKeyboardLayoutPickerFragment.java
+++ b/src/com/android/settings/inputmethod/NewKeyboardLayoutPickerFragment.java
@@ -16,9 +16,11 @@
 
 package com.android.settings.inputmethod;
 
+import static android.content.res.Configuration.ORIENTATION_LANDSCAPE;
 import static android.view.View.GONE;
 import static android.view.View.VISIBLE;
 
+import android.content.res.Configuration;
 import android.graphics.drawable.Drawable;
 import android.hardware.input.InputManager;
 import android.hardware.input.KeyboardLayout;
@@ -35,6 +37,7 @@
 
 import com.android.hardware.input.Flags;
 import com.android.settings.R;
+import com.android.settings.activityembedding.ActivityEmbeddingUtils;
 
 //TODO: b/316243168 - [Physical Keyboard Setting] Refactor NewKeyboardLayoutPickerFragment
 public class NewKeyboardLayoutPickerFragment extends Fragment {
@@ -81,7 +84,7 @@
             Bundle savedInstanceState) {
         mInputManager = requireContext().getSystemService(InputManager.class);
         ViewGroup fragmentView = (ViewGroup) inflater.inflate(
-                R.layout.keyboard_layout_picker, container, false);
+                getPickerLayout(getResources().getConfiguration()), container, false);
         mKeyboardLayoutPreview = fragmentView.findViewById(R.id.keyboard_layout_preview);
         mKeyboardLayoutPreviewText = fragmentView.findViewById(R.id.keyboard_layout_preview_name);
         if (!Flags.keyboardLayoutPreviewFlag()) {
@@ -102,6 +105,12 @@
         return fragmentView;
     }
 
+    private int getPickerLayout(Configuration configuration) {
+        return !ActivityEmbeddingUtils.isAlreadyEmbedded(this.getActivity())
+                && configuration.orientation == ORIENTATION_LANDSCAPE
+                ? R.layout.keyboard_layout_picker_one_pane_land : R.layout.keyboard_layout_picker;
+    }
+
     private void updateViewMarginForPreviewFlagOff(ViewGroup fragmentView) {
         LinearLayout previewContainer = fragmentView.findViewById(
                 R.id.keyboard_layout_picker_container);