From 8b031276b7f59588e2d936781ec8c3f5df12f510 Mon Sep 17 00:00:00 2001 From: Julia Reynolds Date: Tue, 25 Feb 2020 12:23:37 -0500 Subject: [PATCH] Include changes that happen when history is open Test: manual Fixes: 150202759 Change-Id: Ic05be6c5c85a16567556d3f3902f4d557a8e7c1f --- .../history/NotificationHistoryActivity.java | 60 +++++++++++++------ .../history/NotificationSbnAdapter.java | 8 +++ 2 files changed, 49 insertions(+), 19 deletions(-) diff --git a/src/com/android/settings/notification/history/NotificationHistoryActivity.java b/src/com/android/settings/notification/history/NotificationHistoryActivity.java index 9f8a07fd414..fbbda21baab 100644 --- a/src/com/android/settings/notification/history/NotificationHistoryActivity.java +++ b/src/com/android/settings/notification/history/NotificationHistoryActivity.java @@ -236,39 +236,44 @@ public class NotificationHistoryActivity extends Activity { }; private final NotificationListenerService mListener = new NotificationListenerService() { + private RecyclerView mDismissedRv; + private RecyclerView mSnoozedRv; @Override public void onListenerConnected() { StatusBarNotification[] snoozed = getSnoozedNotifications(); + mSnoozedRv = mSnoozeView.findViewById(R.id.notification_list); + LinearLayoutManager lm = new LinearLayoutManager(NotificationHistoryActivity.this); + mSnoozedRv.setLayoutManager(lm); + mSnoozedRv.setAdapter( + new NotificationSbnAdapter(NotificationHistoryActivity.this, mPm)); + DividerItemDecoration dividerItemDecoration = new DividerItemDecoration( + mSnoozedRv.getContext(), lm.getOrientation()); + mSnoozedRv.addItemDecoration(dividerItemDecoration); + mSnoozedRv.setNestedScrollingEnabled(false); + if (snoozed == null || snoozed.length == 0) { mSnoozeView.setVisibility(View.GONE); } else { - RecyclerView rv = mSnoozeView.findViewById(R.id.notification_list); - LinearLayoutManager lm = new LinearLayoutManager(NotificationHistoryActivity.this); - rv.setLayoutManager(lm); - rv.setAdapter(new NotificationSbnAdapter(NotificationHistoryActivity.this, mPm)); - DividerItemDecoration dividerItemDecoration = new DividerItemDecoration( - rv.getContext(), lm.getOrientation()); - rv.addItemDecoration(dividerItemDecoration); - rv.setNestedScrollingEnabled(false); - - ((NotificationSbnAdapter) rv.getAdapter()).onRebuildComplete( + ((NotificationSbnAdapter) mSnoozedRv.getAdapter()).onRebuildComplete( new ArrayList<>(Arrays.asList(snoozed))); } try { StatusBarNotification[] dismissed = mNm.getHistoricalNotifications( NotificationHistoryActivity.this.getPackageName(), 6, false); - RecyclerView rv = mDismissView.findViewById(R.id.notification_list); - LinearLayoutManager lm = new LinearLayoutManager(NotificationHistoryActivity.this); - rv.setLayoutManager(lm); - rv.setAdapter(new NotificationSbnAdapter(NotificationHistoryActivity.this, mPm)); - DividerItemDecoration dividerItemDecoration = new DividerItemDecoration( - rv.getContext(), lm.getOrientation()); - rv.addItemDecoration(dividerItemDecoration); - rv.setNestedScrollingEnabled(false); + mDismissedRv = mDismissView.findViewById(R.id.notification_list); + LinearLayoutManager dismissLm = + new LinearLayoutManager(NotificationHistoryActivity.this); + mDismissedRv.setLayoutManager(dismissLm); + mDismissedRv.setAdapter( + new NotificationSbnAdapter(NotificationHistoryActivity.this, mPm)); + DividerItemDecoration dismissDivider = new DividerItemDecoration( + mDismissedRv.getContext(), dismissLm.getOrientation()); + mDismissedRv.addItemDecoration(dismissDivider); + mDismissedRv.setNestedScrollingEnabled(false); - ((NotificationSbnAdapter) rv.getAdapter()).onRebuildComplete( + ((NotificationSbnAdapter) mDismissedRv.getAdapter()).onRebuildComplete( new ArrayList<>(Arrays.asList(dismissed))); mDismissView.setVisibility(View.VISIBLE); } catch (Exception e) { @@ -276,5 +281,22 @@ public class NotificationHistoryActivity extends Activity { mDismissView.setVisibility(View.GONE); } } + + @Override + public void onNotificationPosted(StatusBarNotification sbn) { + // making lint happy + } + + @Override + public void onNotificationRemoved(StatusBarNotification sbn, RankingMap rankingMap, + int reason) { + if (reason == REASON_SNOOZED) { + ((NotificationSbnAdapter) mSnoozedRv.getAdapter()).addSbn(sbn); + mSnoozeView.setVisibility(View.VISIBLE); + } else { + ((NotificationSbnAdapter) mDismissedRv.getAdapter()).addSbn(sbn); + mDismissView.setVisibility(View.VISIBLE); + } + } }; } diff --git a/src/com/android/settings/notification/history/NotificationSbnAdapter.java b/src/com/android/settings/notification/history/NotificationSbnAdapter.java index f1dcf47f27f..f7a747b87b3 100644 --- a/src/com/android/settings/notification/history/NotificationSbnAdapter.java +++ b/src/com/android/settings/notification/history/NotificationSbnAdapter.java @@ -108,6 +108,14 @@ public class NotificationSbnAdapter extends notifyDataSetChanged(); } + public void addSbn(StatusBarNotification sbn) { + if (sbn.isGroup() && sbn.getNotification().isGroupSummary()) { + return; + } + mValues.add(0, sbn); + notifyDataSetChanged(); + } + private @NonNull CharSequence loadPackageName(String pkg) { try { ApplicationInfo info = mPm.getApplicationInfo(pkg,