diff options
author | Vivek Sekhar <vsekhar@codeaurora.org> | 2014-10-22 17:03:42 -0700 |
---|---|---|
committer | Vivek Sekhar <vsekhar@codeaurora.org> | 2014-10-23 11:14:07 -0700 |
commit | 3bec6a3b7fe6dd30e9dd2a2065ffca19ff6af542 (patch) | |
tree | b9a75dba5245a4ee39ccc0d5163e9f93acd57a30 /src | |
parent | 46c3ec0fec8a2fc53619cead8dae5edbae2a6f3a (diff) | |
download | android_packages_apps_Gello-3bec6a3b7fe6dd30e9dd2a2065ffca19ff6af542.tar.gz android_packages_apps_Gello-3bec6a3b7fe6dd30e9dd2a2065ffca19ff6af542.tar.bz2 android_packages_apps_Gello-3bec6a3b7fe6dd30e9dd2a2065ffca19ff6af542.zip |
Remove quick controls
Change-Id: I0fa64f0fcd800db0c8d5c91dcbbcc265f4d8eb48
Diffstat (limited to 'src')
-rw-r--r-- | src/com/android/browser/BaseUi.java | 34 | ||||
-rw-r--r-- | src/com/android/browser/BrowserSettings.java | 8 | ||||
-rw-r--r-- | src/com/android/browser/BrowserWebViewFactory.java | 2 | ||||
-rw-r--r-- | src/com/android/browser/NavigationBarBase.java | 3 | ||||
-rw-r--r-- | src/com/android/browser/NavigationBarTablet.java | 6 | ||||
-rw-r--r-- | src/com/android/browser/PhoneUi.java | 20 | ||||
-rw-r--r-- | src/com/android/browser/PieControl.java | 346 | ||||
-rw-r--r-- | src/com/android/browser/PreferenceKeys.java | 1 | ||||
-rw-r--r-- | src/com/android/browser/Tab.java | 2 | ||||
-rw-r--r-- | src/com/android/browser/TabBar.java | 38 | ||||
-rw-r--r-- | src/com/android/browser/TitleBar.java | 72 | ||||
-rw-r--r-- | src/com/android/browser/UI.java | 2 | ||||
-rw-r--r-- | src/com/android/browser/XLargeUi.java | 33 | ||||
-rw-r--r-- | src/com/android/browser/view/BasePieView.java | 162 | ||||
-rw-r--r-- | src/com/android/browser/view/PieItem.java | 159 | ||||
-rw-r--r-- | src/com/android/browser/view/PieListView.java | 83 | ||||
-rw-r--r-- | src/com/android/browser/view/PieMenu.java | 636 | ||||
-rw-r--r-- | src/com/android/browser/view/PieStackView.java | 104 |
18 files changed, 36 insertions, 1675 deletions
diff --git a/src/com/android/browser/BaseUi.java b/src/com/android/browser/BaseUi.java index 666b997c..354e901f 100644 --- a/src/com/android/browser/BaseUi.java +++ b/src/com/android/browser/BaseUi.java @@ -110,10 +110,8 @@ public abstract class BaseUi implements UI { private View mVideoProgressView; private boolean mActivityPaused; - protected boolean mUseQuickControls; protected TitleBar mTitleBar; private NavigationBarBase mNavigationBar; - protected PieControl mPieControl; private boolean mBlockFocusAnimations; public BaseUi(Activity browser, UiController controller) { @@ -206,21 +204,6 @@ public abstract class BaseUi implements UI { return false; } - @Override - public void setUseQuickControls(boolean useQuickControls) { - mUseQuickControls = useQuickControls; - mTitleBar.setUseQuickControls(mUseQuickControls); - if (useQuickControls) { - mPieControl = new PieControl(mActivity, mUiController, this); - mPieControl.attachToContainer(mContentView); - } else { - if (mPieControl != null) { - mPieControl.removeFromContainer(mContentView); - } - } - updateUrlBarAutoShowManagerTarget(); - } - // Tab callbacks @Override public void onTabDataChanged(Tab tab) { @@ -290,14 +273,8 @@ public abstract class BaseUi implements UI { attachTabToContentView(tab); if (web != null) { // Request focus on the top window. - if (mUseQuickControls) { - mPieControl.forceToTop(mContentView); - web.setTitleBar(null); - mTitleBar.hide(); - } else { - web.setTitleBar(mTitleBar); - mTitleBar.onScrollChanged(); - } + web.setTitleBar(mTitleBar); + mTitleBar.onScrollChanged(); tabToWaitFor = mActiveTab; } mTitleBar.bringToFront(); @@ -367,10 +344,8 @@ public abstract class BaseUi implements UI { protected void updateUrlBarAutoShowManagerTarget() { WebView web = mActiveTab != null ? mActiveTab.getWebView() : null; - if (!mUseQuickControls && web instanceof BrowserWebView) { + if (web instanceof BrowserWebView) { mUrlBarAutoShowManager.setTarget((BrowserWebView) web); - } else { - mUrlBarAutoShowManager.setTarget(null); } } @@ -828,8 +803,7 @@ public abstract class BaseUi implements UI { mTitleBar.setEnabled(true); } - if (!mUseQuickControls) - mTitleBar.setTranslationY(topControlsOffsetYPix); + mTitleBar.setTranslationY(topControlsOffsetYPix); } } diff --git a/src/com/android/browser/BrowserSettings.java b/src/com/android/browser/BrowserSettings.java index c0336470..0318f8f5 100644 --- a/src/com/android/browser/BrowserSettings.java +++ b/src/com/android/browser/BrowserSettings.java @@ -427,10 +427,6 @@ public class BrowserSettings implements OnSharedPreferenceChangeListener, if (mController != null && mController.getUi() != null) { mController.getUi().setFullscreen(useFullscreen()); } - } else if (PREF_ENABLE_QUICK_CONTROLS.equals(key)) { - if (mController != null && mController.getUi() != null) { - mController.getUi().setUseQuickControls(sharedPreferences.getBoolean(key, false)); - } } else if (PREF_LINK_PREFETCH.equals(key)) { updateConnectionType(); } @@ -958,10 +954,6 @@ public class BrowserSettings implements OnSharedPreferenceChangeListener, // getter/setters for lab_preferences.xml // ----------------------------- - public boolean useQuickControls() { - return mPrefs.getBoolean(PREF_ENABLE_QUICK_CONTROLS, false); - } - public boolean useMostVisitedHomepage() { return HomeProvider.MOST_VISITED.equals(getHomePage()); } diff --git a/src/com/android/browser/BrowserWebViewFactory.java b/src/com/android/browser/BrowserWebViewFactory.java index 6e18dc1e..48ad91c2 100644 --- a/src/com/android/browser/BrowserWebViewFactory.java +++ b/src/com/android/browser/BrowserWebViewFactory.java @@ -68,8 +68,6 @@ public class BrowserWebViewFactory implements WebViewFactory { // settings final BrowserSettings s = BrowserSettings.getInstance(); s.startManagingSettings(w.getSettings()); - if (s.useQuickControls()) - w.updateTopControls(true, false, false); //Enable remote debugging by default WebView.setWebContentsDebuggingEnabled(true); diff --git a/src/com/android/browser/NavigationBarBase.java b/src/com/android/browser/NavigationBarBase.java index 100e8d7e..ec187861 100644 --- a/src/com/android/browser/NavigationBarBase.java +++ b/src/com/android/browser/NavigationBarBase.java @@ -372,9 +372,6 @@ public class NavigationBarBase extends LinearLayout implements void startEditingUrl(boolean clearInput, boolean forceIME) { // editing takes preference of progress setVisibility(View.VISIBLE); - if (mTitleBar.useQuickControls()) { - mTitleBar.getProgressView().setVisibility(View.GONE); - } if (!mUrlInput.hasFocus()) { mUrlInput.requestFocus(); } diff --git a/src/com/android/browser/NavigationBarTablet.java b/src/com/android/browser/NavigationBarTablet.java index ebe40eaa..a965e0a7 100644 --- a/src/com/android/browser/NavigationBarTablet.java +++ b/src/com/android/browser/NavigationBarTablet.java @@ -229,11 +229,7 @@ public class NavigationBarTablet extends NavigationBarBase implements StateListe showNavButtons(); } showHideStar(mUiController.getCurrentTab()); - if (mTitleBar.useQuickControls()) { - mSearchButton.setVisibility(View.GONE); - } else { - mSearchButton.setVisibility(View.VISIBLE); - } + mSearchButton.setVisibility(View.VISIBLE); updateUrlIcon(); } mUrlContainer.setBackgroundDrawable(focus diff --git a/src/com/android/browser/PhoneUi.java b/src/com/android/browser/PhoneUi.java index 35e6ad30..d74e988c 100644 --- a/src/com/android/browser/PhoneUi.java +++ b/src/com/android/browser/PhoneUi.java @@ -66,7 +66,6 @@ public class PhoneUi extends BaseUi { */ public PhoneUi(Activity browser, UiController controller) { super(browser, controller); - setUseQuickControls(BrowserSettings.getInstance().useQuickControls()); mNavigationBar = (NavigationBarPhone) mTitleBar.getNavigationBar(); mBrowser = browser; } @@ -78,9 +77,6 @@ public class PhoneUi extends BaseUi { @Override public void editUrl(boolean clearInput, boolean forceIME) { - if (mUseQuickControls) { - mTitleBar.setShowProgressOnly(false); - } //Do nothing while at Nav show screen. if (mShowNav) return; super.editUrl(clearInput, forceIME); @@ -148,13 +144,8 @@ public class PhoneUi extends BaseUi { return; } // Request focus on the top window. - if (mUseQuickControls) { - mPieControl.forceToTop(mContentView); - view.setTitleBar(null); - mTitleBar.setShowProgressOnly(true); - } else { - view.setTitleBar(mTitleBar); - } + view.setTitleBar(mTitleBar); + // update nav bar state mNavigationBar.onStateChanged(StateListener.STATE_NORMAL); updateLockIconToLatest(tab); @@ -184,12 +175,12 @@ public class PhoneUi extends BaseUi { info.setVisible(false); } MenuItem newtab = menu.findItem(R.id.new_tab_menu_id); - if (newtab != null && !mUseQuickControls) { + if (newtab != null) { newtab.setVisible(false); } MenuItem incognito = menu.findItem(R.id.incognito_menu_id); if (incognito != null) { - incognito.setVisible(showingNavScreen() || mUseQuickControls); + incognito.setVisible(showingNavScreen()); } MenuItem closeOthers = menu.findItem(R.id.close_other_tabs_id); if (closeOthers != null) { @@ -244,9 +235,6 @@ public class PhoneUi extends BaseUi { public void onActionModeFinished(boolean inLoad) { super.onActionModeFinished(inLoad); if (inLoad) { - if (mUseQuickControls) { - mTitleBar.setShowProgressOnly(true); - } showTitleBar(); } } diff --git a/src/com/android/browser/PieControl.java b/src/com/android/browser/PieControl.java deleted file mode 100644 index 68f79831..00000000 --- a/src/com/android/browser/PieControl.java +++ /dev/null @@ -1,346 +0,0 @@ -/* - * Copyright (C) 2011 The Android Open Source Project - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package com.android.browser; - -import android.app.Activity; -import android.content.Context; -import android.graphics.Bitmap; -import android.view.LayoutInflater; -import android.view.View; -import android.view.View.OnClickListener; -import android.view.ViewGroup; -import android.view.ViewGroup.LayoutParams; -import org.codeaurora.swe.WebView; -import android.widget.BaseAdapter; -import android.widget.FrameLayout; -import android.widget.ImageView; -import android.widget.ImageView.ScaleType; -import android.widget.TextView; - -import com.android.browser.R; -import com.android.browser.UI.ComboViews; -import com.android.browser.view.PieItem; -import com.android.browser.view.PieMenu; -import com.android.browser.view.PieStackView; -import com.android.browser.view.PieMenu.PieView.OnLayoutListener; -import com.android.browser.view.PieStackView.OnCurrentListener; - -import java.util.ArrayList; -import java.util.List; - -/** - * Controller for Quick Controls pie menu - */ -public class PieControl implements PieMenu.PieController, OnClickListener { - - protected Activity mActivity; - protected UiController mUiController; - protected PieMenu mPie; - protected int mItemSize; - protected TextView mTabsCount; - private BaseUi mUi; - private PieItem mBack; - private PieItem mForward; - private PieItem mRefresh; - private PieItem mUrl; - private PieItem mOptions; - private PieItem mBookmarks; - private PieItem mHistory; - private PieItem mAddBookmark; - private PieItem mNewTab; - private PieItem mIncognito; - private PieItem mClose; - private PieItem mShowTabs; - private PieItem mInfo; - private PieItem mFind; - private PieItem mShare; - private PieItem mRDS; - private TabAdapter mTabAdapter; - - public PieControl(Activity activity, UiController controller, BaseUi ui) { - mActivity = activity; - mUiController = controller; - mItemSize = (int) activity.getResources().getDimension(R.dimen.qc_item_size); - mUi = ui; - } - - public void stopEditingUrl() { - mUi.stopEditingUrl(); - } - - protected void attachToContainer(FrameLayout container) { - if (mPie == null) { - mPie = new PieMenu(mActivity); - LayoutParams lp = new LayoutParams(LayoutParams.MATCH_PARENT, - LayoutParams.MATCH_PARENT); - mPie.setLayoutParams(lp); - populateMenu(); - mPie.setController(this); - } - container.addView(mPie); - } - - protected void removeFromContainer(FrameLayout container) { - container.removeView(mPie); - } - - protected void forceToTop(FrameLayout container) { - if (mPie.getParent() != null) { - container.removeView(mPie); - container.addView(mPie); - } - } - - protected void setClickListener(OnClickListener listener, PieItem... items) { - for (PieItem item : items) { - item.getView().setOnClickListener(listener); - } - } - - @Override - public boolean onOpen() { - int n = mUiController.getTabControl().getTabCount(); - mTabsCount.setText(Integer.toString(n)); - Tab tab = mUiController.getCurrentTab(); - if (tab != null) { - mForward.setEnabled(tab.canGoForward()); - } - WebView view = mUiController.getCurrentWebView(); - if (view != null) { - ImageView icon = (ImageView) mRDS.getView(); - if (mUiController.getSettings().hasDesktopUseragent(view)) { - icon.setImageResource(R.drawable.ic_mobile); - } else { - icon.setImageResource(R.drawable.ic_desktop_holo_dark); - } - } - return true; - } - - protected void populateMenu() { - mBack = makeItem(R.drawable.ic_back_holo_dark, 1); - mUrl = makeItem(R.drawable.ic_web_holo_dark, 1); - mBookmarks = makeItem(R.drawable.ic_bookmarks_holo_dark, 1); - mHistory = makeItem(R.drawable.ic_history_holo_dark, 1); - mAddBookmark = makeItem(R.drawable.ic_bookmark_on_holo_dark, 1); - mRefresh = makeItem(R.drawable.ic_refresh_holo_dark, 1); - mForward = makeItem(R.drawable.ic_forward_holo_dark, 1); - mNewTab = makeItem(R.drawable.ic_new_window_holo_dark, 1); - mIncognito = makeItem(R.drawable.ic_new_incognito_holo_dark, 1); - mClose = makeItem(R.drawable.ic_close_window_holo_dark, 1); - mInfo = makeItem(android.R.drawable.ic_menu_info_details, 1); - mFind = makeItem(R.drawable.ic_search_holo_dark, 1); - mShare = makeItem(R.drawable.ic_share_holo_dark, 1); - View tabs = makeTabsView(); - mShowTabs = new PieItem(tabs, 1); - mOptions = makeItem(R.drawable.ic_settings_holo_dark, 1); - mRDS = makeItem(R.drawable.ic_desktop_holo_dark, 1); - mTabAdapter = new TabAdapter(mActivity, mUiController); - PieStackView stack = new PieStackView(mActivity); - stack.setLayoutListener(new OnLayoutListener() { - @Override - public void onLayout(int ax, int ay, boolean left) { - buildTabs(); - } - }); - stack.setOnCurrentListener(mTabAdapter); - stack.setAdapter(mTabAdapter); - mShowTabs.setPieView(stack); - setClickListener(this, mBack, mRefresh, mForward, mUrl, mFind, mInfo, - mShare, mBookmarks, mNewTab, mIncognito, mClose, mHistory, - mAddBookmark, mOptions, mRDS); - if (!BrowserActivity.isTablet(mActivity)) { - mShowTabs.getView().setOnClickListener(this); - } - // level 1 - mPie.addItem(mOptions); - mOptions.addItem(mRDS); - mOptions.addItem(makeFiller()); - mOptions.addItem(makeFiller()); - mOptions.addItem(makeFiller()); - mPie.addItem(mBack); - mBack.addItem(mRefresh); - mBack.addItem(mForward); - mBack.addItem(makeFiller()); - mBack.addItem(makeFiller()); - mPie.addItem(mUrl); - mUrl.addItem(mFind); - mUrl.addItem(mShare); - mUrl.addItem(makeFiller()); - mUrl.addItem(makeFiller()); - mPie.addItem(mShowTabs); - mShowTabs.addItem(mClose); - mShowTabs.addItem(mIncognito); - mShowTabs.addItem(mNewTab); - mShowTabs.addItem(makeFiller()); - mPie.addItem(mBookmarks); - mBookmarks.addItem(makeFiller()); - mBookmarks.addItem(makeFiller()); - mBookmarks.addItem(mAddBookmark); - mBookmarks.addItem(mHistory); - } - - @Override - public void onClick(View v) { - Tab tab = mUiController.getTabControl().getCurrentTab(); - WebView web = tab.getWebView(); - if (mBack.getView() == v) { - tab.goBack(); - } else if (mForward.getView() == v) { - tab.goForward(); - } else if (mRefresh.getView() == v) { - if (tab.inPageLoad()) { - web.stopLoading(); - } else { - web.reload(); - } - } else if (mUrl.getView() == v) { - mUi.editUrl(false, true); - } else if (mBookmarks.getView() == v) { - mUiController.bookmarksOrHistoryPicker(ComboViews.Bookmarks); - } else if (mHistory.getView() == v) { - mUiController.bookmarksOrHistoryPicker(ComboViews.History); - } else if (mAddBookmark.getView() == v) { - mUiController.bookmarkCurrentPage(); - } else if (mNewTab.getView() == v) { - mUiController.openTabToHomePage(); - mUi.editUrl(false, true); - } else if (mIncognito.getView() == v) { - mUiController.openIncognitoTab(); - mUi.editUrl(false, true); - } else if (mClose.getView() == v) { - mUiController.closeCurrentTab(); - } else if (mOptions.getView() == v) { - mUiController.openPreferences(); - } else if (mShare.getView() == v) { - mUiController.shareCurrentPage(); - } else if (mInfo.getView() == v) { - mUiController.showPageInfo(); - } else if (mFind.getView() == v) { - mUiController.findOnPage(); - } else if (mRDS.getView() == v) { - mUiController.toggleUserAgent(); - } else if (mShowTabs.getView() == v) { - ((PhoneUi) mUi).showNavScreen(); - } - } - - private void buildTabs() { - final List<Tab> tabs = mUiController.getTabs(); - mUi.getActiveTab().capture(); - mTabAdapter.setTabs(tabs); - PieStackView sym = (PieStackView) mShowTabs.getPieView(); - sym.setCurrent(mUiController.getTabControl().getCurrentPosition()); - } - - protected PieItem makeItem(int image, int l) { - ImageView view = new ImageView(mActivity); - view.setImageResource(image); - view.setMinimumWidth(mItemSize); - view.setMinimumHeight(mItemSize); - view.setScaleType(ScaleType.CENTER); - LayoutParams lp = new LayoutParams(mItemSize, mItemSize); - view.setLayoutParams(lp); - return new PieItem(view, l); - } - - protected PieItem makeFiller() { - return new PieItem(null, 1); - } - - protected View makeTabsView() { - View v = mActivity.getLayoutInflater().inflate(R.layout.qc_tabs_view, null); - mTabsCount = (TextView) v.findViewById(R.id.label); - mTabsCount.setText("1"); - ImageView image = (ImageView) v.findViewById(R.id.icon); - image.setImageResource(R.drawable.ic_windows_holo_dark); - image.setScaleType(ScaleType.CENTER); - LayoutParams lp = new LayoutParams(mItemSize, mItemSize); - v.setLayoutParams(lp); - return v; - } - - static class TabAdapter extends BaseAdapter implements OnCurrentListener { - - LayoutInflater mInflater; - UiController mUiController; - private List<Tab> mTabs; - private int mCurrent; - - public TabAdapter(Context ctx, UiController ctl) { - mInflater = LayoutInflater.from(ctx); - mUiController = ctl; - mTabs = new ArrayList<Tab>(); - mCurrent = -1; - } - - public void setTabs(List<Tab> tabs) { - mTabs = tabs; - notifyDataSetChanged(); - } - - @Override - public int getCount() { - return mTabs.size(); - } - - @Override - public Tab getItem(int position) { - return mTabs.get(position); - } - - @Override - public long getItemId(int position) { - return position; - } - - @Override - public View getView(int position, View convertView, ViewGroup parent) { - final Tab tab = mTabs.get(position); - View view = mInflater.inflate(R.layout.qc_tab, - null); - ImageView thumb = (ImageView) view.findViewById(R.id.thumb); - TextView title1 = (TextView) view.findViewById(R.id.title1); - TextView title2 = (TextView) view.findViewById(R.id.title2); - Bitmap b = tab.getScreenshot(); - if (b != null) { - thumb.setImageBitmap(b); - } - if (position > mCurrent) { - title1.setVisibility(View.GONE); - title2.setText(tab.getTitle()); - } else { - title2.setVisibility(View.GONE); - title1.setText(tab.getTitle()); - } - view.setOnClickListener(new OnClickListener() { - @Override - public void onClick(View v) { - mUiController.switchToTab(tab); - } - }); - return view; - } - - @Override - public void onSetCurrent(int index) { - mCurrent = index; - } - - } - -} diff --git a/src/com/android/browser/PreferenceKeys.java b/src/com/android/browser/PreferenceKeys.java index 83dc3711..6f2acd43 100644 --- a/src/com/android/browser/PreferenceKeys.java +++ b/src/com/android/browser/PreferenceKeys.java @@ -83,7 +83,6 @@ public interface PreferenceKeys { // ---------------------- // Keys for lab_preferences.xml // ---------------------- - static final String PREF_ENABLE_QUICK_CONTROLS = "enable_quick_controls"; static final String PREF_FULLSCREEN = "fullscreen"; // ---------------------- diff --git a/src/com/android/browser/Tab.java b/src/com/android/browser/Tab.java index d4d6cba9..2254e4ae 100644 --- a/src/com/android/browser/Tab.java +++ b/src/com/android/browser/Tab.java @@ -741,7 +741,7 @@ class Tab implements PictureListener { if (getWebView() != null) { if (fullScreen) getWebView().updateTopControls(true, false, true); - else if (!mSettings.useQuickControls()) + else getWebView().updateTopControls(true, true, true); } diff --git a/src/com/android/browser/TabBar.java b/src/com/android/browser/TabBar.java index 4078ba42..a4e039dc 100644 --- a/src/com/android/browser/TabBar.java +++ b/src/com/android/browser/TabBar.java @@ -86,7 +86,6 @@ public class TabBar extends LinearLayout implements OnClickListener { private int mTabOverlap; private int mAddTabOverlap; private int mTabSliceWidth; - private boolean mUseQuickControls; public TabBar(Activity activity, UiController controller, XLargeUi ui) { super(activity); @@ -135,12 +134,6 @@ public class TabBar extends LinearLayout implements OnClickListener { mTabs.updateLayout(); } - void setUseQuickControls(boolean useQuickControls) { - mUseQuickControls = useQuickControls; - mNewTab.setVisibility(mUseQuickControls ? View.GONE - : View.VISIBLE); - } - int getTabCount() { return mTabMap.size(); } @@ -160,9 +153,7 @@ public class TabBar extends LinearLayout implements OnClickListener { super.onMeasure(hspec, vspec); int w = getMeasuredWidth(); // adjust for new tab overlap - if (!mUseQuickControls) { - w -= mAddTabOverlap; - } + w -= mAddTabOverlap; setMeasuredDimension(w, getMeasuredHeight()); } @@ -173,35 +164,22 @@ public class TabBar extends LinearLayout implements OnClickListener { int pt = getPaddingTop(); int sw = mTabs.getMeasuredWidth(); int w = right - left - pl; - if (mUseQuickControls) { - mButtonWidth = 0; - } else { - mButtonWidth = mNewTab.getMeasuredWidth() - mAddTabOverlap; - if (w-sw < mButtonWidth) { - sw = w - mButtonWidth; - } + mButtonWidth = mNewTab.getMeasuredWidth() - mAddTabOverlap; + if (w-sw < mButtonWidth) { + sw = w - mButtonWidth; } mTabs.layout(pl, pt, pl + sw, bottom - top); // adjust for overlap - if (!mUseQuickControls) { - mNewTab.layout(pl + sw - mAddTabOverlap, pt, - pl + sw + mButtonWidth - mAddTabOverlap, bottom - top); - } + mNewTab.layout(pl + sw - mAddTabOverlap, pt, + pl + sw + mButtonWidth - mAddTabOverlap, bottom - top); + } public void onClick(View view) { if (mNewTab == view) { mUiController.openTabToHomePage(); } else if (mTabs.getSelectedTab() == view) { - if (mUseQuickControls) { - if (mUi.isTitleBarShowing() && !isLoading()) { - mUi.stopEditingUrl(); - mUi.hideTitleBar(); - } else { - mUi.stopWebViewScrolling(); - mUi.editUrl(false, false); - } - } else if (mUi.isTitleBarShowing() && !isLoading()) { + if (mUi.isTitleBarShowing() && !isLoading()) { mUi.stopEditingUrl(); mUi.hideTitleBar(); } else { diff --git a/src/com/android/browser/TitleBar.java b/src/com/android/browser/TitleBar.java index 6c9130a2..1ea4dad5 100644 --- a/src/com/android/browser/TitleBar.java +++ b/src/com/android/browser/TitleBar.java @@ -55,7 +55,6 @@ public class TitleBar extends RelativeLayout { private AccessibilityManager mAccessibilityManager; private NavigationBarBase mNavBar; - private boolean mUseQuickControls; private SnapshotBar mSnapshotBar; //state @@ -113,8 +112,7 @@ public class TitleBar extends RelativeLayout { } private void setFixedTitleBar() { - boolean isFixed = !mUseQuickControls - && !getContext().getResources().getBoolean(R.bool.hide_title); + boolean isFixed = !getContext().getResources().getBoolean(R.bool.hide_title); isFixed |= mAccessibilityManager.isEnabled(); // If getParent() returns null, we are initializing @@ -143,18 +141,6 @@ public class TitleBar extends RelativeLayout { return mUiController; } - public void setUseQuickControls(boolean use) { - mUseQuickControls = use; - setFixedTitleBar(); - if (use) { - this.setVisibility(View.GONE); - hideTopControls(); - } else { - this.setVisibility(View.VISIBLE); - enableTopControls(); - } - } - void setShowProgressOnly(boolean progress) { if (progress && !wantsToBeVisible()) { mNavBar.setVisibility(View.GONE); @@ -179,7 +165,7 @@ public class TitleBar extends RelativeLayout { private static final boolean bOldStyleAutoHideDisabled = true; void show() { cancelTitleBarAnimation(false); - if (mUseQuickControls || mSkipTitleBarAnimations) { + if (mSkipTitleBarAnimations) { this.setVisibility(View.VISIBLE); this.setTranslationY(0); hideTopControls(); @@ -200,23 +186,18 @@ public class TitleBar extends RelativeLayout { } void hide() { - if (mUseQuickControls) { - this.setVisibility(View.GONE); - hideTopControls(); + if (mIsFixedTitleBar || bOldStyleAutoHideDisabled) return; + if (!mSkipTitleBarAnimations) { + cancelTitleBarAnimation(false); + int visibleHeight = getVisibleTitleHeight(); + mTitleBarAnimator = ObjectAnimator.ofFloat(this, + "translationY", getTranslationY(), + (-getEmbeddedHeight() + visibleHeight)); + mTitleBarAnimator.addListener(mHideTileBarAnimatorListener); + setupTitleBarAnimator(mTitleBarAnimator); + mTitleBarAnimator.start(); } else { - if (mIsFixedTitleBar || bOldStyleAutoHideDisabled) return; - if (!mSkipTitleBarAnimations) { - cancelTitleBarAnimation(false); - int visibleHeight = getVisibleTitleHeight(); - mTitleBarAnimator = ObjectAnimator.ofFloat(this, - "translationY", getTranslationY(), - (-getEmbeddedHeight() + visibleHeight)); - mTitleBarAnimator.addListener(mHideTileBarAnimatorListener); - setupTitleBarAnimator(mTitleBarAnimator); - mTitleBarAnimator.start(); - } else { - onScrollChanged(); - } + onScrollChanged(); } mShowing = false; } @@ -298,19 +279,11 @@ public class TitleBar extends RelativeLayout { mNavBar.onProgressStopped(); // check if needs to be hidden if (!isEditingUrl() && !wantsToBeVisible()) { - if (mUseQuickControls) { - hide(); - } else { - mBaseUi.showTitleBarForDuration(); - } + mBaseUi.showTitleBarForDuration(); } //onPageFinished - if (mUseQuickControls) { - hideTopControls(); - } else { - enableTopControls(); - } + enableTopControls(); } else { if (!mInLoad) { @@ -319,17 +292,10 @@ public class TitleBar extends RelativeLayout { mNavBar.onProgressStarted(); //onPageStarted - if (mUseQuickControls) { - hideTopControls(); - } else { - showTopControls(); - } + showTopControls(); } mProgress.setProgress(newProgress * PageProgressView.MAX_PROGRESS / PROGRESS_MAX); - if (mUseQuickControls && !isEditingUrl()) { - setShowProgressOnly(true); - } if (!mShowing) { show(); } @@ -337,7 +303,7 @@ public class TitleBar extends RelativeLayout { } public int getEmbeddedHeight() { - if (mUseQuickControls || mIsFixedTitleBar) return 0; + if (mIsFixedTitleBar) return 0; return calculateEmbeddedHeight(); } @@ -376,10 +342,6 @@ public class TitleBar extends RelativeLayout { return mNavBar; } - public boolean useQuickControls() { - return mUseQuickControls; - } - public boolean isInLoad() { return mInLoad; } diff --git a/src/com/android/browser/UI.java b/src/com/android/browser/UI.java index f24f8f32..a3742030 100644 --- a/src/com/android/browser/UI.java +++ b/src/com/android/browser/UI.java @@ -138,8 +138,6 @@ public interface UI { void setFullscreen(boolean enabled); - void setUseQuickControls(boolean enabled); - void translateTitleBar(float topControlsOffsetYPix); public boolean shouldCaptureThumbnails(); diff --git a/src/com/android/browser/XLargeUi.java b/src/com/android/browser/XLargeUi.java index 8dd31d8b..08d742ef 100644 --- a/src/com/android/browser/XLargeUi.java +++ b/src/com/android/browser/XLargeUi.java @@ -64,7 +64,6 @@ public class XLargeUi extends BaseUi { mTabBar = new TabBar(mActivity, mUiController, this); mActionBar = mActivity.getActionBar(); setupActionBar(); - setUseQuickControls(BrowserSettings.getInstance().useQuickControls()); } private void setupActionBar() { @@ -75,33 +74,9 @@ public class XLargeUi extends BaseUi { public void showComboView(ComboViews startWith, Bundle extras) { super.showComboView(startWith, extras); - if (mUseQuickControls) { - mActionBar.show(); - } - } - - @Override - public void setUseQuickControls(boolean useQuickControls) { - super.setUseQuickControls(useQuickControls); - checkHideActionBar(); - if (!useQuickControls) { - mActionBar.show(); - } - mTabBar.setUseQuickControls(mUseQuickControls); - // We need to update the tabs with this change - for (Tab t : mTabControl.getTabs()) { - t.updateShouldCaptureThumbnails(); - } } private void checkHideActionBar() { - if (mUseQuickControls) { - mHandler.post(new Runnable() { - public void run() { - mActionBar.hide(); - } - }); - } } @Override @@ -189,9 +164,6 @@ public class XLargeUi extends BaseUi { @Override public void editUrl(boolean clearInput, boolean forceIME) { - if (mUseQuickControls) { - mTitleBar.setShowProgressOnly(false); - } super.editUrl(clearInput, forceIME); } @@ -211,9 +183,6 @@ public class XLargeUi extends BaseUi { if (inLoad) { // the titlebar was removed when the CAB was shown // if the page is loading, show it again - if (mUseQuickControls) { - mTitleBar.setShowProgressOnly(true); - } showTitleBar(); } } @@ -276,7 +245,7 @@ public class XLargeUi extends BaseUi { @Override public boolean shouldCaptureThumbnails() { - return mUseQuickControls; + return false; } private Drawable getFaviconBackground() { diff --git a/src/com/android/browser/view/BasePieView.java b/src/com/android/browser/view/BasePieView.java deleted file mode 100644 index b9178be0..00000000 --- a/src/com/android/browser/view/BasePieView.java +++ /dev/null @@ -1,162 +0,0 @@ -/* - * Copyright (C) 2011 The Android Open Source Project - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package com.android.browser.view; - -import android.database.DataSetObserver; -import android.graphics.Canvas; -import android.view.MotionEvent; -import android.view.View; -import android.widget.Adapter; - -import java.util.ArrayList; - -/** - * common code for pie views - */ -public abstract class BasePieView implements PieMenu.PieView { - - protected Adapter mAdapter; - private DataSetObserver mObserver; - protected ArrayList<View> mViews; - - protected OnLayoutListener mListener; - - protected int mCurrent; - protected int mChildWidth; - protected int mChildHeight; - protected int mWidth; - protected int mHeight; - protected int mLeft; - protected int mTop; - - public BasePieView() { - } - - public void setLayoutListener(OnLayoutListener l) { - mListener = l; - } - - public void setAdapter(Adapter adapter) { - mAdapter = adapter; - if (adapter == null) { - if (mAdapter != null) { - mAdapter.unregisterDataSetObserver(mObserver); - } - mViews = null; - mCurrent = -1; - } else { - mObserver = new DataSetObserver() { - @Override - public void onChanged() { - buildViews(); - } - - @Override - public void onInvalidated() { - mViews.clear(); - } - }; - mAdapter.registerDataSetObserver(mObserver); - setCurrent(0); - } - } - - public void setCurrent(int ix) { - mCurrent = ix; - } - - public Adapter getAdapter() { - return mAdapter; - } - - protected void buildViews() { - if (mAdapter != null) { - final int n = mAdapter.getCount(); - if (mViews == null) { - mViews = new ArrayList<View>(n); - } else { - mViews.clear(); - } - mChildWidth = 0; - mChildHeight = 0; - for (int i = 0; i < n; i++) { - View view = mAdapter.getView(i, null, null); - view.measure(View.MeasureSpec.UNSPECIFIED, - View.MeasureSpec.UNSPECIFIED); - mChildWidth = Math.max(mChildWidth, view.getMeasuredWidth()); - mChildHeight = Math.max(mChildHeight, view.getMeasuredHeight()); - mViews.add(view); - } - } - } - - /** - * this will be called before the first draw call - * needs to set top, left, width, height - */ - @Override - public void layout(int anchorX, int anchorY, boolean left, float angle, - int parentHeight) { - if (mListener != null) { - mListener.onLayout(anchorX, anchorY, left); - } - } - - - @Override - public abstract void draw(Canvas canvas); - - protected void drawView(View view, Canvas canvas) { - final int state = canvas.save(); - canvas.translate(view.getLeft(), view.getTop()); - view.draw(canvas); - canvas.restoreToCount(state); - } - - protected abstract int findChildAt(int y); - - @Override - public boolean onTouchEvent(MotionEvent evt) { - int action = evt.getActionMasked(); - int evtx = (int) evt.getX(); - int evty = (int) evt.getY(); - if ((evtx < mLeft) || (evtx >= mLeft + mWidth) - || (evty < mTop) || (evty >= mTop + mHeight)) { - return false; - } - switch (action) { - case MotionEvent.ACTION_MOVE: - View v = mViews.get(mCurrent); - setCurrent(Math.max(0, Math.min(mViews.size() -1, - findChildAt(evty)))); - View v1 = mViews.get(mCurrent); - if (v != v1) { - v.setPressed(false); - v1.setPressed(true); - } - break; - case MotionEvent.ACTION_UP: - mViews.get(mCurrent).performClick(); - mViews.get(mCurrent).setPressed(false); - break; - default: - break; - } - return true; - } - -} diff --git a/src/com/android/browser/view/PieItem.java b/src/com/android/browser/view/PieItem.java deleted file mode 100644 index 9e04ecbf..00000000 --- a/src/com/android/browser/view/PieItem.java +++ /dev/null @@ -1,159 +0,0 @@ -/* - * Copyright (C) 2011 The Android Open Source Project - * - * Licensed under the Apache License, Version 2.0 (the "License"); you may not - * use this file except in compliance with the License. You may obtain a copy of - * the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT - * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the - * License for the specific language governing permissions and limitations under - * the License. - */ - -package com.android.browser.view; - -import android.view.View; - -import com.android.browser.view.PieMenu.PieView; - -import java.util.ArrayList; -import java.util.List; - -/** - * Pie menu item - */ -public class PieItem { - - private View mView; - private PieView mPieView; - private int level; - private float start; - private float sweep; - private float animate; - private int inner; - private int outer; - private boolean mSelected; - private boolean mEnabled; - private List<PieItem> mItems; - - public PieItem(View view, int level) { - mView = view; - this.level = level; - mEnabled = true; - setAnimationAngle(getAnimationAngle()); - setAlpha(getAlpha()); - } - - public PieItem(View view, int level, PieView sym) { - mView = view; - this.level = level; - mPieView = sym; - mEnabled = false; - } - - public boolean hasItems() { - return mItems != null; - } - - public List<PieItem> getItems() { - return mItems; - } - - public void addItem(PieItem item) { - if (mItems == null) { - mItems = new ArrayList<PieItem>(); - } - mItems.add(item); - } - - public void setAlpha(float alpha) { - if (mView != null) { - mView.setAlpha(alpha); - } - } - - public float getAlpha() { - if (mView != null) { - return mView.getAlpha(); - } - return 1; - } - - public void setAnimationAngle(float a) { - animate = a; - } - - public float getAnimationAngle() { - return animate; - } - - public void setEnabled(boolean enabled) { - mEnabled = enabled; - } - - public void setSelected(boolean s) { - mSelected = s; - if (mView != null) { - mView.setSelected(s); - } - } - - public boolean isSelected() { - return mSelected; - } - - public int getLevel() { - return level; - } - - public void setGeometry(float st, float sw, int inside, int outside) { - start = st; - sweep = sw; - inner = inside; - outer = outside; - } - - public float getStart() { - return start; - } - - public float getStartAngle() { - return start + animate; - } - - public float getSweep() { - return sweep; - } - - public int getInnerRadius() { - return inner; - } - - public int getOuterRadius() { - return outer; - } - - public boolean isPieView() { - return (mPieView != null); - } - - public View getView() { - return mView; - } - - public void setPieView(PieView sym) { - mPieView = sym; - } - - public PieView getPieView() { - if (mEnabled) { - return mPieView; - } - return null; - } - -} diff --git a/src/com/android/browser/view/PieListView.java b/src/com/android/browser/view/PieListView.java deleted file mode 100644 index 1043fc77..00000000 --- a/src/com/android/browser/view/PieListView.java +++ /dev/null @@ -1,83 +0,0 @@ -/* - * Copyright (C) 2011 The Android Open Source Project - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package com.android.browser.view; - -import com.android.browser.R; - -import android.content.Context; -import android.graphics.Canvas; -import android.graphics.Paint; -import android.view.View; - -/** - * shows views in a menu style list - */ -public class PieListView extends BasePieView { - - private Paint mBgPaint; - - public PieListView(Context ctx) { - mBgPaint = new Paint(); - mBgPaint.setColor(ctx.getResources().getColor(R.color.qcMenuBackground)); - } - - /** - * this will be called before the first draw call - */ - @Override - public void layout(int anchorX, int anchorY, boolean left, float angle, - int pHeight) { - super.layout(anchorX, anchorY, left, angle, pHeight); - buildViews(); - mWidth = mChildWidth; - mHeight = mChildHeight * mAdapter.getCount(); - mLeft = anchorX + (left ? 0 : - mChildWidth); - mTop = Math.max(anchorY - mHeight / 2, 0); - if (mTop + mHeight > pHeight) { - mTop = pHeight - mHeight; - } - if (mViews != null) { - layoutChildrenLinear(); - } - } - - protected void layoutChildrenLinear() { - final int n = mViews.size(); - int top = mTop; - for (View view : mViews) { - view.layout(mLeft, top, mLeft + mChildWidth, top + mChildHeight); - top += mChildHeight; - } - } - - @Override - public void draw(Canvas canvas) { - canvas.drawRect(mLeft, mTop, mLeft + mWidth, mTop + mHeight, mBgPaint); - if (mViews != null) { - for (View view : mViews) { - drawView(view, canvas); - } - } - } - - @Override - protected int findChildAt(int y) { - final int ix = (y - mTop) * mViews.size() / mHeight; - return ix; - } - -} diff --git a/src/com/android/browser/view/PieMenu.java b/src/com/android/browser/view/PieMenu.java deleted file mode 100644 index 1699c274..00000000 --- a/src/com/android/browser/view/PieMenu.java +++ /dev/null @@ -1,636 +0,0 @@ -/* - * Copyright (C) 2010 The Android Open Source Project - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package com.android.browser.view; - -import android.animation.Animator; -import android.animation.Animator.AnimatorListener; -import android.animation.AnimatorListenerAdapter; -import android.animation.ValueAnimator; -import android.animation.ValueAnimator.AnimatorUpdateListener; -import android.content.Context; -import android.content.res.Resources; -import android.graphics.Canvas; -import android.graphics.Paint; -import android.graphics.Path; -import android.graphics.Point; -import android.graphics.PointF; -import android.graphics.RectF; -import android.graphics.drawable.Drawable; -import android.util.AttributeSet; -import android.view.MotionEvent; -import android.view.SoundEffectConstants; -import android.view.View; -import android.view.ViewGroup; -import android.widget.FrameLayout; - -import com.android.browser.R; - -import java.util.ArrayList; -import java.util.List; - -public class PieMenu extends FrameLayout { - - private static final int MAX_LEVELS = 5; - private static final long ANIMATION = 80; - - public interface PieController { - /** - * called before menu opens to customize menu - * returns if pie state has been changed - */ - public boolean onOpen(); - public void stopEditingUrl(); - - } - - /** - * A view like object that lives off of the pie menu - */ - public interface PieView { - - public interface OnLayoutListener { - public void onLayout(int ax, int ay, boolean left); - } - - public void setLayoutListener(OnLayoutListener l); - - public void layout(int anchorX, int anchorY, boolean onleft, float angle, - int parentHeight); - - public void draw(Canvas c); - - public boolean onTouchEvent(MotionEvent evt); - - } - - private Point mCenter; - private int mRadius; - private int mRadiusInc; - private int mSlop; - private int mTouchOffset; - private Path mPath; - - private boolean mOpen; - private PieController mController; - - private List<PieItem> mItems; - private int mLevels; - private int[] mCounts; - private PieView mPieView = null; - - // sub menus - private List<PieItem> mCurrentItems; - private PieItem mOpenItem; - - private Drawable mBackground; - private Paint mNormalPaint; - private Paint mSelectedPaint; - private Paint mSubPaint; - - // touch handling - private PieItem mCurrentItem; - - private boolean mUseBackground; - private boolean mAnimating; - - /** - * @param context - * @param attrs - * @param defStyle - */ - public PieMenu(Context context, AttributeSet attrs, int defStyle) { - super(context, attrs, defStyle); - init(context); - } - - /** - * @param context - * @param attrs - */ - public PieMenu(Context context, AttributeSet attrs) { - super(context, attrs); - init(context); - } - - /** - * @param context - */ - public PieMenu(Context context) { - super(context); - init(context); - } - - private void init(Context ctx) { - mItems = new ArrayList<PieItem>(); - mLevels = 0; - mCounts = new int[MAX_LEVELS]; - Resources res = ctx.getResources(); - mRadius = (int) res.getDimension(R.dimen.qc_radius_start); - mRadiusInc = (int) res.getDimension(R.dimen.qc_radius_increment); - mSlop = (int) res.getDimension(R.dimen.qc_slop); - mTouchOffset = (int) res.getDimension(R.dimen.qc_touch_offset); - mOpen = false; - setWillNotDraw(false); - setDrawingCacheEnabled(false); - mCenter = new Point(0,0); - mBackground = res.getDrawable(R.drawable.qc_background_normal); - mNormalPaint = new Paint(); - mNormalPaint.setColor(res.getColor(R.color.qc_normal)); - mNormalPaint.setAntiAlias(true); - mSelectedPaint = new Paint(); - mSelectedPaint.setColor(res.getColor(R.color.qc_selected)); - mSelectedPaint.setAntiAlias(true); - mSubPaint = new Paint(); - mSubPaint.setAntiAlias(true); - mSubPaint.setColor(res.getColor(R.color.qc_sub)); - } - - public void setController(PieController ctl) { - mController = ctl; - } - - public void setUseBackground(boolean useBackground) { - mUseBackground = useBackground; - } - - public void addItem(PieItem item) { - // add the item to the pie itself - mItems.add(item); - int l = item.getLevel(); - mLevels = Math.max(mLevels, l); - mCounts[l]++; - } - - public void removeItem(PieItem item) { - mItems.remove(item); - } - - public void clearItems() { - mItems.clear(); - } - - private boolean onTheLeft() { - return mCenter.x < mSlop; - } - - /** - * guaranteed has center set - * @param show - */ - private void show(boolean show) { - mOpen = show; - if (mOpen) { - // ensure clean state - mAnimating = false; - mCurrentItem = null; - mOpenItem = null; - mPieView = null; - mController.stopEditingUrl(); - mCurrentItems = mItems; - for (PieItem item : mCurrentItems) { - item.setSelected(false); - } - if (mController != null) { - boolean changed = mController.onOpen(); - } - layoutPie(); - animateOpen(); - } - invalidate(); - } - - private void animateOpen() { - ValueAnimator anim = ValueAnimator.ofFloat(0, 1); - anim.addUpdateListener(new AnimatorUpdateListener() { - @Override - public void onAnimationUpdate(ValueAnimator animation) { - for (PieItem item : mCurrentItems) { - item.setAnimationAngle((1 - animation.getAnimatedFraction()) * (- item.getStart())); - } - invalidate(); - } - - }); - anim.setDuration(2*ANIMATION); - anim.start(); - } - - private void setCenter(int x, int y) { - if (x < mSlop) { - mCenter.x = 0; - } else { - mCenter.x = getWidth(); - } - mCenter.y = y; - } - - private void layoutPie() { - float emptyangle = (float) Math.PI / 16; - int rgap = 2; - int inner = mRadius + rgap; - int outer = mRadius + mRadiusInc - rgap; - int gap = 1; - for (int i = 0; i < mLevels; i++) { - int level = i + 1; - float sweep = (float) (Math.PI - 2 * emptyangle) / mCounts[level]; - float angle = emptyangle + sweep / 2; - mPath = makeSlice(getDegrees(0) - gap, getDegrees(sweep) + gap, outer, inner, mCenter); - for (PieItem item : mCurrentItems) { - if (item.getLevel() == level) { - View view = item.getView(); - if (view != null) { - view.measure(view.getLayoutParams().width, - view.getLayoutParams().height); - int w = view.getMeasuredWidth(); - int h = view.getMeasuredHeight(); - int r = inner + (outer - inner) * 2 / 3; - int x = (int) (r * Math.sin(angle)); - int y = mCenter.y - (int) (r * Math.cos(angle)) - h / 2; - if (onTheLeft()) { - x = mCenter.x + x - w / 2; - } else { - x = mCenter.x - x - w / 2; - } - view.layout(x, y, x + w, y + h); - } - float itemstart = angle - sweep / 2; - item.setGeometry(itemstart, sweep, inner, outer); - angle += sweep; - } - } - inner += mRadiusInc; - outer += mRadiusInc; - } - } - - - /** - * converts a - * - * @param angle from 0..PI to Android degrees (clockwise starting at 3 - * o'clock) - * @return skia angle - */ - private float getDegrees(double angle) { - return (float) (270 - 180 * angle / Math.PI); - } - - @Override - protected void onDraw(Canvas canvas) { - if (mOpen) { - int state; - if (mUseBackground) { - int w = mBackground.getIntrinsicWidth(); - int h = mBackground.getIntrinsicHeight(); - int left = mCenter.x - w; - int top = mCenter.y - h / 2; - mBackground.setBounds(left, top, left + w, top + h); - state = canvas.save(); - if (onTheLeft()) { - canvas.scale(-1, 1); - } - mBackground.draw(canvas); - canvas.restoreToCount(state); - } - // draw base menu - PieItem last = mCurrentItem; - if (mOpenItem != null) { - last = mOpenItem; - } - for (PieItem item : mCurrentItems) { - if (item != last) { - drawItem(canvas, item); - } - } - if (last != null) { - drawItem(canvas, last); - } - if (mPieView != null) { - mPieView.draw(canvas); - } - } - } - - private void drawItem(Canvas canvas, PieItem item) { - if (item.getView() != null) { - Paint p = item.isSelected() ? mSelectedPaint : mNormalPaint; - if (!mItems.contains(item)) { - p = item.isSelected() ? mSelectedPaint : mSubPaint; - } - int state = canvas.save(); - if (onTheLeft()) { - canvas.scale(-1, 1); - } - float r = getDegrees(item.getStartAngle()) - 270; // degrees(0) - canvas.rotate(r, mCenter.x, mCenter.y); - canvas.drawPath(mPath, p); - canvas.restoreToCount(state); - // draw the item view - View view = item.getView(); - state = canvas.save(); - canvas.translate(view.getX(), view.getY()); - view.draw(canvas); - canvas.restoreToCount(state); - } - } - - private Path makeSlice(float start, float end, int outer, int inner, Point center) { - RectF bb = - new RectF(center.x - outer, center.y - outer, center.x + outer, - center.y + outer); - RectF bbi = - new RectF(center.x - inner, center.y - inner, center.x + inner, - center.y + inner); - Path path = new Path(); - path.arcTo(bb, start, end - start, true); - path.arcTo(bbi, end, start - end); - path.close(); - return path; - } - - // touch handling for pie - - @Override - public boolean onTouchEvent(MotionEvent evt) { - float x = evt.getX(); - float y = evt.getY(); - int action = evt.getActionMasked(); - if (MotionEvent.ACTION_DOWN == action) { - if ((x > getWidth() - mSlop) || (x < mSlop)) { - setCenter((int) x, (int) y); - show(true); - return true; - } - } else if (MotionEvent.ACTION_UP == action) { - if (mOpen) { - boolean handled = false; - if (mPieView != null) { - handled = mPieView.onTouchEvent(evt); - } - PieItem item = mCurrentItem; - if (!mAnimating) { - deselect(); - } - show(false); - if (!handled && (item != null) && (item.getView() != null)) { - if ((item == mOpenItem) || !mAnimating) { - item.getView().performClick(); - } - } - return true; - } - } else if (MotionEvent.ACTION_CANCEL == action) { - if (mOpen) { - show(false); - } - if (!mAnimating) { - deselect(); - invalidate(); - } - return false; - } else if (MotionEvent.ACTION_MOVE == action) { - if (mAnimating) return false; - boolean handled = false; - PointF polar = getPolar(x, y); - int maxr = mRadius + mLevels * mRadiusInc + 50; - if (mPieView != null) { - handled = mPieView.onTouchEvent(evt); - } - if (handled) { - invalidate(); - return false; - } - if (polar.y < mRadius) { - if (mOpenItem != null) { - closeSub(); - } else if (!mAnimating) { - deselect(); - invalidate(); - } - return false; - } - if (polar.y > maxr) { - deselect(); - show(false); - evt.setAction(MotionEvent.ACTION_DOWN); - if (getParent() != null) { - ((ViewGroup) getParent()).dispatchTouchEvent(evt); - } - return false; - } - PieItem item = findItem(polar); - if (item == null) { - } else if (mCurrentItem != item) { - onEnter(item); - if ((item != null) && item.isPieView() && (item.getView() != null)) { - int cx = item.getView().getLeft() + (onTheLeft() - ? item.getView().getWidth() : 0); - int cy = item.getView().getTop(); - mPieView = item.getPieView(); - layoutPieView(mPieView, cx, cy, - (item.getStartAngle() + item.getSweep()) / 2); - } - invalidate(); - } - } - // always re-dispatch event - return false; - } - - private void layoutPieView(PieView pv, int x, int y, float angle) { - pv.layout(x, y, onTheLeft(), angle, getHeight()); - } - - /** - * enter a slice for a view - * updates model only - * @param item - */ - private void onEnter(PieItem item) { - // deselect - if (mCurrentItem != null) { - mCurrentItem.setSelected(false); - } - if (item != null) { - // clear up stack - playSoundEffect(SoundEffectConstants.CLICK); - item.setSelected(true); - mPieView = null; - mCurrentItem = item; - if ((mCurrentItem != mOpenItem) && mCurrentItem.hasItems()) { - openSub(mCurrentItem); - mOpenItem = item; - } - } else { - mCurrentItem = null; - } - - } - - private void animateOut(final PieItem fixed, AnimatorListener listener) { - if ((mCurrentItems == null) || (fixed == null)) return; - final float target = fixed.getStartAngle(); - ValueAnimator anim = ValueAnimator.ofFloat(0, 1); - anim.addUpdateListener(new AnimatorUpdateListener() { - @Override - public void onAnimationUpdate(ValueAnimator animation) { - for (PieItem item : mCurrentItems) { - if (item != fixed) { - item.setAnimationAngle(animation.getAnimatedFraction() - * (target - item.getStart())); - } - } - invalidate(); - } - }); - anim.setDuration(ANIMATION); - anim.addListener(listener); - anim.start(); - } - - private void animateIn(final PieItem fixed, AnimatorListener listener) { - if ((mCurrentItems == null) || (fixed == null)) return; - final float target = fixed.getStartAngle(); - ValueAnimator anim = ValueAnimator.ofFloat(0, 1); - anim.addUpdateListener(new AnimatorUpdateListener() { - @Override - public void onAnimationUpdate(ValueAnimator animation) { - for (PieItem item : mCurrentItems) { - if (item != fixed) { - item.setAnimationAngle((1 - animation.getAnimatedFraction()) - * (target - item.getStart())); - } - } - invalidate(); - - } - - }); - anim.setDuration(ANIMATION); - anim.addListener(listener); - anim.start(); - } - - private void openSub(final PieItem item) { - mAnimating = true; - animateOut(item, new AnimatorListenerAdapter() { - public void onAnimationEnd(Animator a) { - for (PieItem item : mCurrentItems) { - item.setAnimationAngle(0); - } - mCurrentItems = new ArrayList<PieItem>(mItems.size()); - int i = 0, j = 0; - while (i < mItems.size()) { - if (mItems.get(i) == item) { - mCurrentItems.add(item); - } else { - mCurrentItems.add(item.getItems().get(j++)); - } - i++; - } - layoutPie(); - animateIn(item, new AnimatorListenerAdapter() { - public void onAnimationEnd(Animator a) { - for (PieItem item : mCurrentItems) { - item.setAnimationAngle(0); - } - mAnimating = false; - } - }); - } - }); - } - - private void closeSub() { - mAnimating = true; - if (mCurrentItem != null) { - mCurrentItem.setSelected(false); - } - animateOut(mOpenItem, new AnimatorListenerAdapter() { - public void onAnimationEnd(Animator a) { - for (PieItem item : mCurrentItems) { - item.setAnimationAngle(0); - } - mCurrentItems = mItems; - mPieView = null; - animateIn(mOpenItem, new AnimatorListenerAdapter() { - public void onAnimationEnd(Animator a) { - for (PieItem item : mCurrentItems) { - item.setAnimationAngle(0); - } - mAnimating = false; - mOpenItem = null; - mCurrentItem = null; - } - }); - } - }); - } - - private void deselect() { - if (mCurrentItem != null) { - mCurrentItem.setSelected(false); - } - if (mOpenItem != null) { - mOpenItem = null; - mCurrentItems = mItems; - } - mCurrentItem = null; - mPieView = null; - } - - private PointF getPolar(float x, float y) { - PointF res = new PointF(); - // get angle and radius from x/y - res.x = (float) Math.PI / 2; - x = mCenter.x - x; - if (mCenter.x < mSlop) { - x = -x; - } - y = mCenter.y - y; - res.y = (float) Math.sqrt(x * x + y * y); - if (y > 0) { - res.x = (float) Math.asin(x / res.y); - } else if (y < 0) { - res.x = (float) (Math.PI - Math.asin(x / res.y )); - } - return res; - } - - /** - * - * @param polar x: angle, y: dist - * @return the item at angle/dist or null - */ - private PieItem findItem(PointF polar) { - // find the matching item: - for (PieItem item : mCurrentItems) { - if (inside(polar, mTouchOffset, item)) { - return item; - } - } - return null; - } - - private boolean inside(PointF polar, float offset, PieItem item) { - return (item.getInnerRadius() - offset < polar.y) - && (item.getOuterRadius() - offset > polar.y) - && (item.getStartAngle() < polar.x) - && (item.getStartAngle() + item.getSweep() > polar.x); - } - -} diff --git a/src/com/android/browser/view/PieStackView.java b/src/com/android/browser/view/PieStackView.java deleted file mode 100644 index e1f41bd8..00000000 --- a/src/com/android/browser/view/PieStackView.java +++ /dev/null @@ -1,104 +0,0 @@ -/* - * Copyright (C) 2011 The Android Open Source Project - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package com.android.browser.view; - -import com.android.browser.R; - -import android.content.Context; -import android.graphics.Canvas; -import android.view.View; - -/** - * shows views in a stack - */ -public class PieStackView extends BasePieView { - - private static final int SLOP = 5; - - private OnCurrentListener mCurrentListener; - private int mMinHeight; - - public interface OnCurrentListener { - public void onSetCurrent(int index); - } - - public PieStackView(Context ctx) { - mMinHeight = (int) ctx.getResources() - .getDimension(R.dimen.qc_tab_title_height); - } - - public void setOnCurrentListener(OnCurrentListener l) { - mCurrentListener = l; - } - - @Override - public void setCurrent(int ix) { - super.setCurrent(ix); - if (mCurrentListener != null) { - mCurrentListener.onSetCurrent(ix); - } - } - - /** - * this will be called before the first draw call - */ - @Override - public void layout(int anchorX, int anchorY, boolean left, float angle, - int pHeight) { - super.layout(anchorX, anchorY, left, angle, pHeight); - buildViews(); - mWidth = mChildWidth; - mHeight = mChildHeight + (mViews.size() - 1) * mMinHeight; - mLeft = anchorX + (left ? SLOP : -(SLOP + mChildWidth)); - mTop = anchorY - mHeight / 2; - if (mViews != null) { - layoutChildrenLinear(); - } - } - - private void layoutChildrenLinear() { - final int n = mViews.size(); - int top = mTop; - int dy = (n == 1) ? 0 : (mHeight - mChildHeight) / (n - 1); - for (View view : mViews) { - int x = mLeft; - view.layout(x, top, x + mChildWidth, top + mChildHeight); - top += dy; - } - } - - @Override - public void draw(Canvas canvas) { - if ((mViews != null) && (mCurrent > -1)) { - final int n = mViews.size(); - for (int i = 0; i < mCurrent; i++) { - drawView(mViews.get(i), canvas); - } - for (int i = n - 1; i > mCurrent; i--) { - drawView(mViews.get(i), canvas); - } - drawView(mViews.get(mCurrent), canvas); - } - } - - @Override - protected int findChildAt(int y) { - final int ix = (y - mTop) * mViews.size() / mHeight; - return ix; - } - -} |