Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 3a566c48 authored by Tadashi G. Takaoka's avatar Tadashi G. Takaoka
Browse files

Remove unused suggestions pane code

This is a followup for Ie1d69131.

Bug: 5023981
Change-Id: I42ec596af40cb7dcdd84b96ba5bff9ef1fb5dc92
parent b91b3a3e
Loading
Loading
Loading
Loading
+5 −160
Original line number Diff line number Diff line
@@ -70,9 +70,6 @@ public class CandidateView extends LinearLayout implements OnClickListener, OnLo

    private final ViewGroup mCandidatesPlacer;
    private final ViewGroup mCandidatesStrip;
    // TODO: Remove these pane related fields and stuffs.
    private ViewGroup mCandidatesPane;
    private ViewGroup mCandidatesPaneContainer;
    private View mKeyboardView;

    private final View mMoreSuggestionsContainer;
@@ -92,7 +89,6 @@ public class CandidateView extends LinearLayout implements OnClickListener, OnLo
    private boolean mShowingAutoCorrectionInverted;

    private final SuggestionsStripParams mStripParams;
    private final SuggestionsPaneParams mPaneParams;
    private static final float MIN_TEXT_XSCALE = 0.70f;

    private final UiHandler mHandler = new UiHandler(this);
@@ -149,7 +145,6 @@ public class CandidateView extends LinearLayout implements OnClickListener, OnLo
    private static class CandidateViewParams {
        public final int mPadding;
        public final int mDividerWidth;
        public final int mDividerHeight;
        public final int mCandidateStripHeight;

        protected final List<TextView> mWords;
@@ -168,99 +163,12 @@ public class CandidateView extends LinearLayout implements OnClickListener, OnLo
            divider.measure(
                    ViewGroup.LayoutParams.MATCH_PARENT, ViewGroup.LayoutParams.MATCH_PARENT);
            mDividerWidth = divider.getMeasuredWidth();
            mDividerHeight = divider.getMeasuredHeight();

            final Resources res = word.getResources();
            mCandidateStripHeight = res.getDimensionPixelSize(R.dimen.candidate_strip_height);
        }
    }

    private static class SuggestionsPaneParams extends CandidateViewParams {
        public SuggestionsPaneParams(List<TextView> words, List<View> dividers,
                List<TextView> infos) {
            super(words, dividers, infos);
        }

        public int layout(SuggestedWords suggestions, ViewGroup paneView, int from, int textColor,
                int paneWidth) {
            final int count = Math.min(mWords.size(), suggestions.size());
            View centeringFrom = null, lastView = null;
            int x = 0, y = 0;
            for (int index = from; index < count; index++) {
                final int pos = index;
                final TextView word = mWords.get(pos);
                final View divider = mDividers.get(pos);
                final TextPaint paint = word.getPaint();
                word.setTextColor(textColor);
                final CharSequence styled = suggestions.getWord(pos);

                final TextView info;
                if (DBG) {
                    final CharSequence debugInfo = getDebugInfo(suggestions, index);
                    if (debugInfo != null) {
                        info = mInfos.get(index);
                        info.setText(debugInfo);
                    } else {
                        info = null;
                    }
                } else {
                    info = null;
                }

                final CharSequence text;
                final float scaleX;
                paint.setTextScaleX(1.0f);
                final int textWidth = getTextWidth(styled, paint);
                int available = paneWidth - x - mPadding;
                if (textWidth >= available) {
                    // Needs new row, centering previous row.
                    centeringCandidates(paneView, centeringFrom, lastView, x, paneWidth);
                    x = 0;
                    y += mCandidateStripHeight;
                }
                if (x != 0) {
                    // Add divider if this isn't the left most suggestion in current row.
                    paneView.addView(divider);
                    FrameLayoutCompatUtils.placeViewAt(divider, x, y
                            + (mCandidateStripHeight - mDividerHeight) / 2, mDividerWidth,
                            mDividerHeight);
                    x += mDividerWidth;
                }
                available = paneWidth - x - mPadding;
                text = getEllipsizedText(styled, available, paint);
                scaleX = paint.getTextScaleX();
                word.setText(text);
                word.setTextScaleX(scaleX);
                paneView.addView(word);
                lastView = word;
                if (x == 0)
                    centeringFrom = word;
                word.measure(ViewGroup.LayoutParams.WRAP_CONTENT,
                        MeasureSpec.makeMeasureSpec(mCandidateStripHeight, MeasureSpec.EXACTLY));
                final int width = word.getMeasuredWidth();
                final int height = word.getMeasuredHeight();
                FrameLayoutCompatUtils.placeViewAt(word, x, y + (mCandidateStripHeight - height)
                        / 2, width, height);
                x += width;
                if (info != null) {
                    paneView.addView(info);
                    lastView = info;
                    info.measure(ViewGroup.LayoutParams.WRAP_CONTENT,
                            ViewGroup.LayoutParams.WRAP_CONTENT);
                    final int infoWidth = info.getMeasuredWidth();
                    FrameLayoutCompatUtils.placeViewAt(
                            info, x - infoWidth, y, infoWidth, info.getMeasuredHeight());
                }
            }
            if (x != 0) {
                // Centering last candidates row.
                centeringCandidates(paneView, centeringFrom, lastView, x, paneWidth);
            }

            return count - from;
        }
    }

    private static class SuggestionsStripParams extends CandidateViewParams {
        private static final int DEFAULT_CANDIDATE_COUNT_IN_STRIP = 3;
        private static final int DEFAULT_CENTER_CANDIDATE_PERCENTILE = 40;
@@ -323,10 +231,6 @@ public class CandidateView extends LinearLayout implements OnClickListener, OnLo
            mHintToSaveText = context.getText(R.string.hint_add_to_dictionary);
        }

        public int getTextColor() {
            return mColorTypedWord;
        }

        private CharSequence getStyledCandidateWord(SuggestedWords suggestions, int pos) {
            final CharSequence word = suggestions.getWord(pos);
            final boolean isAutoCorrect = pos == 1 && willAutoCorrect(suggestions);
@@ -401,10 +305,11 @@ public class CandidateView extends LinearLayout implements OnClickListener, OnLo
            return word;
        }

        public int layout(SuggestedWords suggestions, ViewGroup stripView, ViewGroup placer,
        public void layout(SuggestedWords suggestions, ViewGroup stripView, ViewGroup placer,
                int stripWidth) {
            if (suggestions.isPunctuationSuggestions()) {
                return layoutPunctuationSuggestions(suggestions, stripView);
                layoutPunctuationSuggestions(suggestions, stripView);
                return;
            }

            final int countInStrip = mCandidateCountInStrip;
@@ -461,7 +366,6 @@ public class CandidateView extends LinearLayout implements OnClickListener, OnLo
                    }
                }
            }
            return countInStrip;
        }

        private int getCandidateWidth(int index, int maxWidth) {
@@ -493,7 +397,7 @@ public class CandidateView extends LinearLayout implements OnClickListener, OnLo
            }
        }

        private int layoutPunctuationSuggestions(SuggestedWords suggestions, ViewGroup stripView) {
        private void layoutPunctuationSuggestions(SuggestedWords suggestions, ViewGroup stripView) {
            final int countInStrip = Math.min(suggestions.size(), PUNCTUATIONS_IN_STRIP);
            for (int index = 0; index < countInStrip; index++) {
                if (index != 0) {
@@ -512,7 +416,6 @@ public class CandidateView extends LinearLayout implements OnClickListener, OnLo
                setLayoutWeight(word, 1.0f, mCandidateStripHeight);
            }
            mMoreSuggestionsAvailable = false;
            return countInStrip;
        }

        public void layoutAddToDictionaryHint(CharSequence word, ViewGroup stripView,
@@ -594,7 +497,6 @@ public class CandidateView extends LinearLayout implements OnClickListener, OnLo

        mStripParams = new SuggestionsStripParams(context, attrs, defStyle, mWords, mDividers,
                mInfos);
        mPaneParams = new SuggestionsPaneParams(mWords, mDividers, mInfos);
        mStripParams.mWordToSaveView.setOnClickListener(this);

        mMoreSuggestionsContainer = inflater.inflate(R.layout.more_suggestions, null);
@@ -614,11 +516,6 @@ public class CandidateView extends LinearLayout implements OnClickListener, OnLo
    public void setListener(Listener listener, View inputView) {
        mListener = listener;
        mKeyboardView = inputView.findViewById(R.id.keyboard_view);
        mCandidatesPane = FrameLayoutCompatUtils.getPlacer(
                (ViewGroup)inputView.findViewById(R.id.candidates_pane));
        mCandidatesPane.setOnClickListener(this);
        mCandidatesPaneContainer = (ViewGroup)inputView.findViewById(
                R.id.candidates_pane_container);
    }

    public void setSuggestions(SuggestedWords suggestions) {
@@ -634,13 +531,10 @@ public class CandidateView extends LinearLayout implements OnClickListener, OnLo

    private void updateSuggestions() {
        clear();
        closeCandidatesPane();
        if (mSuggestions.size() == 0)
            return;

        final int width = getWidth();
        final int countInStrip = mStripParams.layout(
                mSuggestions, mCandidatesStrip, mCandidatesPlacer, width);
        mStripParams.layout(mSuggestions, mCandidatesStrip, mCandidatesPlacer, getWidth());
    }

    private static CharSequence getDebugInfo(SuggestedWords suggestions, int pos) {
@@ -666,26 +560,6 @@ public class CandidateView extends LinearLayout implements OnClickListener, OnLo
        }
    }

    private static void centeringCandidates(ViewGroup parent, View from, View to, int width,
            int parentWidth) {
        final int fromIndex = parent.indexOfChild(from);
        final int toIndex = parent.indexOfChild(to);
        final int offset = (parentWidth - width) / 2;
        for (int index = fromIndex; index <= toIndex; index++) {
            offsetMargin(parent.getChildAt(index), offset, 0);
        }
    }

    private static void offsetMargin(View v, int dx, int dy) {
        if (v == null)
            return;
        final ViewGroup.LayoutParams lp = v.getLayoutParams();
        if (lp instanceof ViewGroup.MarginLayoutParams) {
            final ViewGroup.MarginLayoutParams mlp = (ViewGroup.MarginLayoutParams)lp;
            mlp.setMargins(mlp.leftMargin + dx, mlp.topMargin + dy, 0, 0);
        }
    }

    private static float getTextScaleX(CharSequence text, int maxWidth, TextPaint paint) {
        paint.setTextScaleX(1.0f);
        final int width = getTextWidth(text, paint);
@@ -748,25 +622,6 @@ public class CandidateView extends LinearLayout implements OnClickListener, OnLo
        }
    }

    private void expandCandidatesPane() {
        mCandidatesPaneContainer.setMinimumHeight(mKeyboardView.getMeasuredHeight());
        mCandidatesPaneContainer.setVisibility(VISIBLE);
        mKeyboardView.setVisibility(GONE);
    }

    private void closeCandidatesPane() {
        mCandidatesPaneContainer.setVisibility(GONE);
        mKeyboardView.setVisibility(VISIBLE);
    }

    private void toggleCandidatesPane() {
        if (mCandidatesPaneContainer.getVisibility() == VISIBLE) {
            closeCandidatesPane();
        } else {
            expandCandidatesPane();
        }
    }

    public void onAutoCorrectionInverted(CharSequence autoCorrectedWord) {
        final CharSequence inverted = mStripParams.getInvertedText(autoCorrectedWord);
        if (inverted == null)
@@ -803,8 +658,6 @@ public class CandidateView extends LinearLayout implements OnClickListener, OnLo
        mCandidatesPlacer.removeAllViews();
        mCandidatesPlacer.addView(mCandidatesStrip);
        mCandidatesStrip.removeAllViews();
        mCandidatesPane.removeAllViews();
        closeCandidatesPane();
        mMoreSuggestionsWindow.dismiss();
    }

@@ -946,11 +799,6 @@ public class CandidateView extends LinearLayout implements OnClickListener, OnLo
            return;
        }

        if (view == mCandidatesPane) {
            closeCandidatesPane();
            return;
        }

        final Object tag = view.getTag();
        if (!(tag instanceof Integer))
            return;
@@ -960,9 +808,6 @@ public class CandidateView extends LinearLayout implements OnClickListener, OnLo

        final CharSequence word = mSuggestions.getWord(index);
        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();
    }

    @Override