mirror of
https://github.com/mozilla/gecko-dev.git
synced 2024-10-22 17:55:50 +00:00
Bug 1406338 - Part 2: Show favicons in tabs tray page. r=nechen
MozReview-Commit-ID: BXOFuxwI0sl --HG-- extra : rebase_source : 24060ab31fb3df81fa341f54b0aa969b31e4564c
This commit is contained in:
parent
7ec87779b1
commit
4bcdd48869
@ -20,35 +20,47 @@
|
||||
android:paddingRight="@dimen/tab_highlight_stroke_width"
|
||||
android:paddingBottom="@dimen/tab_highlight_stroke_width">
|
||||
|
||||
<org.mozilla.gecko.widget.FadedSingleColorTextView
|
||||
android:id="@+id/title"
|
||||
android:layout_width="0dip"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_weight="1.0"
|
||||
style="@style/TabLayoutItemTextAppearance"
|
||||
android:textSize="14sp"
|
||||
android:textColor="@color/tab_item_title"
|
||||
android:singleLine="true"
|
||||
android:duplicateParentState="true"
|
||||
gecko:fadeWidth="15dp"
|
||||
android:paddingRight="5dp"
|
||||
android:paddingEnd="5dp"
|
||||
android:paddingLeft="0dp"
|
||||
android:paddingStart="0dp"
|
||||
android:drawablePadding="6dp"/>
|
||||
<org.mozilla.gecko.widget.FaviconView
|
||||
android:id="@+id/favicon"
|
||||
style="@style/TabsLayoutItemFavicon"
|
||||
android:layout_width="16dp"
|
||||
android:layout_height="16dp"
|
||||
android:layout_gravity="center_vertical"
|
||||
android:scaleType="centerInside"
|
||||
gecko:dominantBorderEnabled="false"
|
||||
gecko:overrideScaleType="false"/>
|
||||
|
||||
<org.mozilla.gecko.widget.FadedSingleColorTextView
|
||||
android:id="@+id/title"
|
||||
style="@style/TabLayoutItemTextAppearance"
|
||||
android:layout_width="0dip"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_weight="1.0"
|
||||
android:layout_gravity="center_vertical"
|
||||
android:drawablePadding="6dp"
|
||||
android:duplicateParentState="true"
|
||||
android:paddingEnd="5dp"
|
||||
android:paddingLeft="0dp"
|
||||
android:paddingRight="5dp"
|
||||
android:paddingStart="0dp"
|
||||
android:singleLine="true"
|
||||
android:textColor="@color/tab_item_title"
|
||||
android:textSize="14sp"
|
||||
gecko:fadeWidth="15dp"/>
|
||||
|
||||
<!-- Use of baselineAlignBottom only supported from API 11+ - if this needs to work on lower API versions
|
||||
we'll need to override getBaseLine() and return image height, but we assume this won't happen -->
|
||||
<ImageView android:id="@+id/close"
|
||||
style="@style/TabsItemClose"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:scaleType="center"
|
||||
android:baselineAlignBottom="true"
|
||||
android:background="@android:color/transparent"
|
||||
android:contentDescription="@string/close_tab"
|
||||
android:src="@drawable/tab_item_close_button"
|
||||
android:duplicateParentState="true"/>
|
||||
<ImageView
|
||||
android:id="@+id/close"
|
||||
style="@style/TabsItemClose"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_gravity="center_vertical"
|
||||
android:background="@android:color/transparent"
|
||||
android:contentDescription="@string/close_tab"
|
||||
android:duplicateParentState="true"
|
||||
android:scaleType="center"
|
||||
android:src="@drawable/tab_item_close_button"/>
|
||||
|
||||
</LinearLayout>
|
||||
|
||||
|
@ -20,35 +20,45 @@
|
||||
android:paddingRight="@dimen/tab_highlight_stroke_width"
|
||||
android:paddingBottom="@dimen/tab_highlight_stroke_width">
|
||||
|
||||
<org.mozilla.gecko.widget.FadedSingleColorTextView
|
||||
android:id="@+id/title"
|
||||
android:layout_width="0dip"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_weight="1.0"
|
||||
style="@style/TabLayoutItemTextAppearance"
|
||||
android:textSize="14sp"
|
||||
android:textColor="@color/tab_item_title"
|
||||
android:singleLine="true"
|
||||
android:duplicateParentState="true"
|
||||
gecko:fadeWidth="15dp"
|
||||
android:paddingRight="5dp"
|
||||
android:paddingEnd="5dp"
|
||||
android:paddingLeft="0dp"
|
||||
android:paddingStart="0dp"
|
||||
android:drawablePadding="6dp"/>
|
||||
<org.mozilla.gecko.widget.FaviconView
|
||||
android:id="@+id/favicon"
|
||||
style="@style/TabsLayoutItemFavicon"
|
||||
android:layout_width="16dp"
|
||||
android:layout_height="16dp"
|
||||
android:layout_gravity="center_vertical"
|
||||
android:scaleType="centerInside"
|
||||
gecko:dominantBorderEnabled="false"
|
||||
gecko:overrideScaleType="false"/>
|
||||
|
||||
<!-- Use of baselineAlignBottom only supported from API 11+ - if this needs to work on lower API versions
|
||||
we'll need to override getBaseLine() and return image height, but we assume this won't happen -->
|
||||
<ImageView android:id="@+id/close"
|
||||
style="@style/TabsItemClose"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:scaleType="center"
|
||||
android:baselineAlignBottom="true"
|
||||
android:background="@android:color/transparent"
|
||||
android:contentDescription="@string/close_tab"
|
||||
android:src="@drawable/tab_item_close_button"
|
||||
android:duplicateParentState="true"/>
|
||||
<org.mozilla.gecko.widget.FadedSingleColorTextView
|
||||
android:id="@+id/title"
|
||||
style="@style/TabLayoutItemTextAppearance"
|
||||
android:layout_width="0dip"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_gravity="center_vertical"
|
||||
android:layout_weight="1.0"
|
||||
android:drawablePadding="6dp"
|
||||
android:duplicateParentState="true"
|
||||
android:paddingEnd="5dp"
|
||||
android:paddingLeft="0dp"
|
||||
android:paddingRight="5dp"
|
||||
android:paddingStart="0dp"
|
||||
android:singleLine="true"
|
||||
android:textColor="@color/tab_item_title"
|
||||
android:textSize="14sp"
|
||||
gecko:fadeWidth="15dp"/>
|
||||
|
||||
<ImageView
|
||||
android:id="@+id/close"
|
||||
style="@style/TabsItemClose"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_gravity="center_vertical"
|
||||
android:background="@android:color/transparent"
|
||||
android:contentDescription="@string/close_tab"
|
||||
android:duplicateParentState="true"
|
||||
android:scaleType="center"
|
||||
android:src="@drawable/tab_item_close_button"/>
|
||||
|
||||
</LinearLayout>
|
||||
|
||||
|
@ -4,6 +4,7 @@
|
||||
- file, You can obtain one at http://mozilla.org/MPL/2.0/. -->
|
||||
|
||||
<org.mozilla.gecko.tabs.TabsLayoutItemView xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
xmlns:gecko="http://schemas.android.com/apk/res-auto"
|
||||
style="@style/TabsItem"
|
||||
android:focusable="true"
|
||||
android:id="@+id/info"
|
||||
@ -19,13 +20,13 @@
|
||||
|
||||
<!-- We set state_private on this View dynamically in TabsListLayout. -->
|
||||
<org.mozilla.gecko.widget.TabThumbnailWrapper
|
||||
android:id="@+id/wrapper"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:padding="4dip"
|
||||
android:background="@drawable/tab_thumbnail"
|
||||
android:duplicateParentState="true"
|
||||
android:clipToPadding="false">
|
||||
android:id="@+id/wrapper"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:padding="4dip"
|
||||
android:background="@drawable/tab_thumbnail"
|
||||
android:duplicateParentState="true"
|
||||
android:clipToPadding="false">
|
||||
|
||||
<org.mozilla.gecko.tabs.TabsPanelThumbnailView
|
||||
android:id="@+id/thumbnail"
|
||||
@ -34,39 +35,35 @@
|
||||
|
||||
</org.mozilla.gecko.widget.TabThumbnailWrapper>
|
||||
|
||||
<LinearLayout android:layout_width="0dip"
|
||||
android:layout_height="match_parent"
|
||||
android:orientation="vertical"
|
||||
android:layout_weight="1.0"
|
||||
android:paddingTop="4dip"
|
||||
android:paddingLeft="10dp"
|
||||
android:paddingStart="10dp"
|
||||
android:paddingRight="2dp"
|
||||
android:paddingEnd="4dip"
|
||||
android:duplicateParentState="true">
|
||||
<org.mozilla.gecko.widget.FaviconView
|
||||
android:id="@+id/favicon"
|
||||
style="@style/TabsListItemFavicon"
|
||||
android:layout_width="16dp"
|
||||
android:layout_height="16dp"
|
||||
android:layout_gravity="center_vertical"
|
||||
android:scaleType="centerInside"
|
||||
gecko:dominantBorderEnabled="false"
|
||||
gecko:overrideScaleType="false"/>
|
||||
|
||||
<TextView android:id="@+id/title"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="0dip"
|
||||
android:layout_weight="1.0"
|
||||
style="@style/TabLayoutItemTextAppearance"
|
||||
android:textColor="@color/tab_item_title"
|
||||
android:textSize="14sp"
|
||||
android:gravity="center_vertical"
|
||||
android:singleLine="false"
|
||||
android:maxLines="4"
|
||||
android:drawablePadding="6dp"
|
||||
android:duplicateParentState="true"/>
|
||||
|
||||
</LinearLayout>
|
||||
<TextView android:id="@+id/title"
|
||||
android:layout_width="0dp"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_weight="1"
|
||||
style="@style/TabLayoutItemTextAppearance"
|
||||
android:textColor="@color/tab_item_title"
|
||||
android:textSize="14sp"
|
||||
android:layout_gravity="center_vertical"
|
||||
android:singleLine="false"
|
||||
android:maxLines="4"
|
||||
android:duplicateParentState="true"/>
|
||||
|
||||
<ImageView android:id="@+id/close"
|
||||
style="@style/TabsItemClose"
|
||||
android:layout_width="34dip"
|
||||
android:layout_height="match_parent"
|
||||
android:scaleType="center"
|
||||
android:contentDescription="@string/close_tab"
|
||||
android:src="@drawable/tab_item_close_button"
|
||||
android:duplicateParentState="true"/>
|
||||
style="@style/TabsItemClose"
|
||||
android:layout_width="34dip"
|
||||
android:layout_height="match_parent"
|
||||
android:contentDescription="@string/close_tab"
|
||||
android:duplicateParentState="true"
|
||||
android:scaleType="center"
|
||||
android:src="@drawable/tab_item_close_button"/>
|
||||
|
||||
</org.mozilla.gecko.tabs.TabsLayoutItemView>
|
@ -77,6 +77,15 @@
|
||||
<item name="android:layout_marginRight">-3dp</item>
|
||||
</style>
|
||||
|
||||
<style name="TabsLayoutItemFavicon">
|
||||
<item name="android:layout_marginEnd">4dp</item>
|
||||
</style>
|
||||
|
||||
<style name="TabsListItemFavicon">
|
||||
<item name="android:layout_marginStart">10dp</item>
|
||||
<item name="android:layout_marginEnd">6dp</item>
|
||||
</style>
|
||||
|
||||
<style name="TabsTray.AddTab" parent="TabsTray.V17.AddTab" />
|
||||
<style name="TabsTray.V17.AddTab" parent="TabsTray.Base.AddTab">
|
||||
<item name="android:layout_marginEnd">-3dp</item>
|
||||
|
@ -175,6 +175,8 @@
|
||||
|
||||
<!-- TabsListLayout -->
|
||||
<dimen name="tab_highlight_stroke_width">5dp</dimen>
|
||||
<dimen name="tab_favicon_size">16dp</dimen>
|
||||
<dimen name="tab_favicon_text_size">12sp</dimen>
|
||||
|
||||
<!-- PageActionButtons dimensions -->
|
||||
<dimen name="page_action_button_width">@dimen/browser_toolbar_image_button_width</dimen>
|
||||
|
@ -518,6 +518,15 @@
|
||||
<item name="android:nextFocusLeft">@+id/info</item>
|
||||
</style>
|
||||
|
||||
<style name="TabsLayoutItemFavicon">
|
||||
<item name="android:layout_marginRight">4dp</item>
|
||||
</style>
|
||||
|
||||
<style name="TabsListItemFavicon">
|
||||
<item name="android:layout_marginLeft">10dp</item>
|
||||
<item name="android:layout_marginRight">6dp</item>
|
||||
</style>
|
||||
|
||||
<style name="Widget.RemoteTabsItemView" parent="Widget.TwoLinePageRow"/>
|
||||
|
||||
<style name="Widget.RemoteTabsClientView" parent="Widget.TwoLinePageRow">
|
||||
|
@ -7,15 +7,18 @@ package org.mozilla.gecko.tabs;
|
||||
import org.mozilla.gecko.R;
|
||||
import org.mozilla.gecko.Tab;
|
||||
import org.mozilla.gecko.Tabs;
|
||||
import org.mozilla.gecko.icons.IconResponse;
|
||||
import org.mozilla.gecko.icons.Icons;
|
||||
import org.mozilla.gecko.widget.FaviconView;
|
||||
import org.mozilla.gecko.widget.HoverDelegateWithReset;
|
||||
import org.mozilla.gecko.widget.TabThumbnailWrapper;
|
||||
import org.mozilla.gecko.widget.TouchDelegateWithReset;
|
||||
import org.mozilla.gecko.widget.themed.ThemedRelativeLayout;
|
||||
|
||||
import android.content.Context;
|
||||
import android.content.res.Resources;
|
||||
import android.graphics.Rect;
|
||||
import android.graphics.drawable.Drawable;
|
||||
import android.support.v4.widget.TextViewCompat;
|
||||
import android.support.v7.widget.ViewUtils;
|
||||
import android.util.AttributeSet;
|
||||
import android.util.TypedValue;
|
||||
@ -26,6 +29,8 @@ import android.widget.ImageView;
|
||||
import android.widget.LinearLayout;
|
||||
import android.widget.TextView;
|
||||
|
||||
import java.util.concurrent.Future;
|
||||
|
||||
public class TabsLayoutItemView extends LinearLayout
|
||||
implements Checkable {
|
||||
private static final String LOGTAG = "Gecko" + TabsLayoutItemView.class.getSimpleName();
|
||||
@ -39,6 +44,9 @@ public class TabsLayoutItemView extends LinearLayout
|
||||
private TabThumbnailWrapper mThumbnailWrapper;
|
||||
private HoverDelegateWithReset mHoverDelegate;
|
||||
|
||||
private FaviconView mFaviconView;
|
||||
private Future<IconResponse> mOngoingIconLoad;
|
||||
|
||||
public TabsLayoutItemView(Context context, AttributeSet attrs) {
|
||||
super(context, attrs);
|
||||
}
|
||||
@ -98,6 +106,7 @@ public class TabsLayoutItemView extends LinearLayout
|
||||
mThumbnail = (TabsPanelThumbnailView) findViewById(R.id.thumbnail);
|
||||
mCloseButton = (ImageView) findViewById(R.id.close);
|
||||
mThumbnailWrapper = (TabThumbnailWrapper) findViewById(R.id.wrapper);
|
||||
mFaviconView = (FaviconView) findViewById(R.id.favicon);
|
||||
|
||||
growCloseButtonHitArea();
|
||||
}
|
||||
@ -169,12 +178,27 @@ public class TabsLayoutItemView extends LinearLayout
|
||||
mCloseButton.setTag(this);
|
||||
|
||||
if (tab.isAudioPlaying()) {
|
||||
TextViewCompat.setCompoundDrawablesRelativeWithIntrinsicBounds(mTitle, R.drawable.tab_audio_playing, 0, 0, 0);
|
||||
mFaviconView.setImageResource(R.drawable.tab_audio_playing);
|
||||
final String tabTitleWithAudio =
|
||||
getResources().getString(R.string.tab_title_prefix_is_playing_audio, tabTitle);
|
||||
mTitle.setContentDescription(tabTitleWithAudio);
|
||||
} else {
|
||||
TextViewCompat.setCompoundDrawablesRelative(mTitle, null, null, null, null);
|
||||
if (mOngoingIconLoad != null) {
|
||||
mOngoingIconLoad.cancel(true);
|
||||
}
|
||||
|
||||
final Resources resources = getResources();
|
||||
final int iconSize = resources.getDimensionPixelSize(R.dimen.tab_favicon_size);
|
||||
final float textSize = resources.getDimensionPixelSize(R.dimen.tab_favicon_text_size);
|
||||
|
||||
mOngoingIconLoad = Icons.with(getContext())
|
||||
.pageUrl(tab.getURL())
|
||||
.skipNetwork()
|
||||
.targetSize(iconSize)
|
||||
.textSize(textSize)
|
||||
.build()
|
||||
.execute(mFaviconView.createIconCallback());
|
||||
|
||||
mTitle.setContentDescription(tabTitle);
|
||||
}
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user