Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit e5359b28 authored by Julia Reynolds's avatar Julia Reynolds
Browse files

Align history styling with Settings

Fixes: 335717550
Bug: 349652992
Test: manual- view history in all states with new styling enabled and disabled
Flag: EXEMPT bug fix
Change-Id: I8ccf5d848691f954cb1b0a79c773ad76ab6c371a
parent ffb64450
Loading
Loading
Loading
Loading
+6 −6
Original line number Diff line number Diff line
@@ -17,7 +17,6 @@
<androidx.core.widget.NestedScrollView
    xmlns:android="http://schemas.android.com/apk/res/android"
    android:id="@+id/scroll"
    android:background="?android:attr/colorBackgroundFloating"
    android:layout_width="match_parent"
    android:layout_height="match_parent">

@@ -132,7 +131,8 @@
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:orientation="vertical"
            android:padding="16dp">
            android:paddingTop="16dp"
            android:paddingBottom="16dp">

            <LinearLayout
                android:id="@+id/snoozed_list"
@@ -145,12 +145,12 @@
                    android:layout_width="wrap_content"
                    android:text="@string/notification_history_snooze"
                    android:textColor="?android:attr/textColorPrimary"
                    android:layout_marginStart="?android:attr/listPreferredItemPaddingStart"
                    android:textAppearance="@style/TextAppearance.HomepageCardTitle"
                    android:paddingBottom="16dp" />

                    <androidx.recyclerview.widget.RecyclerView
                        android:id="@+id/notification_list"
                        android:background="@drawable/rounded_bg"
                        android:layout_width="match_parent"
                        android:layout_height="wrap_content"
                        android:clipChildren="true"
@@ -170,10 +170,10 @@
                    android:text="@string/notification_history_dismiss"
                    android:textColor="?android:attr/textColorPrimary"
                    android:textAppearance="@style/TextAppearance.HomepageCardTitle"
                    android:layout_marginStart="?android:attr/listPreferredItemPaddingStart"
                    android:paddingBottom="16dp" />
                <androidx.recyclerview.widget.RecyclerView
                        android:id="@+id/notification_list"
                        android:background="@drawable/rounded_bg"
                        android:layout_width="match_parent"
                        android:layout_height="wrap_content"
                        android:clipChildren="true"
@@ -191,13 +191,13 @@
                    android:layout_width="wrap_content"
                    android:textColor="?android:attr/textColorPrimary"
                    android:textAppearance="@style/TextAppearance.HomepageCardTitle"
                    android:layout_marginStart="?android:attr/listPreferredItemPaddingStart"
                    android:paddingBottom="16dp" />
                <LinearLayout
                    android:id="@+id/apps"
                    android:layout_width="match_parent"
                    android:layout_height="wrap_content"
                    android:orientation="vertical"
                    android:background="@drawable/rounded_bg">
                    android:orientation="vertical">
                    <!-- app based recycler views added here -->
                </LinearLayout>
            </LinearLayout>
+5 −6
Original line number Diff line number Diff line
@@ -25,6 +25,8 @@
        android:id="@+id/app_header"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_marginStart="?android:attr/listPreferredItemPaddingStart"
        android:layout_marginEnd="?android:attr/listPreferredItemPaddingEnd"
        android:paddingTop="20dp"
        android:paddingBottom="18dp"
        android:paddingStart="16dp"
@@ -84,15 +86,12 @@

    </androidx.constraintlayout.widget.ConstraintLayout>

    <View
        android:layout_width="match_parent"
        android:layout_height="1dp"
        android:background="?android:attr/listDivider" />

    <androidx.constraintlayout.widget.ConstraintLayout
        android:id="@+id/notification_list_wrapper"
        android:layout_width="match_parent"
        android:layout_height="wrap_content">
        android:layout_height="wrap_content"
        android:layout_marginStart="?android:attr/listPreferredItemPaddingStart"
        android:layout_marginEnd="?android:attr/listPreferredItemPaddingEnd">

        <com.android.settings.notification.history.NotificationHistoryRecyclerView
            android:id="@+id/notification_list"
