Merge "Add 'notificaton blocked' filter to notifications"
This commit is contained in:
committed by
Android (Google) Code Review
commit
25d95e0dec
@@ -100,18 +100,20 @@ public class AppStateNotificationBridge extends AppStateBaseBridge {
|
||||
}
|
||||
|
||||
public static CharSequence getSummary(Context context, NotificationsSentState state,
|
||||
boolean sortByRecency) {
|
||||
if (sortByRecency) {
|
||||
int sortOrder) {
|
||||
if (sortOrder == R.id.sort_order_recent_notification) {
|
||||
if (state.lastSent == 0) {
|
||||
return context.getString(R.string.notifications_sent_never);
|
||||
}
|
||||
return StringUtil.formatRelativeTime(
|
||||
context, System.currentTimeMillis() - state.lastSent, true);
|
||||
} else {
|
||||
} else if (sortOrder == R.id.sort_order_frequent_notification) {
|
||||
if (state.avgSentWeekly > 0) {
|
||||
return context.getString(R.string.notifications_sent_weekly, state.avgSentWeekly);
|
||||
}
|
||||
return context.getString(R.string.notifications_sent_daily, state.avgSentDaily);
|
||||
} else {
|
||||
return "";
|
||||
}
|
||||
}
|
||||
|
||||
@@ -267,6 +269,21 @@ public class AppStateNotificationBridge extends AppStateBaseBridge {
|
||||
}
|
||||
};
|
||||
|
||||
public static final AppFilter FILTER_APP_NOTIFICATION_BLOCKED = new AppFilter() {
|
||||
@Override
|
||||
public void init() {
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean filterApp(AppEntry info) {
|
||||
NotificationsSentState state = getNotificationsSentState(info);
|
||||
if (state != null) {
|
||||
return state.blocked;
|
||||
}
|
||||
return false;
|
||||
}
|
||||
};
|
||||
|
||||
public static final Comparator<AppEntry> RECENT_NOTIFICATION_COMPARATOR
|
||||
= new Comparator<AppEntry>() {
|
||||
@Override
|
||||
|
@@ -49,6 +49,7 @@ public class AppFilterRegistry {
|
||||
FILTER_APPS_WITH_OVERLAY,
|
||||
FILTER_APPS_WRITE_SETTINGS,
|
||||
FILTER_APPS_INSTALL_SOURCES,
|
||||
FILTER_APPS_BLOCKED,
|
||||
})
|
||||
@interface FilterType {
|
||||
}
|
||||
@@ -71,14 +72,15 @@ public class AppFilterRegistry {
|
||||
public static final int FILTER_APPS_INSTALL_SOURCES = 13;
|
||||
public static final int FILTER_APP_HAS_DIRECTORY_ACCESS = 14;
|
||||
public static final int FILTER_APP_CAN_CHANGE_WIFI_STATE = 15;
|
||||
// Next id: 16
|
||||
public static final int FILTER_APPS_BLOCKED = 16;
|
||||
// Next id: 17
|
||||
|
||||
private static AppFilterRegistry sRegistry;
|
||||
|
||||
private final AppFilterItem[] mFilters;
|
||||
|
||||
private AppFilterRegistry() {
|
||||
mFilters = new AppFilterItem[16];
|
||||
mFilters = new AppFilterItem[17];
|
||||
|
||||
// High power whitelist, on
|
||||
mFilters[FILTER_APPS_POWER_WHITELIST] = new AppFilterItem(
|
||||
@@ -178,6 +180,12 @@ public class AppFilterRegistry {
|
||||
AppStateChangeWifiStateBridge.FILTER_CHANGE_WIFI_STATE,
|
||||
FILTER_APP_CAN_CHANGE_WIFI_STATE,
|
||||
R.string.filter_write_settings_apps);
|
||||
|
||||
// Blocked Notifications
|
||||
mFilters[FILTER_APPS_BLOCKED] = new AppFilterItem(
|
||||
AppStateNotificationBridge.FILTER_APP_NOTIFICATION_BLOCKED,
|
||||
FILTER_APPS_BLOCKED,
|
||||
R.string.filter_notif_blocked_apps);
|
||||
}
|
||||
|
||||
public static AppFilterRegistry getInstance() {
|
||||
|
@@ -20,6 +20,8 @@ import static androidx.recyclerview.widget.RecyclerView.SCROLL_STATE_IDLE;
|
||||
|
||||
import static com.android.settings.applications.manageapplications.AppFilterRegistry
|
||||
.FILTER_APPS_ALL;
|
||||
import static com.android.settings.applications.manageapplications.AppFilterRegistry
|
||||
.FILTER_APPS_BLOCKED;
|
||||
import static com.android.settings.applications.manageapplications.AppFilterRegistry
|
||||
.FILTER_APPS_DISABLED;
|
||||
import static com.android.settings.applications.manageapplications.AppFilterRegistry
|
||||
@@ -409,6 +411,7 @@ public class ManageApplications extends InstrumentedFragment
|
||||
if (mListType == LIST_TYPE_NOTIFICATION) {
|
||||
mFilterAdapter.enableFilter(FILTER_APPS_RECENT);
|
||||
mFilterAdapter.enableFilter(FILTER_APPS_FREQUENT);
|
||||
mFilterAdapter.enableFilter(FILTER_APPS_BLOCKED);
|
||||
mFilterAdapter.disableFilter(FILTER_APPS_ALL);
|
||||
}
|
||||
if (mListType == LIST_TYPE_HIGH_POWER) {
|
||||
@@ -955,6 +958,8 @@ public class ManageApplications extends InstrumentedFragment
|
||||
rebuild(R.id.sort_order_frequent_notification);
|
||||
} else if (FILTER_APPS_RECENT == appFilter.getFilterType()) {
|
||||
rebuild(R.id.sort_order_recent_notification);
|
||||
} else if (FILTER_APPS_BLOCKED == appFilter.getFilterType()) {
|
||||
rebuild(R.id.sort_order_alpha);
|
||||
} else {
|
||||
rebuild();
|
||||
}
|
||||
@@ -1111,16 +1116,7 @@ public class ManageApplications extends InstrumentedFragment
|
||||
|
||||
@VisibleForTesting
|
||||
static boolean shouldUseStableItemHeight(int listType) {
|
||||
switch (listType) {
|
||||
case LIST_TYPE_NOTIFICATION:
|
||||
// Most entries in notification type has no summary. Don't use stable height
|
||||
// so height is short for most entries.
|
||||
return false;
|
||||
default:
|
||||
// Other types have non-empty summary, so keep the height as we expect summary
|
||||
// to fill in.
|
||||
return true;
|
||||
}
|
||||
return true;
|
||||
}
|
||||
|
||||
private static boolean packageNameEquals(PackageItemInfo info1, PackageItemInfo info2) {
|
||||
@@ -1338,8 +1334,7 @@ public class ManageApplications extends InstrumentedFragment
|
||||
if (entry.extraInfo != null
|
||||
&& entry.extraInfo instanceof NotificationsSentState) {
|
||||
holder.setSummary(AppStateNotificationBridge.getSummary(mContext,
|
||||
(NotificationsSentState) entry.extraInfo,
|
||||
(mLastSortMode == R.id.sort_order_recent_notification)));
|
||||
(NotificationsSentState) entry.extraInfo, mLastSortMode));
|
||||
} else {
|
||||
holder.setSummary(null);
|
||||
}
|
||||
@@ -1388,8 +1383,7 @@ public class ManageApplications extends InstrumentedFragment
|
||||
if (entry.extraInfo != null
|
||||
&& entry.extraInfo instanceof NotificationsSentState) {
|
||||
holder.setSummary(AppStateNotificationBridge.getSummary(mContext,
|
||||
(NotificationsSentState) entry.extraInfo,
|
||||
(mLastSortMode == R.id.sort_order_recent_notification)));
|
||||
(NotificationsSentState) entry.extraInfo, mLastSortMode));
|
||||
} else {
|
||||
holder.setSummary(null);
|
||||
}
|
||||
|
Reference in New Issue
Block a user