| /* |
| * 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_web); |
| 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(); |
| mUi.showFakeTitleBarAndEdit(); |
| } 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; |
| } |
| |
| } |