+14 −7
Original line number Diff line number Diff line
@@ -17,17 +17,22 @@
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:minHeight="48dp"
    android:paddingTop="16dp"
    android:paddingBottom="16dp"
    android:paddingStart="?android:attr/listPreferredItemPaddingStart"
    android:paddingEnd="16dp"
    android:orientation="vertical"
    android:foreground="?android:attr/selectableItemBackground">

    <View
        android:id="@+id/divider"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:background="?android:attr/listDivider" />

    <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:minHeight="@*android:dimen/status_bar_icon_size"
        android:layout_marginStart="54dp"
        android:paddingTop="16dp"
        android:paddingEnd="?android:attr/listPreferredItemPaddingEnd"
        android:gravity="center_vertical">

        <TextView
@@ -36,7 +41,6 @@
            android:layout_width="0dp"
            android:layout_height="wrap_content"
            android:layout_centerVertical="true"
            android:layout_marginStart="32dp"
            android:ellipsize="end"
            android:singleLine="true"
            android:textAppearance="@*android:style/TextAppearance.DeviceDefault.Notification.Title"
@@ -77,11 +81,14 @@
        android:layout_height="wrap_content"
        android:layout_gravity="left|center_vertical"
        android:ellipsize="end"
        android:layout_marginStart="32dp"
        android:layout_marginStart="54dp"
        android:maxLines="7"
        android:paddingTop="4dp"
        android:paddingEnd="?android:attr/listPreferredItemPaddingEnd"
        android:textColor="?android:attr/textColorSecondary"
        android:textAppearance="@*android:style/TextAppearance.DeviceDefault.Notification"
        android:textAlignment="viewStart" />
        android:textAlignment="viewStart"
        android:paddingBottom="16dp" />

</LinearLayout>
+3 −7
Original line number Diff line number Diff line
@@ -22,8 +22,10 @@
    <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_marginStart="?android:attr/listPreferredItemPaddingStart"
        android:layout_marginEnd="?android:attr/listPreferredItemPaddingEnd"
        android:paddingStart="16dp"
        android:layout_marginEnd="16dp"
        android:paddingEnd="?android:attr/listPreferredItemPaddingEnd"
        android:paddingTop="16dp"
        android:paddingBottom="16dp"
        android:orientation="vertical">
@@ -128,11 +130,5 @@
            />

        </LinearLayout>

    </LinearLayout>
    <View
        android:id="@+id/divider"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:background="?android:attr/listDivider" />
</LinearLayout>
 No newline at end of file
+70 −57
Original line number Diff line number Diff line
@@ -17,11 +17,14 @@
package com.android.settings.notification.history;

import static android.provider.Settings.Secure.NOTIFICATION_HISTORY_ENABLED;
import static android.view.View.GONE;
import static android.view.View.VISIBLE;

import static androidx.core.view.accessibility.AccessibilityEventCompat.TYPE_VIEW_ACCESSIBILITY_FOCUSED;

