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 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 <String, String> 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<TabsAccessor.RemoteTab> remoteTabsList) {
ArrayList<TabsAccessor.RemoteTab> remoteTabs = new ArrayList<TabsAccessor.RemoteTab> (remoteTabsList);
if (remoteTabs == null || remoteTabs.size() == 0) {
autoHideTabs();
autoHidePanel();
return;
}

View File

@ -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;

View File

@ -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();
}
}