From b180cbb9d3e1ce908896b16c1cd048f3322b91ce Mon Sep 17 00:00:00 2001 From: Sriram Ramasubramanian Date: Fri, 27 Jul 2012 23:31:40 -0700 Subject: [PATCH] Bug 778247: mAppContext cleanup: TabsPanel doesn't need it. [r=mbrubeck] --HG-- extra : rebase_source : be08d9e04fd9e6f15e3d99915c532916afd5a093 --- mobile/android/base/RemoteTabs.java | 16 ++++++++++----- mobile/android/base/TabsPanel.java | 32 ++++++++++++++++------------- mobile/android/base/TabsTray.java | 12 ++++++++--- 3 files changed, 38 insertions(+), 22 deletions(-) diff --git a/mobile/android/base/RemoteTabs.java b/mobile/android/base/RemoteTabs.java index d9f2ea7521e3..171f2728edfe 100644 --- a/mobile/android/base/RemoteTabs.java +++ b/mobile/android/base/RemoteTabs.java @@ -30,6 +30,7 @@ public class RemoteTabs extends LinearLayout private static final String LOGTAG = "GeckoRemoteTabs"; private Context mContext; + private TabsPanel mTabsPanel; private static ExpandableListView mList; @@ -56,6 +57,11 @@ public class RemoteTabs extends LinearLayout return this; } + @Override + public void setTabsPanel(TabsPanel panel) { + mTabsPanel = panel; + } + @Override public void show() { TabsAccessor.getTabs(mContext, this); @@ -65,8 +71,8 @@ public class RemoteTabs extends LinearLayout public void hide() { } - void autoHideTabs() { - GeckoApp.mAppContext.autoHideTabs(); + void autoHidePanel() { + mTabsPanel.autoHidePanel(); } @Override @@ -79,7 +85,7 @@ public class RemoteTabs extends LinearLayout public boolean onChildClick(ExpandableListView parent, View view, int groupPosition, int childPosition, long id) { HashMap tab = mTabsList.get(groupPosition).get(childPosition); if (tab == null) { - autoHideTabs(); + autoHidePanel(); return true; } @@ -95,7 +101,7 @@ public class RemoteTabs extends LinearLayout Log.d(LOGTAG, "Sending message to Gecko: " + SystemClock.uptimeMillis() + " - Tab:Add"); GeckoAppShell.sendEventToGecko(GeckoEvent.createBroadcastEvent("Tab:Add", args.toString())); - autoHideTabs(); + autoHidePanel(); return true; } @@ -103,7 +109,7 @@ public class RemoteTabs extends LinearLayout public void onQueryTabsComplete(List remoteTabsList) { ArrayList remoteTabs = new ArrayList (remoteTabsList); if (remoteTabs == null || remoteTabs.size() == 0) { - autoHideTabs(); + autoHidePanel(); return; } diff --git a/mobile/android/base/TabsPanel.java b/mobile/android/base/TabsPanel.java index 1d9bc29799b2..3ff0ab5788cf 100644 --- a/mobile/android/base/TabsPanel.java +++ b/mobile/android/base/TabsPanel.java @@ -8,7 +8,6 @@ package org.mozilla.gecko; import android.content.Context; import android.content.res.TypedArray; import android.util.AttributeSet; -import android.util.DisplayMetrics; import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; @@ -30,6 +29,7 @@ public class TabsPanel extends LinearLayout { public static interface PanelView { public ViewGroup getLayout(); + public void setTabsPanel(TabsPanel panel); public void show(); public void hide(); } @@ -39,6 +39,7 @@ public class TabsPanel extends LinearLayout { } private Context mContext; + private GeckoApp mActivity; private PanelView mPanel; private TabsPanelToolbar mToolbar; private TabsListContainer mListContainer; @@ -57,6 +58,7 @@ public class TabsPanel extends LinearLayout { public TabsPanel(Context context, AttributeSet attrs) { super(context, attrs); mContext = context; + mActivity = (GeckoApp) context; setOrientation(LinearLayout.VERTICAL); LayoutInflater.from(context).inflate(R.layout.tabs_panel, this); @@ -79,8 +81,8 @@ public class TabsPanel extends LinearLayout { ImageButton addTab = (ImageButton) mToolbar.findViewById(R.id.add_tab); addTab.setOnClickListener(new Button.OnClickListener() { public void onClick(View v) { - GeckoApp.mAppContext.addTab(); - GeckoApp.mAppContext.autoHideTabs(); + mActivity.addTab(); + mActivity.autoHideTabs(); } }); @@ -88,27 +90,26 @@ public class TabsPanel extends LinearLayout { mRemoteTabs.setOnClickListener(new Button.OnClickListener() { public void onClick(View v) { if (mRemoteTabs.getDrawable().getLevel() == REMOTE_TABS_SHOWN) - GeckoApp.mAppContext.showLocalTabs(); + mActivity.showLocalTabs(); else - GeckoApp.mAppContext.showRemoteTabs(); + mActivity.showRemoteTabs(); } }); } // Tabs List Container holds the ListView public static class TabsListContainer extends LinearLayout { + private Context mContext; + public TabsListContainer(Context context, AttributeSet attrs) { super(context, attrs); + mContext = context; } @Override protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) { if (!GeckoApp.mAppContext.hasTabsSideBar()) { - DisplayMetrics metrics = new DisplayMetrics(); - GeckoApp.mAppContext.getWindowManager().getDefaultDisplay().getMetrics(metrics); - - int height = (int) (0.5 * metrics.heightPixels); - int heightSpec = MeasureSpec.makeMeasureSpec(height, MeasureSpec.EXACTLY); + int heightSpec = MeasureSpec.makeMeasureSpec(mContext.getResources().getDisplayMetrics().heightPixels, MeasureSpec.EXACTLY); super.onMeasure(widthMeasureSpec, heightSpec); } else { super.onMeasure(widthMeasureSpec, heightMeasureSpec); @@ -156,19 +157,18 @@ public class TabsPanel extends LinearLayout { mRemoteTabs.setImageLevel(REMOTE_TABS_SHOWN); } + mPanel.setTabsPanel(this); mPanel.show(); mListContainer.addView(mPanel.getLayout()); - if (GeckoApp.mAppContext.hasTabsSideBar()) { + if (isSideBar()) { dispatchLayoutChange(getWidth(), getHeight()); } else { int actionBarHeight = (int) (mContext.getResources().getDimension(R.dimen.browser_toolbar_height)); // TabsListContainer takes time to resize on rotation. // It's better to add 50% of the screen-size and dispatch it as height. - DisplayMetrics metrics = new DisplayMetrics(); - GeckoApp.mAppContext.getWindowManager().getDefaultDisplay().getMetrics(metrics); - int listHeight = (int) (0.5 * metrics.heightPixels); + int listHeight = (int) (0.5 * mContext.getResources().getDisplayMetrics().heightPixels); int height = actionBarHeight + listHeight; dispatchLayoutChange(getWidth(), height); @@ -214,6 +214,10 @@ public class TabsPanel extends LinearLayout { show(mCurrentPanel); } + public void autoHidePanel() { + mActivity.autoHideTabs(); + } + @Override public boolean isShown() { return mVisible; diff --git a/mobile/android/base/TabsTray.java b/mobile/android/base/TabsTray.java index 392755c0eaaf..01e5d591f66b 100644 --- a/mobile/android/base/TabsTray.java +++ b/mobile/android/base/TabsTray.java @@ -34,6 +34,7 @@ public class TabsTray extends LinearLayout private static final String LOGTAG = "GeckoTabsTray"; private Context mContext; + private TabsPanel mTabsPanel; private static ListView mList; private TabsAdapter mTabsAdapter; @@ -104,6 +105,11 @@ public class TabsTray extends LinearLayout return this; } + @Override + public void setTabsPanel(TabsPanel panel) { + mTabsPanel = panel; + } + @Override public void show() { mWaitingForClose = false; @@ -119,8 +125,8 @@ public class TabsTray extends LinearLayout mTabsAdapter.clear(); } - void autoHideTabs() { - GeckoApp.mAppContext.autoHideTabs(); + void autoHidePanel() { + mTabsPanel.autoHidePanel(); } // ViewHolder for a row in the list @@ -360,7 +366,7 @@ public class TabsTray extends LinearLayout TabRow tab = (TabRow)mView.getTag(); int tabId = tab.id; Tabs.getInstance().selectTab(tabId); - autoHideTabs(); + autoHidePanel(); } }