From 305b1c51f5e0d48a59d0e7c646b6cd0bc777a5dc Mon Sep 17 00:00:00 2001 From: Michael Kolb Date: Tue, 21 Jun 2011 16:16:22 -0700 Subject: Titlebar on phone UI update introduce new states for titlebar: normal, highlighted, editing, loading Change-Id: I8a6f88afc3457a07063aba40ef4d3e5f6c806b8f --- src/com/android/browser/UrlInputView.java | 80 +++++++++++++++++++++++++++---- 1 file changed, 70 insertions(+), 10 deletions(-) (limited to 'src/com/android/browser/UrlInputView.java') diff --git a/src/com/android/browser/UrlInputView.java b/src/com/android/browser/UrlInputView.java index 7545e6a54..8b5c29289 100644 --- a/src/com/android/browser/UrlInputView.java +++ b/src/com/android/browser/UrlInputView.java @@ -16,14 +16,6 @@ package com.android.browser; -import com.android.browser.SuggestionsAdapter.CompletionListener; -import com.android.browser.SuggestionsAdapter.SuggestItem; -import com.android.browser.UI.DropdownChangeListener; -import com.android.browser.autocomplete.SuggestiveAutoCompleteTextView; -import com.android.browser.search.SearchEngine; -import com.android.browser.search.SearchEngineInfo; -import com.android.browser.search.SearchEngines; - import android.content.Context; import android.content.res.Configuration; import android.database.DataSetObserver; @@ -32,6 +24,7 @@ import android.text.TextUtils; import android.util.AttributeSet; import android.util.Patterns; import android.view.KeyEvent; +import android.view.MotionEvent; import android.view.View; import android.view.inputmethod.EditorInfo; import android.view.inputmethod.InputMethodManager; @@ -40,6 +33,15 @@ import android.widget.AdapterView.OnItemClickListener; import android.widget.TextView; import android.widget.TextView.OnEditorActionListener; +import com.android.browser.SuggestionsAdapter.CompletionListener; +import com.android.browser.SuggestionsAdapter.SuggestItem; +import com.android.browser.UI.DropdownChangeListener; +import com.android.browser.autocomplete.SuggestedTextController.TextChangeWatcher; +import com.android.browser.autocomplete.SuggestiveAutoCompleteTextView; +import com.android.browser.search.SearchEngine; +import com.android.browser.search.SearchEngineInfo; +import com.android.browser.search.SearchEngines; + import java.util.List; /** @@ -48,13 +50,20 @@ import java.util.List; */ public class UrlInputView extends SuggestiveAutoCompleteTextView implements OnEditorActionListener, - CompletionListener, OnItemClickListener { - + CompletionListener, OnItemClickListener, TextChangeWatcher { static final String TYPED = "browser-type"; static final String SUGGESTED = "browser-suggest"; static final String VOICE = "voice-search"; + static interface StateListener { + static final int STATE_NORMAL = 0; + static final int STATE_HIGHLIGHTED = 1; + static final int STATE_EDITED = 2; + + public void onStateChanged(int state); + } + private UrlInputListener mListener; private InputMethodManager mInputManager; private SuggestionsAdapter mAdapter; @@ -64,6 +73,9 @@ public class UrlInputView extends SuggestiveAutoCompleteTextView private boolean mNeedsUpdate; private DropdownChangeListener mDropdownListener; + private int mState; + private StateListener mStateListener; + public UrlInputView(Context context, AttributeSet attrs, int defStyle) { super(context, attrs, defStyle); init(context); @@ -90,6 +102,7 @@ public class UrlInputView extends SuggestiveAutoCompleteTextView setOnItemClickListener(this); mNeedsUpdate = false; mDropdownListener = null; + addQueryTextWatcher(this); mAdapter.registerDataSetObserver(new DataSetObserver() { @Override @@ -105,6 +118,32 @@ public class UrlInputView extends SuggestiveAutoCompleteTextView dispatchChange(); } }); + mState = StateListener.STATE_NORMAL; + } + + protected void onFocusChanged(boolean focused, int direction, Rect prevRect) { + super.onFocusChanged(focused, direction, prevRect); + if (focused) { + if (hasSelection()) { + changeState(StateListener.STATE_HIGHLIGHTED); + } else { + changeState(StateListener.STATE_EDITED); + } + } else { + // reset the selection state + changeState(StateListener.STATE_NORMAL); + } + } + + @Override + public boolean onTouchEvent(MotionEvent evt) { + boolean hasSelection = hasSelection(); + boolean res = super.onTouchEvent(evt); + if ((MotionEvent.ACTION_DOWN == evt.getActionMasked()) + && hasSelection) { + changeState(StateListener.STATE_EDITED); + } + return res; } /** @@ -135,6 +174,19 @@ public class UrlInputView extends SuggestiveAutoCompleteTextView mListener = listener; } + public void setStateListener(StateListener listener) { + mStateListener = listener; + // update listener + changeState(mState); + } + + private void changeState(int newState) { + mState = newState; + if (mStateListener != null) { + mStateListener.onStateChanged(mState); + } + } + void setVoiceResults(List voiceResults) { mAdapter.setVoiceResults(voiceResults); } @@ -305,4 +357,12 @@ public class UrlInputView extends SuggestiveAutoCompleteTextView public boolean requestRectangleOnScreen(Rect rect, boolean immediate) { return false; } + + @Override + public void onTextChanged(String newText) { + if (StateListener.STATE_HIGHLIGHTED == mState) { + changeState(StateListener.STATE_EDITED); + } + } + } -- cgit v1.2.3