Bug 778247: mAppContext cleanup: TabsPanel doesn't need it. [r=mbrubeck]

--HG--
extra : rebase_source : be08d9e04fd9e6f15e3d99915c532916afd5a093
This commit is contained in:
Sriram Ramasubramanian 2012-07-27 23:31:40 -07:00
parent c56f524572
commit b180cbb9d3
3 changed files with 38 additions and 22 deletions

View File

@ -30,6 +30,7 @@ public class RemoteTabs extends LinearLayout
private static final String LOGTAG = "GeckoRemoteTabs"; private static final String LOGTAG = "GeckoRemoteTabs";
private Context mContext; private Context mContext;
private TabsPanel mTabsPanel;
private static ExpandableListView mList; private static ExpandableListView mList;
@ -56,6 +57,11 @@ public class RemoteTabs extends LinearLayout
return this; return this;
} }
@Override
public void setTabsPanel(TabsPanel panel) {
mTabsPanel = panel;
}
@Override @Override
public void show() { public void show() {
TabsAccessor.getTabs(mContext, this); TabsAccessor.getTabs(mContext, this);
@ -65,8 +71,8 @@ public class RemoteTabs extends LinearLayout
public void hide() { public void hide() {
} }
void autoHideTabs() { void autoHidePanel() {
GeckoApp.mAppContext.autoHideTabs(); mTabsPanel.autoHidePanel();
} }
@Override @Override
@ -79,7 +85,7 @@ public class RemoteTabs extends LinearLayout
public boolean onChildClick(ExpandableListView parent, View view, int groupPosition, int childPosition, long id) { public boolean onChildClick(ExpandableListView parent, View view, int groupPosition, int childPosition, long id) {
HashMap <String, String> tab = mTabsList.get(groupPosition).get(childPosition); HashMap <String, String> tab = mTabsList.get(groupPosition).get(childPosition);
if (tab == null) { if (tab == null) {
autoHideTabs(); autoHidePanel();
return true; return true;
} }
@ -95,7 +101,7 @@ public class RemoteTabs extends LinearLayout
Log.d(LOGTAG, "Sending message to Gecko: " + SystemClock.uptimeMillis() + " - Tab:Add"); Log.d(LOGTAG, "Sending message to Gecko: " + SystemClock.uptimeMillis() + " - Tab:Add");
GeckoAppShell.sendEventToGecko(GeckoEvent.createBroadcastEvent("Tab:Add", args.toString())); GeckoAppShell.sendEventToGecko(GeckoEvent.createBroadcastEvent("Tab:Add", args.toString()));
autoHideTabs(); autoHidePanel();
return true; return true;
} }
@ -103,7 +109,7 @@ public class RemoteTabs extends LinearLayout
public void onQueryTabsComplete(List<TabsAccessor.RemoteTab> remoteTabsList) { public void onQueryTabsComplete(List<TabsAccessor.RemoteTab> remoteTabsList) {
ArrayList<TabsAccessor.RemoteTab> remoteTabs = new ArrayList<TabsAccessor.RemoteTab> (remoteTabsList); ArrayList<TabsAccessor.RemoteTab> remoteTabs = new ArrayList<TabsAccessor.RemoteTab> (remoteTabsList);
if (remoteTabs == null || remoteTabs.size() == 0) { if (remoteTabs == null || remoteTabs.size() == 0) {
autoHideTabs(); autoHidePanel();
return; return;
} }

View File

@ -8,7 +8,6 @@ package org.mozilla.gecko;
import android.content.Context; import android.content.Context;
import android.content.res.TypedArray; import android.content.res.TypedArray;
import android.util.AttributeSet; import android.util.AttributeSet;
import android.util.DisplayMetrics;
import android.view.LayoutInflater; import android.view.LayoutInflater;
import android.view.View; import android.view.View;
import android.view.ViewGroup; import android.view.ViewGroup;
@ -30,6 +29,7 @@ public class TabsPanel extends LinearLayout {
public static interface PanelView { public static interface PanelView {
public ViewGroup getLayout(); public ViewGroup getLayout();
public void setTabsPanel(TabsPanel panel);
public void show(); public void show();
public void hide(); public void hide();
} }
@ -39,6 +39,7 @@ public class TabsPanel extends LinearLayout {
} }
private Context mContext; private Context mContext;
private GeckoApp mActivity;
private PanelView mPanel; private PanelView mPanel;
private TabsPanelToolbar mToolbar; private TabsPanelToolbar mToolbar;
private TabsListContainer mListContainer; private TabsListContainer mListContainer;
@ -57,6 +58,7 @@ public class TabsPanel extends LinearLayout {
public TabsPanel(Context context, AttributeSet attrs) { public TabsPanel(Context context, AttributeSet attrs) {
super(context, attrs); super(context, attrs);
mContext = context; mContext = context;
mActivity = (GeckoApp) context;
setOrientation(LinearLayout.VERTICAL); setOrientation(LinearLayout.VERTICAL);
LayoutInflater.from(context).inflate(R.layout.tabs_panel, this); 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); ImageButton addTab = (ImageButton) mToolbar.findViewById(R.id.add_tab);
addTab.setOnClickListener(new Button.OnClickListener() { addTab.setOnClickListener(new Button.OnClickListener() {
public void onClick(View v) { public void onClick(View v) {
GeckoApp.mAppContext.addTab(); mActivity.addTab();
GeckoApp.mAppContext.autoHideTabs(); mActivity.autoHideTabs();
} }
}); });
@ -88,27 +90,26 @@ public class TabsPanel extends LinearLayout {
mRemoteTabs.setOnClickListener(new Button.OnClickListener() { mRemoteTabs.setOnClickListener(new Button.OnClickListener() {
public void onClick(View v) { public void onClick(View v) {
if (mRemoteTabs.getDrawable().getLevel() == REMOTE_TABS_SHOWN) if (mRemoteTabs.getDrawable().getLevel() == REMOTE_TABS_SHOWN)
GeckoApp.mAppContext.showLocalTabs(); mActivity.showLocalTabs();
else else
GeckoApp.mAppContext.showRemoteTabs(); mActivity.showRemoteTabs();
} }
}); });
} }
// Tabs List Container holds the ListView // Tabs List Container holds the ListView
public static class TabsListContainer extends LinearLayout { public static class TabsListContainer extends LinearLayout {
private Context mContext;
public TabsListContainer(Context context, AttributeSet attrs) { public TabsListContainer(Context context, AttributeSet attrs) {
super(context, attrs); super(context, attrs);
mContext = context;
} }
@Override @Override
protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) { protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) {
if (!GeckoApp.mAppContext.hasTabsSideBar()) { if (!GeckoApp.mAppContext.hasTabsSideBar()) {
DisplayMetrics metrics = new DisplayMetrics(); int heightSpec = MeasureSpec.makeMeasureSpec(mContext.getResources().getDisplayMetrics().heightPixels, MeasureSpec.EXACTLY);
GeckoApp.mAppContext.getWindowManager().getDefaultDisplay().getMetrics(metrics);
int height = (int) (0.5 * metrics.heightPixels);
int heightSpec = MeasureSpec.makeMeasureSpec(height, MeasureSpec.EXACTLY);
super.onMeasure(widthMeasureSpec, heightSpec); super.onMeasure(widthMeasureSpec, heightSpec);
} else { } else {
super.onMeasure(widthMeasureSpec, heightMeasureSpec); super.onMeasure(widthMeasureSpec, heightMeasureSpec);
@ -156,19 +157,18 @@ public class TabsPanel extends LinearLayout {
mRemoteTabs.setImageLevel(REMOTE_TABS_SHOWN); mRemoteTabs.setImageLevel(REMOTE_TABS_SHOWN);
} }
mPanel.setTabsPanel(this);
mPanel.show(); mPanel.show();
mListContainer.addView(mPanel.getLayout()); mListContainer.addView(mPanel.getLayout());
if (GeckoApp.mAppContext.hasTabsSideBar()) { if (isSideBar()) {
dispatchLayoutChange(getWidth(), getHeight()); dispatchLayoutChange(getWidth(), getHeight());
} else { } else {
int actionBarHeight = (int) (mContext.getResources().getDimension(R.dimen.browser_toolbar_height)); int actionBarHeight = (int) (mContext.getResources().getDimension(R.dimen.browser_toolbar_height));
// TabsListContainer takes time to resize on rotation. // TabsListContainer takes time to resize on rotation.
// It's better to add 50% of the screen-size and dispatch it as height. // It's better to add 50% of the screen-size and dispatch it as height.
DisplayMetrics metrics = new DisplayMetrics(); int listHeight = (int) (0.5 * mContext.getResources().getDisplayMetrics().heightPixels);
GeckoApp.mAppContext.getWindowManager().getDefaultDisplay().getMetrics(metrics);
int listHeight = (int) (0.5 * metrics.heightPixels);
int height = actionBarHeight + listHeight; int height = actionBarHeight + listHeight;
dispatchLayoutChange(getWidth(), height); dispatchLayoutChange(getWidth(), height);
@ -214,6 +214,10 @@ public class TabsPanel extends LinearLayout {
show(mCurrentPanel); show(mCurrentPanel);
} }
public void autoHidePanel() {
mActivity.autoHideTabs();
}
@Override @Override
public boolean isShown() { public boolean isShown() {
return mVisible; return mVisible;

View File

@ -34,6 +34,7 @@ public class TabsTray extends LinearLayout
private static final String LOGTAG = "GeckoTabsTray"; private static final String LOGTAG = "GeckoTabsTray";
private Context mContext; private Context mContext;
private TabsPanel mTabsPanel;
private static ListView mList; private static ListView mList;
private TabsAdapter mTabsAdapter; private TabsAdapter mTabsAdapter;
@ -104,6 +105,11 @@ public class TabsTray extends LinearLayout
return this; return this;
} }
@Override
public void setTabsPanel(TabsPanel panel) {
mTabsPanel = panel;
}
@Override @Override
public void show() { public void show() {
mWaitingForClose = false; mWaitingForClose = false;
@ -119,8 +125,8 @@ public class TabsTray extends LinearLayout
mTabsAdapter.clear(); mTabsAdapter.clear();
} }
void autoHideTabs() { void autoHidePanel() {
GeckoApp.mAppContext.autoHideTabs(); mTabsPanel.autoHidePanel();
} }
// ViewHolder for a row in the list // ViewHolder for a row in the list
@ -360,7 +366,7 @@ public class TabsTray extends LinearLayout
TabRow tab = (TabRow)mView.getTag(); TabRow tab = (TabRow)mView.getTag();
int tabId = tab.id; int tabId = tab.id;
Tabs.getInstance().selectTab(tabId); Tabs.getInstance().selectTab(tabId);
autoHideTabs(); autoHidePanel();
} }
} }