import android.annotation.AttrRes;
import android.annotation.ColorInt;
import android.annotation.DrawableRes;
import android.app.ActionBar;
import android.app.ActivityManager;
import android.app.INotificationManager;
@@ -30,7 +33,6 @@ import android.content.Context;
import android.content.pm.PackageManager;
import android.content.res.Resources;
import android.content.res.TypedArray;
import android.graphics.Outline;
import android.os.Bundle;
import android.os.RemoteException;
import android.os.ServiceManager;
@@ -41,12 +43,10 @@ import android.service.notification.NotificationListenerService;
import android.service.notification.StatusBarNotification;
import android.util.Log;
import android.util.Slog;
import android.util.TypedValue;
import android.view.ContextThemeWrapper;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.view.ViewOutlineProvider;
import android.widget.CompoundButton.OnCheckedChangeListener;
import android.widget.ImageView;
import android.widget.TextView;
@@ -95,22 +95,7 @@ public class NotificationHistoryActivity extends CollapsingToolbarBaseActivity {
    private PackageManager mPm;
    private CountDownLatch mCountdownLatch;
    private Future mCountdownFuture;
    private final ViewOutlineProvider mOutlineProvider = new ViewOutlineProvider() {
        @Override
        public void getOutline(View view, Outline outline) {
            final TypedArray ta = NotificationHistoryActivity.this.obtainStyledAttributes(
                    new int[]{android.R.attr.dialogCornerRadius});
            final float dialogCornerRadius = ta.getDimension(0, 0);
            ta.recycle();
            TypedValue v = new TypedValue();
            NotificationHistoryActivity.this.getTheme().resolveAttribute(
                    com.android.internal.R.attr.listDivider, v, true);
            int bottomPadding = NotificationHistoryActivity.this.getDrawable(v.resourceId)
                    .getIntrinsicHeight();
            outline.setRoundRect(0, 0, view.getWidth(), (view.getHeight() - bottomPadding),
                    dialogCornerRadius);
        }
    };

    private UiEventLogger mUiEventLogger = new UiEventLoggerImpl();

    enum NotificationHistoryEvent implements UiEventLogger.UiEventEnum {
@@ -158,20 +143,28 @@ public class NotificationHistoryActivity extends CollapsingToolbarBaseActivity {

    private HistoryLoader.OnHistoryLoaderListener mOnHistoryLoaderListener = notifications -> {
        findViewById(R.id.today_list).setVisibility(
                notifications.isEmpty() ? View.GONE : View.VISIBLE);
                notifications.isEmpty() ? GONE : VISIBLE);
        mCountdownLatch.countDown();
        View recyclerView = mTodayView.findViewById(R.id.apps);
        recyclerView.setClipToOutline(true);
        mTodayView.setOutlineProvider(mOutlineProvider);
        mSnoozeView.setOutlineProvider(mOutlineProvider);
        // for each package, new header and recycler view
        for (int i = 0, notificationsSize = notifications.size(); i < notificationsSize; i++) {
            NotificationHistoryPackage nhp = notifications.get(i);
            View viewForPackage = LayoutInflater.from(this)
                    .inflate(R.layout.notification_history_app_layout, null);

            int cornerType = ROUND_CORNER_CENTER;
            if (i == (notificationsSize - 1)) {
                cornerType |= ROUND_CORNER_BOTTOM;
            }
            if (i == 0) {
                cornerType |= ROUND_CORNER_TOP;
            }
            int backgroundRes = NotificationHistoryActivity.getRoundCornerDrawableRes(cornerType);
            viewForPackage.setBackgroundResource(backgroundRes);

            final View container = viewForPackage.findViewById(R.id.notification_list_wrapper);
            container.setVisibility(View.GONE);
            container.setVisibility(GONE);
            View header = viewForPackage.findViewById(R.id.app_header);
            NotificationExpandButton expand = viewForPackage.findViewById(
                    com.android.internal.R.id.expand_button);
@@ -181,19 +174,19 @@ public class NotificationHistoryActivity extends CollapsingToolbarBaseActivity {
            expand.setDefaultPillColor(pillColor);
            expand.setDefaultTextColor(textColor);
            expand.setExpanded(false);
            header.setStateDescription(container.getVisibility() == View.VISIBLE
            header.setStateDescription(container.getVisibility() == VISIBLE
                    ? getString(R.string.condition_expand_hide)
                    : getString(R.string.condition_expand_show));
            int finalI = i;
            header.setOnClickListener(v -> {
                container.setVisibility(container.getVisibility() == View.VISIBLE
                        ? View.GONE : View.VISIBLE);
                expand.setExpanded(container.getVisibility() == View.VISIBLE);
                header.setStateDescription(container.getVisibility() == View.VISIBLE
                container.setVisibility(container.getVisibility() == VISIBLE
                        ? GONE : VISIBLE);
                expand.setExpanded(container.getVisibility() == VISIBLE);
                header.setStateDescription(container.getVisibility() == VISIBLE
                        ? getString(R.string.condition_expand_hide)
                        : getString(R.string.condition_expand_show));
                header.sendAccessibilityEvent(TYPE_VIEW_ACCESSIBILITY_FOCUSED);
                mUiEventLogger.logWithPosition((container.getVisibility() == View.VISIBLE)
                mUiEventLogger.logWithPosition((container.getVisibility() == VISIBLE)
                                ? NotificationHistoryEvent.NOTIFICATION_HISTORY_PACKAGE_HISTORY_OPEN
                              : NotificationHistoryEvent.NOTIFICATION_HISTORY_PACKAGE_HISTORY_CLOSE,
                        nhp.uid, nhp.pkgName, finalI);
@@ -217,7 +210,7 @@ public class NotificationHistoryActivity extends CollapsingToolbarBaseActivity {
                        count.setText(StringUtil.getIcuPluralsString(this, newCount,
                                R.string.notification_history_count));
                        if (newCount == 0) {
                            viewForPackage.setVisibility(View.GONE);
                            viewForPackage.setVisibility(GONE);
                        }
                    }, mUiEventLogger));
            ((NotificationHistoryAdapter) rv.getAdapter()).onRebuildComplete(
@@ -227,11 +220,6 @@ public class NotificationHistoryActivity extends CollapsingToolbarBaseActivity {
        }
    };

    private void configureNotificationList(View recyclerView) {
        recyclerView.setClipToOutline(true);
        recyclerView.setOutlineProvider(mOutlineProvider);
    }

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
@@ -240,8 +228,6 @@ public class NotificationHistoryActivity extends CollapsingToolbarBaseActivity {
        mTodayView = findViewById(R.id.apps);
        mSnoozeView = findViewById(R.id.snoozed_list);
        mDismissView = findViewById(R.id.recently_dismissed_list);
        configureNotificationList(mDismissView.findViewById(R.id.notification_list));
        configureNotificationList(mSnoozeView.findViewById(R.id.notification_list));
        mHistoryOff = findViewById(R.id.history_off);
        mHistoryOn = findViewById(R.id.history_on);
        mHistoryEmpty = findViewById(R.id.history_on_empty);
@@ -289,11 +275,11 @@ public class NotificationHistoryActivity extends CollapsingToolbarBaseActivity {
            }
            ThreadUtils.postOnMainThread(() -> {
                if (mSwitchBar.isChecked()
                        && findViewById(R.id.today_list).getVisibility() == View.GONE
                        && mSnoozeView.getVisibility() == View.GONE
                        && mDismissView.getVisibility() == View.GONE) {
                    mHistoryOn.setVisibility(View.GONE);
                    mHistoryEmpty.setVisibility(View.VISIBLE);
                        && findViewById(R.id.today_list).getVisibility() == GONE
                        && mSnoozeView.getVisibility() == GONE
                        && mDismissView.getVisibility() == GONE) {
                    mHistoryOn.setVisibility(GONE);
                    mHistoryEmpty.setVisibility(VISIBLE);
                }
            });
        });
@@ -320,6 +306,33 @@ public class NotificationHistoryActivity extends CollapsingToolbarBaseActivity {
        super.onDestroy();
    }

    public static final int ROUND_CORNER_CENTER = 1;
    public static final int ROUND_CORNER_TOP = 1 << 1;
    public static final int ROUND_CORNER_BOTTOM = 1 << 2;

    public static @DrawableRes int getRoundCornerDrawableRes(int cornerType) {

        if ((cornerType & ROUND_CORNER_CENTER) == 0) {
            return 0;
        }

        if (((cornerType & ROUND_CORNER_TOP) != 0) && ((cornerType & ROUND_CORNER_BOTTOM) == 0)) {
            // the first
            return com.android.settingslib.widget.theme.R.drawable.settingslib_round_background_top;
        } else if (((cornerType & ROUND_CORNER_BOTTOM) != 0)
                && ((cornerType & ROUND_CORNER_TOP) == 0)) {
            // the last
            return com.android.settingslib.widget.theme.R.drawable.settingslib_round_background_bottom;
        } else if (((cornerType & ROUND_CORNER_TOP) != 0)
                && ((cornerType & ROUND_CORNER_BOTTOM) != 0)) {
            // the only one preference
            return com.android.settingslib.widget.theme.R.drawable.settingslib_round_background;
        } else {
            // in the center
            return com.android.settingslib.widget.theme.R.drawable.settingslib_round_background_center;
        }
    }

    private @ColorInt int obtainThemeColor(@AttrRes int attrRes) {
        Resources.Theme theme = new ContextThemeWrapper(this,
                android.R.style.Theme_DeviceDefault_DayNight).getTheme();
@@ -345,14 +358,14 @@ public class NotificationHistoryActivity extends CollapsingToolbarBaseActivity {

    private void toggleViews(boolean isChecked) {
        if (isChecked) {
            mHistoryOff.setVisibility(View.GONE);
            mHistoryOn.setVisibility(View.VISIBLE);
            mHistoryOff.setVisibility(GONE);
            mHistoryOn.setVisibility(VISIBLE);
        } else {
            mHistoryOn.setVisibility(View.GONE);
            mHistoryOff.setVisibility(View.VISIBLE);
            mHistoryOn.setVisibility(GONE);
            mHistoryOff.setVisibility(VISIBLE);
            mTodayView.removeAllViews();
        }
        mHistoryEmpty.setVisibility(View.GONE);
        mHistoryEmpty.setVisibility(GONE);
    }

    private final OnCheckedChangeListener mOnSwitchClickListener =
@@ -372,13 +385,13 @@ public class NotificationHistoryActivity extends CollapsingToolbarBaseActivity {
                    Log.d(TAG, "onSwitchChange history to " + isChecked);
                }
                // Reset UI visibility to ensure it matches real state.
                mHistoryOn.setVisibility(View.GONE);
                mHistoryOn.setVisibility(GONE);
                if (isChecked) {
                    mHistoryEmpty.setVisibility(View.VISIBLE);
                    mHistoryOff.setVisibility(View.GONE);
                    mHistoryEmpty.setVisibility(VISIBLE);
                    mHistoryOff.setVisibility(GONE);
                } else {
                    mHistoryOff.setVisibility(View.VISIBLE);
                    mHistoryEmpty.setVisibility(View.GONE);
                    mHistoryOff.setVisibility(VISIBLE);
                    mHistoryEmpty.setVisibility(GONE);
                }
                mTodayView.removeAllViews();
            };
@@ -410,7 +423,7 @@ public class NotificationHistoryActivity extends CollapsingToolbarBaseActivity {
            mSnoozedRv.setNestedScrollingEnabled(false);

            if (snoozed == null || snoozed.length == 0) {
                mSnoozeView.setVisibility(View.GONE);
                mSnoozeView.setVisibility(GONE);
            } else {
                ((NotificationSbnAdapter) mSnoozedRv.getAdapter()).onRebuildComplete(
                        new ArrayList<>(Arrays.asList(snoozed)));
@@ -426,9 +439,9 @@ public class NotificationHistoryActivity extends CollapsingToolbarBaseActivity {
            mDismissedRv.setNestedScrollingEnabled(false);

            if (dismissed == null || dismissed.length == 0) {
                mDismissView.setVisibility(View.GONE);
                mDismissView.setVisibility(GONE);
            } else {
                mDismissView.setVisibility(View.VISIBLE);
                mDismissView.setVisibility(VISIBLE);
                ((NotificationSbnAdapter) mDismissedRv.getAdapter()).onRebuildComplete(
                        new ArrayList<>(Arrays.asList(dismissed)));
            }
@@ -446,10 +459,10 @@ public class NotificationHistoryActivity extends CollapsingToolbarBaseActivity {
                int reason) {
            if (reason == REASON_SNOOZED) {
                ((NotificationSbnAdapter) mSnoozedRv.getAdapter()).addSbn(sbn);
                mSnoozeView.setVisibility(View.VISIBLE);
                mSnoozeView.setVisibility(VISIBLE);
            } else {
                ((NotificationSbnAdapter) mDismissedRv.getAdapter()).addSbn(sbn);
                mDismissView.setVisibility(View.VISIBLE);
                mDismissView.setVisibility(VISIBLE);
            }
        }
    };
Loading