blob: ad47c724d6e5274240bc2329dd3d9e74e9729d31 [file] [log] [blame]
Michael Kolb376b5412010-12-15 11:52:57 -08001/*
2 * Copyright (C) 2010 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
Michael Kolb0860d992011-03-07 15:26:33 -080019import com.android.browser.view.PieItem;
Michael Kolb376b5412010-12-15 11:52:57 -080020import com.android.browser.view.PieMenu;
21
22import android.app.Activity;
23import android.view.View;
24import android.view.View.OnClickListener;
25import android.view.ViewGroup.LayoutParams;
26import android.webkit.WebView;
27import android.widget.FrameLayout;
28import android.widget.ImageView;
29
Michael Kolb376b5412010-12-15 11:52:57 -080030/**
31 * controller for Quick Controls pie menu
32 */
33public class PieControl implements OnClickListener, PieMenu.PieController {
34
35 private Activity mActivity;
36 private UiController mUiController;
37 private XLargeUi mUi;
38 private PieMenu mPie;
Michael Kolb0860d992011-03-07 15:26:33 -080039 private PieItem mBack;
40 private PieItem mForward;
41 private PieItem mRefresh;
42 private PieItem mUrl;
43 private PieItem mOptions;
44 private PieItem mBookmarks;
45 private PieItem mNewTab;
46 private PieItem mClose;
Michael Kolb376b5412010-12-15 11:52:57 -080047
48 public PieControl(Activity activity, UiController controller, XLargeUi ui) {
49 mActivity = activity;
50 mUiController = controller;
51 mUi = ui;
Michael Kolb376b5412010-12-15 11:52:57 -080052 }
53
54 protected void attachToContainer(FrameLayout container) {
55 if (mPie == null) {
56 mPie = new PieMenu(mActivity);
57 LayoutParams lp = new LayoutParams(LayoutParams.MATCH_PARENT,
58 LayoutParams.MATCH_PARENT);
59 mPie.setLayoutParams(lp);
Michael Kolb0860d992011-03-07 15:26:33 -080060 mBack = makeItem(R.drawable.ic_back_holo_dark, 1);
61 mUrl = makeItem(R.drawable.ic_web_holo_dark, 1);
62 mBookmarks = makeItem(R.drawable.ic_bookmarks_holo_dark, 1);
63 mRefresh = makeItem(R.drawable.ic_refresh_holo_dark, 2);
64 mForward = makeItem(R.drawable.ic_forward_holo_dark, 2);
65 mNewTab = makeItem(R.drawable.ic_new_window_holo_dark, 2);
66 mClose = makeItem(R.drawable.ic_close_window_holo_dark, 2);
67 mOptions = makeItem(
68 com.android.internal.R.drawable.ic_menu_moreoverflow_normal_holo_dark,
69 2);
Michael Kolb2a56eca2011-02-25 09:45:06 -080070 setClickListener(mBack,
Michael Kolb0860d992011-03-07 15:26:33 -080071 mRefresh,
72 mForward,
Michael Kolb2a56eca2011-02-25 09:45:06 -080073 mUrl,
74 mOptions,
75 mBookmarks,
Michael Kolb0860d992011-03-07 15:26:33 -080076 mNewTab,
77 mClose
Michael Kolb2a56eca2011-02-25 09:45:06 -080078 );
Michael Kolb0860d992011-03-07 15:26:33 -080079 // level 1
80 mPie.addItem(mBack);
81 mPie.addItem(mUrl);
82 mPie.addItem(mBookmarks);
83 // level 2
84 mPie.addItem(mForward);
85 mPie.addItem(mRefresh);
86 mPie.addItem(mNewTab);
87 mPie.addItem(mClose);
88 mPie.addItem(mOptions);
Michael Kolb376b5412010-12-15 11:52:57 -080089 mPie.setController(this);
90 }
91 container.addView(mPie);
92 }
93
94 protected void removeFromContainer(FrameLayout container) {
95 container.removeView(mPie);
96 }
97
Michael Kolb0860d992011-03-07 15:26:33 -080098 private PieItem makeItem(int image, int l) {
99 ImageView view = new ImageView(mActivity);
100 view.setImageResource(image);
101 view.setMinimumWidth(48);
102 view.setMinimumHeight(48);
Michael Kolb376b5412010-12-15 11:52:57 -0800103 LayoutParams lp = new LayoutParams(48, 48);
Michael Kolb0860d992011-03-07 15:26:33 -0800104 view.setLayoutParams(lp);
105 view.setBackgroundResource(R.drawable.qc_item_selector);
106 return new PieItem(view, l);
Michael Kolb376b5412010-12-15 11:52:57 -0800107 }
108
Michael Kolb0860d992011-03-07 15:26:33 -0800109 private void setClickListener(PieItem... items) {
110 for (PieItem item : items) {
111 item.getView().setOnClickListener(this);
Michael Kolb376b5412010-12-15 11:52:57 -0800112 }
113 }
114
115 protected void forceToTop(FrameLayout container) {
116 if (mPie.getParent() != null) {
117 container.removeView(mPie);
118 container.addView(mPie);
119 }
120 }
121
122 @Override
123 public void onClick(View v) {
Michael Kolb376b5412010-12-15 11:52:57 -0800124 Tab tab = mUiController.getTabControl().getCurrentTab();
125 WebView web = tab.getWebView();
Michael Kolb0860d992011-03-07 15:26:33 -0800126 if (mBack.getView() == v) {
Michael Kolb376b5412010-12-15 11:52:57 -0800127 web.goBack();
Michael Kolb0860d992011-03-07 15:26:33 -0800128 } else if (mForward.getView() == v) {
Michael Kolb376b5412010-12-15 11:52:57 -0800129 web.goForward();
Michael Kolb0860d992011-03-07 15:26:33 -0800130 } else if (mRefresh.getView() == v) {
Michael Kolb376b5412010-12-15 11:52:57 -0800131 if (tab.inPageLoad()) {
132 web.stopLoading();
133 } else {
134 web.reload();
135 }
Michael Kolb0860d992011-03-07 15:26:33 -0800136 } else if (mUrl.getView() == v) {
Michael Kolb7cdc4902011-02-03 17:54:40 -0800137 mUi.showTitleBarAndEdit();
Michael Kolb0860d992011-03-07 15:26:33 -0800138 } else if (mOptions.getView() == v) {
Michael Kolb376b5412010-12-15 11:52:57 -0800139 mActivity.openOptionsMenu();
Michael Kolb0860d992011-03-07 15:26:33 -0800140 } else if (mBookmarks.getView() == v) {
Michael Kolb376b5412010-12-15 11:52:57 -0800141 mUiController.bookmarksOrHistoryPicker(false);
Michael Kolb0860d992011-03-07 15:26:33 -0800142 } else if (mNewTab.getView() == v) {
Michael Kolb376b5412010-12-15 11:52:57 -0800143 mUiController.openTabToHomePage();
Michael Kolb7cdc4902011-02-03 17:54:40 -0800144 mUi.showTitleBarAndEdit();
Michael Kolb0860d992011-03-07 15:26:33 -0800145 } else if (mClose.getView() == v) {
Michael Kolb376b5412010-12-15 11:52:57 -0800146 mUiController.closeCurrentTab();
Michael Kolb376b5412010-12-15 11:52:57 -0800147 }
148 }
149
150 @Override
151 public boolean onOpen() {
Michael Kolb0860d992011-03-07 15:26:33 -0800152 return false;
Michael Kolb376b5412010-12-15 11:52:57 -0800153 }
154
155}