mirror of
https://gitlab.winehq.org/wine/wine-gecko.git
synced 2024-09-13 09:24:08 -07:00
Bug 817706: Tab-style switcher in tabs-tray for phones. [r=mfinkle]
--HG-- rename : mobile/android/base/resources/layout/tabs_panel.xml => mobile/android/base/resources/layout/tabs_panel.xml.in
This commit is contained in:
parent
fd2876f24f
commit
e85bcdd6aa
@ -499,8 +499,12 @@ abstract public class BrowserApp extends GeckoApp
|
|||||||
showAwesomebar(AwesomeBar.Target.NEW_TAB);
|
showAwesomebar(AwesomeBar.Target.NEW_TAB);
|
||||||
}
|
}
|
||||||
|
|
||||||
public void showLocalTabs() {
|
public void showNormalTabs() {
|
||||||
showTabs(TabsPanel.Panel.LOCAL_TABS);
|
showTabs(TabsPanel.Panel.NORMAL_TABS);
|
||||||
|
}
|
||||||
|
|
||||||
|
public void showPrivateTabs() {
|
||||||
|
showTabs(TabsPanel.Panel.PRIVATE_TABS);
|
||||||
}
|
}
|
||||||
|
|
||||||
public void showRemoteTabs() {
|
public void showRemoteTabs() {
|
||||||
|
@ -690,7 +690,14 @@ public class BrowserToolbar implements ViewSwitcher.ViewFactory,
|
|||||||
InputMethodManager imm =
|
InputMethodManager imm =
|
||||||
(InputMethodManager) mActivity.getSystemService(Context.INPUT_METHOD_SERVICE);
|
(InputMethodManager) mActivity.getSystemService(Context.INPUT_METHOD_SERVICE);
|
||||||
imm.hideSoftInputFromWindow(mTabs.getWindowToken(), 0);
|
imm.hideSoftInputFromWindow(mTabs.getWindowToken(), 0);
|
||||||
mActivity.showLocalTabs();
|
|
||||||
|
Tab tab = Tabs.getInstance().getSelectedTab();
|
||||||
|
if (tab != null) {
|
||||||
|
if (!tab.isPrivate())
|
||||||
|
mActivity.showNormalTabs();
|
||||||
|
else
|
||||||
|
mActivity.showPrivateTabs();
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -804,7 +804,9 @@ abstract public class GeckoApp
|
|||||||
|
|
||||||
void addTab() { }
|
void addTab() { }
|
||||||
|
|
||||||
public void showLocalTabs() { }
|
public void showNormalTabs() { }
|
||||||
|
|
||||||
|
public void showPrivateTabs() { }
|
||||||
|
|
||||||
public void showRemoteTabs() { }
|
public void showRemoteTabs() { }
|
||||||
|
|
||||||
|
@ -78,12 +78,16 @@ public final class GeckoViewsFactory implements LayoutInflater.Factory {
|
|||||||
return new FindInPageBar(context, attrs);
|
return new FindInPageBar(context, attrs);
|
||||||
else if (TextUtils.equals(viewName, "MenuButton"))
|
else if (TextUtils.equals(viewName, "MenuButton"))
|
||||||
return new MenuButton(context, attrs);
|
return new MenuButton(context, attrs);
|
||||||
|
else if (TextUtils.equals(viewName, "RemoteTabs"))
|
||||||
|
return new RemoteTabs(context, attrs);
|
||||||
else if (TextUtils.equals(viewName, "TabsButton"))
|
else if (TextUtils.equals(viewName, "TabsButton"))
|
||||||
return new TabsButton(context, attrs);
|
return new TabsButton(context, attrs);
|
||||||
else if (TextUtils.equals(viewName, "TabsPanel"))
|
else if (TextUtils.equals(viewName, "TabsPanel"))
|
||||||
return new TabsPanel(context, attrs);
|
return new TabsPanel(context, attrs);
|
||||||
else if (TextUtils.equals(viewName, "TabsPanelButton"))
|
else if (TextUtils.equals(viewName, "TabsPanelButton"))
|
||||||
return new TabsPanelButton(context, attrs);
|
return new TabsPanelButton(context, attrs);
|
||||||
|
else if (TextUtils.equals(viewName, "TabsTray"))
|
||||||
|
return new TabsTray(context, attrs);
|
||||||
else if (TextUtils.equals(viewName, "TextSelectionHandle"))
|
else if (TextUtils.equals(viewName, "TextSelectionHandle"))
|
||||||
return new TextSelectionHandle(context, attrs);
|
return new TextSelectionHandle(context, attrs);
|
||||||
else if (TextUtils.equals(viewName, "gfx.LayerView"))
|
else if (TextUtils.equals(viewName, "gfx.LayerView"))
|
||||||
|
@ -249,6 +249,7 @@ FENNEC_PP_XML_FILES = \
|
|||||||
res/layout-large-v11/browser_toolbar_menu.xml \
|
res/layout-large-v11/browser_toolbar_menu.xml \
|
||||||
res/layout-xlarge-v11/browser_toolbar_menu.xml \
|
res/layout-xlarge-v11/browser_toolbar_menu.xml \
|
||||||
res/layout/gecko_app.xml \
|
res/layout/gecko_app.xml \
|
||||||
|
res/layout/tabs_panel.xml \
|
||||||
res/layout/text_selection_handles.xml \
|
res/layout/text_selection_handles.xml \
|
||||||
res/layout-xlarge-land-v11/abouthome_content.xml \
|
res/layout-xlarge-land-v11/abouthome_content.xml \
|
||||||
res/layout-xlarge-v11/awesomebar_search.xml \
|
res/layout-xlarge-v11/awesomebar_search.xml \
|
||||||
@ -405,7 +406,7 @@ RES_LAYOUT = \
|
|||||||
res/layout/remote_tabs_child.xml \
|
res/layout/remote_tabs_child.xml \
|
||||||
res/layout/remote_tabs_group.xml \
|
res/layout/remote_tabs_group.xml \
|
||||||
res/layout/tabs_counter.xml \
|
res/layout/tabs_counter.xml \
|
||||||
res/layout/tabs_panel.xml \
|
res/layout/tabs_panel_indicator.xml \
|
||||||
res/layout/tabs_panel_toolbar_menu.xml \
|
res/layout/tabs_panel_toolbar_menu.xml \
|
||||||
res/layout/tabs_row.xml \
|
res/layout/tabs_row.xml \
|
||||||
res/layout/tabs_tray.xml \
|
res/layout/tabs_tray.xml \
|
||||||
@ -1063,6 +1064,7 @@ MOZ_ANDROID_DRAWABLES += \
|
|||||||
mobile/android/base/resources/drawable/tab_new_button.xml \
|
mobile/android/base/resources/drawable/tab_new_button.xml \
|
||||||
mobile/android/base/resources/drawable/tabs_button.xml \
|
mobile/android/base/resources/drawable/tabs_button.xml \
|
||||||
mobile/android/base/resources/drawable/tabs_level.xml \
|
mobile/android/base/resources/drawable/tabs_level.xml \
|
||||||
|
mobile/android/base/resources/drawable/tabs_panel_indicator.xml \
|
||||||
mobile/android/base/resources/drawable/tabs_tray_bg_repeat.xml \
|
mobile/android/base/resources/drawable/tabs_tray_bg_repeat.xml \
|
||||||
mobile/android/base/resources/drawable/tabs_tray_selected_bg_repeat.xml \
|
mobile/android/base/resources/drawable/tabs_tray_selected_bg_repeat.xml \
|
||||||
mobile/android/base/resources/drawable/tabs_tray_active_selector.xml \
|
mobile/android/base/resources/drawable/tabs_tray_active_selector.xml \
|
||||||
|
@ -21,18 +21,23 @@ import android.view.MenuItem;
|
|||||||
import android.view.View;
|
import android.view.View;
|
||||||
import android.view.ViewGroup;
|
import android.view.ViewGroup;
|
||||||
import android.widget.Button;
|
import android.widget.Button;
|
||||||
|
import android.widget.FrameLayout;
|
||||||
import android.widget.ImageButton;
|
import android.widget.ImageButton;
|
||||||
import android.widget.LinearLayout;
|
import android.widget.LinearLayout;
|
||||||
import android.widget.RelativeLayout;
|
import android.widget.RelativeLayout;
|
||||||
|
import android.widget.TabHost;
|
||||||
|
import android.widget.TabHost.TabSpec;
|
||||||
|
import android.widget.TabWidget;
|
||||||
import android.widget.TextView;
|
import android.widget.TextView;
|
||||||
|
|
||||||
public class TabsPanel extends LinearLayout
|
public class TabsPanel extends TabHost
|
||||||
implements GeckoPopupMenu.OnMenuItemClickListener,
|
implements GeckoPopupMenu.OnMenuItemClickListener,
|
||||||
LightweightTheme.OnChangeListener {
|
LightweightTheme.OnChangeListener {
|
||||||
private static final String LOGTAG = "GeckoTabsPanel";
|
private static final String LOGTAG = "GeckoTabsPanel";
|
||||||
|
|
||||||
public static enum Panel {
|
public static enum Panel {
|
||||||
LOCAL_TABS,
|
NORMAL_TABS,
|
||||||
|
PRIVATE_TABS,
|
||||||
REMOTE_TABS
|
REMOTE_TABS
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -51,17 +56,16 @@ public class TabsPanel extends LinearLayout
|
|||||||
private GeckoApp mActivity;
|
private GeckoApp mActivity;
|
||||||
private PanelView mPanel;
|
private PanelView mPanel;
|
||||||
private TabsPanelToolbar mToolbar;
|
private TabsPanelToolbar mToolbar;
|
||||||
private TabsListContainer mListContainer;
|
|
||||||
private TabsLayoutChangeListener mLayoutChangeListener;
|
private TabsLayoutChangeListener mLayoutChangeListener;
|
||||||
|
|
||||||
private static ImageButton mMenuButton;
|
private static ImageButton mMenuButton;
|
||||||
private static ImageButton mAddTab;
|
private static ImageButton mAddTab;
|
||||||
private static ImageButton mRemoteTabs;
|
private TabWidget mTabWidget;
|
||||||
private TextView mTitle;
|
|
||||||
|
|
||||||
private Panel mCurrentPanel;
|
private Panel mCurrentPanel;
|
||||||
private boolean mIsSideBar;
|
private boolean mIsSideBar;
|
||||||
private boolean mVisible;
|
private boolean mVisible;
|
||||||
|
private boolean mInflated;
|
||||||
|
|
||||||
private GeckoPopupMenu mPopupMenu;
|
private GeckoPopupMenu mPopupMenu;
|
||||||
private Menu mMenu;
|
private Menu mMenu;
|
||||||
@ -74,29 +78,83 @@ public class TabsPanel extends LinearLayout
|
|||||||
mContext = context;
|
mContext = context;
|
||||||
mActivity = (GeckoApp) context;
|
mActivity = (GeckoApp) context;
|
||||||
|
|
||||||
setOrientation(LinearLayout.VERTICAL);
|
mCurrentPanel = Panel.NORMAL_TABS;
|
||||||
LayoutInflater.from(context).inflate(R.layout.tabs_panel, this);
|
|
||||||
|
|
||||||
mCurrentPanel = Panel.LOCAL_TABS;
|
|
||||||
mVisible = false;
|
mVisible = false;
|
||||||
|
|
||||||
TypedArray a = context.obtainStyledAttributes(attrs, R.styleable.TabsPanel);
|
TypedArray a = context.obtainStyledAttributes(attrs, R.styleable.TabsPanel);
|
||||||
mIsSideBar = a.getBoolean(R.styleable.TabsPanel_sidebar, false);
|
mIsSideBar = a.getBoolean(R.styleable.TabsPanel_sidebar, false);
|
||||||
a.recycle();
|
a.recycle();
|
||||||
|
|
||||||
mToolbar = (TabsPanelToolbar) findViewById(R.id.toolbar);
|
|
||||||
mListContainer = (TabsListContainer) findViewById(R.id.list_container);
|
|
||||||
|
|
||||||
mPopupMenu = new GeckoPopupMenu(context);
|
mPopupMenu = new GeckoPopupMenu(context);
|
||||||
mPopupMenu.inflate(R.menu.tabs_menu);
|
mPopupMenu.inflate(R.menu.tabs_menu);
|
||||||
mPopupMenu.setOnMenuItemClickListener(this);
|
mPopupMenu.setOnMenuItemClickListener(this);
|
||||||
mMenu = mPopupMenu.getMenu();
|
mMenu = mPopupMenu.getMenu();
|
||||||
|
|
||||||
|
LayoutInflater.from(context).inflate(R.layout.tabs_panel, this);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
protected void onFinishInflate() {
|
||||||
|
super.onFinishInflate();
|
||||||
|
|
||||||
|
// HACK: Without this, the onFinishInflate is called twice
|
||||||
|
// This issue is due to a bug when Android inflates a layout with a
|
||||||
|
// parent. Fixed in Honeycomb
|
||||||
|
if (mInflated)
|
||||||
|
return;
|
||||||
|
|
||||||
|
mInflated = true;
|
||||||
|
|
||||||
|
initialize();
|
||||||
|
}
|
||||||
|
|
||||||
|
private void initialize() {
|
||||||
|
// This should be called before adding any tabs
|
||||||
|
// to the TabHost.
|
||||||
|
setup();
|
||||||
|
|
||||||
initToolbar();
|
initToolbar();
|
||||||
|
addTab(R.string.tabs_normal, R.id.normal_tabs);
|
||||||
|
addTab(R.string.tabs_private, R.id.private_tabs);
|
||||||
|
addTab(R.string.tabs_synced, R.id.synced_tabs);
|
||||||
|
}
|
||||||
|
|
||||||
|
private void addTab(int resId, int contentId) {
|
||||||
|
String title = mContext.getString(resId);
|
||||||
|
TabSpec spec = newTabSpec(title);
|
||||||
|
GeckoTextView indicatorView = (GeckoTextView) LayoutInflater.from(mContext).inflate(R.layout.tabs_panel_indicator, null);
|
||||||
|
indicatorView.setText(title);
|
||||||
|
|
||||||
|
spec.setIndicator(indicatorView);
|
||||||
|
spec.setContent(contentId);
|
||||||
|
|
||||||
|
final int index = mTabWidget.getTabCount();
|
||||||
|
PanelView panel = (PanelView) findViewById(contentId);
|
||||||
|
panel.setTabsPanel(this);
|
||||||
|
panel.show();
|
||||||
|
|
||||||
|
addTab(spec);
|
||||||
|
|
||||||
|
indicatorView.setOnClickListener(new View.OnClickListener() {
|
||||||
|
public void onClick(View v) {
|
||||||
|
Panel panel = Panel.NORMAL_TABS;
|
||||||
|
if (index == 1)
|
||||||
|
panel = Panel.PRIVATE_TABS;
|
||||||
|
else if (index == 2)
|
||||||
|
panel = Panel.REMOTE_TABS;
|
||||||
|
|
||||||
|
TabsPanel.this.show(panel);
|
||||||
|
}
|
||||||
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
void initToolbar() {
|
void initToolbar() {
|
||||||
mTitle = (TextView) mToolbar.findViewById(R.id.title);
|
mToolbar = (TabsPanelToolbar) findViewById(R.id.toolbar);
|
||||||
|
|
||||||
|
mTabWidget = (TabWidget) findViewById(android.R.id.tabs);
|
||||||
|
mTabWidget.setDividerDrawable(null);
|
||||||
|
mTabWidget.setStripEnabled(false);
|
||||||
|
|
||||||
mAddTab = (ImageButton) mToolbar.findViewById(R.id.add_tab);
|
mAddTab = (ImageButton) mToolbar.findViewById(R.id.add_tab);
|
||||||
mAddTab.setOnClickListener(new Button.OnClickListener() {
|
mAddTab.setOnClickListener(new Button.OnClickListener() {
|
||||||
public void onClick(View v) {
|
public void onClick(View v) {
|
||||||
@ -105,16 +163,6 @@ public class TabsPanel extends LinearLayout
|
|||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
mRemoteTabs = (ImageButton) mToolbar.findViewById(R.id.remote_tabs);
|
|
||||||
mRemoteTabs.setOnClickListener(new Button.OnClickListener() {
|
|
||||||
public void onClick(View v) {
|
|
||||||
if (mRemoteTabs.getDrawable().getLevel() == REMOTE_TABS_SHOWN)
|
|
||||||
mActivity.showLocalTabs();
|
|
||||||
else
|
|
||||||
mActivity.showRemoteTabs();
|
|
||||||
}
|
|
||||||
});
|
|
||||||
|
|
||||||
mMenuButton = (ImageButton) mToolbar.findViewById(R.id.menu);
|
mMenuButton = (ImageButton) mToolbar.findViewById(R.id.menu);
|
||||||
mMenuButton.setOnClickListener(new Button.OnClickListener() {
|
mMenuButton.setOnClickListener(new Button.OnClickListener() {
|
||||||
public void onClick(View view) {
|
public void onClick(View view) {
|
||||||
@ -240,7 +288,7 @@ public class TabsPanel extends LinearLayout
|
|||||||
}
|
}
|
||||||
|
|
||||||
// Tabs List Container holds the ListView
|
// Tabs List Container holds the ListView
|
||||||
public static class TabsListContainer extends LinearLayout {
|
public static class TabsListContainer extends FrameLayout {
|
||||||
private Context mContext;
|
private Context mContext;
|
||||||
|
|
||||||
public TabsListContainer(Context context, AttributeSet attrs) {
|
public TabsListContainer(Context context, AttributeSet attrs) {
|
||||||
@ -272,6 +320,8 @@ public class TabsPanel extends LinearLayout
|
|||||||
(int) context.getResources().getDimension(R.dimen.browser_toolbar_height)));
|
(int) context.getResources().getDimension(R.dimen.browser_toolbar_height)));
|
||||||
|
|
||||||
LayoutInflater.from(context).inflate(R.layout.tabs_panel_toolbar_menu, this);
|
LayoutInflater.from(context).inflate(R.layout.tabs_panel_toolbar_menu, this);
|
||||||
|
TabWidget tabWidget = (TabWidget) findViewById(android.R.id.tabs);
|
||||||
|
tabWidget.setStripEnabled(false);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
@ -310,56 +360,28 @@ public class TabsPanel extends LinearLayout
|
|||||||
|
|
||||||
public void show(Panel panel) {
|
public void show(Panel panel) {
|
||||||
if (mPanel != null) {
|
if (mPanel != null) {
|
||||||
// Remove the old panel.
|
// Hide the old panel.
|
||||||
mPanel.hide();
|
mPanel.hide();
|
||||||
mListContainer.removeAllViews();
|
|
||||||
}
|
}
|
||||||
|
|
||||||
final boolean showAnimation = !mVisible;
|
final boolean showAnimation = !mVisible;
|
||||||
mVisible = true;
|
mVisible = true;
|
||||||
mCurrentPanel = panel;
|
mCurrentPanel = panel;
|
||||||
|
|
||||||
if (panel == Panel.LOCAL_TABS) {
|
int index = panel.ordinal();
|
||||||
mPanel = new TabsTray(mContext, null);
|
setCurrentTab(index);
|
||||||
mTitle.setText("");
|
|
||||||
mRemoteTabs.setImageLevel(REMOTE_TABS_HIDDEN);
|
|
||||||
} else {
|
|
||||||
mPanel = new RemoteTabs(mContext, null);
|
|
||||||
mTitle.setText(R.string.remote_tabs);
|
|
||||||
mRemoteTabs.setVisibility(View.VISIBLE);
|
|
||||||
mRemoteTabs.setImageLevel(REMOTE_TABS_SHOWN);
|
|
||||||
}
|
|
||||||
|
|
||||||
mPanel.setTabsPanel(this);
|
mPanel = (PanelView) getTabContentView().getChildAt(index);
|
||||||
mPanel.show();
|
mPanel.show();
|
||||||
mListContainer.addView(mPanel.getLayout());
|
|
||||||
|
|
||||||
if (isSideBar()) {
|
if (isSideBar()) {
|
||||||
if (showAnimation)
|
if (showAnimation)
|
||||||
dispatchLayoutChange(getWidth(), getHeight());
|
dispatchLayoutChange(getWidth(), getHeight());
|
||||||
} else {
|
} else {
|
||||||
int actionBarHeight = mContext.getResources().getDimensionPixelSize(R.dimen.browser_toolbar_height);
|
int actionBarHeight = mContext.getResources().getDimensionPixelSize(R.dimen.browser_toolbar_height);
|
||||||
int height = actionBarHeight + getTabContainerHeight(mListContainer);
|
int height = actionBarHeight + getTabContainerHeight(getTabContentView());
|
||||||
dispatchLayoutChange(getWidth(), height);
|
dispatchLayoutChange(getWidth(), height);
|
||||||
}
|
}
|
||||||
|
|
||||||
// If Sync is set up, query the database for remote clients.
|
|
||||||
final Context context = mContext;
|
|
||||||
new SyncAccounts.AccountsExistTask() {
|
|
||||||
@Override
|
|
||||||
protected void onPostExecute(Boolean result) {
|
|
||||||
if (!result.booleanValue()) {
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
TabsAccessor.areClientsAvailable(context, new TabsAccessor.OnClientsAvailableListener() {
|
|
||||||
@Override
|
|
||||||
public void areAvailable(boolean available) {
|
|
||||||
final int visibility = available ? View.VISIBLE : View.GONE;
|
|
||||||
mRemoteTabs.setVisibility(visibility);
|
|
||||||
}
|
|
||||||
});
|
|
||||||
}
|
|
||||||
}.execute(context);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public void hide() {
|
public void hide() {
|
||||||
@ -371,14 +393,11 @@ public class TabsPanel extends LinearLayout
|
|||||||
}
|
}
|
||||||
|
|
||||||
public void refresh() {
|
public void refresh() {
|
||||||
mListContainer.forceLayout();
|
clearAllTabs();
|
||||||
|
removeAllViews();
|
||||||
|
|
||||||
int index = indexOfChild(mToolbar);
|
LayoutInflater.from(mContext).inflate(R.layout.tabs_panel, this);
|
||||||
removeViewAt(index);
|
initialize();
|
||||||
|
|
||||||
mToolbar = new TabsPanelToolbar(mContext, null);
|
|
||||||
addView(mToolbar, index);
|
|
||||||
initToolbar();
|
|
||||||
|
|
||||||
if (mVisible)
|
if (mVisible)
|
||||||
show(mCurrentPanel);
|
show(mCurrentPanel);
|
||||||
|
@ -139,6 +139,9 @@ size. -->
|
|||||||
<!ENTITY new_private_tab "New Private Tab">
|
<!ENTITY new_private_tab "New Private Tab">
|
||||||
<!ENTITY synced_tabs "Synced Tabs">
|
<!ENTITY synced_tabs "Synced Tabs">
|
||||||
<!ENTITY close_all_tabs "Close All Tabs">
|
<!ENTITY close_all_tabs "Close All Tabs">
|
||||||
|
<!ENTITY tabs_normal "Tabs">
|
||||||
|
<!ENTITY tabs_private "Private">
|
||||||
|
<!ENTITY tabs_synced "Synced">
|
||||||
<!ENTITY wallpaper_success "Wallpaper updated">
|
<!ENTITY wallpaper_success "Wallpaper updated">
|
||||||
<!ENTITY wallpaper_progress "Setting wallpaper">
|
<!ENTITY wallpaper_progress "Setting wallpaper">
|
||||||
<!ENTITY wallpaper_fail "Unable to set wallpaper">
|
<!ENTITY wallpaper_fail "Unable to set wallpaper">
|
||||||
|
@ -0,0 +1,12 @@
|
|||||||
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
|
<!-- This Source Code Form is subject to the terms of the Mozilla Public
|
||||||
|
- License, v. 2.0. If a copy of the MPL was not distributed with this
|
||||||
|
- file, You can obtain one at http://mozilla.org/MPL/2.0/. -->
|
||||||
|
|
||||||
|
<selector xmlns:android="http://schemas.android.com/apk/res/android">
|
||||||
|
|
||||||
|
<item android:state_selected="false" android:drawable="@android:color/transparent"/>
|
||||||
|
|
||||||
|
<item android:state_selected="true" android:drawable="@drawable/highlight"/>
|
||||||
|
|
||||||
|
</selector>
|
@ -24,24 +24,11 @@
|
|||||||
android:layout_height="fill_parent"
|
android:layout_height="fill_parent"
|
||||||
android:layout_marginRight="15dip">
|
android:layout_marginRight="15dip">
|
||||||
|
|
||||||
<TextView android:id="@+id/title"
|
<TabWidget android:id="@android:id/tabs"
|
||||||
android:layout_width="wrap_content"
|
android:layout_width="0dip"
|
||||||
android:layout_height="fill_parent"
|
android:layout_height="fill_parent"
|
||||||
android:layout_weight="1.0"
|
android:layout_weight="1.0"/>
|
||||||
style="@style/TabRowTextAppearance"
|
|
||||||
android:gravity="center_vertical"
|
|
||||||
android:padding="10dip"
|
|
||||||
android:textSize="13sp"/>
|
|
||||||
|
|
||||||
<ImageButton android:id="@+id/remote_tabs"
|
|
||||||
android:layout_width="@dimen/browser_toolbar_height"
|
|
||||||
android:layout_height="@dimen/browser_toolbar_height"
|
|
||||||
android:gravity="center_vertical"
|
|
||||||
android:padding="10dip"
|
|
||||||
android:src="@drawable/remote_tabs_level"
|
|
||||||
android:contentDescription="@string/remote_tabs"
|
|
||||||
android:background="@drawable/action_bar_button"
|
|
||||||
android:visibility="gone"/>
|
|
||||||
|
|
||||||
<org.mozilla.gecko.TabsPanelButton android:id="@+id/add_tab"
|
<org.mozilla.gecko.TabsPanelButton android:id="@+id/add_tab"
|
||||||
android:layout_width="63dip"
|
android:layout_width="63dip"
|
||||||
|
@ -24,24 +24,10 @@
|
|||||||
android:layout_height="fill_parent"
|
android:layout_height="fill_parent"
|
||||||
android:layout_marginRight="28dip">
|
android:layout_marginRight="28dip">
|
||||||
|
|
||||||
<TextView android:id="@+id/title"
|
<TabWidget android:id="@android:id/tabs"
|
||||||
android:layout_width="wrap_content"
|
android:layout_width="0dip"
|
||||||
android:layout_height="fill_parent"
|
android:layout_height="fill_parent"
|
||||||
android:layout_weight="1.0"
|
android:layout_weight="1.0"/>
|
||||||
style="@style/TabRowTextAppearance"
|
|
||||||
android:gravity="center_vertical"
|
|
||||||
android:padding="10dip"
|
|
||||||
android:textSize="16sp"/>
|
|
||||||
|
|
||||||
<ImageButton android:id="@+id/remote_tabs"
|
|
||||||
android:layout_width="@dimen/browser_toolbar_height"
|
|
||||||
android:layout_height="@dimen/browser_toolbar_height"
|
|
||||||
android:gravity="center_vertical"
|
|
||||||
android:padding="12dip"
|
|
||||||
android:src="@drawable/remote_tabs_level"
|
|
||||||
android:contentDescription="@string/remote_tabs"
|
|
||||||
android:background="@drawable/action_bar_button"
|
|
||||||
android:visibility="gone"/>
|
|
||||||
|
|
||||||
<org.mozilla.gecko.TabsPanelButton android:id="@+id/add_tab"
|
<org.mozilla.gecko.TabsPanelButton android:id="@+id/add_tab"
|
||||||
android:layout_width="85dip"
|
android:layout_width="85dip"
|
||||||
|
@ -8,6 +8,11 @@
|
|||||||
<LinearLayout android:layout_width="fill_parent"
|
<LinearLayout android:layout_width="fill_parent"
|
||||||
android:layout_height="fill_parent">
|
android:layout_height="fill_parent">
|
||||||
|
|
||||||
|
<TabWidget android:id="@android:id/tabs"
|
||||||
|
android:layout_width="0dip"
|
||||||
|
android:layout_height="fill_parent"
|
||||||
|
android:layout_weight="1.0"/>
|
||||||
|
|
||||||
<ImageButton android:id="@+id/add_tab"
|
<ImageButton android:id="@+id/add_tab"
|
||||||
android:layout_width="@dimen/browser_toolbar_height"
|
android:layout_width="@dimen/browser_toolbar_height"
|
||||||
android:layout_height="@dimen/browser_toolbar_height"
|
android:layout_height="@dimen/browser_toolbar_height"
|
||||||
@ -19,23 +24,6 @@
|
|||||||
android:contentDescription="@string/new_tab"
|
android:contentDescription="@string/new_tab"
|
||||||
android:background="@drawable/action_bar_button"/>
|
android:background="@drawable/action_bar_button"/>
|
||||||
|
|
||||||
<ImageButton android:id="@+id/remote_tabs"
|
|
||||||
android:layout_width="@dimen/browser_toolbar_height"
|
|
||||||
android:layout_height="@dimen/browser_toolbar_height"
|
|
||||||
android:paddingTop="15dip"
|
|
||||||
android:paddingBottom="15dip"
|
|
||||||
android:paddingLeft="20dip"
|
|
||||||
android:paddingRight="20dip"
|
|
||||||
android:src="@drawable/remote_tabs_level"
|
|
||||||
android:contentDescription="@string/remote_tabs"
|
|
||||||
android:background="@drawable/action_bar_button"
|
|
||||||
android:visibility="gone"/>
|
|
||||||
|
|
||||||
<TextView android:id="@+id/title"
|
|
||||||
android:layout_width="wrap_content"
|
|
||||||
android:layout_height="wrap_content"
|
|
||||||
android:visibility="gone"/>
|
|
||||||
|
|
||||||
<ImageButton android:id="@+id/menu"
|
<ImageButton android:id="@+id/menu"
|
||||||
android:layout_width="@dimen/browser_toolbar_height"
|
android:layout_width="@dimen/browser_toolbar_height"
|
||||||
android:layout_height="@dimen/browser_toolbar_height"
|
android:layout_height="@dimen/browser_toolbar_height"
|
||||||
|
@ -9,11 +9,11 @@
|
|||||||
android:layout_width="fill_parent"
|
android:layout_width="fill_parent"
|
||||||
android:layout_height="fill_parent">
|
android:layout_height="fill_parent">
|
||||||
|
|
||||||
<org.mozilla.gecko.TabsPanel android:id="@+id/tabs_panel"
|
<org.mozilla.gecko.TabsPanel android:id="@+id/tabs_panel"
|
||||||
android:layout_width="fill_parent"
|
android:layout_width="fill_parent"
|
||||||
android:layout_height="fill_parent"
|
android:layout_height="fill_parent"
|
||||||
android:background="@drawable/tabs_tray_bg_repeat"
|
android:background="@drawable/tabs_tray_bg_repeat"
|
||||||
gecko:sidebar="false"/>
|
gecko:sidebar="false"/>
|
||||||
|
|
||||||
<view class="org.mozilla.gecko.GeckoApp$MainLayout"
|
<view class="org.mozilla.gecko.GeckoApp$MainLayout"
|
||||||
android:id="@+id/main_layout"
|
android:id="@+id/main_layout"
|
||||||
|
@ -1,29 +0,0 @@
|
|||||||
<?xml version="1.0" encoding="utf-8"?>
|
|
||||||
<!-- This Source Code Form is subject to the terms of the Mozilla Public
|
|
||||||
- License, v. 2.0. If a copy of the MPL was not distributed with this
|
|
||||||
- file, You can obtain one at http://mozilla.org/MPL/2.0/. -->
|
|
||||||
|
|
||||||
<merge xmlns:android="http://schemas.android.com/apk/res/android">
|
|
||||||
|
|
||||||
<view class="org.mozilla.gecko.TabsPanel$TabsPanelToolbar"
|
|
||||||
android:id="@+id/toolbar"
|
|
||||||
android:layout_width="fill_parent"
|
|
||||||
android:layout_height="@dimen/browser_toolbar_height"/>
|
|
||||||
|
|
||||||
<RelativeLayout android:layout_width="fill_parent"
|
|
||||||
android:layout_height="fill_parent">
|
|
||||||
|
|
||||||
<view class="org.mozilla.gecko.TabsPanel$TabsListContainer"
|
|
||||||
android:id="@+id/list_container"
|
|
||||||
android:layout_width="fill_parent"
|
|
||||||
android:layout_height="fill_parent"
|
|
||||||
android:orientation="vertical"/>
|
|
||||||
|
|
||||||
<View android:layout_width="fill_parent"
|
|
||||||
android:layout_height="3dp"
|
|
||||||
android:layout_alignParentTop="true"
|
|
||||||
android:background="@drawable/tabs_shadow"/>
|
|
||||||
|
|
||||||
</RelativeLayout>
|
|
||||||
|
|
||||||
</merge>
|
|
53
mobile/android/base/resources/layout/tabs_panel.xml.in
Normal file
53
mobile/android/base/resources/layout/tabs_panel.xml.in
Normal file
@ -0,0 +1,53 @@
|
|||||||
|
#filter substitution
|
||||||
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
|
<!-- This Source Code Form is subject to the terms of the Mozilla Public
|
||||||
|
- License, v. 2.0. If a copy of the MPL was not distributed with this
|
||||||
|
- file, You can obtain one at http://mozilla.org/MPL/2.0/. -->
|
||||||
|
|
||||||
|
<merge xmlns:android="http://schemas.android.com/apk/res/android"
|
||||||
|
xmlns:gecko="http://schemas.android.com/apk/res/@ANDROID_PACKAGE_NAME@">
|
||||||
|
|
||||||
|
<LinearLayout android:layout_width="fill_parent"
|
||||||
|
android:layout_height="wrap_content"
|
||||||
|
android:orientation="vertical">
|
||||||
|
|
||||||
|
<view class="org.mozilla.gecko.TabsPanel$TabsPanelToolbar"
|
||||||
|
android:id="@+id/toolbar"
|
||||||
|
android:layout_width="fill_parent"
|
||||||
|
android:layout_height="@dimen/browser_toolbar_height"/>
|
||||||
|
|
||||||
|
<RelativeLayout android:layout_width="fill_parent"
|
||||||
|
android:layout_height="0dip"
|
||||||
|
android:layout_weight="1.0">
|
||||||
|
|
||||||
|
<view class="org.mozilla.gecko.TabsPanel$TabsListContainer"
|
||||||
|
android:id="@android:id/tabcontent"
|
||||||
|
android:layout_width="fill_parent"
|
||||||
|
android:layout_height="wrap_content">
|
||||||
|
|
||||||
|
<org.mozilla.gecko.TabsTray android:id="@+id/normal_tabs"
|
||||||
|
android:layout_width="fill_parent"
|
||||||
|
android:layout_height="fill_parent"
|
||||||
|
gecko:tabs="tabs_normal"/>
|
||||||
|
|
||||||
|
<org.mozilla.gecko.TabsTray android:id="@+id/private_tabs"
|
||||||
|
android:layout_width="fill_parent"
|
||||||
|
android:layout_height="wrap_content"
|
||||||
|
gecko:tabs="tabs_private"/>
|
||||||
|
|
||||||
|
<org.mozilla.gecko.RemoteTabs android:id="@+id/synced_tabs"
|
||||||
|
android:layout_width="fill_parent"
|
||||||
|
android:layout_height="wrap_content"/>
|
||||||
|
|
||||||
|
</view>
|
||||||
|
|
||||||
|
<View android:layout_width="fill_parent"
|
||||||
|
android:layout_height="3dp"
|
||||||
|
android:layout_alignParentTop="true"
|
||||||
|
android:background="@drawable/tabs_shadow"/>
|
||||||
|
|
||||||
|
</RelativeLayout>
|
||||||
|
|
||||||
|
</LinearLayout>
|
||||||
|
|
||||||
|
</merge>
|
@ -0,0 +1,16 @@
|
|||||||
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
|
<!-- This Source Code Form is subject to the terms of the Mozilla Public
|
||||||
|
- License, v. 2.0. If a copy of the MPL was not distributed with this
|
||||||
|
- file, You can obtain one at http://mozilla.org/MPL/2.0/. -->
|
||||||
|
|
||||||
|
<Gecko.TextView xmlns:android="http://schemas.android.com/apk/res/android"
|
||||||
|
android:layout_width="0dip"
|
||||||
|
android:layout_height="fill_parent"
|
||||||
|
android:layout_weight="1.0"
|
||||||
|
android:gravity="center"
|
||||||
|
android:background="@drawable/tabs_panel_indicator"
|
||||||
|
android:padding="10dp"
|
||||||
|
android:singleLine="true"
|
||||||
|
android:ellipsize="marquee"
|
||||||
|
android:textSize="13sp"
|
||||||
|
android:textColor="#FFE5F2FF"/>
|
@ -24,24 +24,10 @@
|
|||||||
android:layout_height="fill_parent"
|
android:layout_height="fill_parent"
|
||||||
android:layout_marginRight="22dip">
|
android:layout_marginRight="22dip">
|
||||||
|
|
||||||
<TextView android:id="@+id/title"
|
<TabWidget android:id="@android:id/tabs"
|
||||||
android:layout_width="wrap_content"
|
android:layout_width="0dip"
|
||||||
android:layout_height="fill_parent"
|
android:layout_height="fill_parent"
|
||||||
android:layout_weight="1.0"
|
android:layout_weight="1.0"/>
|
||||||
style="@style/TabRowTextAppearance"
|
|
||||||
android:gravity="center_vertical"
|
|
||||||
android:padding="10dip"
|
|
||||||
android:textSize="16sp"/>
|
|
||||||
|
|
||||||
<ImageButton android:id="@+id/remote_tabs"
|
|
||||||
android:layout_width="@dimen/browser_toolbar_height"
|
|
||||||
android:layout_height="@dimen/browser_toolbar_height"
|
|
||||||
android:gravity="center_vertical"
|
|
||||||
android:padding="12dip"
|
|
||||||
android:src="@drawable/remote_tabs_level"
|
|
||||||
android:contentDescription="@string/remote_tabs"
|
|
||||||
android:background="@drawable/action_bar_button"
|
|
||||||
android:visibility="gone"/>
|
|
||||||
|
|
||||||
<org.mozilla.gecko.TabsPanelButton android:id="@+id/add_tab"
|
<org.mozilla.gecko.TabsPanelButton android:id="@+id/add_tab"
|
||||||
android:layout_width="75dip"
|
android:layout_width="75dip"
|
||||||
|
@ -142,6 +142,9 @@
|
|||||||
<string name="new_private_tab">&new_private_tab;</string>
|
<string name="new_private_tab">&new_private_tab;</string>
|
||||||
<string name="synced_tabs">&synced_tabs;</string>
|
<string name="synced_tabs">&synced_tabs;</string>
|
||||||
<string name="close_all_tabs">&close_all_tabs;</string>
|
<string name="close_all_tabs">&close_all_tabs;</string>
|
||||||
|
<string name="tabs_normal">&tabs_normal;</string>
|
||||||
|
<string name="tabs_private">&tabs_private;</string>
|
||||||
|
<string name="tabs_synced">&tabs_synced;</string>
|
||||||
<!-- This string only appears in developer builds, which
|
<!-- This string only appears in developer builds, which
|
||||||
is why it is not localizable. -->
|
is why it is not localizable. -->
|
||||||
<string name="toggle_profiling">Toggle Profiling</string>
|
<string name="toggle_profiling">Toggle Profiling</string>
|
||||||
|
Loading…
Reference in New Issue
Block a user