Make Keyboard aware of theme

This change is needed to introduce new theme easily. As a starter this
change introduces Keyboard.popupHintIcon attribute and
Key.keyLabelOption.popupHint flag to show popup hint icon that is
previously specified by Key.keyHintIcon attribute.

Bug: 4436327
Change-Id: I6b1c5c1b88eece541141b2d2cedd164ee02e5c2a
diff --git a/java/res/values/attrs.xml b/java/res/values/attrs.xml
index 5557dde..b159f08 100644
--- a/java/res/values/attrs.xml
+++ b/java/res/values/attrs.xml
@@ -16,6 +16,8 @@
 
 <resources>
     <declare-styleable name="KeyboardTheme">
+        <!-- Keyboard style -->
+        <attr name="keyboardStyle" format="reference" />
         <!-- KeyboardView style -->
         <attr name="keyboardViewStyle" format="reference" />
         <attr name="keyPreviewStyle" format="reference" />
@@ -113,6 +115,8 @@
         <attr name="verticalGap" format="dimension|fraction" />
         <!-- Popup keyboard layout template -->
         <attr name="popupKeyboardTemplate" format="reference" />
+        <!-- Popup hint icon -->
+        <attr name="popupHintIcon" format="reference" />
         <!-- Locale of the keyboard layout -->
         <attr name="keyboardLocale" format="string" />
     </declare-styleable>
@@ -146,10 +150,11 @@
         <!-- The key label option -->
         <attr name="keyLabelOption" format="integer">
             <!-- This should be aligned with KeyboardView.KEY_LABEL_OPTION_* -->
-            <flag name="alignLeft" value="1" />
-            <flag name="alignRight" value="2" />
-            <flag name="alignBottom" value="8" />
-            <flag name="fontNormal" value="16" />
+            <flag name="alignLeft" value="0x01" />
+            <flag name="alignRight" value="0x02" />
+            <flag name="alignBottom" value="0x08" />
+            <flag name="fontNormal" value="0x10" />
+            <flag name="popupHint" value="0x20" />
         </attr>
         <!-- The unicode that this key generates in manual temporary upper case mode. -->
         <attr name="manualTemporaryUpperCaseCode" format="integer" />
@@ -200,9 +205,9 @@
         </attr>
         <attr name="webInput" format="boolean" />
         <attr name="passwordInput" format="boolean" />
-        <attr name="hasSettingsKey" format="string" />
-        <attr name="voiceKeyEnabled" format="string" />
-        <attr name="hasVoiceKey" format="string" />
+        <attr name="hasSettingsKey" format="boolean" />
+        <attr name="voiceKeyEnabled" format="boolean" />
+        <attr name="hasVoiceKey" format="boolean" />
         <attr name="imeAction" format="enum">
             <!-- This should be aligned with EditorInfo.IME_ACTION_* -->
             <enum name="actionUnspecified" value="0" />
diff --git a/java/res/values/styles.xml b/java/res/values/styles.xml
index 7cb4593..60ed34a 100644
--- a/java/res/values/styles.xml
+++ b/java/res/values/styles.xml
@@ -16,6 +16,9 @@
 
 <resources>
     <!-- Theme "Basic" -->
+    <style name="Keyboard" >
+        <item name="popupHintIcon">@drawable/hint_popup</item>
+    </style>
     <style name="KeyboardView">
         <item name="android:background">@drawable/keyboard_background</item>
         <item name="keyBackground">@drawable/btn_keyboard_key</item>
@@ -89,6 +92,9 @@
         <item name="android:background">@null</item>
     </style>
     <!-- Theme "Honeycomb" -->
+    <style name="Keyboard.Honeycomb" parent="Keyboard" >
+        <item name="popupHintIcon">@drawable/hint_popup_holo</item>
+    </style>
     <style name="KeyboardView.Honeycomb" parent="KeyboardView">
         <item name="android:background">@drawable/keyboard_background_holo</item>
         <item name="keyBackground">@drawable/btn_keyboard_key_honeycomb</item>
@@ -111,13 +117,13 @@
         <item name="android:paddingLeft">@dimen/mini_keyboard_horizontal_padding_holo</item>
         <item name="android:paddingRight">@dimen/mini_keyboard_horizontal_padding_holo</item>
     </style>
