Add language switch key only to the phone layouts

Bug: 5759092
Change-Id: Ic7d7d4812976654c0e85fecabd1128eadfc52c5c
diff --git a/java/res/drawable-hdpi/sym_keyboard_language_switch.png b/java/res/drawable-hdpi/sym_keyboard_language_switch.png
new file mode 100644
index 0000000..fa74764
--- /dev/null
+++ b/java/res/drawable-hdpi/sym_keyboard_language_switch.png
Binary files differ
diff --git a/java/res/drawable-mdpi/sym_keyboard_language_switch.png b/java/res/drawable-mdpi/sym_keyboard_language_switch.png
new file mode 100644
index 0000000..f30c1b6
--- /dev/null
+++ b/java/res/drawable-mdpi/sym_keyboard_language_switch.png
Binary files differ
diff --git a/java/res/values/attrs.xml b/java/res/values/attrs.xml
index a5d590e..7758074 100644
--- a/java/res/values/attrs.xml
+++ b/java/res/values/attrs.xml
@@ -216,6 +216,7 @@
         <attr name="iconShiftKeyShifted" format="reference" />
         <attr name="iconDisabledShortcutKey" format="reference" />
         <attr name="iconPreviewTabKey" format="reference" />
+        <attr name="iconLanguageSwitchKey" format="reference" />
     </declare-styleable>
 
     <declare-styleable name="Keyboard_Key">
@@ -296,6 +297,7 @@
             <enum name="iconShortcutForLabel" value="9" />
             <enum name="iconSpaceKeyForNumberLayout" value="10" />
             <enum name="iconShiftKeyShifted" value="11" />
+            <enum name="iconLanguageSwitchKey" value="14" />
         </attr>
         <!-- The icon for disabled key -->
         <attr name="keyIconDisabled" format="enum">
@@ -361,6 +363,7 @@
         <attr name="clobberSettingsKey" format="boolean" />
         <attr name="shortcutKeyEnabled" format="boolean" />
         <attr name="hasShortcutKey" format="boolean" />
+        <attr name="languageSwitchKeyEnabled" format="boolean" />
         <attr name="isMultiLine" format="boolean" />
         <attr name="imeAction" format="enum">
             <!-- This should be aligned with EditorInfo.IME_ACTION_* -->
diff --git a/java/res/values/keyboard-icons-black.xml b/java/res/values/keyboard-icons-black.xml
index 1c5a5f7..44fc2b9 100644
--- a/java/res/values/keyboard-icons-black.xml
+++ b/java/res/values/keyboard-icons-black.xml
@@ -34,5 +34,7 @@
         <item name="iconShiftKeyShifted">@drawable/sym_bkeyboard_shift_locked</item>
         <item name="iconDisabledShortcutKey">@drawable/sym_bkeyboard_voice_off</item>
         <item name="iconPreviewTabKey">@drawable/sym_keyboard_feedback_tab</item>
+        <!-- TODO: Needs dedicated black theme globe icon -->
+        <item name="iconLanguageSwitchKey">@drawable/sym_keyboard_language_switch</item>
     </style>
 </resources>
diff --git a/java/res/values/keyboard-icons-ics.xml b/java/res/values/keyboard-icons-ics.xml
index f68be5f..5fba025 100644
--- a/java/res/values/keyboard-icons-ics.xml
+++ b/java/res/values/keyboard-icons-ics.xml
@@ -33,5 +33,6 @@
         <item name="iconShiftKeyShifted">@drawable/sym_keyboard_shift_locked_holo</item>
         <item name="iconDisabledShortcutKey">@drawable/sym_keyboard_voice_off_holo</item>
         <item name="iconPreviewTabKey">@drawable/sym_keyboard_feedback_tab</item>
+        <item name="iconLanguageSwitchKey">@drawable/sym_keyboard_language_switch</item>
     </style>
 </resources>
diff --git a/java/res/values/keyboard-icons-white.xml b/java/res/values/keyboard-icons-white.xml
index 35197a1..837b1a3 100644
--- a/java/res/values/keyboard-icons-white.xml
+++ b/java/res/values/keyboard-icons-white.xml
@@ -31,5 +31,6 @@
         <!-- TODO: Needs non-holo disabled shortcut icon drawable -->
         <item name="iconDisabledShortcutKey">@drawable/sym_keyboard_voice_off_holo</item>
         <item name="iconPreviewTabKey">@drawable/sym_keyboard_feedback_tab</item>
+        <item name="iconLanguageSwitchKey">@drawable/sym_keyboard_language_switch</item>
     </style>
 </resources>
diff --git a/java/res/values/keycodes.xml b/java/res/values/keycodes.xml
index 7f9e4bd..d3d9b63 100644
--- a/java/res/values/keycodes.xml
+++ b/java/res/values/keycodes.xml
@@ -32,5 +32,6 @@
     <integer name="key_action_enter">-7</integer>
     <integer name="key_action_next">-8</integer>
     <integer name="key_action_previous">-9</integer>
