blob: f12c49ad76565f04aaf116ee2f424c8d05f84400 [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
27import com.android.browser.view.PieItem;
28import com.android.browser.view.PieMenu.PieView.OnLayoutListener;
29import com.android.browser.view.PieStackView;
30
31import java.util.List;
32
33/**
34 * controller for Quick Controls pie menu
35 */
Michael Kolb71677382011-09-27 13:37:28 -070036public class PieControlPhone extends PieControlBase implements OnClickListener,
37 OnMenuItemClickListener {
Michael Kolb0241e752011-07-07 14:58:50 -070038
39 private PhoneUi mUi;
Michael Kolb0241e752011-07-07 14:58:50 -070040 private PieItem mUrl;
41 private PieItem mShowTabs;
Michael Kolb71677382011-09-27 13:37:28 -070042 private PieItem mOptions;
Michael Kolb0241e752011-07-07 14:58:50 -070043 private TabAdapter mTabAdapter;
Michael Kolb71677382011-09-27 13:37:28 -070044 private PopupMenu mPopup;
Michael Kolb0241e752011-07-07 14:58:50 -070045
46 public PieControlPhone(Activity activity, UiController controller, PhoneUi ui) {
47 super(activity, controller);
48 mUi = ui;
49 }
50
51 protected void populateMenu() {
Michael Kolb0241e752011-07-07 14:58:50 -070052 mUrl = makeItem(R.drawable.ic_web_holo_dark, 1);
53 View tabs = makeTabsView();
54 mShowTabs = new PieItem(tabs, 1);
55 mTabAdapter = new TabAdapter(mActivity, mUiController);
56 PieStackView stack = new PieStackView(mActivity);
57 stack.setLayoutListener(new OnLayoutListener() {
58 @Override
59 public void onLayout(int ax, int ay, boolean left) {
60 buildTabs();
61 }
62 });
63 stack.setOnCurrentListener(mTabAdapter);
64 stack.setAdapter(mTabAdapter);
65 mShowTabs.setPieView(stack);
Michael Kolb71677382011-09-27 13:37:28 -070066 mOptions = makeItem(com.android.internal.R.drawable.ic_menu_moreoverflow_normal_holo_dark,
67 1);
68
Michael Kolb0241e752011-07-07 14:58:50 -070069 // level 1
Michael Kolb0241e752011-07-07 14:58:50 -070070 mPie.addItem(mShowTabs);
Michael Kolb71677382011-09-27 13:37:28 -070071 mPie.addItem(mUrl);
72 mPie.addItem(mOptions);
73 setClickListener(this, mUrl, mShowTabs, mOptions);
74 mPopup = new PopupMenu(mActivity, mUi.getTitleBar());
75 Menu menu = mPopup.getMenu();
76 mPopup.getMenuInflater().inflate(R.menu.browser, menu);
77 mPopup.setOnMenuItemClickListener(this);
Michael Kolb0241e752011-07-07 14:58:50 -070078 }
79
Michael Kolb71677382011-09-27 13:37:28 -070080 protected void showMenu() {
81 mUiController.updateMenuState(mUiController.getCurrentTab(), mPopup.getMenu());
82 mPopup.show();
83 }
84
85 @Override
86 public boolean onMenuItemClick(MenuItem item) {
87 return mUiController.onOptionsItemSelected(item);
88 }
89
90
Michael Kolb0241e752011-07-07 14:58:50 -070091 private void buildTabs() {
92 final List<Tab> tabs = mUiController.getTabs();
John Reck1cf4b792011-07-26 10:22:22 -070093 mUi.getActiveTab().capture();
Michael Kolb0241e752011-07-07 14:58:50 -070094 mTabAdapter.setTabs(tabs);
95 PieStackView sym = (PieStackView) mShowTabs.getPieView();
96 sym.setCurrent(mUiController.getTabControl().getCurrentPosition());
97
98 }
99
100 @Override
101 public void onClick(View v) {
Michael Kolb71677382011-09-27 13:37:28 -0700102 if (mUrl.getView() == v) {
Michael Kolb0241e752011-07-07 14:58:50 -0700103 mUi.editUrl(false);
104 } else if (mShowTabs.getView() == v) {
105 mUi.showNavScreen();
Michael Kolb71677382011-09-27 13:37:28 -0700106 } else if (mOptions.getView() == v) {
107 showMenu();
Michael Kolb0241e752011-07-07 14:58:50 -0700108 }
109 }
110
Michael Kolb0241e752011-07-07 14:58:50 -0700111}