Squash SuggestionsStripParams into SuggestionsViewParams

Bug: 5246982
Change-Id: Idc2563cb0175aabc4282f9fd45eefaa129ed4961
This commit is contained in:
Tadashi G. Takaoka 2011-09-02 16:53:38 +09:00
parent 5bb7a64fe2
commit d3e50a2acf

View file

@ -89,7 +89,7 @@ public class SuggestionsView extends LinearLayout implements OnClickListener, On
private SuggestedWords mSuggestions = SuggestedWords.EMPTY; private SuggestedWords mSuggestions = SuggestedWords.EMPTY;
private boolean mShowingAutoCorrectionInverted; private boolean mShowingAutoCorrectionInverted;
private final SuggestionsStripParams mStripParams; private final SuggestionsViewParams mParams;
private static final float MIN_TEXT_XSCALE = 0.70f; private static final float MIN_TEXT_XSCALE = 0.70f;
private final UiHandler mHandler = new UiHandler(this); private final UiHandler mHandler = new UiHandler(this);
@ -144,41 +144,22 @@ public class SuggestionsView extends LinearLayout implements OnClickListener, On
} }
private static class SuggestionsViewParams { private static class SuggestionsViewParams {
public final int mPadding;
public final int mDividerWidth;
public final int mSuggestionsStripHeight;
protected final List<TextView> mWords;
protected final List<View> mDividers;
protected final List<TextView> mInfos;
protected SuggestionsViewParams(List<TextView> words, List<View> dividers,
List<TextView> infos) {
mWords = words;
mDividers = dividers;
mInfos = infos;
final TextView word = words.get(0);
final View divider = dividers.get(0);
mPadding = word.getCompoundPaddingLeft() + word.getCompoundPaddingRight();
divider.measure(
ViewGroup.LayoutParams.MATCH_PARENT, ViewGroup.LayoutParams.MATCH_PARENT);
mDividerWidth = divider.getMeasuredWidth();
final Resources res = word.getResources();
mSuggestionsStripHeight = res.getDimensionPixelSize(R.dimen.suggestions_strip_height);
}
}
private static class SuggestionsStripParams extends SuggestionsViewParams {
private static final int DEFAULT_SUGGESTIONS_COUNT_IN_STRIP = 3; private static final int DEFAULT_SUGGESTIONS_COUNT_IN_STRIP = 3;
private static final int DEFAULT_CENTER_SUGGESTION_PERCENTILE = 40; private static final int DEFAULT_CENTER_SUGGESTION_PERCENTILE = 40;
private static final int PUNCTUATIONS_IN_STRIP = 6; private static final int PUNCTUATIONS_IN_STRIP = 6;
public final int mPadding;
public final int mDividerWidth;
public final int mSuggestionsStripHeight;
public final int mSuggestionsCountInStrip;
private final List<TextView> mWords;
private final List<View> mDividers;
private final List<TextView> mInfos;
private final int mColorTypedWord; private final int mColorTypedWord;
private final int mColorAutoCorrect; private final int mColorAutoCorrect;
private final int mColorSuggested; private final int mColorSuggested;
public final int mSuggestionsCountInStrip;
private final float mCenterSuggestionWeight; private final float mCenterSuggestionWeight;
private final int mCenterSuggestionIndex; private final int mCenterSuggestionIndex;
private final Drawable mMoreSuggestionsHint; private final Drawable mMoreSuggestionsHint;
@ -202,9 +183,22 @@ public class SuggestionsView extends LinearLayout implements OnClickListener, On
private final TextView mHintToSaveView; private final TextView mHintToSaveView;
private final CharSequence mHintToSaveText; private final CharSequence mHintToSaveText;
public SuggestionsStripParams(Context context, AttributeSet attrs, int defStyle, public SuggestionsViewParams(Context context, AttributeSet attrs, int defStyle,
List<TextView> words, List<View> dividers, List<TextView> infos) { List<TextView> words, List<View> dividers, List<TextView> infos) {
super(words, dividers, infos); mWords = words;
mDividers = dividers;
mInfos = infos;
final TextView word = words.get(0);
final View divider = dividers.get(0);
mPadding = word.getCompoundPaddingLeft() + word.getCompoundPaddingRight();
divider.measure(
ViewGroup.LayoutParams.MATCH_PARENT, ViewGroup.LayoutParams.MATCH_PARENT);
mDividerWidth = divider.getMeasuredWidth();
final Resources res = word.getResources();
mSuggestionsStripHeight = res.getDimensionPixelSize(R.dimen.suggestions_strip_height);
final TypedArray a = context.obtainStyledAttributes( final TypedArray a = context.obtainStyledAttributes(
attrs, R.styleable.SuggestionsView, defStyle, R.style.SuggestionsViewStyle); attrs, R.styleable.SuggestionsView, defStyle, R.style.SuggestionsViewStyle);
mSuggestionStripOption = a.getInt(R.styleable.SuggestionsView_suggestionStripOption, 0); mSuggestionStripOption = a.getInt(R.styleable.SuggestionsView_suggestionStripOption, 0);
@ -220,7 +214,6 @@ public class SuggestionsView extends LinearLayout implements OnClickListener, On
a.recycle(); a.recycle();
mCenterSuggestionIndex = mSuggestionsCountInStrip / 2; mCenterSuggestionIndex = mSuggestionsCountInStrip / 2;
final Resources res = context.getResources();
mMoreSuggestionsHint = res.getDrawable(R.drawable.more_suggestions_hint); mMoreSuggestionsHint = res.getDrawable(R.drawable.more_suggestions_hint);
mInvertedForegroundColorSpan = new ForegroundColorSpan(mColorTypedWord ^ 0x00ffffff); mInvertedForegroundColorSpan = new ForegroundColorSpan(mColorTypedWord ^ 0x00ffffff);
@ -496,9 +489,8 @@ public class SuggestionsView extends LinearLayout implements OnClickListener, On
mInfos.add((TextView)inflater.inflate(R.layout.suggestion_info, null)); mInfos.add((TextView)inflater.inflate(R.layout.suggestion_info, null));
} }
mStripParams = new SuggestionsStripParams(context, attrs, defStyle, mWords, mDividers, mParams = new SuggestionsViewParams(context, attrs, defStyle, mWords, mDividers, mInfos);
mInfos); mParams.mWordToSaveView.setOnClickListener(this);
mStripParams.mWordToSaveView.setOnClickListener(this);
mMoreSuggestionsContainer = inflater.inflate(R.layout.more_suggestions, null); mMoreSuggestionsContainer = inflater.inflate(R.layout.more_suggestions, null);
mMoreSuggestionsView = (MoreSuggestionsView)mMoreSuggestionsContainer mMoreSuggestionsView = (MoreSuggestionsView)mMoreSuggestionsContainer
@ -535,7 +527,7 @@ public class SuggestionsView extends LinearLayout implements OnClickListener, On
if (mSuggestions.size() == 0) if (mSuggestions.size() == 0)
return; return;
mStripParams.layout(mSuggestions, mSuggestionsStrip, mSuggestionsPlacer, getWidth()); mParams.layout(mSuggestions, mSuggestionsStrip, mSuggestionsPlacer, getWidth());
} }
private static CharSequence getDebugInfo(SuggestedWords suggestions, int pos) { private static CharSequence getDebugInfo(SuggestedWords suggestions, int pos) {
@ -624,7 +616,7 @@ public class SuggestionsView extends LinearLayout implements OnClickListener, On
} }
public void onAutoCorrectionInverted(CharSequence autoCorrectedWord) { public void onAutoCorrectionInverted(CharSequence autoCorrectedWord) {
final CharSequence inverted = mStripParams.getInvertedText(autoCorrectedWord); final CharSequence inverted = mParams.getInvertedText(autoCorrectedWord);
if (inverted == null) if (inverted == null)
return; return;
final TextView tv = mWords.get(1); final TextView tv = mWords.get(1);
@ -634,12 +626,12 @@ public class SuggestionsView extends LinearLayout implements OnClickListener, On
public boolean isShowingAddToDictionaryHint() { public boolean isShowingAddToDictionaryHint() {
return mSuggestionsStrip.getChildCount() > 0 return mSuggestionsStrip.getChildCount() > 0
&& mSuggestionsStrip.getChildAt(0) == mStripParams.mWordToSaveView; && mSuggestionsStrip.getChildAt(0) == mParams.mWordToSaveView;
} }
public void showAddToDictionaryHint(CharSequence word) { public void showAddToDictionaryHint(CharSequence word) {
clear(); clear();
mStripParams.layoutAddToDictionaryHint(word, mSuggestionsStrip, getWidth()); mParams.layoutAddToDictionaryHint(word, mSuggestionsStrip, getWidth());
} }
public boolean dismissAddToDictionaryHint() { public boolean dismissAddToDictionaryHint() {
@ -671,7 +663,7 @@ public class SuggestionsView extends LinearLayout implements OnClickListener, On
return; return;
final TextView previewText = mPreviewText; final TextView previewText = mPreviewText;
previewText.setTextColor(mStripParams.mColorTypedWord); previewText.setTextColor(mParams.mColorTypedWord);
previewText.setText(word); previewText.setText(word);
previewText.measure( previewText.measure(
ViewGroup.LayoutParams.WRAP_CONTENT, ViewGroup.LayoutParams.WRAP_CONTENT); ViewGroup.LayoutParams.WRAP_CONTENT, ViewGroup.LayoutParams.WRAP_CONTENT);
@ -692,7 +684,7 @@ public class SuggestionsView extends LinearLayout implements OnClickListener, On
private void addToDictionary(CharSequence word) { private void addToDictionary(CharSequence word) {
if (mListener.addWordToDictionary(word.toString())) { if (mListener.addWordToDictionary(word.toString())) {
final CharSequence message = getContext().getString(R.string.added_word, word); final CharSequence message = getContext().getString(R.string.added_word, word);
showPreview(mStripParams.mWordToSaveView, message); showPreview(mParams.mWordToSaveView, message);
} }
} }
@ -732,7 +724,7 @@ public class SuggestionsView extends LinearLayout implements OnClickListener, On
@Override @Override
public boolean onLongClick(View view) { public boolean onLongClick(View view) {
final SuggestionsStripParams params = mStripParams; final SuggestionsViewParams params = mParams;
if (params.mMoreSuggestionsAvailable) { if (params.mMoreSuggestionsAvailable) {
final int stripWidth = getWidth(); final int stripWidth = getWidth();
final View container = mMoreSuggestionsContainer; final View container = mMoreSuggestionsContainer;
@ -799,7 +791,7 @@ public class SuggestionsView extends LinearLayout implements OnClickListener, On
@Override @Override
public void onClick(View view) { public void onClick(View view) {
if (view == mStripParams.mWordToSaveView) { if (view == mParams.mWordToSaveView) {
addToDictionary((CharSequence)view.getTag()); addToDictionary((CharSequence)view.getTag());
clear(); clear();
return; return;