-    <integer name="key_unspecified">-10</integer>
+    <integer name="key_language_switch">-10</integer>
+    <integer name="key_unspecified">-11</integer>
 </resources>
diff --git a/java/res/values/strings.xml b/java/res/values/strings.xml
index d8a3a68..f2c02d0 100644
--- a/java/res/values/strings.xml
+++ b/java/res/values/strings.xml
@@ -64,6 +64,13 @@
     <!-- Option summary for advanced settings screen [CHAR LIMIT=65 (two lines) or 30 (fits on one line, preferable)] -->
     <string name="advanced_settings_summary">Options for experts</string>
 
+    <!-- Option name for including other IMEs in the language switch list [CHAR LIMIT=25] -->
+    <string name="include_other_imes_in_language_switch_list">Switch to other input methods</string>
+    <!-- Option summary for including other IMEs in the language switch list [CHAR LIMIT=65] -->
+    <string name="include_other_imes_in_language_switch_list_summary">Language switch key covers other input methods too</string>
+    <!-- Option to suppress language switch key [CHAR LIMIT=25] -->
+    <string name="suppress_language_switch_key">Suppress language switch key</string>
+
     <!-- Option for the dismiss delay of the key popup [CHAR LIMIT=25] -->
     <string name="key_preview_popup_dismiss_delay">Key popup dismiss delay</string>
     <!-- Description for delay for dismissing a popup on keypress: no delay [CHAR LIMIT=15] -->
diff --git a/java/res/xml/key_styles_common.xml b/java/res/xml/key_styles_common.xml
index 76eacb6..f153a7d 100644
--- a/java/res/xml/key_styles_common.xml
+++ b/java/res/xml/key_styles_common.xml
@@ -117,10 +117,10 @@
         latin:altCode="@integer/key_space"
         latin:parentStyle="f1MoreKeysStyle" />
     <key-style
-        latin:styleName="settingsKeyStyle"
-        latin:code="@integer/key_settings"
-        latin:keyIcon="iconSettingsKey"
-        latin:keyActionFlags="noKeyPreview|altCodeWhileTyping"
+        latin:styleName="languageSwitchKeyStyle"
+        latin:code="@integer/key_language_switch"
+        latin:keyIcon="iconLanguageSwitchKey"
+        latin:keyActionFlags="noKeyPreview|altCodeWhileTyping|enableLongPress"
         latin:altCode="@integer/key_space"
         latin:backgroundType="functional" />
     <key-style
diff --git a/java/res/xml/prefs.xml b/java/res/xml/prefs.xml
index f826ef0..ebca250 100644
--- a/java/res/xml/prefs.xml
+++ b/java/res/xml/prefs.xml
@@ -92,6 +92,17 @@
             android:key="pref_advanced_settings"
             android:title="@string/advanced_settings"
             android:summary="@string/advanced_settings_summary">
+            <CheckBoxPreference
+                android:key="pref_suppress_language_switch_key"
+                android:title="@string/suppress_language_switch_key"
+                android:persistent="true"
+                android:defaultValue="false" />
+            <CheckBoxPreference
+                android:key="pref_include_other_imes_in_language_switch_list"
+                android:title="@string/include_other_imes_in_language_switch_list"
+                android:summary="@string/include_other_imes_in_language_switch_list_summary"
+                android:persistent="true"
+                android:defaultValue="false" />
             <!-- Values for popup dismiss delay are added programatically -->
             <ListPreference
                 android:key="pref_key_preview_popup_dismiss_delay"
diff --git a/java/res/xml/row_qwerty4.xml b/java/res/xml/row_qwerty4.xml
index df9c8fe..0dd2177 100644
--- a/java/res/xml/row_qwerty4.xml
+++ b/java/res/xml/row_qwerty4.xml
@@ -57,9 +57,23 @@
                     latin:keyStyle="f1MoreKeysStyle" />
             </default>
         </switch>
-        <Key
-            latin:keyStyle="spaceKeyStyle"
-            latin:keyWidth="50%p" />
+        <switch>
+            <case
+                latin:languageSwitchKeyEnabled="true"
+            >
+                <Key
+                    latin:keyStyle="languageSwitchKeyStyle" />
+                <Key
+                    latin:keyStyle="spaceKeyStyle"
+                    latin:keyWidth="40%p" />
+            </case>
+            <!-- languageSwitchKeyEnabled="false" -->
+            <default>
+                <Key
+                    latin:keyStyle="spaceKeyStyle"
+                    latin:keyWidth="50%p" />
+            </default>
+        </switch>
         <Key
             latin:keyStyle="punctuationKeyStyle" />
         <Key