Merge "Some notification history fixes" into rvc-dev am: 69d210c7df
Change-Id: I7b7eecab337ba84983d37d4a909f5cc1b89c9dad
diff --git a/res/layout/notification_history_log_row.xml b/res/layout/notification_history_log_row.xml
index 4f45fec..04438e3 100644
--- a/res/layout/notification_history_log_row.xml
+++ b/res/layout/notification_history_log_row.xml
@@ -76,7 +76,7 @@
android:layout_height="wrap_content"
android:layout_gravity="left|center_vertical"
android:ellipsize="end"
- android:singleLine="true"
+ android:maxLines="3"
android:paddingTop="3dp"
android:textAppearance="@style/TextAppearance.NotificationHistory.Text"
android:textAlignment="viewStart" />
diff --git a/res/layout/notification_sbn_log_row.xml b/res/layout/notification_sbn_log_row.xml
index a5b8dd0..7a3e6d7 100644
--- a/res/layout/notification_sbn_log_row.xml
+++ b/res/layout/notification_sbn_log_row.xml
@@ -125,7 +125,7 @@
android:layout_height="wrap_content"
android:layout_gravity="left|center_vertical"
android:ellipsize="end"
- android:singleLine="true"
+ android:maxLines="3"
android:textAppearance="@style/TextAppearance.NotificationHistory.Text"
android:textAlignment="viewStart"
/>
diff --git a/src/com/android/settings/notification/history/NotificationHistoryActivity.java b/src/com/android/settings/notification/history/NotificationHistoryActivity.java
index 1e5e21e..525ac84 100644
--- a/src/com/android/settings/notification/history/NotificationHistoryActivity.java
+++ b/src/com/android/settings/notification/history/NotificationHistoryActivity.java
@@ -140,7 +140,15 @@
final NotificationHistoryRecyclerView rv =
viewForPackage.findViewById(R.id.notification_list);
- rv.setAdapter(new NotificationHistoryAdapter(mNm, rv));
+ rv.setAdapter(new NotificationHistoryAdapter(mNm, rv,
+ newCount -> {
+ count.setText(getResources().getQuantityString(
+ R.plurals.notification_history_count,
+ newCount, newCount));
+ if (newCount == 0) {
+ viewForPackage.setVisibility(View.GONE);
+ }
+ }));
((NotificationHistoryAdapter) rv.getAdapter()).onRebuildComplete(
new ArrayList<>(nhp.notifications));
diff --git a/src/com/android/settings/notification/history/NotificationHistoryAdapter.java b/src/com/android/settings/notification/history/NotificationHistoryAdapter.java
index 4a5c627..70eee21 100644
--- a/src/com/android/settings/notification/history/NotificationHistoryAdapter.java
+++ b/src/com/android/settings/notification/history/NotificationHistoryAdapter.java
@@ -49,13 +49,16 @@
private INotificationManager mNm;
private List<HistoricalNotification> mValues;
+ private OnItemDeletedListener mListener;
public NotificationHistoryAdapter(INotificationManager nm,
- NotificationHistoryRecyclerView listView) {
+ NotificationHistoryRecyclerView listView,
+ OnItemDeletedListener listener) {
mValues = new ArrayList<>();
setHasStableIds(true);
listView.setOnItemSwipeDeleteListener(this);
mNm = nm;
+ mListener = listener;
}
@Override
@@ -134,6 +137,11 @@
Slog.e(TAG, "Failed to delete item", e);
}
}
+ mListener.onItemDeleted(mValues.size());
notifyItemRemoved(position);
}
+
+ interface OnItemDeletedListener {
+ void onItemDeleted(int newCount);
+ }
}
diff --git a/src/com/android/settings/notification/history/NotificationSbnAdapter.java b/src/com/android/settings/notification/history/NotificationSbnAdapter.java
index 27ecabd..def98de 100644
--- a/src/com/android/settings/notification/history/NotificationSbnAdapter.java
+++ b/src/com/android/settings/notification/history/NotificationSbnAdapter.java
@@ -20,12 +20,16 @@
import static android.content.pm.PackageManager.MATCH_ANY_USER;
import static android.content.pm.PackageManager.NameNotFoundException;
import static android.os.UserHandle.USER_ALL;
+import static android.provider.Settings.EXTRA_APP_PACKAGE;
+import static android.provider.Settings.EXTRA_CHANNEL_ID;
+import static android.provider.Settings.EXTRA_CONVERSATION_ID;
import android.annotation.ColorInt;
import android.annotation.UserIdInt;
import android.app.ActivityManager;
import android.app.Notification;
import android.content.Context;
+import android.content.Intent;
import android.content.pm.ApplicationInfo;
import android.content.pm.PackageManager;
import android.content.res.Configuration;
@@ -33,6 +37,7 @@
import android.graphics.drawable.Drawable;
import android.os.UserHandle;
import android.os.UserManager;
+import android.provider.Settings;
import android.service.notification.StatusBarNotification;
import android.text.TextUtils;
import android.util.Log;
@@ -113,6 +118,15 @@
holder.setProfileBadge(mUserBadgeCache.get(userId));
holder.addOnClick(sbn.getPackageName(), sbn.getUserId(),
sbn.getNotification().contentIntent);
+ holder.itemView.setOnLongClickListener(v -> {
+ Intent intent = new Intent(Settings.ACTION_CHANNEL_NOTIFICATION_SETTINGS)
+ .putExtra(EXTRA_APP_PACKAGE, sbn.getPackageName())
+ .putExtra(EXTRA_CHANNEL_ID, sbn.getNotification().getChannelId())
+ .putExtra(EXTRA_CONVERSATION_ID, sbn.getNotification().getShortcutId());
+ intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
+ holder.itemView.getContext().startActivityAsUser(intent, UserHandle.of(userId));
+ return true;
+ });
} else {
Slog.w(TAG, "null entry in list at position " + position);
}