summaryrefslogtreecommitdiffstats
path: root/src/com/android/browser/NavScreen.java
diff options
context:
space:
mode:
authorBijan Amirzada <bijana@codeaurora.org>2014-03-21 12:12:18 -0700
committerBijan Amirzada <bijana@codeaurora.org>2014-03-21 15:49:20 -0700
commit41242f2ff13293612786e7550a934ee13d5f6b50 (patch)
treee75b2e10dddacf6fe76d45e8546e9d2472c84015 /src/com/android/browser/NavScreen.java
parenta9a5a583503419d8794356f1a3e515db05bda8d0 (diff)
downloadandroid_packages_apps_Gello-41242f2ff13293612786e7550a934ee13d5f6b50.tar.gz
android_packages_apps_Gello-41242f2ff13293612786e7550a934ee13d5f6b50.tar.bz2
android_packages_apps_Gello-41242f2ff13293612786e7550a934ee13d5f6b50.zip
Change SWE app properties back to stock Android
- Changed project package name from com.android.swe.browser back to com.android.browser along with code references to old package name. - Changes to AndroidManifest making it conform closer to stock browser manifest. - Changed app and apk name back to Browser. Change-Id: I778ee1d1197bd50bd4a4850eef6d1d7f4ef0ad0b
Diffstat (limited to 'src/com/android/browser/NavScreen.java')
-rw-r--r--src/com/android/browser/NavScreen.java266
1 files changed, 266 insertions, 0 deletions
diff --git a/src/com/android/browser/NavScreen.java b/src/com/android/browser/NavScreen.java
new file mode 100644
index 00000000..42b35de9
--- /dev/null
+++ b/src/com/android/browser/NavScreen.java
@@ -0,0 +1,266 @@
+/*
+ * 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.content.Context;
+import android.content.res.Configuration;
+import android.view.LayoutInflater;
+import android.view.Menu;
+import android.view.MenuItem;
+import android.view.View;
+import android.view.View.OnClickListener;
+import android.view.ViewConfiguration;
+import android.view.ViewGroup;
+import android.widget.BaseAdapter;
+import android.widget.FrameLayout;
+import android.widget.ImageButton;
+import android.widget.ImageView;
+import android.widget.LinearLayout;
+import android.widget.PopupMenu;
+import android.widget.PopupMenu.OnMenuItemClickListener;
+import android.widget.RelativeLayout;
+import android.widget.TextView;
+
+import com.android.browser.R;
+import com.android.browser.NavTabScroller.OnLayoutListener;
+import com.android.browser.NavTabScroller.OnRemoveListener;
+import com.android.browser.TabControl.OnThumbnailUpdatedListener;
+import com.android.browser.UI.ComboViews;
+
+import java.util.HashMap;
+
+public class NavScreen extends RelativeLayout
+ implements OnClickListener, OnMenuItemClickListener, OnThumbnailUpdatedListener {
+
+
+ UiController mUiController;
+ PhoneUi mUi;
+ Tab mTab;
+ Activity mActivity;
+
+ ImageButton mRefresh;
+ ImageButton mForward;
+ ImageButton mBookmarks;
+ ImageButton mMore;
+ ImageButton mNewTab;
+ FrameLayout mHolder;
+
+ TextView mTitle;
+ ImageView mFavicon;
+ ImageButton mCloseTab;
+
+ NavTabScroller mScroller;
+ TabAdapter mAdapter;
+ int mOrientation;
+ boolean mNeedsMenu;
+ HashMap<Tab, View> mTabViews;
+
+ public NavScreen(Activity activity, UiController ctl, PhoneUi ui) {
+ super(activity);
+ mActivity = activity;
+ mUiController = ctl;
+ mUi = ui;
+ mOrientation = activity.getResources().getConfiguration().orientation;
+ init();
+ }
+
+ protected void showMenu() {
+ PopupMenu popup = new PopupMenu(getContext(), mMore);
+ Menu menu = popup.getMenu();
+ popup.getMenuInflater().inflate(R.menu.browser, menu);
+ mUiController.updateMenuState(mUiController.getCurrentTab(), menu);
+ popup.setOnMenuItemClickListener(this);
+ popup.show();
+ }
+
+ @Override
+ public boolean onMenuItemClick(MenuItem item) {
+ return mUiController.onOptionsItemSelected(item);
+ }
+
+ protected float getToolbarHeight() {
+ return mActivity.getResources().getDimension(R.dimen.toolbar_height);
+ }
+
+ @Override
+ protected void onConfigurationChanged(Configuration newconfig) {
+ if (newconfig.orientation != mOrientation) {
+ int sv = mScroller.getScrollValue();
+ removeAllViews();
+ mOrientation = newconfig.orientation;
+ init();
+ mScroller.setScrollValue(sv);
+ mAdapter.notifyDataSetChanged();
+ }
+ }
+
+ public void refreshAdapter() {
+ mScroller.handleDataChanged(
+ mUiController.getTabControl().getTabPosition(mUi.getActiveTab()));
+ }
+
+ private void init() {
+ LayoutInflater.from(getContext()).inflate(R.layout.nav_screen, this);
+ setContentDescription(getContext().getResources().getString(
+ R.string.accessibility_transition_navscreen));
+ mBookmarks = (ImageButton) findViewById(R.id.bookmarks);
+ mNewTab = (ImageButton) findViewById(R.id.newtab);
+ mMore = (ImageButton) findViewById(R.id.more);
+ mBookmarks.setOnClickListener(this);
+ mNewTab.setOnClickListener(this);
+ mMore.setOnClickListener(this);
+ mScroller = (NavTabScroller) findViewById(R.id.scroller);
+ TabControl tc = mUiController.getTabControl();
+ mTabViews = new HashMap<Tab, View>(tc.getTabCount());
+ mAdapter = new TabAdapter(getContext(), tc);
+ mScroller.setOrientation(mOrientation == Configuration.ORIENTATION_LANDSCAPE
+ ? LinearLayout.HORIZONTAL : LinearLayout.VERTICAL);
+ // update state for active tab
+ mScroller.setAdapter(mAdapter,
+ mUiController.getTabControl().getTabPosition(mUi.getActiveTab()));
+ mScroller.setOnRemoveListener(new OnRemoveListener() {
+ public void onRemovePosition(int pos) {
+ Tab tab = mAdapter.getItem(pos);
+ onCloseTab(tab);
+ }
+ });
+ mNeedsMenu = !ViewConfiguration.get(getContext()).hasPermanentMenuKey();
+ if (!mNeedsMenu) {
+ mMore.setVisibility(View.GONE);
+ }
+ }
+
+ @Override
+ public void onClick(View v) {
+ if (mBookmarks == v) {
+ mUiController.bookmarksOrHistoryPicker(ComboViews.Bookmarks);
+ } else if (mNewTab == v) {
+ openNewTab();
+ } else if (mMore == v) {
+ showMenu();
+ }
+ }
+
+ private void onCloseTab(Tab tab) {
+ if (tab != null) {
+ if (tab == mUiController.getCurrentTab()) {
+ mUiController.closeCurrentTab();
+ } else {
+ mUiController.closeTab(tab);
+ }
+ }
+ }
+
+ private void openNewTab() {
+ // need to call openTab explicitely with setactive false
+ final Tab tab = mUiController.openTab(BrowserSettings.getInstance().getHomePage(),
+ false, false, false);
+ if (tab != null) {
+ mUiController.setBlockEvents(true);
+ final int tix = mUi.mTabControl.getTabPosition(tab);
+ mScroller.setOnLayoutListener(new OnLayoutListener() {
+
+ @Override
+ public void onLayout(int l, int t, int r, int b) {
+ mUi.hideNavScreen(tix, true);
+ switchToTab(tab);
+ }
+ });
+ mScroller.handleDataChanged(tix);
+ mUiController.setBlockEvents(false);
+ }
+ }
+
+ private void switchToTab(Tab tab) {
+ if (tab != mUi.getActiveTab()) {
+ mUiController.setActiveTab(tab);
+ }
+ }
+
+ protected void close(int position) {
+ close(position, true);
+ }
+
+ protected void close(int position, boolean animate) {
+ mUi.hideNavScreen(position, animate);
+ }
+
+ protected NavTabView getTabView(int pos) {
+ return mScroller.getTabView(pos);
+ }
+
+ class TabAdapter extends BaseAdapter {
+
+ Context context;
+ TabControl tabControl;
+
+ public TabAdapter(Context ctx, TabControl tc) {
+ context = ctx;
+ tabControl = tc;
+ }
+
+ @Override
+ public int getCount() {
+ return tabControl.getTabCount();
+ }
+
+ @Override
+ public Tab getItem(int position) {
+ return tabControl.getTab(position);
+ }
+
+ public long getItemId(int position) {
+ return position;
+ }
+
+ @Override
+ public View getView(final int position, View convertView, ViewGroup parent) {
+ final NavTabView tabview = new NavTabView(mActivity);
+ final Tab tab = getItem(position);
+ tabview.setWebView(tab);
+ mTabViews.put(tab, tabview.mImage);
+ tabview.setOnClickListener(new OnClickListener() {
+ @Override
+ public void onClick(View v) {
+ if (tabview.isClose(v)) {
+ mScroller.animateOut(tabview);
+ } else if (tabview.isTitle(v)) {
+ switchToTab(tab);
+ mUi.getTitleBar().setSkipTitleBarAnimations(true);
+ close(position, false);
+ mUi.editUrl(false, true);
+ mUi.getTitleBar().setSkipTitleBarAnimations(false);
+ } else if (tabview.isWebView(v)) {
+ close(position);
+ }
+ }
+ });
+ return tabview;
+ }
+
+ }
+
+ @Override
+ public void onThumbnailUpdated(Tab t) {
+ View v = mTabViews.get(t);
+ if (v != null) {
+ v.invalidate();
+ }
+ }
+
+}