Merge "Change groups to use number in the expander." into sc-dev am: 82336d7562
Original change: https://googleplex-android-review.googlesource.com/c/platform/frameworks/base/+/13761485 MUST ONLY BE SUBMITTED BY AUTOMERGER Change-Id: I50e4f1f9252a63a8d23d6c3eb397d1f567885abb
This commit is contained in:
@@ -5303,14 +5303,18 @@ public class Notification implements Parcelable
|
||||
}
|
||||
|
||||
private void bindExpandButton(RemoteViews contentView, StandardTemplateParams p) {
|
||||
contentView.setInt(
|
||||
R.id.expand_button, "setDefaultTextColor", getPrimaryTextColor(p));
|
||||
contentView.setInt(
|
||||
R.id.expand_button, "setDefaultPillColor", getProtectionColor(p));
|
||||
contentView.setInt(
|
||||
R.id.expand_button, "setHighlightTextColor", getBackgroundColor(p));
|
||||
contentView.setInt(
|
||||
R.id.expand_button, "setHighlightPillColor", getAccentColor(p));
|
||||
// set default colors
|
||||
int textColor = getPrimaryTextColor(p);
|
||||
int pillColor = getProtectionColor(p);
|
||||
contentView.setInt(R.id.expand_button, "setDefaultTextColor", textColor);
|
||||
contentView.setInt(R.id.expand_button, "setDefaultPillColor", pillColor);
|
||||
// Use different highlighted colors except when low-priority mode prevents that
|
||||
if (!p.forceDefaultColor) {
|
||||
textColor = getBackgroundColor(p);
|
||||
pillColor = getAccentColor(p);
|
||||
}
|
||||
contentView.setInt(R.id.expand_button, "setHighlightTextColor", textColor);
|
||||
contentView.setInt(R.id.expand_button, "setHighlightPillColor", pillColor);
|
||||
}
|
||||
|
||||
private void bindHeaderChronometerAndTime(RemoteViews contentView,
|
||||
|
||||
@@ -27,7 +27,7 @@ import android.graphics.Rect;
|
||||
import android.graphics.drawable.Drawable;
|
||||
import android.os.Build;
|
||||
import android.util.AttributeSet;
|
||||
import android.widget.FrameLayout;
|
||||
import android.widget.RelativeLayout;
|
||||
import android.widget.RemoteViews;
|
||||
|
||||
import com.android.internal.R;
|
||||
@@ -42,7 +42,7 @@ import java.util.ArrayList;
|
||||
* @hide
|
||||
*/
|
||||
@RemoteViews.RemoteView
|
||||
public class NotificationHeaderView extends FrameLayout {
|
||||
public class NotificationHeaderView extends RelativeLayout {
|
||||
private final int mHeadingEndMargin;
|
||||
private final int mTouchableHeight;
|
||||
private OnClickListener mExpandClickListener;
|
||||
@@ -159,7 +159,7 @@ public class NotificationHeaderView extends FrameLayout {
|
||||
* @param extraMarginEnd extra margin in px
|
||||
*/
|
||||
public void setTopLineExtraMarginEnd(int extraMarginEnd) {
|
||||
mTopLineView.setHeaderTextMarginEnd(extraMarginEnd + mHeadingEndMargin);
|
||||
mTopLineView.setHeaderTextMarginEnd(extraMarginEnd);
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -181,12 +181,15 @@ public class NotificationHeaderView extends FrameLayout {
|
||||
* @return extra margin
|
||||
*/
|
||||
public int getTopLineExtraMarginEnd() {
|
||||
return mTopLineView.getHeaderTextMarginEnd() - mHeadingEndMargin;
|
||||
return mTopLineView.getHeaderTextMarginEnd();
|
||||
}
|
||||
|
||||
/**
|
||||
* Get the base margin at the end of the top line view.
|
||||
* Add this to {@link #getTopLineExtraMarginEnd()} to get the total margin of the top line.
|
||||
* <p>
|
||||
* NOTE: This method's result is only valid if the expander does not have a number. Currently
|
||||
* only groups headers and conversations have numbers, so this is safe to use by MediaStyle.
|
||||
*
|
||||
* @return base margin
|
||||
*/
|
||||
|
||||
@@ -220,7 +220,9 @@ public class NotificationExpandButton extends FrameLayout {
|
||||
*/
|
||||
@RemotableViewMethod
|
||||
public void setNumber(int number) {
|
||||
mNumber = number;
|
||||
updateNumber();
|
||||
if (mNumber != number) {
|
||||
mNumber = number;
|
||||
updateNumber();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -30,7 +30,8 @@
|
||||
android:id="@+id/left_icon"
|
||||
android:layout_width="@dimen/notification_left_icon_size"
|
||||
android:layout_height="@dimen/notification_left_icon_size"
|
||||
android:layout_gravity="center_vertical|start"
|
||||
android:layout_alignParentStart="true"
|
||||
android:layout_centerVertical="true"
|
||||
android:layout_marginStart="@dimen/notification_left_icon_start"
|
||||
android:background="@drawable/notification_large_icon_outline"
|
||||
android:clipToOutline="true"
|
||||
@@ -43,7 +44,8 @@
|
||||
android:id="@+id/icon"
|
||||
android:layout_width="@dimen/notification_icon_circle_size"
|
||||
android:layout_height="@dimen/notification_icon_circle_size"
|
||||
android:layout_gravity="center_vertical|start"
|
||||
android:layout_alignParentStart="true"
|
||||
android:layout_centerVertical="true"
|
||||
android:layout_marginStart="@dimen/notification_icon_circle_start"
|
||||
android:background="@drawable/notification_icon_circle"
|
||||
android:padding="@dimen/notification_icon_circle_padding"
|
||||
@@ -55,10 +57,12 @@
|
||||
android:id="@+id/notification_top_line"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="match_parent"
|
||||
android:layout_gravity="center_vertical"
|
||||
android:layout_alignParentStart="true"
|
||||
android:layout_centerVertical="true"
|
||||
android:layout_toStartOf="@id/expand_button"
|
||||
android:layout_alignWithParentIfMissing="true"
|
||||
android:clipChildren="false"
|
||||
android:gravity="center_vertical"
|
||||
android:paddingEnd="@dimen/notification_heading_margin_end"
|
||||
android:paddingStart="@dimen/notification_content_margin_start"
|
||||
android:theme="@style/Theme.DeviceDefault.Notification"
|
||||
>
|
||||
@@ -71,14 +75,15 @@
|
||||
android:id="@+id/alternate_expand_target"
|
||||
android:layout_width="@dimen/notification_content_margin_start"
|
||||
android:layout_height="match_parent"
|
||||
android:layout_gravity="start"
|
||||
android:layout_alignParentStart="true"
|
||||
android:importantForAccessibility="no"
|
||||
/>
|
||||
|
||||
<include layout="@layout/notification_expand_button"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_gravity="center_vertical|end"
|
||||
android:layout_alignParentEnd="true"
|
||||
android:layout_centerVertical="true"
|
||||
/>
|
||||
|
||||
</NotificationHeaderView>
|
||||
|
||||
@@ -224,7 +224,7 @@
|
||||
<dimen name="notification_content_margin_end">16dp</dimen>
|
||||
|
||||
<!-- The margin on the end of the top-line content views (accommodates the expander) -->
|
||||
<dimen name="notification_heading_margin_end">48dp</dimen>
|
||||
<dimen name="notification_heading_margin_end">56dp</dimen>
|
||||
|
||||
<!-- The margin for text at the end of the image view for media notifications -->
|
||||
<dimen name="notification_media_image_margin_end">72dp</dimen>
|
||||
|
||||
@@ -412,6 +412,9 @@
|
||||
<!-- Whether or not child notifications that are part of a group will have shadows. -->
|
||||
<bool name="config_enableShadowOnChildNotifications">true</bool>
|
||||
|
||||
<!-- If true, group numbers are shown in the expander instead of via "+N" overflow number -->
|
||||
<bool name="config_showNotificationGroupCountInExpander">true</bool>
|
||||
|
||||
<!-- Whether or not a view containing child notifications will have a custom background when
|
||||
it has been expanded to reveal its children. -->
|
||||
<bool name="config_showGroupNotificationBgWhenExpanded">false</bool>
|
||||
|
||||
@@ -20,10 +20,12 @@ import android.app.Notification;
|
||||
import android.content.Context;
|
||||
import android.content.res.Configuration;
|
||||
import android.content.res.Resources;
|
||||
import android.content.res.TypedArray;
|
||||
import android.graphics.drawable.ColorDrawable;
|
||||
import android.service.notification.StatusBarNotification;
|
||||
import android.util.AttributeSet;
|
||||
import android.util.Pair;
|
||||
import android.view.ContextThemeWrapper;
|
||||
import android.view.LayoutInflater;
|
||||
import android.view.NotificationHeaderView;
|
||||
import android.view.View;
|
||||
@@ -33,6 +35,7 @@ import android.widget.TextView;
|
||||
|
||||
import com.android.internal.annotations.VisibleForTesting;
|
||||
import com.android.internal.widget.CachingIconView;
|
||||
import com.android.internal.widget.NotificationExpandButton;
|
||||
import com.android.systemui.R;
|
||||
import com.android.systemui.statusbar.CrossFadeHelper;
|
||||
import com.android.systemui.statusbar.NotificationGroupingUtil;
|
||||
@@ -103,6 +106,8 @@ public class NotificationChildrenContainer extends ViewGroup {
|
||||
private ViewGroup mCurrentHeader;
|
||||
private boolean mIsConversation;
|
||||
|
||||
private boolean mTintWithThemeAccent;
|
||||
private boolean mShowGroupCountInExpander;
|
||||
private boolean mShowDividersWhenExpanded;
|
||||
private boolean mHideDividersDuringExpand;
|
||||
private int mTranslationForHeader;
|
||||
@@ -145,6 +150,10 @@ public class NotificationChildrenContainer extends ViewGroup {
|
||||
com.android.internal.R.dimen.notification_content_margin);
|
||||
mEnableShadowOnChildNotifications =
|
||||
res.getBoolean(R.bool.config_enableShadowOnChildNotifications);
|
||||
mTintWithThemeAccent =
|
||||
res.getBoolean(com.android.internal.R.bool.config_tintNotificationsWithTheme);
|
||||
mShowGroupCountInExpander =
|
||||
res.getBoolean(R.bool.config_showNotificationGroupCountInExpander);
|
||||
mShowDividersWhenExpanded =
|
||||
res.getBoolean(R.bool.config_showDividersWhenGroupNotificationExpanded);
|
||||
mHideDividersDuringExpand =
|
||||
@@ -229,7 +238,6 @@ public class NotificationChildrenContainer extends ViewGroup {
|
||||
mNotificationHeader.measure(widthMeasureSpec, headerHeightSpec);
|
||||
}
|
||||
if (mNotificationHeaderLowPriority != null) {
|
||||
headerHeightSpec = MeasureSpec.makeMeasureSpec(mHeaderHeight, MeasureSpec.EXACTLY);
|
||||
mNotificationHeaderLowPriority.measure(widthMeasureSpec, headerHeightSpec);
|
||||
}
|
||||
|
||||
@@ -397,7 +405,20 @@ public class NotificationChildrenContainer extends ViewGroup {
|
||||
mGroupingUtil.updateChildrenAppearance();
|
||||
}
|
||||
|
||||
private void setExpandButtonNumber(NotificationViewWrapper wrapper) {
|
||||
View expandButton = wrapper == null
|
||||
? null : wrapper.getExpandButton();
|
||||
if (expandButton instanceof NotificationExpandButton) {
|
||||
((NotificationExpandButton) expandButton).setNumber(mUntruncatedChildCount);
|
||||
}
|
||||
}
|
||||
|
||||
public void updateGroupOverflow() {
|
||||
if (mShowGroupCountInExpander) {
|
||||
setExpandButtonNumber(mNotificationHeaderWrapper);
|
||||
setExpandButtonNumber(mNotificationHeaderWrapperLowPriority);
|
||||
return;
|
||||
}
|
||||
int maxAllowedVisibleChildren = getMaxAllowedVisibleChildren(true /* likeCollapsed */);
|
||||
if (mUntruncatedChildCount > maxAllowedVisibleChildren) {
|
||||
int number = mUntruncatedChildCount - maxAllowedVisibleChildren;
|
||||
@@ -1201,8 +1222,21 @@ public class NotificationChildrenContainer extends ViewGroup {
|
||||
}
|
||||
|
||||
public void onNotificationUpdated() {
|
||||
mHybridGroupManager.setOverflowNumberColor(mOverflowNumber,
|
||||
mContainingNotification.getNotificationColor());
|
||||
if (mShowGroupCountInExpander) {
|
||||
// The overflow number is not used, so its color is irrelevant; skip this
|
||||
return;
|
||||
}
|
||||
int color = mContainingNotification.getNotificationColor();
|
||||
if (mTintWithThemeAccent) {
|
||||
// We're using the theme accent, color with the accent color instead of the notif color
|
||||
Resources.Theme theme = new ContextThemeWrapper(mContext,
|
||||
com.android.internal.R.style.Theme_DeviceDefault_DayNight).getTheme();
|
||||
TypedArray ta = theme.obtainStyledAttributes(
|
||||
new int[]{com.android.internal.R.attr.colorAccent});
|
||||
color = ta.getColor(0, color);
|
||||
ta.recycle();
|
||||
}
|
||||
mHybridGroupManager.setOverflowNumberColor(mOverflowNumber, color);
|
||||
}
|
||||
|
||||
public int getPositionInLinearLayout(View childInGroup) {
|
||||
|
||||
Reference in New Issue
Block a user