Add snooze listener so that a plugin can snooze a notification

Test: manual
Change-Id: Ieb3c0fcae6d832c3e8f5d1b983c52cf4f2ff6239
This commit is contained in:
Mady Mellor
2017-01-10 16:37:22 -08:00
parent 87d7945f06
commit 3e6552036e
3 changed files with 37 additions and 1 deletions

View File

@@ -41,6 +41,16 @@ public interface NotificationMenuRowProvider extends Plugin {
public boolean handleCloseControls();
}
public interface SnoozeGutsContent extends GutsContent {
public void setSnoozeListener(SnoozeListener listener);
public void setStatusBarNotification(StatusBarNotification sbn);
}
public interface SnoozeListener {
public void snoozeNotification(StatusBarNotification sbn, long snoozeUntil);
}
public static class MenuItem {
public Drawable icon;
public String menuDescription;

View File

@@ -103,6 +103,8 @@ import com.android.systemui.SystemUI;
import com.android.systemui.assist.AssistManager;
import com.android.systemui.plugins.statusbar.NotificationMenuRowProvider;
import com.android.systemui.plugins.statusbar.NotificationMenuRowProvider.MenuItem;
import com.android.systemui.plugins.statusbar.NotificationMenuRowProvider.SnoozeGutsContent;
import com.android.systemui.plugins.statusbar.NotificationMenuRowProvider.SnoozeListener;
import com.android.systemui.recents.Recents;
import com.android.systemui.statusbar.NotificationData.Entry;
import com.android.systemui.statusbar.notification.VisualStabilityManager;
@@ -1050,6 +1052,14 @@ public abstract class BaseStatusBar extends SystemUI implements
}, false /* afterKeyguardGone */);
}
protected void setNotificationSnoozed(StatusBarNotification sbn, long snoozeUntil) {
mNotificationListener.snoozeNotification(sbn.getKey(), snoozeUntil);
}
public SnoozeListener getSnoozeListener() {
return null;
}
private void bindGuts(final ExpandableNotificationRow row, MenuItem item) {
row.inflateGuts();
row.setGutsView(item);
@@ -1063,6 +1073,11 @@ public abstract class BaseStatusBar extends SystemUI implements
mNotificationGutsExposed = null;
});
if (item.gutsContent instanceof SnoozeGutsContent) {
((SnoozeGutsContent) item.gutsContent).setSnoozeListener(getSnoozeListener());
((SnoozeGutsContent) item.gutsContent).setStatusBarNotification(sbn);
}
if (item.gutsContent instanceof NotificationInfo) {
final NotificationChannel channel = row.getEntry().channel;
PackageManager pmUser = getPackageManagerForUser(mContext,

View File

@@ -141,6 +141,7 @@ import com.android.systemui.keyguard.KeyguardViewMediator;
import com.android.systemui.plugins.qs.QS;
import com.android.systemui.ActivityStarter;
import com.android.systemui.plugins.qs.QS.BaseStatusBarHeader;
import com.android.systemui.plugins.statusbar.NotificationMenuRowProvider.SnoozeListener;
import com.android.systemui.qs.QSFragment;
import com.android.systemui.qs.QSPanel;
import com.android.systemui.recents.ScreenPinningRequest;
@@ -205,7 +206,7 @@ import java.util.Map;
public class PhoneStatusBar extends BaseStatusBar implements DemoMode,
DragDownHelper.DragDownCallback, ActivityStarter, OnUnlockMethodChangedListener,
OnHeadsUpChangedListener, VisualStabilityManager.Callback {
OnHeadsUpChangedListener, VisualStabilityManager.Callback, SnoozeListener {
static final String TAG = "PhoneStatusBar";
public static final boolean DEBUG = BaseStatusBar.DEBUG;
public static final boolean SPEW = false;
@@ -4858,4 +4859,14 @@ public class PhoneStatusBar extends BaseStatusBar implements DemoMode,
}
}
@Override
public SnoozeListener getSnoozeListener() {
return this;
}
@Override
public void snoozeNotification(StatusBarNotification sbn, long snoozeUntil) {
setNotificationSnoozed(sbn, snoozeUntil);
}
}