-    <style name="SuggestionsStripBackgroundStyle.Holo">
+    <style name="SuggestionsStripBackgroundStyle.Honeycomb">
         <item name="android:background">@drawable/keyboard_suggest_strip_holo</item>
     </style>
-    <style name="SuggestionBackgroundStyle.Holo">
+    <style name="SuggestionBackgroundStyle.Honeycomb">
         <item name="android:background">@drawable/btn_candidate_holo</item>
     </style>
-    <style name="SuggestionPreviewBackgroundStyle.Holo">
+    <style name="SuggestionPreviewBackgroundStyle.Honeycomb">
         <item name="android:background">@drawable/keyboard_popup_panel_background_holo</item>
     </style>
     <style name="PopupMiniKeyboardAnimation">
diff --git a/java/res/values/themes.xml b/java/res/values/themes.xml
index 5315a9a..1382dfe 100644
--- a/java/res/values/themes.xml
+++ b/java/res/values/themes.xml
@@ -16,6 +16,7 @@
 
 <resources>
     <style name="KeyboardTheme" parent="android:Theme">
+        <item name="keyboardStyle">@style/Keyboard</item>
         <item name="keyboardViewStyle">@style/KeyboardView</item>
         <item name="keyPreviewStyle">@style/KeyPreviewStyle</item>
         <item name="popupMiniKeyboardViewStyle">@style/PopupMiniKeyboardView</item>
@@ -25,6 +26,7 @@
         <item name="suggestionPreviewBackgroundStyle">@style/SuggestionPreviewBackgroundStyle</item>
     </style>
     <style name="KeyboardTheme.HighContrast" parent="android:Theme">
+        <item name="keyboardStyle">@style/Keyboard</item>
         <item name="keyboardViewStyle">@style/KeyboardView.HighContrast</item>
         <item name="keyPreviewStyle">@style/KeyPreviewStyle</item>
         <item name="popupMiniKeyboardViewStyle">@style/PopupMiniKeyboardView</item>
@@ -33,6 +35,7 @@
         <item name="suggestionBackgroundStyle">@style/SuggestionBackgroundStyle</item>
     </style>
     <style name="KeyboardTheme.Stone" parent="android:Theme.Light">
+        <item name="keyboardStyle">@style/Keyboard</item>
         <item name="keyboardViewStyle">@style/KeyboardView.Stone</item>
         <item name="keyPreviewStyle">@style/KeyPreviewStyle</item>
         <item name="popupMiniKeyboardViewStyle">@style/PopupMiniKeyboardView.Stone</item>
@@ -41,6 +44,7 @@
         <item name="suggestionBackgroundStyle">@style/SuggestionBackgroundStyle</item>
     </style>
     <style name="KeyboardTheme.Stone.Bold" parent="android:Theme.Light">
+        <item name="keyboardStyle">@style/Keyboard</item>
         <item name="keyboardViewStyle">@style/KeyboardView.Stone.Bold</item>
         <item name="keyPreviewStyle">@style/KeyPreviewStyle</item>
         <item name="popupMiniKeyboardViewStyle">@style/PopupMiniKeyboardView.Stone</item>
@@ -49,6 +53,7 @@
         <item name="suggestionBackgroundStyle">@style/SuggestionBackgroundStyle</item>
     </style>
     <style name="KeyboardTheme.Gingerbread" parent="android:Theme.Black">
+        <item name="keyboardStyle">@style/Keyboard</item>
         <item name="keyboardViewStyle">@style/KeyboardView.Gingerbread</item>
         <item name="keyPreviewStyle">@style/KeyPreviewStyle</item>
         <item name="popupMiniKeyboardViewStyle">@style/PopupMiniKeyboardView.Gingerbread</item>
@@ -57,11 +62,12 @@
         <item name="suggestionBackgroundStyle">@style/SuggestionBackgroundStyle</item>
     </style>
     <style name="KeyboardTheme.Honeycomb" parent="android:Theme.Holo">
