/* * 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.view.Menu; import android.view.MenuItem; import android.view.View; import android.view.View.OnClickListener; import android.widget.PopupMenu; import android.widget.PopupMenu.OnMenuItemClickListener; import com.android.browser.UI.ComboViews; import com.android.browser.view.PieItem; import com.android.browser.view.PieMenu.PieView.OnLayoutListener; import com.android.browser.view.PieStackView; import java.util.List; /** * controller for Quick Controls pie menu */ public class PieControlPhone extends PieControlBase implements OnClickListener, OnMenuItemClickListener { private PhoneUi mUi; private PieItem mUrl; private PieItem mShowTabs; private PieItem mOptions; private PieItem mNewTab; private PieItem mBookmarks; private TabAdapter mTabAdapter; private PopupMenu mPopup; public PieControlPhone(Activity activity, UiController controller, PhoneUi ui) { super(activity, controller); mUi = ui; } protected void populateMenu() { mUrl = makeItem(R.drawable.ic_web_holo_dark, 1); View tabs = makeTabsView(); mShowTabs = new PieItem(tabs, 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); mOptions = makeItem(com.android.internal.R.drawable.ic_menu_moreoverflow_normal_holo_dark, 1); // level 1 mNewTab = makeItem(R.drawable.ic_new_window_holo_dark, 1); mBookmarks = makeItem(R.drawable.ic_bookmarks_holo_dark, 1); mPie.addItem(mNewTab); mPie.addItem(mShowTabs); mPie.addItem(mUrl); mPie.addItem(mBookmarks); mPie.addItem(mOptions); setClickListener(this, mUrl, mShowTabs, mOptions, mNewTab, mBookmarks); mPopup = new PopupMenu(mActivity, mUi.getTitleBar()); Menu menu = mPopup.getMenu(); mPopup.getMenuInflater().inflate(R.menu.browser, menu); mPopup.setOnMenuItemClickListener(this); } protected void showMenu() { mUiController.updateMenuState(mUiController.getCurrentTab(), mPopup.getMenu()); mPopup.show(); } @Override public boolean onMenuItemClick(MenuItem item) { return mUiController.onOptionsItemSelected(item); } 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()); } @Override public void onClick(View v) { if (mUrl.getView() == v) { mUi.editUrl(false); } else if (mShowTabs.getView() == v) { mUi.showNavScreen(); } else if (mOptions.getView() == v) { showMenu(); } else if (mNewTab.getView() == v) { mUiController.openTabToHomePage(); mUi.editUrl(false); } else if (mBookmarks.getView() == v) { mUiController.bookmarksOrHistoryPicker(ComboViews.Bookmarks); } } }