diff options
author | Michael Kolb <kolby@google.com> | 2010-12-15 11:52:57 -0800 |
---|---|---|
committer | Michael Kolb <kolby@google.com> | 2010-12-15 11:53:02 -0800 |
commit | 376b54116e38b3b94c4d64663d1bff38352b0e59 (patch) | |
tree | 97d9f406203b494b7dc529d17d8728858942d3ad /src/com/android/browser/PieControl.java | |
parent | 439c9a58765aa6aab95d55422ee61ea8360e912d (diff) | |
download | packages_apps_browser-376b54116e38b3b94c4d64663d1bff38352b0e59.zip packages_apps_browser-376b54116e38b3b94c4d64663d1bff38352b0e59.tar.gz packages_apps_browser-376b54116e38b3b94c4d64663d1bff38352b0e59.tar.bz2 |
Add quick controls
Bug: http://b/issue?id=3277888
Added Quick Controls Lab setting
Implemented Quick Controls UI
Change-Id: I72011daf9140aa5d15c8b785126867c10bbc5501
Diffstat (limited to 'src/com/android/browser/PieControl.java')
-rw-r--r-- | src/com/android/browser/PieControl.java | 151 |
1 files changed, 151 insertions, 0 deletions
diff --git a/src/com/android/browser/PieControl.java b/src/com/android/browser/PieControl.java new file mode 100644 index 0000000..210e9ea --- /dev/null +++ b/src/com/android/browser/PieControl.java @@ -0,0 +1,151 @@ +/* + * 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; + +import com.android.browser.view.PieMenu; + +import android.app.Activity; +import android.view.View; +import android.view.View.OnClickListener; +import android.view.ViewGroup.LayoutParams; +import android.webkit.WebView; +import android.widget.FrameLayout; +import android.widget.ImageView; + +import java.util.HashMap; +import java.util.Map; + +/** + * controller for Quick Controls pie menu + */ +public class PieControl implements OnClickListener, PieMenu.PieController { + + private Activity mActivity; + private UiController mUiController; + private XLargeUi mUi; + private PieMenu mPie; + private ImageView mBack; + private ImageView mForward; + private ImageView mRefresh; + private ImageView mUrl; + private ImageView mOptions; + private ImageView mBookmarks; + private ImageView mNewTab; + private ImageView mClose; + + private Map<View,Tab> mTabItems; + + boolean mNewTabMode = true; + + public PieControl(Activity activity, UiController controller, XLargeUi ui) { + mActivity = activity; + mUiController = controller; + mUi = ui; + mTabItems = new HashMap<View, Tab>(); + } + + 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); + mForward = makeMenuView(R.drawable.ic_pie_forward); + mPie.addItem(mForward); + mRefresh = makeMenuView(R.drawable.ic_pie_refresh); + mPie.addItem(mRefresh); + mBack = makeMenuView(R.drawable.ic_pie_back); + mPie.addItem(mBack); + mUrl = makeMenuView(R.drawable.ic_pie_search); + mPie.addItem(mUrl); + mBookmarks = makeMenuView(R.drawable.ic_pie_bookmarks); + mPie.addItem(mBookmarks); + mNewTab = makeMenuView(R.drawable.ic_pie_new_tab); + mPie.addItem(mNewTab); + mOptions = makeMenuView(R.drawable.ic_pie_more); + mPie.addItem(mOptions); + setClickListener(mBack, mForward, mRefresh, mUrl, mOptions, + mBookmarks, mNewTab); + mPie.setController(this); + } + container.addView(mPie); + } + + protected void removeFromContainer(FrameLayout container) { + container.removeView(mPie); + } + + private ImageView makeMenuView(int image) { + ImageView item = new ImageView(mActivity); + item.setImageResource(image); + LayoutParams lp = new LayoutParams(48, 48); + item.setLayoutParams(lp); + return item; + } + + private void setClickListener(View... views) { + for (View view : views) { + view.setOnClickListener(this); + } + } + + protected void forceToTop(FrameLayout container) { + if (mPie.getParent() != null) { + container.removeView(mPie); + container.addView(mPie); + } + } + + @Override + public void onClick(View v) { + mPie.show(false); + Tab tab = mUiController.getTabControl().getCurrentTab(); + WebView web = tab.getWebView(); + if (mBack == v) { + web.goBack(); + } else if (mForward == v) { + web.goForward(); + } else if (mRefresh == v) { + if (tab.inPageLoad()) { + web.stopLoading(); + } else { + web.reload(); + } + } else if (mUrl == v) { + mUi.showFakeTitleBarAndEdit(); + } else if (mOptions == v) { + mActivity.openOptionsMenu(); + } else if (mBookmarks == v) { + mUiController.bookmarksOrHistoryPicker(false); + } else if (mNewTab == v) { + mUiController.openTabToHomePage(); + } else if (mClose == v) { + mUiController.closeCurrentTab(); + } else { + Tab ntab = mTabItems.get(v); + if (ntab != null) { + mUiController.switchToTab(mUiController.getTabControl().getTabIndex(ntab)); + } + } + } + + @Override + public boolean onOpen() { + return true; + } + +} |