Bug 848719: TabsButton will have curve only one side. [r=mfinkle] [needs-clobber]

--HG--
extra : rebase_source : 815c210eb08dbe17801fd951822a0b3908ed96a6
This commit is contained in:
Sriram Ramasubramanian 2013-03-14 15:26:25 -07:00
Родитель 6000b18725
Коммит 8253fa41ba
25 изменённых файлов: 198 добавлений и 587 удалений

Просмотреть файл

@ -136,7 +136,7 @@ public class AwesomeBar extends GeckoActivity {
BrowserToolbarBackground mAddressBarBg = (BrowserToolbarBackground) findViewById(R.id.address_bar_bg);
mAddressBarBg.setPrivateMode(true);
TabsButton mTabs = (TabsButton) findViewById(R.id.dummy_tab);
ShapedButton mTabs = (ShapedButton) findViewById(R.id.dummy_tab);
if (mTabs != null)
mTabs.setPrivateMode(true);

Просмотреть файл

@ -18,6 +18,7 @@ import android.graphics.drawable.StateListDrawable;
import android.util.AttributeSet;
public class BackButton extends ShapedButton {
private Path mPath;
private Path mBorderPath;
private Paint mBorderPaint;
private Paint mBorderPrivatePaint;

Просмотреть файл

@ -66,7 +66,7 @@ public class BrowserToolbar implements ViewSwitcher.ViewFactory,
private int mTitlePadding;
private boolean mSiteSecurityVisible;
private boolean mAnimateSiteSecurity;
private TabsButton mTabs;
private ShapedButton mTabs;
private int mTabsPaneWidth;
private ImageButton mBack;
private ImageButton mForward;
@ -217,7 +217,7 @@ public class BrowserToolbar implements ViewSwitcher.ViewFactory,
}
});
mTabs = (TabsButton) mLayout.findViewById(R.id.tabs);
mTabs = (ShapedButton) mLayout.findViewById(R.id.tabs);
mTabs.setOnClickListener(new Button.OnClickListener() {
@Override
public void onClick(View v) {
@ -906,21 +906,6 @@ public class BrowserToolbar implements ViewSwitcher.ViewFactory,
mActivity.getString(R.string.num_tabs, count) :
mActivity.getString(R.string.one_tab));
mCount = count;
mHandler.postDelayed(new Runnable() {
@Override
public void run() {
GeckoTextView view = (GeckoTextView) mTabsCount.getCurrentView();
view.setSelected(true);
}
}, mDuration);
mHandler.postDelayed(new Runnable() {
@Override
public void run() {
GeckoTextView view = (GeckoTextView) mTabsCount.getCurrentView();
view.setSelected(false);
}
}, 2 * mDuration);
}
public void updateTabCount(int count) {
@ -1005,27 +990,10 @@ public class BrowserToolbar implements ViewSwitcher.ViewFactory,
}
public void updateTabs(boolean areTabsShown) {
if (areTabsShown) {
mTabs.getBackground().setLevel(TABS_EXPANDED);
if (!mActivity.hasTabsSideBar()) {
mTabs.setImageLevel(0);
mTabsCount.setVisibility(View.GONE);
mMenu.setImageLevel(TABS_EXPANDED);
mMenu.getBackground().setLevel(TABS_EXPANDED);
} else {
mTabs.setImageLevel(TABS_EXPANDED);
}
} else {
if (areTabsShown)
mTabs.setImageLevel(TABS_EXPANDED);
else
mTabs.setImageLevel(TABS_CONTRACTED);
mTabs.getBackground().setLevel(TABS_CONTRACTED);
if (!mActivity.hasTabsSideBar()) {
mTabsCount.setVisibility(View.VISIBLE);
mMenu.setImageLevel(TABS_CONTRACTED);
mMenu.getBackground().setLevel(TABS_CONTRACTED);
}
}
// A level change will not trigger onMeasure() for the tabs, where the path is created.
// Manually requesting a layout to re-calculate the path.
@ -1033,11 +1001,9 @@ public class BrowserToolbar implements ViewSwitcher.ViewFactory,
}
public void setIsSideBar(boolean isSideBar) {
mTabs.setIsSideBar(isSideBar);
Resources resources = mActivity.getResources();
mTabs.setImageDrawable(resources.getDrawable(R.drawable.tabs_level));
mTabs.setBackgroundDrawable(resources.getDrawable(R.drawable.tabs_button));
mTabs.setBackgroundDrawable(resources.getDrawable(R.drawable.shaped_button));
}
public void setProgressVisibility(boolean visible) {

Просмотреть файл

@ -65,10 +65,9 @@ public final class GeckoViewsFactory implements LayoutInflater.Factory {
mFactoryMap.put("MenuItemDefault", MenuItemDefault.class.getConstructor(arg1Class, arg2Class));
mFactoryMap.put("FindInPageBar", FindInPageBar.class.getConstructor(arg1Class, arg2Class));
mFactoryMap.put("IconTabWidget", IconTabWidget.class.getConstructor(arg1Class, arg2Class));
mFactoryMap.put("MenuButton", MenuButton.class.getConstructor(arg1Class, arg2Class));
mFactoryMap.put("RemoteTabs", RemoteTabs.class.getConstructor(arg1Class, arg2Class));
mFactoryMap.put("ShapedButton", ShapedButton.class.getConstructor(arg1Class, arg2Class));
mFactoryMap.put("TabRow", TabRow.class.getConstructor(arg1Class, arg2Class));
mFactoryMap.put("TabsButton", TabsButton.class.getConstructor(arg1Class, arg2Class));
mFactoryMap.put("TabsPanel", TabsPanel.class.getConstructor(arg1Class, arg2Class));
mFactoryMap.put("TabsPanel$TabsListContainer", TabsPanel.TabsListContainer.class.getConstructor(arg1Class, arg2Class));
mFactoryMap.put("TabsPanel$TabsPanelToolbar", TabsPanel.TabsPanelToolbar.class.getConstructor(arg1Class, arg2Class));

Просмотреть файл

@ -112,7 +112,6 @@ FENNEC_JAVA_FILES = \
LightweightThemeDrawable.java \
LinkPreference.java \
MemoryMonitor.java \
MenuButton.java \
MenuItemActionBar.java \
MenuItemDefault.java \
MenuPanel.java \
@ -146,7 +145,6 @@ FENNEC_JAVA_FILES = \
SurfaceBits.java \
Tab.java \
Tabs.java \
TabsButton.java \
TabsPanel.java \
TabsTray.java \
TabsAccessor.java \
@ -917,7 +915,6 @@ RES_DRAWABLE_LAND_XHDPI_V14 = \
$(NULL)
RES_DRAWABLE_LARGE_LAND_V11 = \
res/drawable-large-land-v11/tabs_button.xml \
res/drawable-large-land-v11/tabs_level.xml \
$(NULL)
@ -1027,18 +1024,17 @@ MOZ_ANDROID_DRAWABLES += \
mobile/android/base/resources/drawable/ic_menu_desktop_mode_off.xml \
mobile/android/base/resources/drawable/ic_menu_desktop_mode_on.xml \
mobile/android/base/resources/drawable/ic_menu_quit.xml \
mobile/android/base/resources/drawable/menu_button.xml \
mobile/android/base/resources/drawable/menu_item_state.xml \
mobile/android/base/resources/drawable/menu_level.xml \
mobile/android/base/resources/drawable/progress_spinner.xml \
mobile/android/base/resources/drawable/remote_tabs_child_divider.xml \
mobile/android/base/resources/drawable/shaped_button.xml \
mobile/android/base/resources/drawable/site_security_level.xml \
mobile/android/base/resources/drawable/spinner.xml \
mobile/android/base/resources/drawable/suggestion_selector.xml \
mobile/android/base/resources/drawable/tab_new_level.xml \
mobile/android/base/resources/drawable/tab_row.xml \
mobile/android/base/resources/drawable/tab_thumbnail.xml \
mobile/android/base/resources/drawable/tabs_button.xml \
mobile/android/base/resources/drawable/tabs_level.xml \
mobile/android/base/resources/drawable/tabs_panel_indicator.xml \
mobile/android/base/resources/drawable/webapp_titlebar_bg.xml \

Просмотреть файл

@ -1,82 +0,0 @@
/* 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/. */
package org.mozilla.gecko;
import android.content.Context;
import android.content.res.Resources;
import android.graphics.Color;
import android.graphics.Path;
import android.graphics.PorterDuff.Mode;
import android.graphics.drawable.ColorDrawable;
import android.graphics.drawable.LevelListDrawable;
import android.graphics.drawable.StateListDrawable;
import android.util.AttributeSet;
public class MenuButton extends ShapedButton {
public MenuButton(Context context, AttributeSet attrs) {
super(context, attrs);
// Path is clipped.
mPath = new Path();
mCanvasDelegate = new CanvasDelegate(this, Mode.DST_OUT);
}
@Override
public void onMeasure(int widthMeasureSpec, int heightMeasureSpec) {
super.onMeasure(widthMeasureSpec, heightMeasureSpec);
int width = getMeasuredWidth();
int height = getMeasuredHeight();
int curve = (int) (height * 1.125f);
mPath.reset();
// Clipping happens on opposite side for menu.
if (mSide == CurveTowards.RIGHT) {
mPath.moveTo(0, 0);
mPath.cubicTo(curve * 0.75f, 0,
curve * 0.25f, height,
curve, height);
mPath.lineTo(0, height);
mPath.lineTo(0, 0);
} else if (mSide == CurveTowards.LEFT) {
mPath.moveTo(width, 0);
mPath.cubicTo((width - (curve * 0.75f)), 0,
(width - (curve * 0.25f)), height,
(width - curve), height);
mPath.lineTo(width, height);
mPath.lineTo(width, 0);
}
}
// The drawable is constructed as per @drawable/menu_button.
@Override
public void onLightweightThemeChanged() {
LightweightThemeDrawable drawable = mActivity.getLightweightTheme().getColorDrawable(this, Color.BLACK);
if (drawable == null)
return;
drawable.setAlpha(34, 34);
Resources resources = getContext().getResources();
StateListDrawable stateList = new StateListDrawable();
stateList.addState(new int[] { android.R.attr.state_pressed }, new ColorDrawable(resources.getColor(R.color.highlight_menu)));
stateList.addState(new int[] { android.R.attr.state_focused }, new ColorDrawable(resources.getColor(R.color.highlight_menu_focused)));
stateList.addState(new int[] { R.attr.state_private }, new ColorDrawable(Color.BLACK));
stateList.addState(new int[] {}, drawable);
LevelListDrawable levelList = new LevelListDrawable();
levelList.addLevel(0, 1, stateList);
levelList.addLevel(2, 2, new ColorDrawable(Color.TRANSPARENT));
setBackgroundDrawable(levelList);
}
@Override
public void onLightweightThemeReset() {
setBackgroundResource(R.drawable.menu_button);
}
}

Просмотреть файл

@ -5,27 +5,34 @@
package org.mozilla.gecko;
import android.content.Context;
import android.content.res.Resources;
import android.content.res.TypedArray;
import android.graphics.Canvas;
import android.graphics.Path;
import android.graphics.PorterDuff.Mode;
import android.graphics.drawable.ColorDrawable;
import android.graphics.drawable.Drawable;
import android.graphics.drawable.LevelListDrawable;
import android.graphics.drawable.StateListDrawable;
import android.util.AttributeSet;
public class ShapedButton extends GeckoImageButton
implements CanvasDelegate.DrawManager {
protected GeckoActivity mActivity;
protected Path mPath;
protected CurveTowards mSide;
private Path mPath;
private CurveTowards mSide;
protected CanvasDelegate mCanvasDelegate;
protected enum CurveTowards { NONE, LEFT, RIGHT };
private enum CurveTowards { NONE, LEFT, RIGHT };
public ShapedButton(Context context, AttributeSet attrs) {
super(context, attrs);
mActivity = (GeckoActivity) context;
TypedArray a = context.obtainStyledAttributes(attrs, R.styleable.BrowserToolbarCurve);
int curveTowards = a.getInt(R.styleable.BrowserToolbarCurve_curveTowards, 0x02);
int curveTowards = a.getInt(R.styleable.BrowserToolbarCurve_curveTowards, 0x00);
a.recycle();
if (curveTowards == 0x00)
@ -35,12 +42,46 @@ public class ShapedButton extends GeckoImageButton
else
mSide = CurveTowards.RIGHT;
// Path is clipped.
mPath = new Path();
mCanvasDelegate = new CanvasDelegate(this, Mode.DST_OUT);
setWillNotDraw(false);
}
@Override
public void onMeasure(int widthMeasureSpec, int heightMeasureSpec) {
super.onMeasure(widthMeasureSpec, heightMeasureSpec);
if (mSide == CurveTowards.NONE)
return;
int width = getMeasuredWidth();
int height = getMeasuredHeight();
int curve = (int) (height * 1.125f);
mPath.reset();
if (mSide == CurveTowards.RIGHT) {
mPath.moveTo(0, 0);
mPath.cubicTo(curve * 0.75f, 0,
curve * 0.25f, height,
curve, height);
mPath.lineTo(0, height);
mPath.lineTo(0, 0);
} else if (mSide == CurveTowards.LEFT) {
mPath.moveTo(width, 0);
mPath.cubicTo((width - (curve * 0.75f)), 0,
(width - (curve * 0.25f)), height,
(width - curve), height);
mPath.lineTo(width, height);
mPath.lineTo(width, 0);
}
}
@Override
public void draw(Canvas canvas) {
if (mCanvasDelegate != null)
if (mCanvasDelegate != null && mSide != CurveTowards.NONE)
mCanvasDelegate.draw(canvas, mPath, getWidth(), getHeight());
else
defaultDraw(canvas);
@ -51,6 +92,32 @@ public class ShapedButton extends GeckoImageButton
super.draw(canvas);
}
// The drawable is constructed as per @drawable/shaped_button.
@Override
public void onLightweightThemeChanged() {
int background = mActivity.getResources().getColor(R.color.background_tabs);
LightweightThemeDrawable lightWeight = mActivity.getLightweightTheme().getColorDrawable(this, background);
if (lightWeight == null)
return;
lightWeight.setAlpha(34, 34);
Resources resources = this.getContext().getResources();
StateListDrawable stateList = new StateListDrawable();
stateList.addState(new int[] { android.R.attr.state_pressed }, new ColorDrawable(resources.getColor(R.color.highlight_shaped)));
stateList.addState(new int[] { android.R.attr.state_focused }, new ColorDrawable(resources.getColor(R.color.highlight_shaped_focused)));
stateList.addState(new int[] { R.attr.state_private }, new ColorDrawable(resources.getColor(R.color.background_tabs)));
stateList.addState(new int[] {}, lightWeight);
setBackgroundDrawable(stateList);
}
@Override
public void onLightweightThemeReset() {
setBackgroundResource(R.drawable.shaped_button);
}
@Override
public void setBackgroundDrawable(Drawable drawable) {
if (getBackground() == null || drawable == null) {

Просмотреть файл

@ -1,208 +0,0 @@
/* 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/. */
package org.mozilla.gecko;
import android.content.Context;
import android.content.res.Resources;
import android.content.res.TypedArray;
import android.graphics.Canvas;
import android.graphics.Color;
import android.graphics.Paint;
import android.graphics.Path;
import android.graphics.PorterDuff.Mode;
import android.graphics.drawable.ColorDrawable;
import android.graphics.drawable.Drawable;
import android.graphics.drawable.LevelListDrawable;
import android.graphics.drawable.StateListDrawable;
import android.util.AttributeSet;
public class TabsButton extends ShapedButton {
private Paint mPaint;
private Path mBackgroundPath;
private Path mLeftCurve;
private Path mRightCurve;
private boolean mCropped;
private boolean mSideBar;
public TabsButton(Context context, AttributeSet attrs) {
super(context, attrs);
TypedArray a = context.obtainStyledAttributes(attrs, R.styleable.TabsButton);
mCropped = a.getBoolean(R.styleable.TabsButton_cropped, false);
a.recycle();
mSideBar = false;
// Paint to draw the background.
mPaint = new Paint();
mPaint.setAntiAlias(true);
mPaint.setColor(0xFF000000);
mPaint.setStrokeWidth(0.0f);
// Path is masked.
mPath = new Path();
mBackgroundPath = new Path();
mLeftCurve = new Path();
mRightCurve = new Path();
mCanvasDelegate = new CanvasDelegate(this, Mode.DST_IN);
}
@Override
public void onMeasure(int widthMeasureSpec, int heightMeasureSpec) {
super.onMeasure(widthMeasureSpec, heightMeasureSpec);
int width = getMeasuredWidth();
int height = getMeasuredHeight();
int curve = (int) (height * 1.125f);
// The bounds for the rectangle to carve the curves.
float left;
float right;
float top;
float bottom;
if (mSide == CurveTowards.RIGHT) {
left = 0;
right = width;
top = 0;
bottom = height;
} else {
left = 0;
right = width;
top = height;
bottom = 0;
}
mLeftCurve.reset();
mLeftCurve.moveTo(left, top);
if (mCropped && mSide == CurveTowards.LEFT) {
mLeftCurve.lineTo(left, top/2);
mLeftCurve.quadTo(left * 0.95f, top * 0.05f, left + curve/2, bottom);
} else {
mLeftCurve.cubicTo(left + (curve * 0.75f), top,
left + (curve * 0.25f), bottom,
left + curve, bottom);
}
mRightCurve.reset();
mRightCurve.moveTo(right, bottom);
if (mCropped && mSide == CurveTowards.RIGHT) {
mRightCurve.lineTo(right, bottom/2);
mRightCurve.quadTo(right * 0.95f, bottom * 0.05f, right - (curve/2), top);
} else {
mRightCurve.cubicTo(right - (curve * 0.75f), bottom,
right - (curve * 0.25f), top,
right - curve, top);
}
mPath.reset();
// Level 2: for phones: transparent.
// for tablets: only one curve.
Drawable background = getBackground();
if (background == null)
return;
if (!(background.getCurrent() instanceof ColorDrawable)) {
if (background.getLevel() == 2) {
mPath.moveTo(left, top);
mPath.lineTo(left, bottom);
mPath.lineTo(right, bottom);
mPath.addPath(mRightCurve);
mPath.lineTo(left, top);
} else {
mPath.moveTo(left, top);
mPath.addPath(mLeftCurve);
mPath.lineTo(right, bottom);
mPath.addPath(mRightCurve);
mPath.lineTo(left, top);
}
}
if (mCropped) {
mBackgroundPath.reset();
if (mSide == CurveTowards.RIGHT) {
mBackgroundPath.moveTo(right, bottom);
mBackgroundPath.addPath(mRightCurve);
mBackgroundPath.lineTo(right, top);
mBackgroundPath.lineTo(right, bottom);
} else {
mBackgroundPath.moveTo(left, top);
mBackgroundPath.addPath(mLeftCurve);
mBackgroundPath.lineTo(left, bottom);
mBackgroundPath.lineTo(left, top);
}
}
}
@Override
public void draw(Canvas canvas) {
mCanvasDelegate.draw(canvas, mPath, getWidth(), getHeight());
Drawable background = getBackground();
if (background.getCurrent() instanceof ColorDrawable)
return;
// Additionally draw a black curve for cropped button's default level.
if (mCropped && background.getLevel() != 2)
canvas.drawPath(mBackgroundPath, mPaint);
}
// The drawable is constructed as per @drawable/tabs_button.
@Override
public void onLightweightThemeChanged() {
int background1 = mActivity.getResources().getColor(R.color.background_tabs_light);
LightweightThemeDrawable lightWeight1 = mActivity.getLightweightTheme().getColorDrawable(this, background1);
int background2 = mActivity.getResources().getColor(R.color.background_tabs_dark);
LightweightThemeDrawable lightWeight2 = mActivity.getLightweightTheme().getColorDrawable(this, background2);
if (lightWeight1 == null || lightWeight2 == null)
return;
lightWeight1.setAlpha(34, 34);
lightWeight2.setAlpha(34, 34);
Resources resources = this.getContext().getResources();
StateListDrawable stateList1 = new StateListDrawable();
stateList1.addState(new int[] { android.R.attr.state_pressed }, new ColorDrawable(resources.getColor(R.color.highlight_tabs)));
stateList1.addState(new int[] { android.R.attr.state_focused }, new ColorDrawable(resources.getColor(R.color.highlight_tabs_focused)));
stateList1.addState(new int[] { R.attr.state_private }, new ColorDrawable(resources.getColor(R.color.background_tabs_light)));
stateList1.addState(new int[] {}, lightWeight1);
StateListDrawable stateList2 = new StateListDrawable();
stateList2.addState(new int[] { android.R.attr.state_pressed }, new ColorDrawable(resources.getColor(R.color.highlight_tabs)));
stateList2.addState(new int[] { android.R.attr.state_focused }, new ColorDrawable(resources.getColor(R.color.highlight_tabs_focused)));
stateList2.addState(new int[] { R.attr.state_private }, new ColorDrawable(resources.getColor(R.color.background_tabs_dark)));
stateList2.addState(new int[] {}, lightWeight2);
LevelListDrawable levelList = new LevelListDrawable();
levelList.addLevel(0, 1, stateList1);
// If there is a side bar, the expanded state will have a filled button.
if (mSideBar)
levelList.addLevel(2, 2, stateList2);
else
levelList.addLevel(2, 2, new ColorDrawable(Color.TRANSPARENT));
setBackgroundDrawable(levelList);
}
@Override
public void onLightweightThemeReset() {
setBackgroundResource(R.drawable.tabs_button);
}
public void setIsSideBar(boolean isSideBar) {
if (mSideBar == isSideBar)
return;
mSideBar = isSideBar;
requestLayout();
}
}

Просмотреть файл

@ -173,7 +173,7 @@ public class TabsPanel extends LinearLayout
@Override
public void onLightweightThemeChanged() {
int background = mActivity.getResources().getColor(R.color.background_tabs_light);
int background = mActivity.getResources().getColor(R.color.background_tabs);
LightweightThemeDrawable drawable = mActivity.getLightweightTheme().getColorDrawable(this, background, true);
if (drawable == null)
return;
@ -184,7 +184,7 @@ public class TabsPanel extends LinearLayout
@Override
public void onLightweightThemeReset() {
setBackgroundColor(getContext().getResources().getColor(R.color.background_tabs_light));
setBackgroundColor(getContext().getResources().getColor(R.color.background_tabs));
}
@Override
@ -256,7 +256,7 @@ public class TabsPanel extends LinearLayout
@Override
public void onLightweightThemeChanged() {
int background = mActivity.getResources().getColor(R.color.background_tabs_dark);
int background = mActivity.getResources().getColor(R.color.background_tabs);
LightweightThemeDrawable drawable = mActivity.getLightweightTheme().getColorDrawable(this, background);
if (drawable == null)
return;
@ -267,7 +267,7 @@ public class TabsPanel extends LinearLayout
@Override
public void onLightweightThemeReset() {
setBackgroundColor(getContext().getResources().getColor(R.color.background_tabs_dark));
setBackgroundColor(getContext().getResources().getColor(R.color.background_tabs));
}
@Override

Просмотреть файл

@ -1,42 +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/. -->
<level-list xmlns:android="http://schemas.android.com/apk/res/android">
<item android:maxLevel="1">
<selector>
<item android:state_pressed="true"
android:drawable="@color/highlight_tabs"/>
<item android:state_focused="true"
android:state_pressed="false"
android:drawable="@color/highlight_tabs_focused"/>
<item android:drawable="@color/background_tabs_light"/>
</selector>
</item>
<item android:maxLevel="2">
<selector>
<item android:state_pressed="true"
android:drawable="@color/highlight_tabs"/>
<item android:state_focused="true"
android:state_pressed="false"
android:drawable="@color/highlight_tabs_focused"/>
<item android:drawable="@color/background_tabs_dark"/>
</selector>
</item>
</level-list>

Просмотреть файл

@ -1,27 +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/. -->
<level-list xmlns:android="http://schemas.android.com/apk/res/android">
<item android:maxLevel="1">
<selector>
<item android:state_pressed="true"
android:drawable="@color/highlight_menu"/>
<item android:state_focused="true"
android:state_pressed="false"
android:drawable="@color/highlight_menu_focused"/>
<item android:drawable="@android:color/black"/>
</selector>
</item>
<item android:maxLevel="2" android:drawable="@android:color/transparent"/>
</level-list>

Просмотреть файл

@ -0,0 +1,17 @@
<?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_pressed="true"
android:drawable="@color/highlight_shaped"/>
<item android:state_focused="true"
android:state_pressed="false"
android:drawable="@color/highlight_shaped_focused"/>
<item android:drawable="@color/background_tabs"/>
</selector>

Просмотреть файл

@ -1,27 +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/. -->
<level-list xmlns:android="http://schemas.android.com/apk/res/android">
<item android:maxLevel="1">
<selector>
<item android:state_pressed="true"
android:drawable="@color/highlight_tabs"/>
<item android:state_focused="true"
android:state_pressed="false"
android:drawable="@color/highlight_tabs_focused"/>
<item android:drawable="@color/background_tabs_light"/>
</selector>
</item>
<item android:maxLevel="2" android:drawable="@android:color/transparent"/>
</level-list>

Просмотреть файл

@ -7,6 +7,6 @@
<item android:maxLevel="0" android:drawable="@android:color/transparent"/>
<item android:maxLevel="1" android:drawable="@drawable/tabs_carat"/>
<item android:maxLevel="2" android:drawable="@drawable/tabs_carat"/>
</level-list>

Просмотреть файл

@ -18,19 +18,13 @@
<ImageButton style="@style/AddressBar.ImageButton.Forward"
android:id="@+id/forward"/>
<view class="org.mozilla.gecko.TabsPanel$TabsPanelToolbar"
android:layout_width="60dip"
android:layout_height="fill_parent"
android:layout_alignParentTop="true"
android:layout_alignParentRight="true"
android:background="@color/background_tabs_dark"/>
<org.mozilla.gecko.BrowserToolbarBackground android:id="@+id/address_bar_bg"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:layout_marginRight="14dip"
android:layout_alignParentTop="true"
android:layout_alignParentRight="true"
gecko:curveTowards="right"
android:background="@drawable/address_bar_bg"/>
<FrameLayout style="@style/AddressBar.Button.Container"
@ -139,20 +133,19 @@
android:layout_height="0dip"
android:visibility="gone"/>
<org.mozilla.gecko.MenuButton android:id="@+id/menu"
style="@style/AddressBar.ImageButton.Unused"/>
<Gecko.ShapedButton android:id="@+id/menu"
style="@style/AddressBar.ImageButton.Unused"/>
<org.mozilla.gecko.TabsButton android:id="@+id/tabs"
style="@style/AddressBar.ImageButton"
android:layout_width="60dip"
android:layout_alignParentRight="true"
gecko:curveTowards="right"
gecko:cropped="true"
android:background="@drawable/tabs_button"
android:gravity="center_vertical"
android:src="@drawable/tabs_level"
android:paddingLeft="30dip"
android:paddingRight="10dip"/>
<Gecko.ShapedButton android:id="@+id/tabs"
style="@style/AddressBar.ImageButton"
android:layout_width="60dip"
android:layout_alignParentRight="true"
gecko:curveTowards="right"
android:background="@drawable/shaped_button"
android:gravity="center_vertical"
android:src="@drawable/tabs_level"
android:paddingLeft="30dip"
android:paddingRight="10dip"/>
<Gecko.TextSwitcher android:id="@+id/tabs_count"
style="@style/AddressBar.ImageButton"

Просмотреть файл

@ -18,19 +18,13 @@
<ImageButton style="@style/AddressBar.ImageButton.Forward"
android:id="@+id/forward"/>
<view class="org.mozilla.gecko.TabsPanel$TabsPanelToolbar"
android:layout_width="95dip"
android:layout_height="fill_parent"
android:layout_alignParentTop="true"
android:layout_alignParentRight="true"
android:background="@color/background_tabs_dark"/>
<org.mozilla.gecko.BrowserToolbarBackground android:id="@+id/address_bar_bg"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:layout_marginRight="50dip"
android:layout_alignParentTop="true"
android:layout_alignParentRight="true"
gecko:curveTowards="right"
android:background="@drawable/address_bar_bg"/>
<FrameLayout style="@style/AddressBar.Button.Container"
@ -139,32 +133,30 @@
android:layout_height="0dip"
android:visibility="gone"/>
<org.mozilla.gecko.MenuButton android:id="@+id/menu"
style="@style/AddressBar.ImageButton"
android:layout_width="60dip"
android:layout_alignParentRight="true"
android:gravity="center_vertical"
android:src="@drawable/menu_level"
android:contentDescription="@string/menu"
android:background="@drawable/menu_button"
android:paddingLeft="30dip"
android:paddingRight="10dip"/>
<Gecko.ShapedButton android:id="@+id/menu"
style="@style/AddressBar.ImageButton"
android:layout_width="40dip"
android:layout_alignParentRight="true"
android:gravity="center_vertical"
android:src="@drawable/menu_level"
android:contentDescription="@string/menu"
android:background="@drawable/shaped_button"/>
<org.mozilla.gecko.TabsButton android:id="@+id/tabs"
style="@style/AddressBar.ImageButton"
android:layout_width="80dip"
android:layout_marginRight="15dip"
android:layout_alignParentRight="true"
gecko:curveTowards="right"
android:background="@drawable/tabs_button"
android:gravity="center_vertical"
android:src="@drawable/tabs_level"
android:paddingLeft="30dip"
android:paddingRight="30dip"/>
<Gecko.ShapedButton android:id="@+id/tabs"
style="@style/AddressBar.ImageButton"
android:layout_width="60dip"
android:layout_marginRight="40dip"
android:layout_alignParentRight="true"
gecko:curveTowards="right"
android:background="@drawable/shaped_button"
android:gravity="center_vertical"
android:src="@drawable/tabs_level"
android:paddingLeft="30dip"
android:paddingRight="10dip"/>
<Gecko.TextSwitcher android:id="@+id/tabs_count"
style="@style/AddressBar.ImageButton"
android:layout_width="80dip"
android:layout_width="39dip"
android:layout_height="wrap_content"
android:layout_marginTop="4.5dp"
android:layout_alignRight="@id/tabs"

Просмотреть файл

@ -13,7 +13,7 @@
<view class="org.mozilla.gecko.TabsPanel$TabsPanelToolbar"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:background="@color/background_tabs_dark">
android:background="@color/background_tabs">
<include layout="@layout/tabs_panel_header"/>
@ -66,7 +66,7 @@
<view class="org.mozilla.gecko.TabsPanel$TabsPanelToolbar"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:background="@color/background_tabs_dark">
android:background="@color/background_tabs">
<include layout="@layout/tabs_panel_footer"/>

Просмотреть файл

@ -11,11 +11,6 @@
<RelativeLayout android:id="@+id/address_bar"
style="@style/AddressBar">
<view class="org.mozilla.gecko.TabsPanel$TabsPanelToolbar"
android:layout_width="84dip"
android:layout_height="fill_parent"
android:background="@color/background_tabs_dark"/>
<org.mozilla.gecko.BrowserToolbarBackground android:id="@+id/address_bar_bg"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
@ -23,17 +18,16 @@
gecko:curveTowards="left"
android:background="@drawable/address_bar_bg"/>
<org.mozilla.gecko.TabsButton android:id="@+id/tabs"
style="@style/AddressBar.ImageButton"
android:layout_width="84dip"
android:layout_alignParentLeft="true"
gecko:curveTowards="left"
gecko:cropped="true"
android:background="@drawable/tabs_button"
android:gravity="center_vertical"
android:src="@drawable/tabs_level"
android:paddingLeft="6dip"
android:paddingRight="38dip"/>
<Gecko.ShapedButton android:id="@+id/tabs"
style="@style/AddressBar.ImageButton"
android:layout_width="84dip"
android:layout_alignParentLeft="true"
gecko:curveTowards="left"
android:background="@drawable/shaped_button"
android:gravity="center_vertical"
android:src="@drawable/tabs_level"
android:paddingLeft="6dip"
android:paddingRight="38dip"/>
<Gecko.TextSwitcher android:id="@+id/tabs_count"
style="@style/AddressBar.ImageButton"

Просмотреть файл

@ -15,14 +15,13 @@
gecko:curveTowards="none"
android:background="@drawable/address_bar_bg"/>
<org.mozilla.gecko.TabsButton android:id="@+id/dummy_tab"
style="@style/AddressBar.ImageButton"
android:layout_width="84dip"
android:layout_alignParentLeft="true"
gecko:curveTowards="left"
gecko:cropped="true"
android:background="@drawable/tabs_button"
android:gravity="center_vertical"/>
<Gecko.ShapedButton android:id="@+id/dummy_tab"
style="@style/AddressBar.ImageButton"
android:layout_width="84dip"
android:layout_alignParentLeft="true"
gecko:curveTowards="left"
android:background="@drawable/shaped_button"
android:gravity="center_vertical"/>
<view class="org.mozilla.gecko.CustomEditText"
android:id="@+id/awesomebar_text"

Просмотреть файл

@ -18,19 +18,13 @@
<ImageButton style="@style/AddressBar.ImageButton.Forward"
android:id="@+id/forward"/>
<view class="org.mozilla.gecko.TabsPanel$TabsPanelToolbar"
android:layout_width="72dip"
android:layout_height="fill_parent"
android:layout_alignParentTop="true"
android:layout_alignParentRight="true"
android:background="@color/background_tabs_dark"/>
<org.mozilla.gecko.BrowserToolbarBackground android:id="@+id/address_bar_bg"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:layout_marginRight="18dip"
android:layout_alignParentTop="true"
android:layout_alignParentRight="true"
gecko:curveTowards="right"
android:background="@drawable/address_bar_bg"/>
<FrameLayout style="@style/AddressBar.Button.Container"
@ -137,20 +131,19 @@
android:layout_height="0dip"
android:visibility="gone"/>
<org.mozilla.gecko.MenuButton android:id="@+id/menu"
style="@style/AddressBar.ImageButton.Unused"/>
<Gecko.ShapedButton android:id="@+id/menu"
style="@style/AddressBar.ImageButton.Unused"/>
<org.mozilla.gecko.TabsButton android:id="@+id/tabs"
style="@style/AddressBar.ImageButton"
android:layout_width="72dip"
android:layout_alignParentRight="true"
gecko:curveTowards="right"
gecko:cropped="true"
android:background="@drawable/tabs_button"
android:gravity="center_vertical"
android:src="@drawable/tabs_level"
android:paddingLeft="37dip"
android:paddingRight="11dip"/>
<Gecko.ShapedButton android:id="@+id/tabs"
style="@style/AddressBar.ImageButton"
android:layout_width="72dip"
android:layout_alignParentRight="true"
gecko:curveTowards="right"
android:background="@drawable/shaped_button"
android:gravity="center_vertical"
android:src="@drawable/tabs_level"
android:paddingLeft="37dip"
android:paddingRight="11dip"/>
<Gecko.TextSwitcher android:id="@+id/tabs_count"
style="@style/AddressBar.ImageButton"

Просмотреть файл

@ -18,19 +18,13 @@
<ImageButton style="@style/AddressBar.ImageButton.Forward"
android:id="@+id/forward"/>
<view class="org.mozilla.gecko.TabsPanel$TabsPanelToolbar"
android:layout_width="120dip"
android:layout_height="fill_parent"
android:layout_alignParentTop="true"
android:layout_alignParentRight="true"
android:background="@color/background_tabs_dark"/>
<org.mozilla.gecko.BrowserToolbarBackground android:id="@+id/address_bar_bg"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:layout_marginRight="66dip"
android:layout_alignParentTop="true"
android:layout_alignParentRight="true"
gecko:curveTowards="right"
android:background="@drawable/address_bar_bg"/>
<FrameLayout style="@style/AddressBar.Button.Container"
@ -137,33 +131,30 @@
android:layout_height="0dip"
android:visibility="gone"/>
<org.mozilla.gecko.MenuButton android:id="@+id/menu"
style="@style/AddressBar.ImageButton"
android:layout_width="76dip"
android:layout_alignParentRight="true"
gecko:curveTowards="right"
android:gravity="center_vertical"
android:src="@drawable/menu_level"
android:contentDescription="@string/menu"
android:background="@drawable/menu_button"
android:paddingLeft="40dip"
android:paddingRight="12dip"
android:visibility="gone"/>
<Gecko.ShapedButton android:id="@+id/menu"
style="@style/AddressBar.ImageButton"
android:layout_width="48dip"
android:layout_alignParentRight="true"
android:gravity="center_vertical"
android:src="@drawable/menu_level"
android:contentDescription="@string/menu"
android:background="@drawable/shaped_button"/>
<org.mozilla.gecko.TabsButton android:id="@+id/tabs"
style="@style/AddressBar.ImageButton"
android:layout_width="98dip"
android:layout_marginRight="22dip"
android:layout_alignParentRight="true"
android:background="@drawable/tabs_button"
android:gravity="center_vertical"
android:src="@drawable/tabs_level"
android:paddingLeft="37dip"
android:paddingRight="37dip"/>
<Gecko.ShapedButton android:id="@+id/tabs"
style="@style/AddressBar.ImageButton"
android:layout_width="72dip"
android:layout_marginRight="48dip"
android:layout_alignParentRight="true"
gecko:curveTowards="right"
android:background="@drawable/shaped_button"
android:gravity="center_vertical"
android:src="@drawable/tabs_level"
android:paddingLeft="37dip"
android:paddingRight="11dip"/>
<Gecko.TextSwitcher android:id="@+id/tabs_count"
style="@style/AddressBar.ImageButton"
android:layout_width="98dip"
android:layout_width="44.5dip"
android:layout_height="wrap_content"
android:layout_marginTop="5dp"
android:layout_alignRight="@id/tabs"

Просмотреть файл

@ -10,7 +10,7 @@
<org.mozilla.gecko.TabsPanel android:id="@+id/tabs_panel"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:background="@color/background_tabs_light"
android:background="@color/background_tabs"
android:visibility="invisible"/>
<view class="org.mozilla.gecko.GeckoApp$MainLayout"

Просмотреть файл

@ -13,7 +13,7 @@
<view class="org.mozilla.gecko.TabsPanel$TabsPanelToolbar"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:background="@color/background_tabs_dark">
android:background="@color/background_tabs">
<include layout="@layout/tabs_panel_header"/>

Просмотреть файл

@ -45,10 +45,6 @@
</attr>
</declare-styleable>
<declare-styleable name="TabsButton">
<attr name="cropped" format="boolean"/>
</declare-styleable>
<declare-styleable name="TabsTray">
<attr name="tabs">
<flag name="tabs_normal" value="0x00" />

Просмотреть файл

@ -8,24 +8,17 @@
<color name="awesomebar_header_row_focused">#FFA2AAB2</color>
<color name="background_normal">#FFCED7DE</color>
<color name="background_private">#FF292C29</color>
<color name="background_tabs_dark">#FF363B40</color>
<color name="background_tabs_light">#FF43484E</color>
<color name="background_tabs">#FF363B40</color>
<color name="highlight">#33000000</color>
<color name="highlight_focused">#1A000000</color>
<color name="highlight_dark">#33FFFFFF</color>
<color name="highlight_dark_focused">#1AFFFFFF</color>
<!-- highlight on tabs button: 20% white over background_tabs_dark -->
<color name="highlight_tabs">#FF696D71</color>
<!-- highlight on shaped button: 20% white over background_tabs -->
<color name="highlight_shaped">#FF696D71</color>
<!-- highlight-focused on tabs button: 10% white over background_tabs_dark -->
<color name="highlight_tabs_focused">#FF565B60</color>
<!-- highlight on menu button: 20% white over black -->
<color name="highlight_menu">#FF333333</color>
<!-- highlight-focused on menu button: 10% white over black -->
<color name="highlight_menu_focused">#FF1A1A1A</color>
<!-- highlight-focused on shaped button: 10% white over background_tabs -->
<color name="highlight_shaped_focused">#FF565B60</color>
<!-- highlight on nav button: 20% black over background_normal -->
<color name="highlight_nav">#FFA5ACB2</color>