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_height="wrap_content"
android:layout_gravity="left|center_vertical" android:layout_gravity="left|center_vertical"
android:ellipsize="end" android:ellipsize="end"
android:singleLine="true" android:maxLines="3"
android:paddingTop="3dp" android:paddingTop="3dp"
android:textAppearance="@style/TextAppearance.NotificationHistory.Text" android:textAppearance="@style/TextAppearance.NotificationHistory.Text"
android:textAlignment="viewStart" /> android:textAlignment="viewStart" />

View File

@@ -125,7 +125,7 @@
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:layout_gravity="left|center_vertical" android:layout_gravity="left|center_vertical"
android:ellipsize="end" android:ellipsize="end"
android:singleLine="true" android:maxLines="3"
android:textAppearance="@style/TextAppearance.NotificationHistory.Text" android:textAppearance="@style/TextAppearance.NotificationHistory.Text"
android:textAlignment="viewStart" android:textAlignment="viewStart"
/> />

View File

@@ -140,7 +140,15 @@ public class NotificationHistoryActivity extends Activity {
final NotificationHistoryRecyclerView rv = final NotificationHistoryRecyclerView rv =
viewForPackage.findViewById(R.id.notification_list); 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( ((NotificationHistoryAdapter) rv.getAdapter()).onRebuildComplete(
new ArrayList<>(nhp.notifications)); new ArrayList<>(nhp.notifications));

View File

@@ -49,13 +49,16 @@ public class NotificationHistoryAdapter extends
private INotificationManager mNm; private INotificationManager mNm;
private List<HistoricalNotification> mValues; private List<HistoricalNotification> mValues;
private OnItemDeletedListener mListener;
public NotificationHistoryAdapter(INotificationManager nm, public NotificationHistoryAdapter(INotificationManager nm,
NotificationHistoryRecyclerView listView) { NotificationHistoryRecyclerView listView,
OnItemDeletedListener listener) {
mValues = new ArrayList<>(); mValues = new ArrayList<>();
setHasStableIds(true); setHasStableIds(true);
listView.setOnItemSwipeDeleteListener(this); listView.setOnItemSwipeDeleteListener(this);
mNm = nm; mNm = nm;
mListener = listener;
} }
@Override @Override
@@ -134,6 +137,11 @@ public class NotificationHistoryAdapter extends
Slog.e(TAG, "Failed to delete item", e); Slog.e(TAG, "Failed to delete item", e);
} }
} }
mListener.onItemDeleted(mValues.size());
notifyItemRemoved(position); 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.MATCH_ANY_USER;
import static android.content.pm.PackageManager.NameNotFoundException; import static android.content.pm.PackageManager.NameNotFoundException;
import static android.os.UserHandle.USER_ALL; 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.ColorInt;
import android.annotation.UserIdInt; import android.annotation.UserIdInt;
import android.app.ActivityManager; import android.app.ActivityManager;
import android.app.Notification; import android.app.Notification;
import android.content.Context; import android.content.Context;
import android.content.Intent;
import android.content.pm.ApplicationInfo; import android.content.pm.ApplicationInfo;
import android.content.pm.PackageManager; import android.content.pm.PackageManager;
import android.content.res.Configuration; import android.content.res.Configuration;
@@ -33,6 +37,7 @@ import android.graphics.PorterDuff;
import android.graphics.drawable.Drawable; import android.graphics.drawable.Drawable;
import android.os.UserHandle; import android.os.UserHandle;
import android.os.UserManager; import android.os.UserManager;
import android.provider.Settings;
import android.service.notification.StatusBarNotification; import android.service.notification.StatusBarNotification;
import android.text.TextUtils; import android.text.TextUtils;
import android.util.Log; import android.util.Log;
@@ -113,6 +118,15 @@ public class NotificationSbnAdapter extends
holder.setProfileBadge(mUserBadgeCache.get(userId)); holder.setProfileBadge(mUserBadgeCache.get(userId));
holder.addOnClick(sbn.getPackageName(), sbn.getUserId(), holder.addOnClick(sbn.getPackageName(), sbn.getUserId(),
sbn.getNotification().contentIntent); 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 { } else {
Slog.w(TAG, "null entry in list at position " + position); Slog.w(TAG, "null entry in list at position " + position);
} }