Merge "Cache resources for unseen footer treatment" into udc-dev

This commit is contained in:
Steve Elliott
2023-04-20 16:33:28 +00:00
committed by Android (Google) Code Review
3 changed files with 29 additions and 42 deletions

View File

@@ -17,8 +17,6 @@
package com.android.systemui.statusbar.notification.row;
import android.annotation.ColorInt;
import android.annotation.DrawableRes;
import android.annotation.StringRes;
import android.content.Context;
import android.content.res.ColorStateList;
import android.content.res.Configuration;
@@ -50,8 +48,8 @@ public class FooterView extends StackScrollerDecorView {
// Footer label
private TextView mSeenNotifsFooterTextView;
private @StringRes int mSeenNotifsFilteredText;
private int mUnlockIconSize;
private String mSeenNotifsFilteredText;
private Drawable mSeenNotifsFilteredIcon;
public FooterView(Context context, AttributeSet attrs) {
super(context, attrs);
@@ -87,30 +85,12 @@ public class FooterView extends StackScrollerDecorView {
mManageButton = findViewById(R.id.manage_text);
mSeenNotifsFooterTextView = findViewById(R.id.unlock_prompt_footer);
updateResources();
updateText();
updateContent();
updateColors();
}
public void setFooterLabelTextAndIcon(@StringRes int text, @DrawableRes int icon) {
mSeenNotifsFilteredText = text;
if (mSeenNotifsFilteredText != 0) {
mSeenNotifsFooterTextView.setText(mSeenNotifsFilteredText);
} else {
mSeenNotifsFooterTextView.setText(null);
}
Drawable drawable;
if (icon == 0) {
drawable = null;
} else {
drawable = getResources().getDrawable(icon);
drawable.setBounds(0, 0, mUnlockIconSize, mUnlockIconSize);
}
mSeenNotifsFooterTextView.setCompoundDrawablesRelative(drawable, null, null, null);
updateFooterVisibilityMode();
}
private void updateFooterVisibilityMode() {
if (mSeenNotifsFilteredText != 0) {
public void setFooterLabelVisible(boolean isVisible) {
if (isVisible) {
mManageButton.setVisibility(View.GONE);
mClearAllButton.setVisibility(View.GONE);
mSeenNotifsFooterTextView.setVisibility(View.VISIBLE);
@@ -141,10 +121,10 @@ public class FooterView extends StackScrollerDecorView {
return;
}
mShowHistory = showHistory;
updateText();
updateContent();
}
private void updateText() {
private void updateContent() {
if (mShowHistory) {
mManageButton.setText(mManageNotificationHistoryText);
mManageButton.setContentDescription(mManageNotificationHistoryText);
@@ -152,6 +132,9 @@ public class FooterView extends StackScrollerDecorView {
mManageButton.setText(mManageNotificationText);
mManageButton.setContentDescription(mManageNotificationText);
}
mSeenNotifsFooterTextView.setText(mSeenNotifsFilteredText);
mSeenNotifsFooterTextView
.setCompoundDrawablesRelative(mSeenNotifsFilteredIcon, null, null, null);
}
public boolean isHistoryShown() {
@@ -166,7 +149,7 @@ public class FooterView extends StackScrollerDecorView {
mClearAllButton.setContentDescription(
mContext.getString(R.string.accessibility_clear_all));
updateResources();
updateText();
updateContent();
}
/**
@@ -190,8 +173,11 @@ public class FooterView extends StackScrollerDecorView {
mManageNotificationText = getContext().getString(R.string.manage_notifications_text);
mManageNotificationHistoryText = getContext()
.getString(R.string.manage_notifications_history_text);
mUnlockIconSize = getResources()
int unlockIconSize = getResources()
.getDimensionPixelSize(R.dimen.notifications_unseen_footer_icon_size);
mSeenNotifsFilteredText = getContext().getString(R.string.unlock_to_see_notif_text);
mSeenNotifsFilteredIcon = getContext().getDrawable(R.drawable.ic_friction_lock_closed);
mSeenNotifsFilteredIcon.setBounds(0, 0, unlockIconSize, unlockIconSize);
}
@Override

View File

@@ -4746,13 +4746,7 @@ public class NotificationStackScrollLayout extends ViewGroup implements Dumpable
mFooterView.setVisible(visible, animate);
mFooterView.setSecondaryVisible(showDismissView, animate);
mFooterView.showHistory(showHistory);
if (mHasFilteredOutSeenNotifications) {
mFooterView.setFooterLabelTextAndIcon(
R.string.unlock_to_see_notif_text,
R.drawable.ic_friction_lock_closed);
} else {
mFooterView.setFooterLabelTextAndIcon(0, 0);
}
mFooterView.setFooterLabelVisible(mHasFilteredOutSeenNotifications);
}
@ShadeViewRefactor(RefactorComponent.SHADE_VIEW)

View File

@@ -24,12 +24,12 @@ import static junit.framework.Assert.assertTrue;
import static org.mockito.Mockito.mock;
import android.testing.AndroidTestingRunner;
import android.view.LayoutInflater;
import android.view.View;
import android.widget.TextView;
import androidx.test.filters.SmallTest;
import androidx.test.runner.AndroidJUnit4;
import com.android.systemui.R;
import com.android.systemui.SysuiTestCase;
@@ -39,7 +39,7 @@ import org.junit.Test;
import org.junit.runner.RunWith;
@SmallTest
@RunWith(AndroidJUnit4.class)
@RunWith(AndroidTestingRunner.class)
public class FooterViewTest extends SysuiTestCase {
FooterView mView;
@@ -102,14 +102,21 @@ public class FooterViewTest extends SysuiTestCase {
}
@Test
public void testSetFooterLabelTextAndIcon() {
mView.setFooterLabelTextAndIcon(
R.string.unlock_to_see_notif_text,
R.drawable.ic_friction_lock_closed);
public void testSetFooterLabelVisible() {
mView.setFooterLabelVisible(true);
assertThat(mView.findViewById(R.id.manage_text).getVisibility()).isEqualTo(View.GONE);
assertThat(mView.findSecondaryView().getVisibility()).isEqualTo(View.GONE);
assertThat(mView.findViewById(R.id.unlock_prompt_footer).getVisibility())
.isEqualTo(View.VISIBLE);
}
@Test
public void testSetFooterLabelInvisible() {
mView.setFooterLabelVisible(false);
assertThat(mView.findViewById(R.id.manage_text).getVisibility()).isEqualTo(View.VISIBLE);
assertThat(mView.findSecondaryView().getVisibility()).isEqualTo(View.VISIBLE);
assertThat(mView.findViewById(R.id.unlock_prompt_footer).getVisibility())
.isEqualTo(View.GONE);
}
}