Implement temporary upper case hint icon

This change partially implements the requested feature. The following
are not supported yet.
- Non-letter key handling on automatic temporary upper case layout.
- Non-letter key handling on shift chording in caps lock layout.
- Hint icons for manual temporary upper case layout are not final ones.

Bug: 3193390

Change-Id: I636da99d1be05b1337935d87c6f4d140661e1cc8
diff --git a/java/res/drawable-xlarge-land/key_hint_at_large_holo.9.png b/java/res/drawable-xlarge-land/key_hint_at_large_holo.9.png
new file mode 100644
index 0000000..eaad066
--- /dev/null
+++ b/java/res/drawable-xlarge-land/key_hint_at_large_holo.9.png
Binary files differ
diff --git a/java/res/drawable-xlarge-land/key_hint_colon_large_holo.9.png b/java/res/drawable-xlarge-land/key_hint_colon_large_holo.9.png
new file mode 100644
index 0000000..bdf4ed5
--- /dev/null
+++ b/java/res/drawable-xlarge-land/key_hint_colon_large_holo.9.png
Binary files differ
diff --git a/java/res/drawable-xlarge-land/key_hint_exclamation_large_holo.9.png b/java/res/drawable-xlarge-land/key_hint_exclamation_large_holo.9.png
new file mode 100644
index 0000000..6511822
--- /dev/null
+++ b/java/res/drawable-xlarge-land/key_hint_exclamation_large_holo.9.png
Binary files differ
diff --git a/java/res/drawable-xlarge-land/key_hint_plus_large_holo.9.png b/java/res/drawable-xlarge-land/key_hint_plus_large_holo.9.png
new file mode 100644
index 0000000..206d990
--- /dev/null
+++ b/java/res/drawable-xlarge-land/key_hint_plus_large_holo.9.png
Binary files differ
diff --git a/java/res/drawable-xlarge-land/key_hint_question_large_holo.9.png b/java/res/drawable-xlarge-land/key_hint_question_large_holo.9.png
new file mode 100644
index 0000000..d205ef8
--- /dev/null
+++ b/java/res/drawable-xlarge-land/key_hint_question_large_holo.9.png
Binary files differ
diff --git a/java/res/drawable-xlarge-land/key_hint_quote_large_holo.9.png b/java/res/drawable-xlarge-land/key_hint_quote_large_holo.9.png
new file mode 100644
index 0000000..074d619
--- /dev/null
+++ b/java/res/drawable-xlarge-land/key_hint_quote_large_holo.9.png
Binary files differ
diff --git a/java/res/drawable-xlarge-land/key_hint_slash_large_holo.9.png b/java/res/drawable-xlarge-land/key_hint_slash_large_holo.9.png
new file mode 100644
index 0000000..a3a0297
--- /dev/null
+++ b/java/res/drawable-xlarge-land/key_hint_slash_large_holo.9.png
Binary files differ
diff --git a/java/res/drawable-xlarge/key_hint_at_large_holo.9.png b/java/res/drawable-xlarge/key_hint_at_large_holo.9.png
new file mode 100644
index 0000000..ff56845
--- /dev/null
+++ b/java/res/drawable-xlarge/key_hint_at_large_holo.9.png
Binary files differ
diff --git a/java/res/drawable-xlarge/key_hint_colon_large_holo.9.png b/java/res/drawable-xlarge/key_hint_colon_large_holo.9.png
new file mode 100644
index 0000000..91e7883
--- /dev/null
+++ b/java/res/drawable-xlarge/key_hint_colon_large_holo.9.png
Binary files differ
diff --git a/java/res/drawable-xlarge/key_hint_exclamation_large_holo.9.png b/java/res/drawable-xlarge/key_hint_exclamation_large_holo.9.png
new file mode 100644
index 0000000..0152ce2
--- /dev/null
+++ b/java/res/drawable-xlarge/key_hint_exclamation_large_holo.9.png
Binary files differ
diff --git a/java/res/drawable-xlarge/key_hint_plus_large_holo.9.png b/java/res/drawable-xlarge/key_hint_plus_large_holo.9.png
new file mode 100644
index 0000000..5f7d315
--- /dev/null
+++ b/java/res/drawable-xlarge/key_hint_plus_large_holo.9.png
Binary files differ
diff --git a/java/res/drawable-xlarge/key_hint_question_large_holo.9.png b/java/res/drawable-xlarge/key_hint_question_large_holo.9.png
new file mode 100644
index 0000000..8a9dffb
--- /dev/null
+++ b/java/res/drawable-xlarge/key_hint_question_large_holo.9.png
Binary files differ
diff --git a/java/res/drawable-xlarge/key_hint_quote_large_holo.9.png b/java/res/drawable-xlarge/key_hint_quote_large_holo.9.png
new file mode 100644
index 0000000..6514e0b
--- /dev/null
+++ b/java/res/drawable-xlarge/key_hint_quote_large_holo.9.png
Binary files differ
diff --git a/java/res/drawable-xlarge/key_hint_slash_large_holo.9.png b/java/res/drawable-xlarge/key_hint_slash_large_holo.9.png
new file mode 100644
index 0000000..75c3bb1
--- /dev/null
+++ b/java/res/drawable-xlarge/key_hint_slash_large_holo.9.png
Binary files differ
diff --git a/java/res/values/attrs.xml b/java/res/values/attrs.xml
index 72e3f0d..815c7fd 100644
--- a/java/res/values/attrs.xml
+++ b/java/res/values/attrs.xml
@@ -106,12 +106,15 @@
         <attr name="keyOutputText" format="string" />
         <!-- The label to display on the key. -->
         <attr name="keyLabel" format="string" />
