summaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
authorVivek Sekhar <vsekhar@codeaurora.org>2014-10-22 17:03:42 -0700
committerVivek Sekhar <vsekhar@codeaurora.org>2014-10-23 11:14:07 -0700
commit3bec6a3b7fe6dd30e9dd2a2065ffca19ff6af542 (patch)
treeb9a75dba5245a4ee39ccc0d5163e9f93acd57a30 /src
parent46c3ec0fec8a2fc53619cead8dae5edbae2a6f3a (diff)
downloadandroid_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.java34
-rw-r--r--src/com/android/browser/BrowserSettings.java8
-rw-r--r--src/com/android/browser/BrowserWebViewFactory.java2
-rw-r--r--src/com/android/browser/NavigationBarBase.java3
-rw-r--r--src/com/android/browser/NavigationBarTablet.java6
-rw-r--r--src/com/android/browser/PhoneUi.java20
-rw-r--r--src/com/android/browser/PieControl.java346
-rw-r--r--src/com/android/browser/PreferenceKeys.java1
-rw-r--r--src/com/android/browser/Tab.java2
-rw-r--r--src/com/android/browser/TabBar.java38
-rw-r--r--src/com/android/browser/TitleBar.java72
-rw-r--r--src/com/android/browser/UI.java2
-rw-r--r--src/com/android/browser/XLargeUi.java33
-rw-r--r--src/com/android/browser/view/BasePieView.java162
-rw-r--r--src/com/android/browser/view/PieItem.java159
-rw-r--r--src/com/android/browser/view/PieListView.java83
-rw-r--r--src/com/android/browser/view/PieMenu.java636
-rw-r--r--src/com/android/browser/view/PieStackView.java104
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;
- }
-
-}