Bug 1066253 - Part 2: Put favicons in the tab strip. r=lucasr

This commit is contained in:
Michael Comella 2014-09-22 14:44:49 -07:00
Родитель bba35c63d0
Коммит 2cdbf1cd8e
10 изменённых файлов: 50 добавлений и 10 удалений

Двоичный файл не отображается.

После

Ширина:  |  Высота:  |  Размер: 242 B

Двоичный файл не отображается.

После

Ширина:  |  Высота:  |  Размер: 148 B

Двоичный файл не отображается.

После

Ширина:  |  Высота:  |  Размер: 282 B

Двоичный файл не отображается.

После

Ширина:  |  Высота:  |  Размер: 470 B

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

@ -10,7 +10,8 @@
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_weight="1"
android:paddingTop="8dp"/>
android:paddingTop="8dp"
android:paddingLeft="2dp"/>
<ImageButton
android:id="@+id/add_tab"
@ -20,4 +21,4 @@
android:contentDescription="@string/new_tab"
android:background="@drawable/action_bar_button_inverse"/>
</merge>
</merge>

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

@ -10,5 +10,5 @@
android:layout_width="@dimen/new_tablet_tab_strip_item_width"
android:layout_height="match_parent"
android:background="@drawable/new_tablet_tab_strip_item_bg"
android:paddingLeft="28dp"
android:paddingLeft="25dp"
android:paddingRight="15dp"/>

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

@ -5,6 +5,14 @@
<merge xmlns:android="http://schemas.android.com/apk/res/android">
<ImageView
android:id="@+id/favicon"
android:layout_width="@dimen/tab_strip_favicon_size"
android:layout_height="match_parent"
android:layout_marginRight="9dp"
android:scaleType="centerInside"
android:duplicateParentState="true"/>
<org.mozilla.gecko.widget.ThemedTextView
android:id="@+id/title"
android:layout_width="0dip"

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

@ -10,4 +10,6 @@
<dimen name="tabs_counter_size">26sp</dimen>
<dimen name="panel_grid_view_column_width">200dp</dimen>
<dimen name="tab_strip_favicon_size">16dp</dimen>
</resources>

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

@ -98,6 +98,7 @@ public class TabStrip extends ThemedLinearLayout {
case UNSELECTED:
// We just need to update the style for the unselected tab...
case TITLE:
case FAVICON:
case RECORDING_CHANGE:
tabStripView.updateTab(tab);
break;

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

@ -5,7 +5,15 @@
package org.mozilla.gecko.tabs;
import org.mozilla.gecko.R;
import org.mozilla.gecko.Tab;
import org.mozilla.gecko.Tabs;
import org.mozilla.gecko.widget.ThemedImageButton;
import org.mozilla.gecko.widget.ThemedLinearLayout;
import org.mozilla.gecko.widget.ThemedTextView;
import android.content.Context;
import android.graphics.Bitmap;
import android.graphics.Canvas;
import android.graphics.Paint;
import android.graphics.Path;
@ -17,16 +25,11 @@ import android.view.LayoutInflater;
import android.view.MotionEvent;
import android.view.View;
import android.widget.Checkable;
import org.mozilla.gecko.R;
import org.mozilla.gecko.Tab;
import org.mozilla.gecko.Tabs;
import org.mozilla.gecko.widget.ThemedImageButton;
import org.mozilla.gecko.widget.ThemedLinearLayout;
import org.mozilla.gecko.widget.ThemedTextView;
import android.widget.ImageView;
public class TabStripItemView extends ThemedLinearLayout
implements Checkable {
@SuppressWarnings("unused")
private static final String LOGTAG = "GeckoTabStripItem";
private static final int[] STATE_CHECKED = {
@ -36,6 +39,7 @@ public class TabStripItemView extends ThemedLinearLayout
private int id = -1;
private boolean checked;
private final ImageView faviconView;
private final ThemedTextView titleView;
private final ThemedImageButton closeView;
@ -44,6 +48,9 @@ public class TabStripItemView extends ThemedLinearLayout
private final Region tabRegion;
private final Region tabClipRegion;
private final int faviconSize;
private Bitmap lastFavicon;
public TabStripItemView(Context context) {
this(context, null);
}
@ -62,6 +69,8 @@ public class TabStripItemView extends ThemedLinearLayout
tabPaint.setStrokeWidth(0.0f);
tabPaint.setXfermode(new PorterDuffXfermode(Mode.DST_IN));
faviconSize = getResources().getDimensionPixelSize(R.dimen.tab_strip_favicon_size);
LayoutInflater.from(context).inflate(R.layout.tab_strip_item_view, this);
setOnClickListener(new View.OnClickListener() {
@Override
@ -74,6 +83,7 @@ public class TabStripItemView extends ThemedLinearLayout
}
});
faviconView = (ImageView) findViewById(R.id.favicon);
titleView = (ThemedTextView) findViewById(R.id.title);
closeView = (ThemedImageButton) findViewById(R.id.close);
@ -187,7 +197,25 @@ public class TabStripItemView extends ThemedLinearLayout
}
id = tab.getId();
updateFavicon(tab.getFavicon());
titleView.setText(tab.getDisplayTitle());
setPrivateMode(tab.isPrivate());
}
private void updateFavicon(final Bitmap favicon) {
if (favicon == null) {
lastFavicon = null;
faviconView.setImageResource(R.drawable.favicon_none);
return;
} else if (favicon == lastFavicon) {
return;
}
// Cache the original so we can debounce without scaling.
lastFavicon = favicon;
final Bitmap scaledFavicon =
Bitmap.createScaledBitmap(favicon, faviconSize, faviconSize, false);
faviconView.setImageBitmap(scaledFavicon);
}
}