Merge "Some notification history fixes" into rvc-dev

This commit is contained in:
TreeHugger Robot
2020-05-27 20:25:36 +00:00
committed by Android (Google) Code Review
5 changed files with 34 additions and 4 deletions

View File

@@ -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" />

View File

@@ -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"
/>

View File

@@ -140,7 +140,15 @@ public class NotificationHistoryActivity extends Activity {
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));

View File

@@ -49,13 +49,16 @@ public class NotificationHistoryAdapter extends
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 @@ public class NotificationHistoryAdapter extends
Slog.e(TAG, "Failed to delete item", e);
}
}
mListener.onItemDeleted(mValues.size());
notifyItemRemoved(position);
}
interface OnItemDeletedListener {
void onItemDeleted(int newCount);
}
}

View File

@@ -20,12 +20,16 @@ import static android.app.Notification.COLOR_DEFAULT;
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.PorterDuff;
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 @@ public class NotificationSbnAdapter extends
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);
}