-        <!-- The label to display on the key when keyboard is in temporary shift mode. -->
-        <attr name="temporaryShiftKeyLabel" format="string" />
+        <!-- The unicode that this key generates in manual temporary upper case mode. -->
+        <attr name="manualTemporaryUpperCaseCode" format="integer" />
         <!-- The icon to display on the key instead of the label. -->
         <attr name="keyIcon" format="reference" />
         <!-- The hint icon to display on the key in conjunction with the label -->
         <attr name="keyHintIcon" format="reference" />
+        <!-- The hint icon to display on the key when keyboard is in manual temporary upper case
+             mode. -->
+        <attr name="manualTemporaryUpperCaseHintIcon" format="reference" />
     </declare-styleable>
 
     <declare-styleable name="BaseKeyboard_Row">
diff --git a/java/res/xml-xlarge/kbd_qwerty_row2.xml b/java/res/xml-xlarge/kbd_qwerty_row2.xml
index 9607730..71aa916 100644
--- a/java/res/xml-xlarge/kbd_qwerty_row2.xml
+++ b/java/res/xml-xlarge/kbd_qwerty_row2.xml
@@ -66,8 +66,9 @@
             <default>
                 <Key
                     latin:keyLabel="\'"
-                    latin:temporaryShiftKeyLabel="&quot;"
+                    latin:manualTemporaryUpperCaseCode="34"
                     latin:keyHintIcon="@drawable/key_hint_quote_holo"
+                    latin:manualTemporaryUpperCaseHintIcon="@drawable/key_hint_quote_large_holo"
                     latin:popupKeyboard="@xml/kbd_popup_template"
                     latin:popupCharacters="&quot;" />
             </default>
diff --git a/java/res/xml-xlarge/kbd_qwerty_row3.xml b/java/res/xml-xlarge/kbd_qwerty_row3.xml
index 77a4d48..24d1b1d 100644
--- a/java/res/xml-xlarge/kbd_qwerty_row3.xml
+++ b/java/res/xml-xlarge/kbd_qwerty_row3.xml
@@ -64,14 +64,16 @@
             <default>
                 <Key
                     latin:keyLabel=","
-                    latin:temporaryShiftKeyLabel="!"
+                    latin:manualTemporaryUpperCaseCode="33"
                     latin:keyHintIcon="@drawable/key_hint_exclamation_holo"
+                    latin:manualTemporaryUpperCaseHintIcon="@drawable/key_hint_exclamation_large_holo"
                     latin:popupKeyboard="@xml/kbd_popup_template"
                     latin:popupCharacters="!" />
                 <Key
                     latin:keyLabel="."
-                    latin:temporaryShiftKeyLabel="\?"
+                    latin:manualTemporaryUpperCaseCode="63"
                     latin:keyHintIcon="@drawable/key_hint_question_holo"
+                    latin:manualTemporaryUpperCaseHintIcon="@drawable/key_hint_question_large_holo"
                     latin:popupKeyboard="@xml/kbd_popup_template"
                     latin:popupCharacters="\?" />
             </default>
diff --git a/java/res/xml-xlarge/kbd_qwerty_row4.xml b/java/res/xml-xlarge/kbd_qwerty_row4.xml
index 4aae16d..63b5c2c 100644
--- a/java/res/xml-xlarge/kbd_qwerty_row4.xml
+++ b/java/res/xml-xlarge/kbd_qwerty_row4.xml
@@ -55,10 +55,11 @@
                     latin:popupKeyboard="@xml/popup_smileys" />
                 <Key
                     latin:keyLabel="="
-                    latin:temporaryShiftKeyLabel="+"
+                    latin:manualTemporaryUpperCaseCode="43"
                     latin:keyHintIcon="@drawable/key_hint_plus_holo"
+                    latin:manualTemporaryUpperCaseHintIcon="@drawable/key_hint_plus_large_holo"
                     latin:popupKeyboard="@xml/kbd_popup_template"
-                    latin:popupCharacters="&gt;" />
+                    latin:popupCharacters="+" />
             </default>
         </switch>
         <Key
@@ -77,8 +78,9 @@
             <default>
                 <Key
                     latin:keyLabel="-"
-                    latin:temporaryShiftKeyLabel="/"
+                    latin:manualTemporaryUpperCaseCode="47"
                     latin:keyHintIcon="@drawable/key_hint_slash_holo"
+                    latin:manualTemporaryUpperCaseHintIcon="@drawable/key_hint_slash_large_holo"
                     latin:popupKeyboard="@xml/kbd_popup_template"
                     latin:popupCharacters="/" />
             </default>
@@ -95,16 +97,18 @@
             >
                 <Key
                     latin:keyLabel="_"
-                    latin:temporaryShiftKeyLabel=":"
+                    latin:manualTemporaryUpperCaseCode="58"
                     latin:keyHintIcon="@drawable/key_hint_colon_holo"
+                    latin:manualTemporaryUpperCaseHintIcon="@drawable/key_hint_colon_large_holo"
                     latin:popupKeyboard="@xml/kbd_popup_template"
                     latin:popupCharacters=":" />
             </case>
             <default>
                 <Key
                     latin:keyLabel="_"
-                    latin:temporaryShiftKeyLabel="\@"
+                    latin:manualTemporaryUpperCaseCode="64"
                     latin:keyHintIcon="@drawable/key_hint_at_holo"
+                    latin:manualTemporaryUpperCaseHintIcon="@drawable/key_hint_at_large_holo"
                     latin:popupKeyboard="@xml/kbd_popup_template"
                     latin:popupCharacters="\@" />
             </default>