blob: 2b6a3c532b7c7fb8ec325dd1af1cb5382cb32b9a [file] [log] [blame]
Michael Kolb0241e752011-07-07 14:58:50 -07001/*
2 * Copyright (C) 2011 The Android Open Source Project
3 *
4 * Licensed under the Apache License, Version 2.0 (the "License");
5 * you may not use this file except in compliance with the License.
6 * You may obtain a copy of the License at
7 *
8 * http://www.apache.org/licenses/LICENSE-2.0
9 *
10 * Unless required by applicable law or agreed to in writing, software
11 * distributed under the License is distributed on an "AS IS" BASIS,
12 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 * See the License for the specific language governing permissions and
14 * limitations under the License.
15 */
16
17package com.android.browser;
18
19import android.app.Activity;
Michael Kolb71677382011-09-27 13:37:28 -070020import android.view.Menu;
21import android.view.MenuItem;
Michael Kolb0241e752011-07-07 14:58:50 -070022import android.view.View;
23import android.view.View.OnClickListener;
Michael Kolb71677382011-09-27 13:37:28 -070024import android.widget.PopupMenu;
25import android.widget.PopupMenu.OnMenuItemClickListener;
Michael Kolb0241e752011-07-07 14:58:50 -070026
Michael Kolb59b4ff32011-11-22 16:13:43 -080027import com.android.browser.UI.ComboViews;
Michael Kolb0241e752011-07-07 14:58:50 -070028import com.android.browser.view.PieItem;
29import com.android.browser.view.PieMenu.PieView.OnLayoutListener;
30import com.android.browser.view.PieStackView;
31
32import java.util.List;
33
34/**
35 * controller for Quick Controls pie menu
36 */
Michael Kolb71677382011-09-27 13:37:28 -070037public class PieControlPhone extends PieControlBase implements OnClickListener,
38 OnMenuItemClickListener {
Michael Kolb0241e752011-07-07 14:58:50 -070039
40 private PhoneUi mUi;
Michael Kolb0241e752011-07-07 14:58:50 -070041 private PieItem mUrl;
42 private PieItem mShowTabs;
Michael Kolb71677382011-09-27 13:37:28 -070043 private PieItem mOptions;
Michael Kolb59b4ff32011-11-22 16:13:43 -080044 private PieItem mNewTab;
45 private PieItem mBookmarks;
Michael Kolb0241e752011-07-07 14:58:50 -070046 private TabAdapter mTabAdapter;
Michael Kolb71677382011-09-27 13:37:28 -070047 private PopupMenu mPopup;
Michael Kolb0241e752011-07-07 14:58:50 -070048
49 public PieControlPhone(Activity activity, UiController controller, PhoneUi ui) {
50 super(activity, controller);
51 mUi = ui;
52 }
53
54 protected void populateMenu() {
Michael Kolb0241e752011-07-07 14:58:50 -070055 mUrl = makeItem(R.drawable.ic_web_holo_dark, 1);
56 View tabs = makeTabsView();
57 mShowTabs = new PieItem(tabs, 1);
58 mTabAdapter = new TabAdapter(mActivity, mUiController);
59 PieStackView stack = new PieStackView(mActivity);
60 stack.setLayoutListener(new OnLayoutListener() {
61 @Override
62 public void onLayout(int ax, int ay, boolean left) {
63 buildTabs();
64 }
65 });
66 stack.setOnCurrentListener(mTabAdapter);
67 stack.setAdapter(mTabAdapter);
68 mShowTabs.setPieView(stack);
Michael Kolb71677382011-09-27 13:37:28 -070069 mOptions = makeItem(com.android.internal.R.drawable.ic_menu_moreoverflow_normal_holo_dark,
70 1);
71
Michael Kolb0241e752011-07-07 14:58:50 -070072 // level 1
Michael Kolb59b4ff32011-11-22 16:13:43 -080073 mNewTab = makeItem(R.drawable.ic_new_window_holo_dark, 1);
74 mBookmarks = makeItem(R.drawable.ic_bookmarks_holo_dark, 1);
75 mPie.addItem(mNewTab);
Michael Kolb0241e752011-07-07 14:58:50 -070076 mPie.addItem(mShowTabs);
Michael Kolb71677382011-09-27 13:37:28 -070077 mPie.addItem(mUrl);
Michael Kolb59b4ff32011-11-22 16:13:43 -080078 mPie.addItem(mBookmarks);
Michael Kolb71677382011-09-27 13:37:28 -070079 mPie.addItem(mOptions);
Michael Kolb59b4ff32011-11-22 16:13:43 -080080 setClickListener(this, mUrl, mShowTabs, mOptions, mNewTab, mBookmarks);
Michael Kolb71677382011-09-27 13:37:28 -070081 mPopup = new PopupMenu(mActivity, mUi.getTitleBar());
82 Menu menu = mPopup.getMenu();
83 mPopup.getMenuInflater().inflate(R.menu.browser, menu);
84 mPopup.setOnMenuItemClickListener(this);
Michael Kolb0241e752011-07-07 14:58:50 -070085 }
86
Michael Kolb71677382011-09-27 13:37:28 -070087 protected void showMenu() {
88 mUiController.updateMenuState(mUiController.getCurrentTab(), mPopup.getMenu());
89 mPopup.show();
90 }
91
92 @Override
93 public boolean onMenuItemClick(MenuItem item) {
94 return mUiController.onOptionsItemSelected(item);
95 }
96
97
Michael Kolb0241e752011-07-07 14:58:50 -070098 private void buildTabs() {
99 final List<Tab> tabs = mUiController.getTabs();
John Reck1cf4b792011-07-26 10:22:22 -0700100 mUi.getActiveTab().capture();
Michael Kolb0241e752011-07-07 14:58:50 -0700101 mTabAdapter.setTabs(tabs);
102 PieStackView sym = (PieStackView) mShowTabs.getPieView();
103 sym.setCurrent(mUiController.getTabControl().getCurrentPosition());
104
105 }
106
107 @Override
108 public void onClick(View v) {
Michael Kolb71677382011-09-27 13:37:28 -0700109 if (mUrl.getView() == v) {
Michael Kolb0241e752011-07-07 14:58:50 -0700110 mUi.editUrl(false);
111 } else if (mShowTabs.getView() == v) {
112 mUi.showNavScreen();
Michael Kolb71677382011-09-27 13:37:28 -0700113 } else if (mOptions.getView() == v) {
114 showMenu();
Michael Kolb59b4ff32011-11-22 16:13:43 -0800115 } else if (mNewTab.getView() == v) {
116 mUiController.openTabToHomePage();
117 mUi.editUrl(false);
118 } else if (mBookmarks.getView() == v) {
119 mUiController.bookmarksOrHistoryPicker(ComboViews.Bookmarks);
Michael Kolb0241e752011-07-07 14:58:50 -0700120 }
121 }
122
Michael Kolb0241e752011-07-07 14:58:50 -0700123}