+        <item name="keyboardStyle">@style/Keyboard.Honeycomb</item>
         <item name="keyboardViewStyle">@style/KeyboardView.Honeycomb</item>
         <item name="keyPreviewStyle">@style/KeyPreviewStyle.Honeycomb</item>
         <item name="popupMiniKeyboardViewStyle">@style/PopupMiniKeyboardView.Honeycomb</item>
         <item name="popupMiniKeyboardPanelStyle">@style/PopupMiniKeyboardPanelStyle.Honeycomb</item>
-        <item name="suggestionsStripBackgroundStyle">@style/SuggestionsStripBackgroundStyle.Holo</item>
-        <item name="suggestionBackgroundStyle">@style/SuggestionBackgroundStyle.Holo</item>
+        <item name="suggestionsStripBackgroundStyle">@style/SuggestionsStripBackgroundStyle.Honeycomb</item>
+        <item name="suggestionBackgroundStyle">@style/SuggestionBackgroundStyle.Honeycomb</item>
     </style>
 </resources>
diff --git a/java/res/xml-sw600dp/kbd_key_styles.xml b/java/res/xml-sw600dp/kbd_key_styles.xml
index a98ffe6..a388879 100644
--- a/java/res/xml-sw600dp/kbd_key_styles.xml
+++ b/java/res/xml-sw600dp/kbd_key_styles.xml
@@ -75,7 +75,7 @@
                 latin:styleName="smileyKeyStyle"
                 latin:keyLabel=":-)"
                 latin:keyOutputText=":-) "
-                latin:keyHintIcon="@drawable/hint_popup_holo"
+                latin:keyLabelOption="popupHint"
                 latin:popupCharacters="@string/alternates_for_smiley"
                 latin:maxPopupKeyboardColumn="5" />
             <switch>
@@ -87,7 +87,7 @@
                         latin:code="@integer/key_shortcut"
                         latin:keyIcon="@drawable/sym_keyboard_voice_holo"
                         latin:iconPreview="@drawable/sym_keyboard_feedback_mic"
-                        latin:keyHintIcon="@drawable/hint_popup_holo"
+                        latin:keyLabelOption="popupHint"
                         latin:popupCharacters="\@drawable/sym_keyboard_settings|\@integer/key_settings"
                         latin:parentStyle="functionalKeyStyle" />
                 </case>
@@ -137,7 +137,7 @@
                 latin:styleName="smileyKeyStyle"
                 latin:keyLabel=":-)"
                 latin:keyOutputText=":-) "
-                latin:keyHintIcon="@drawable/hint_popup_holo"
+                latin:keyLabelOption="popupHint"
                 latin:popupCharacters="@string/alternates_for_smiley"
                 latin:maxPopupKeyboardColumn="5" />
             <switch>
@@ -149,7 +149,7 @@
                         latin:code="@integer/key_shortcut"
                         latin:keyIcon="@drawable/sym_bkeyboard_mic"
                         latin:iconPreview="@drawable/sym_keyboard_feedback_mic"
-                        latin:keyHintIcon="@drawable/hint_popup_holo"
+                        latin:keyLabelOption="popupHint"
                         latin:popupCharacters="\@drawable/sym_keyboard_settings|\@integer/key_settings"
                         latin:parentStyle="functionalKeyStyle" />
                 </case>
@@ -192,9 +192,8 @@
     <key-style
         latin:styleName="comKeyStyle"
         latin:keyLabel="@string/keylabel_for_popular_domain"
-        latin:keyLabelOption="fontNormal"
+        latin:keyLabelOption="fontNormal|popupHint"
         latin:keyOutputText="@string/keylabel_for_popular_domain"
-        latin:keyHintIcon="@drawable/hint_popup_holo"
         latin:popupCharacters="@string/alternates_for_popular_domain" />
     <switch>
         <case
diff --git a/java/res/xml-sw768dp/kbd_key_styles.xml b/java/res/xml-sw768dp/kbd_key_styles.xml
index 57eaccb..4388e89 100644
--- a/java/res/xml-sw768dp/kbd_key_styles.xml
+++ b/java/res/xml-sw768dp/kbd_key_styles.xml
@@ -62,7 +62,7 @@
                 latin:styleName="smileyKeyStyle"
                 latin:keyLabel=":-)"
                 latin:keyOutputText=":-) "
