From 2c5ec3a50dc9c20cb89fd6219f84600e65dddc6e Mon Sep 17 00:00:00 2001
From: Luca Zanolin <zano@google.com>
Date: Mon, 24 Jan 2011 10:36:15 +0000
Subject: [PATCH] Always display the VoiceIME language in the Speak Now pop-up

Change-Id: I1b01458aff98447b7b3d5459b765968bed5515cb
---
 java/res/layout/recognition_status.xml        | 16 +++++++++++
 .../inputmethod/voice/RecognitionView.java    | 27 ++++++++++++++++---
 2 files changed, 39 insertions(+), 4 deletions(-)

diff --git a/java/res/layout/recognition_status.xml b/java/res/layout/recognition_status.xml
index b2c9f4a510..81fae2ada3 100644
--- a/java/res/layout/recognition_status.xml
+++ b/java/res/layout/recognition_status.xml
@@ -70,6 +70,22 @@
                     android:layout_centerInParent="true"
                     android:visibility="gone"/>
         </RelativeLayout>
+        <!--
+        The text is set by the code. We specify a random text (voice_error), so the
+        text view does not have a zero height. This is necessary to keep the slash
+        mic and the recording mic is the same position
+        -->
+        <TextView
+                android:id="@+id/language"
+                android:text="@string/voice_error"
+                android:layout_height="wrap_content"
+                android:layout_width="wrap_content"
+                android:singleLine="true"
+                android:textSize="14sp"
+                android:layout_marginBottom="3dip"
+                android:layout_gravity="center"
+                android:textColor="#ffffff"
+                android:visibility="invisible"/>
         <Button
                 android:id="@+id/button"
                 android:layout_width="match_parent"
diff --git a/java/src/com/android/inputmethod/voice/RecognitionView.java b/java/src/com/android/inputmethod/voice/RecognitionView.java
index 98db9365f1..95a79f4639 100644
--- a/java/src/com/android/inputmethod/voice/RecognitionView.java
+++ b/java/src/com/android/inputmethod/voice/RecognitionView.java
@@ -16,6 +16,9 @@
 
 package com.android.inputmethod.voice;
 
+import com.android.inputmethod.latin.R;
+import com.android.inputmethod.latin.SubtypeSwitcher;
+
 import android.content.Context;
 import android.content.res.Resources;
 import android.graphics.Bitmap;
@@ -35,13 +38,11 @@ import android.widget.ImageView;
 import android.widget.ProgressBar;
 import android.widget.TextView;
 
-import com.android.inputmethod.latin.R;
-
 import java.io.ByteArrayOutputStream;
 import java.nio.ByteBuffer;
 import java.nio.ByteOrder;
 import java.nio.ShortBuffer;
-import java.util.List;
+import java.util.Locale;
 
 /**
  * The user interface for the "Speak now" and "working" states.
@@ -60,6 +61,7 @@ public class RecognitionView {
     private ImageView mImage;
     private View mProgress;
     private SoundIndicator mSoundIndicator;
+    private TextView mLanguage;
     private Button mButton;
 
     private Drawable mInitializing;
@@ -105,6 +107,7 @@ public class RecognitionView {
         mButton = (Button) mView.findViewById(R.id.button);
         mButton.setOnClickListener(clickListener);
         mText = (TextView) mView.findViewById(R.id.text);
+        mLanguage = (TextView) mView.findViewById(R.id.language);
 
         mContext = context;
     }
@@ -184,9 +187,14 @@ public class RecognitionView {
     
     private void prepareDialog(CharSequence text, Drawable image,
             CharSequence btnTxt) {
+
+        /*
+         * The mic of INIT and of LISTENING has to be displayed in the same position. To accomplish
+         * that, some text visibility are not set as GONE but as INVISIBLE.
+         */
         switch (mState) {
             case INIT:
-                mText.setVisibility(View.GONE);
+                mText.setVisibility(View.INVISIBLE);
 
                 mProgress.setVisibility(View.GONE);
 
@@ -196,6 +204,8 @@ public class RecognitionView {
                 mSoundIndicator.setVisibility(View.GONE);
                 mSoundIndicator.stop();
 
+                mLanguage.setVisibility(View.INVISIBLE);
+
                 mPopupLayout.setBackgroundDrawable(mListeningBorder);
                 break;
             case LISTENING:
@@ -209,6 +219,11 @@ public class RecognitionView {
                 mSoundIndicator.setVisibility(View.VISIBLE);
                 mSoundIndicator.start();
 
+                Locale locale = SubtypeSwitcher.getInstance().getInputLocale();
+
+                mLanguage.setVisibility(View.VISIBLE);
+                mLanguage.setText(SubtypeSwitcher.getFullDisplayName(locale, true));
+
                 mPopupLayout.setBackgroundDrawable(mListeningBorder);
                 break;
             case WORKING:
@@ -223,6 +238,8 @@ public class RecognitionView {
                 mSoundIndicator.setVisibility(View.GONE);
                 mSoundIndicator.stop();
 
+                mLanguage.setVisibility(View.GONE);
+
                 mPopupLayout.setBackgroundDrawable(mWorkingBorder);
                 break;
             case READY:
@@ -237,6 +254,8 @@ public class RecognitionView {
                 mSoundIndicator.setVisibility(View.GONE);
                 mSoundIndicator.stop();
 
+                mLanguage.setVisibility(View.GONE);
+
                 mPopupLayout.setBackgroundDrawable(mErrorBorder);
                 break;
              default:
-- 
GitLab