aboutsummaryrefslogtreecommitdiffstats
path: root/java
diff options
context:
space:
mode:
authorTadashi G. Takaoka <takaoka@google.com>2011-06-27 16:57:18 +0900
committerTadashi G. Takaoka <takaoka@google.com>2011-06-27 18:04:22 +0900
commit717a8f50aec421f74e4d43432059c2fb41cb32c7 (patch)
tree20a7efaf5bc67f7ad3b69336b586a3f10eb26005 /java
parent7fb04fe007a6d0489168e9c87771db554c873464 (diff)
downloadlatinime-717a8f50aec421f74e4d43432059c2fb41cb32c7.tar.gz
latinime-717a8f50aec421f74e4d43432059c2fb41cb32c7.tar.xz
latinime-717a8f50aec421f74e4d43432059c2fb41cb32c7.zip
Use dedicated layout for "touch to save word" feature
Change-Id: Ie8c948476740a645d8b2d9a9d821236941d27adf
Diffstat (limited to 'java')
-rw-r--r--java/res/layout/candidates_strip.xml131
-rw-r--r--java/src/com/android/inputmethod/latin/CandidateView.java33
2 files changed, 103 insertions, 61 deletions
diff --git a/java/res/layout/candidates_strip.xml b/java/res/layout/candidates_strip.xml
index bb11e057c..3509a4815 100644
--- a/java/res/layout/candidates_strip.xml
+++ b/java/res/layout/candidates_strip.xml
@@ -22,42 +22,10 @@
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:latin="http://schemas.android.com/apk/res/com.android.inputmethod.latin"
>
- <RelativeLayout
- android:layout_weight="1.0"
- android:layout_width="0dp"
- android:layout_height="match_parent"
- android:gravity="center"
- >
- <include
- android:id="@+id/word_left"
- layout="@layout/candidate_word" />
- <include
- android:id="@+id/info_left"
- layout="@layout/candidate_info" />
- </RelativeLayout>
- <include
- layout="@layout/candidate_divider" />
- <RelativeLayout
- android:layout_weight="1.0"
- android:layout_width="0dp"
- android:layout_height="match_parent"
- android:gravity="center"
- >
- <include
- android:id="@+id/word_center"
- layout="@layout/candidate_word" />
- <include
- android:id="@+id/info_center"
- layout="@layout/candidate_info" />
- </RelativeLayout>
- <include
- layout="@layout/candidate_divider" />
<LinearLayout
- android:orientation="horizontal"
- android:layout_weight="1.0"
- android:layout_width="0dp"
+ android:id="@+id/candidates_strip"
+ android:layout_width="match_parent"
android:layout_height="match_parent"
- android:gravity="center_vertical"
>
<RelativeLayout
android:layout_weight="1.0"
@@ -66,24 +34,89 @@
android:gravity="center"
>
<include
- android:id="@+id/word_right"
+ android:id="@+id/word_left"
layout="@layout/candidate_word" />
<include
- android:id="@+id/info_right"
+ android:id="@+id/info_left"
layout="@layout/candidate_info" />
</RelativeLayout>
- <!-- Image drawables are set in CandidateView constructor -->
- <ImageButton
- android:id="@+id/expand_candidates_pane"
- android:layout_width="wrap_content"
- android:layout_height="wrap_content"
- android:visibility="gone"
- style="?attr/suggestionsStripBackgroundStyle" />
- <ImageButton
- android:id="@+id/close_candidates_pane"
- android:layout_width="wrap_content"
- android:layout_height="wrap_content"
- android:visibility="gone"
- style="?attr/suggestionsStripBackgroundStyle" />
+ <include
+ layout="@layout/candidate_divider" />
+ <RelativeLayout
+ android:layout_weight="1.0"
+ android:layout_width="0dp"
+ android:layout_height="match_parent"
+ android:gravity="center"
+ >
+ <include
+ android:id="@+id/word_center"
+ layout="@layout/candidate_word" />
+ <include
+ android:id="@+id/info_center"
+ layout="@layout/candidate_info" />
+ </RelativeLayout>
+ <include
+ layout="@layout/candidate_divider" />
+ <LinearLayout
+ android:orientation="horizontal"
+ android:layout_weight="1.0"
+ android:layout_width="0dp"
+ android:layout_height="match_parent"
+ android:gravity="center_vertical"
+ >
+ <RelativeLayout
+ android:layout_weight="1.0"
+ android:layout_width="0dp"
+ android:layout_height="match_parent"
+ android:gravity="center"
+ >
+ <include
+ android:id="@+id/word_right"
+ layout="@layout/candidate_word" />
+ <include
+ android:id="@+id/info_right"
+ layout="@layout/candidate_info" />
+ </RelativeLayout>
+ <!-- Image drawables are set in CandidateView constructor -->
+ <ImageButton
+ android:id="@+id/expand_candidates_pane"
+ android:layout_width="wrap_content"
+ android:layout_height="wrap_content"
+ android:visibility="gone"
+ style="?attr/suggestionsStripBackgroundStyle" />
+ <ImageButton
+ android:id="@+id/close_candidates_pane"
+ android:layout_width="wrap_content"
+ android:layout_height="wrap_content"
+ android:visibility="gone"
+ style="?attr/suggestionsStripBackgroundStyle" />
+ </LinearLayout>
+ </LinearLayout>
+ <LinearLayout
+ android:id="@+id/touch_to_save"
+ android:orientation="horizontal"
+ android:layout_width="match_parent"
+ android:layout_height="match_parent"
+ android:visibility="gone"
+ >
+ <Button
+ android:id="@+id/word_to_save"
+ android:layout_weight="1.0"
+ android:layout_width="0dp"
+ android:layout_height="match_parent"
+ android:textSize="@dimen/candidate_text_size"
+ android:singleLine="true"
+ android:ellipsize="middle"
+ style="?attr/suggestionBackgroundStyle" />
+ <include
+ layout="@layout/candidate_divider" />
+ <TextView
+ android:layout_weight="2.0"
+ android:layout_width="0dp"
+ android:layout_height="match_parent"
+ android:gravity="left|center_vertical"
+ android:text="@string/hint_add_to_dictionary"
+ android:textSize="@dimen/candidate_text_size"
+ android:background="@null" />
</LinearLayout>
</merge>
diff --git a/java/src/com/android/inputmethod/latin/CandidateView.java b/java/src/com/android/inputmethod/latin/CandidateView.java
index 313555daa..2186d608f 100644
--- a/java/src/com/android/inputmethod/latin/CandidateView.java
+++ b/java/src/com/android/inputmethod/latin/CandidateView.java
@@ -66,6 +66,7 @@ public class CandidateView extends LinearLayout implements OnClickListener, OnLo
private static final boolean DBG = LatinImeLogger.sDBG;
+ private final View mCandidatesStrip;
private static final int NUM_CANDIDATES_IN_STRIP = 3;
private final ImageView mExpandCandidatesPane;
private final ImageView mCloseCandidatesPane;
@@ -88,6 +89,9 @@ public class CandidateView extends LinearLayout implements OnClickListener, OnLo
private final PopupWindow mPreviewPopup;
private final TextView mPreviewText;
+ private final View mTouchToSave;
+ private final TextView mWordToSave;
+
private Listener mListener;
private SuggestedWords mSuggestions = SuggestedWords.EMPTY;
private boolean mShowingAutoCorrectionInverted;
@@ -178,6 +182,7 @@ public class CandidateView extends LinearLayout implements OnClickListener, OnLo
mPreviewPopup.setContentView(mPreviewText);
mPreviewPopup.setBackgroundDrawable(null);
+ mCandidatesStrip = findViewById(R.id.candidates_strip);
mCandidateStripHeight = res.getDimensionPixelOffset(R.dimen.candidate_strip_height);
for (int i = 0; i < MAX_SUGGESTIONS; i++) {
final TextView word, info;
@@ -213,6 +218,10 @@ public class CandidateView extends LinearLayout implements OnClickListener, OnLo
}
}
+ mTouchToSave = findViewById(R.id.touch_to_save);
+ mWordToSave = (TextView)findViewById(R.id.word_to_save);
+ mWordToSave.setOnClickListener(this);
+
final TypedArray a = context.obtainStyledAttributes(
attrs, R.styleable.CandidateView, defStyle, R.style.CandidateViewStyle);
mAutoCorrectHighlight = a.getInt(R.styleable.CandidateView_autoCorrectHighlight, 0);
@@ -448,14 +457,10 @@ public class CandidateView extends LinearLayout implements OnClickListener, OnLo
}
public void showAddToDictionaryHint(CharSequence word) {
- SuggestedWords.Builder builder = new SuggestedWords.Builder()
- .addWord(word)
- .addWord(getContext().getText(R.string.hint_add_to_dictionary));
- setSuggestions(builder.build());
+ mWordToSave.setText(word);
mShowingAddToDictionary = true;
- // Disable R.string.hint_add_to_dictionary button
- TextView tv = mWords.get(1);
- tv.setClickable(false);
+ mCandidatesStrip.setVisibility(View.GONE);
+ mTouchToSave.setVisibility(View.VISIBLE);
}
public boolean dismissAddToDictionaryHint() {
@@ -475,6 +480,8 @@ public class CandidateView extends LinearLayout implements OnClickListener, OnLo
mWords.get(i).setText(null);
mInfos.get(i).setVisibility(View.GONE);
}
+ mTouchToSave.setVisibility(View.GONE);
+ mCandidatesStrip.setVisibility(View.VISIBLE);
mCandidatesPane.removeAllViews();
}
@@ -530,6 +537,12 @@ public class CandidateView extends LinearLayout implements OnClickListener, OnLo
@Override
public void onClick(View view) {
+ if (view == mWordToSave) {
+ addToDictionary(((TextView)view).getText());
+ clear();
+ return;
+ }
+
final Object tag = view.getTag();
if (!(tag instanceof Integer))
return;
@@ -538,11 +551,7 @@ public class CandidateView extends LinearLayout implements OnClickListener, OnLo
return;
final CharSequence word = mSuggestions.getWord(index);
- if (mShowingAddToDictionary && index == 0) {
- addToDictionary(word);
- } else {
- mListener.pickSuggestionManually(index, word);
- }
+ mListener.pickSuggestionManually(index, word);
// Because some punctuation letters are not treated as word separator depending on locale,
// {@link #setSuggestions} might not be called and candidates pane left opened.
closeCandidatesPane();