-                latin:keyHintIcon="@drawable/hint_popup_holo"
+                latin:keyLabelOption="popupHint"
                 latin:popupCharacters="@string/alternates_for_smiley"
                 latin:maxPopupKeyboardColumn="5" />
             <key-style
@@ -116,7 +116,7 @@
                 latin:styleName="smileyKeyStyle"
                 latin:keyLabel=":-)"
                 latin:keyOutputText=":-) "
-                latin:keyHintIcon="@drawable/hint_popup_holo"
+                latin:keyLabelOption="popupHint"
                 latin:popupCharacters="@string/alternates_for_smiley"
                 latin:maxPopupKeyboardColumn="5" />
             <key-style
@@ -161,9 +161,8 @@
     <key-style
         latin:styleName="comKeyStyle"
         latin:keyLabel="@string/keylabel_for_popular_domain"
-        latin:keyLabelOption="fontNormal"
+        latin:keyLabelOption="fontNormal|popupHint"
         latin:keyOutputText="@string/keylabel_for_popular_domain"
-        latin:keyHintIcon="@drawable/hint_popup_holo"
         latin:popupCharacters="@string/alternates_for_popular_domain" />
     <switch>
         <case
diff --git a/java/res/xml/kbd_key_styles.xml b/java/res/xml/kbd_key_styles.xml
index f888b23..63c019d 100644
--- a/java/res/xml/kbd_key_styles.xml
+++ b/java/res/xml/kbd_key_styles.xml
@@ -50,7 +50,7 @@
         <default>
             <key-style
                 latin:styleName="settingsPopupStyle"
-                latin:keyHintIcon="@drawable/hint_popup"
+                latin:keyLabelOption="popupHint"
                 latin:popupCharacters="\@drawable/sym_keyboard_settings_holo|\@integer/key_settings"
                 latin:parentStyle="functionalKeyStyle" />
         </default>
@@ -308,7 +308,7 @@
         latin:styleName="smileyKeyStyle"
         latin:keyLabel=":-)"
         latin:keyOutputText=":-) "
-        latin:keyHintIcon="@drawable/hint_popup"
+        latin:keyLabelOption="popupHint"
         latin:popupCharacters="@string/alternates_for_smiley"
         latin:maxPopupKeyboardColumn="5"
         latin:parentStyle="functionalKeyStyle" />
diff --git a/java/res/xml/kbd_qwerty_row4.xml b/java/res/xml/kbd_qwerty_row4.xml
index 21d80eb..dfe5de3 100644
--- a/java/res/xml/kbd_qwerty_row4.xml
+++ b/java/res/xml/kbd_qwerty_row4.xml
@@ -59,15 +59,15 @@
                 latin:webInput="true"
             >
                 <Key
-                    latin:keyHintIcon="@drawable/hint_popup"
+                    latin:keyStyle="tabKeyStyle"
+                    latin:keyLabelOption="popupHint"
                     latin:popupCharacters="@string/alternates_for_web_tab_punctuation"
-                    latin:maxPopupKeyboardColumn="8"
-                    latin:keyStyle="tabKeyStyle" />
+                    latin:maxPopupKeyboardColumn="8" />
             </case>
             <default>
                 <Key
                     latin:keyLabel="."
-                    latin:keyHintIcon="@drawable/hint_popup"
+                    latin:keyLabelOption="popupHint"
                     latin:popupCharacters="@string/alternates_for_punctuation"
                     latin:maxPopupKeyboardColumn="7"
                     latin:keyStyle="functionalKeyStyle" />
diff --git a/java/res/xml/kbd_symbols_row4.xml b/java/res/xml/kbd_symbols_row4.xml
index 726f7c3..704402a 100644
--- a/java/res/xml/kbd_symbols_row4.xml
+++ b/java/res/xml/kbd_symbols_row4.xml
@@ -56,7 +56,7 @@
         </switch>
         <Key
             latin:keyLabel="."
-            latin:keyHintIcon="@drawable/hint_popup"
+            latin:keyLabelOption="popupHint"
             latin:popupCharacters="@string/alternates_for_punctuation"
             latin:maxPopupKeyboardColumn="7"
             latin:keyStyle="functionalKeyStyle" />