diff options
author | 2014-05-08 10:57:48 +0900 | |
---|---|---|
committer | 2014-05-12 15:08:14 +0900 | |
commit | c41d261b7e1e626aaa4e333c9c4cc73ec13cb68a (patch) | |
tree | 71fdc2e22b60ce3c4ec846d35aee5189caecdc3d | |
parent | 40f6ea720ec5958fc0706541341cad2762accaa9 (diff) | |
download | latinime-c41d261b7e1e626aaa4e333c9c4cc73ec13cb68a.tar.gz latinime-c41d261b7e1e626aaa4e333c9c4cc73ec13cb68a.tar.xz latinime-c41d261b7e1e626aaa4e333c9c4cc73ec13cb68a.zip |
Add voice key to suggestions strip
Bug: 14419121
Change-Id: I3b2bdc3c07bb7e49ea7be53649bd6dd134fea27c
-rw-r--r-- | java/res/layout/suggestions_strip.xml | 8 | ||||
-rw-r--r-- | java/res/values-land/config.xml | 1 | ||||
-rw-r--r-- | java/res/values-sw600dp-land/config.xml | 1 | ||||
-rw-r--r-- | java/res/values-sw600dp/config.xml | 3 | ||||
-rw-r--r-- | java/res/values-sw768dp-land/config.xml | 1 | ||||
-rw-r--r-- | java/res/values-sw768dp/config.xml | 1 | ||||
-rw-r--r-- | java/res/values/config.xml | 3 | ||||
-rw-r--r-- | java/src/com/android/inputmethod/latin/suggestions/SuggestionStripView.java | 60 |
8 files changed, 64 insertions, 14 deletions
diff --git a/java/res/layout/suggestions_strip.xml b/java/res/layout/suggestions_strip.xml index bff9a1ef9..36898c890 100644 --- a/java/res/layout/suggestions_strip.xml +++ b/java/res/layout/suggestions_strip.xml @@ -64,4 +64,12 @@ android:textSize="16sp" style="?attr/suggestionWordStyle" /> </LinearLayout> + <ImageButton + android:id="@+id/suggestions_strip_voice_key" + android:layout_width="@dimen/config_suggestions_strip_edge_key_width" + android:layout_height="fill_parent" + android:layout_alignParentEnd="true" + android:layout_alignParentRight="true" + android:layout_centerVertical="true" + style="?attr/suggestionWordStyle" /> </merge> diff --git a/java/res/values-land/config.xml b/java/res/values-land/config.xml index f72d64ff7..37bf22fb0 100644 --- a/java/res/values-land/config.xml +++ b/java/res/values-land/config.xml @@ -59,6 +59,7 @@ <dimen name="config_suggestions_strip_height">36dp</dimen> <dimen name="config_suggestions_strip_horizontal_margin">54dp</dimen> + <dimen name="config_suggestions_strip_edge_key_width">54dp</dimen> <dimen name="config_more_suggestions_row_height">36dp</dimen> <integer name="config_max_more_suggestions_row">2</integer> <fraction name="config_min_more_suggestions_width">60%</fraction> diff --git a/java/res/values-sw600dp-land/config.xml b/java/res/values-sw600dp-land/config.xml index 8789e729f..ba8b52f0b 100644 --- a/java/res/values-sw600dp-land/config.xml +++ b/java/res/values-sw600dp-land/config.xml @@ -50,6 +50,7 @@ <dimen name="config_suggestions_strip_height">44dp</dimen> <dimen name="config_suggestions_strip_horizontal_margin">180.0dp</dimen> + <dimen name="config_suggestions_strip_edge_key_width">54dp</dimen> <integer name="config_max_more_suggestions_row">5</integer> <fraction name="config_min_more_suggestions_width">50%</fraction> diff --git a/java/res/values-sw600dp/config.xml b/java/res/values-sw600dp/config.xml index 12e9832f9..d97538de0 100644 --- a/java/res/values-sw600dp/config.xml +++ b/java/res/values-sw600dp/config.xml @@ -63,7 +63,8 @@ <fraction name="config_key_shifted_letter_hint_ratio_5row">27%</fraction> <dimen name="config_suggestions_strip_height">44dp</dimen> - <dimen name="config_suggestions_strip_horizontal_margin">0dp</dimen> + <dimen name="config_suggestions_strip_horizontal_margin">54dp</dimen> + <dimen name="config_suggestions_strip_edge_key_width">54dp</dimen> <dimen name="config_more_suggestions_row_height">44dp</dimen> <integer name="config_max_more_suggestions_row">6</integer> <fraction name="config_min_more_suggestions_width">90%</fraction> diff --git a/java/res/values-sw768dp-land/config.xml b/java/res/values-sw768dp-land/config.xml index 17733f099..63f86ba81 100644 --- a/java/res/values-sw768dp-land/config.xml +++ b/java/res/values-sw768dp-land/config.xml @@ -51,6 +51,7 @@ <dimen name="config_suggestions_strip_height">44dp</dimen> <dimen name="config_suggestions_strip_horizontal_margin">340dp</dimen> + <dimen name="config_suggestions_strip_edge_key_width">54dp</dimen> <fraction name="config_min_more_suggestions_width">50%</fraction> <!-- Gesture floating preview text parameters --> diff --git a/java/res/values-sw768dp/config.xml b/java/res/values-sw768dp/config.xml index 647cca94b..94b38d850 100644 --- a/java/res/values-sw768dp/config.xml +++ b/java/res/values-sw768dp/config.xml @@ -62,6 +62,7 @@ <dimen name="config_suggestions_strip_height">44dp</dimen> <dimen name="config_suggestions_strip_horizontal_margin">100dp</dimen> + <dimen name="config_suggestions_strip_edge_key_width">54dp</dimen> <dimen name="config_more_suggestions_row_height">44dp</dimen> <integer name="config_max_more_suggestions_row">6</integer> <fraction name="config_min_more_suggestions_width">90%</fraction> diff --git a/java/res/values/config.xml b/java/res/values/config.xml index 1ab49279c..9f556a6e4 100644 --- a/java/res/values/config.xml +++ b/java/res/values/config.xml @@ -64,7 +64,8 @@ <fraction name="config_key_shifted_letter_hint_ratio_5row">41%</fraction> <dimen name="config_suggestions_strip_height">40dp</dimen> - <dimen name="config_suggestions_strip_horizontal_margin">0dp</dimen> + <dimen name="config_suggestions_strip_horizontal_margin">36dp</dimen> + <dimen name="config_suggestions_strip_edge_key_width">36dp</dimen> <dimen name="config_more_suggestions_row_height">40dp</dimen> <integer name="config_max_more_suggestions_row">6</integer> <fraction name="config_min_more_suggestions_width">90%</fraction> diff --git a/java/src/com/android/inputmethod/latin/suggestions/SuggestionStripView.java b/java/src/com/android/inputmethod/latin/suggestions/SuggestionStripView.java index a578fa4a4..d4f7f36da 100644 --- a/java/src/com/android/inputmethod/latin/suggestions/SuggestionStripView.java +++ b/java/src/com/android/inputmethod/latin/suggestions/SuggestionStripView.java @@ -18,7 +18,9 @@ package com.android.inputmethod.latin.suggestions; import android.content.Context; import android.content.res.Resources; +import android.content.res.TypedArray; import android.graphics.Color; +import android.graphics.drawable.Drawable; import android.support.v4.view.ViewCompat; import android.text.TextUtils; import android.util.AttributeSet; @@ -31,6 +33,7 @@ import android.view.View.OnClickListener; import android.view.View.OnLongClickListener; import android.view.ViewGroup; import android.view.ViewParent; +import android.widget.ImageButton; import android.widget.RelativeLayout; import android.widget.TextView; @@ -59,12 +62,14 @@ public final class SuggestionStripView extends RelativeLayout implements OnClick public void addWordToUserDictionary(String word); public void showImportantNoticeContents(); public void pickSuggestionManually(int index, SuggestedWordInfo word); + public void onCodeInput(int primaryCode, int x, int y, boolean isKeyRepeat); } static final boolean DBG = LatinImeLogger.sDBG; private static final float DEBUG_INFO_TEXT_SIZE_IN_DIP = 6.0f; private final ViewGroup mSuggestionsStrip; + private final ImageButton mVoiceKey; private final ViewGroup mAddToDictionaryStrip; private final View mImportantNoticeStrip; MainKeyboardView mMainKeyboardView; @@ -86,39 +91,42 @@ public final class SuggestionStripView extends RelativeLayout implements OnClick private static class StripVisibilityGroup { private final View mSuggestionsStrip; + private final View mVoiceKey; private final View mAddToDictionaryStrip; private final View mImportantNoticeStrip; - public StripVisibilityGroup(final View suggestionsStrip, final View addToDictionaryStrip, - final View importantNoticeStrip) { + public StripVisibilityGroup(final View suggestionsStrip, final View voiceKey, + final View addToDictionaryStrip, final View importantNoticeStrip) { mSuggestionsStrip = suggestionsStrip; + mVoiceKey = voiceKey; mAddToDictionaryStrip = addToDictionaryStrip; mImportantNoticeStrip = importantNoticeStrip; - showSuggestionsStrip(); + showSuggestionsStrip(false /* voiceKeyEnabled */); } - public void setLayoutDirection(final boolean isRtlLanguage) { - final int layoutDirection = isRtlLanguage ? ViewCompat.LAYOUT_DIRECTION_RTL - : ViewCompat.LAYOUT_DIRECTION_LTR; + public void setLayoutDirection(final int layoutDirection) { ViewCompat.setLayoutDirection(mSuggestionsStrip, layoutDirection); ViewCompat.setLayoutDirection(mAddToDictionaryStrip, layoutDirection); ViewCompat.setLayoutDirection(mImportantNoticeStrip, layoutDirection); } - public void showSuggestionsStrip() { + public void showSuggestionsStrip(final boolean enableVoiceKey) { mSuggestionsStrip.setVisibility(VISIBLE); + mVoiceKey.setVisibility(enableVoiceKey ? VISIBLE : INVISIBLE); mAddToDictionaryStrip.setVisibility(INVISIBLE); mImportantNoticeStrip.setVisibility(INVISIBLE); } public void showAddToDictionaryStrip() { mSuggestionsStrip.setVisibility(INVISIBLE); + mVoiceKey.setVisibility(INVISIBLE); mAddToDictionaryStrip.setVisibility(VISIBLE); mImportantNoticeStrip.setVisibility(INVISIBLE); } public void showImportantNoticeStrip() { mSuggestionsStrip.setVisibility(INVISIBLE); + mVoiceKey.setVisibility(INVISIBLE); mAddToDictionaryStrip.setVisibility(INVISIBLE); mImportantNoticeStrip.setVisibility(VISIBLE); } @@ -145,10 +153,11 @@ public final class SuggestionStripView extends RelativeLayout implements OnClick inflater.inflate(R.layout.suggestions_strip, this); mSuggestionsStrip = (ViewGroup)findViewById(R.id.suggestions_strip); + mVoiceKey = (ImageButton)findViewById(R.id.suggestions_strip_voice_key); mAddToDictionaryStrip = (ViewGroup)findViewById(R.id.add_to_dictionary_strip); mImportantNoticeStrip = findViewById(R.id.important_notice_strip); - mStripVisibilityGroup = new StripVisibilityGroup(mSuggestionsStrip, mAddToDictionaryStrip, - mImportantNoticeStrip); + mStripVisibilityGroup = new StripVisibilityGroup(mSuggestionsStrip, mVoiceKey, + mAddToDictionaryStrip, mImportantNoticeStrip); for (int pos = 0; pos < SuggestedWords.MAX_SUGGESTIONS; pos++) { final TextView word = new TextView(context, null, R.attr.suggestionWordStyle); @@ -177,6 +186,13 @@ public final class SuggestionStripView extends RelativeLayout implements OnClick R.dimen.config_more_suggestions_modal_tolerance); mMoreSuggestionsSlidingDetector = new GestureDetector( context, mMoreSuggestionsSlidingListener); + + final TypedArray keyboardAttr = context.obtainStyledAttributes(attrs, + R.styleable.Keyboard, defStyle, R.style.SuggestionStripView); + final Drawable iconVoice = keyboardAttr.getDrawable(R.styleable.Keyboard_iconShortcutKey); + keyboardAttr.recycle(); + mVoiceKey.setImageDrawable(iconVoice); + mVoiceKey.setOnClickListener(this); } /** @@ -188,16 +204,30 @@ public final class SuggestionStripView extends RelativeLayout implements OnClick mMainKeyboardView = (MainKeyboardView)inputView.findViewById(R.id.keyboard_view); } + private boolean isVoiceKeyEnabled() { + if (mMainKeyboardView == null) { + return false; + } + final Keyboard keyboard = mMainKeyboardView.getKeyboard(); + if (keyboard == null) { + return false; + } + return keyboard.mId.mHasShortcutKey; + } + public void setSuggestions(final SuggestedWords suggestedWords, final boolean isRtlLanguage) { clear(); - mStripVisibilityGroup.setLayoutDirection(isRtlLanguage); + final int layoutDirection = isRtlLanguage ? ViewCompat.LAYOUT_DIRECTION_RTL + : ViewCompat.LAYOUT_DIRECTION_LTR; + setLayoutDirection(layoutDirection); + mStripVisibilityGroup.setLayoutDirection(layoutDirection); mSuggestedWords = suggestedWords; mSuggestionsCountInStrip = mLayoutHelper.layoutAndReturnSuggestionCountInStrip( mSuggestedWords, mSuggestionsStrip, this); if (ProductionFlag.USES_DEVELOPMENT_ONLY_DIAGNOSTICS) { ResearchLogger.suggestionStripView_setSuggestions(mSuggestedWords); } - mStripVisibilityGroup.showSuggestionsStrip(); + mStripVisibilityGroup.showSuggestionsStrip(isVoiceKeyEnabled()); } public int setMoreSuggestionsHeight(final int remainingHeight) { @@ -252,7 +282,7 @@ public final class SuggestionStripView extends RelativeLayout implements OnClick public void clear() { mSuggestionsStrip.removeAllViews(); removeAllDebugInfoViews(); - mStripVisibilityGroup.showSuggestionsStrip(); + mStripVisibilityGroup.showSuggestionsStrip(false /* enableVoiceKey */); dismissMoreSuggestionsPanel(); } @@ -415,6 +445,12 @@ public final class SuggestionStripView extends RelativeLayout implements OnClick mListener.showImportantNoticeContents(); return; } + if (view == mVoiceKey) { + mListener.onCodeInput(Constants.CODE_SHORTCUT, + Constants.SUGGESTION_STRIP_COORDINATE, Constants.SUGGESTION_STRIP_COORDINATE, + false /* isKeyRepeat */); + return; + } final Object tag = view.getTag(); // {@link String} tag is set at {@link #showAddToDictionaryHint(String,CharSequence)}. if (tag instanceof String) { |