Change Input Settings UI flow.

1. Introduces new UI components as per the new flow
2. Temporarily disables components in the old flow that are to be
   replaced by the new flow. This is done so we can neatly revert
   to the old flow if there are issues with the new flow
3. AvailableVirtualKeyboardActivity now responds to
   android.settings.INPUT_METHOD_SETTINGS intents instead of
   InputMethodAndLanguageSettingsActivity

Bug: 25752812
Change-Id: I728d7ee185827ed328c16cb7abce244557a26518
diff --git a/res/xml/language_settings.xml b/res/xml/language_settings.xml
index 83a0985..9cc0145 100644
--- a/res/xml/language_settings.xml
+++ b/res/xml/language_settings.xml
@@ -41,23 +41,34 @@
             />
 
     <PreferenceCategory
-            android:key="keyboard_settings_category"
-            android:title="@string/keyboard_settings_category">
-
+        android:title="@string/keyboard_and_input_methods_category">
         <PreferenceScreen
-                android:key="current_input_method"
-                android:title="@string/current_input_method"
-                />
-        <!-- Enabled input method list will be populated programmatically here. -->
+            android:title="@string/virtual_keyboard_category"
+            android:fragment="com.android.settings.inputmethod.VirtualKeyboardFragment" />
+        <PreferenceScreen
+            android:title="@string/physical_keyboard_category"
+            android:fragment="com.android.settings.inputmethod.PhysicalKeyboardFragment" />
     </PreferenceCategory>
 
-    <PreferenceCategory
-            android:key="hard_keyboard"
-            android:title="@string/builtin_keyboard_settings_title"
-            android:persistent="false">
-        <!-- Additional preference screens are inserted here programmatically
-             with low order values to set the key map of each attached keyboard. -->
-    </PreferenceCategory>
+    <!-- Temporarily disabled: -->
+    <!--<PreferenceCategory-->
+            <!--android:key="keyboard_settings_category"-->
+            <!--android:title="@string/keyboard_settings_category">-->
+
+        <!--<PreferenceScreen-->
+                <!--android:key="current_input_method"-->
+                <!--android:title="@string/current_input_method"-->
+                <!--/>-->
+        <!--&lt;!&ndash; Enabled input method list will be populated programmatically here. &ndash;&gt;-->
+    <!--</PreferenceCategory>-->
+
+    <!--<PreferenceCategory-->
+            <!--android:key="hard_keyboard"-->
+            <!--android:title="@string/builtin_keyboard_settings_title"-->
+            <!--android:persistent="false">-->
+        <!--&lt;!&ndash; Additional preference screens are inserted here programmatically-->
+             <!--with low order values to set the key map of each attached keyboard. &ndash;&gt;-->
+    <!--</PreferenceCategory>-->
 
     <PreferenceCategory
             android:key="voice_category"
diff --git a/res/xml/physical_keyboard_settings.xml b/res/xml/physical_keyboard_settings.xml
new file mode 100644
index 0000000..cbb95c2
--- /dev/null
+++ b/res/xml/physical_keyboard_settings.xml
@@ -0,0 +1,35 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (C) 2016 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.
+-->
+<PreferenceScreen xmlns:android="http://schemas.android.com/apk/res/android"
+    android:title="@string/physical_keyboard_category">
+    <!-- Additional preference screens are inserted here programmatically
+         with low order values to set the key map of each attached keyboard. -->
+    <PreferenceCategory
+        android:key="keyboard_assistance_category"
+        android:title="@string/keyboard_assistance_category">
+        <SwitchPreference
+            android:key="show_virtual_keyboard_switch"
+            android:title="@string/show_ime"
+            android:summary="@string/show_ime_summary"
+            android:defaultValue="false" />
+
+        <!-- TODO: Get summary text from UX -->
+        <Preference
+            android:key="keyboard_shortcuts_helper"
+            android:title="@string/keyboard_shortcuts_helper"
+            android:summary="@null" />
+    </PreferenceCategory>
+</PreferenceScreen>
diff --git a/res/xml/virtual_keyboard_settings.xml b/res/xml/virtual_keyboard_settings.xml
new file mode 100644
index 0000000..e5a5f38
--- /dev/null
+++ b/res/xml/virtual_keyboard_settings.xml
@@ -0,0 +1,23 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (C) 2016 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.
+-->
+<PreferenceScreen xmlns:android="http://schemas.android.com/apk/res/android"
+    android:title="@string/virtual_keyboard_category">
+    <!-- Enabled input method list will be populated programmatically here. -->
+    <PreferenceScreen
+        android:key="add_virtual_keyboard_screen"
+        android:title="@string/add_virtual_keyboard"
+        android:fragment="com.android.settings.inputmethod.AvailableVirtualKeyboardFragment" />
+</PreferenceScreen>