Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 3e655203 authored by Mady Mellor's avatar Mady Mellor
Browse files

Add snooze listener so that a plugin can snooze a notification

Test: manual
Change-Id: Ieb3c0fcae6d832c3e8f5d1b983c52cf4f2ff6239
parent 87d7945f
Loading
Loading
Loading
Loading
+10 −0
Original line number Original line Diff line number Diff line
@@ -41,6 +41,16 @@ public interface NotificationMenuRowProvider extends Plugin {
        public boolean handleCloseControls();
        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 static class MenuItem {
        public Drawable icon;
        public Drawable icon;
        public String menuDescription;
        public String menuDescription;
+15 −0
Original line number Original line Diff line number Diff line
@@ -103,6 +103,8 @@ import com.android.systemui.SystemUI;
import com.android.systemui.assist.AssistManager;
import com.android.systemui.assist.AssistManager;
import com.android.systemui.plugins.statusbar.NotificationMenuRowProvider;
import com.android.systemui.plugins.statusbar.NotificationMenuRowProvider;
import com.android.systemui.plugins.statusbar.NotificationMenuRowProvider.MenuItem;
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.recents.Recents;
import com.android.systemui.statusbar.NotificationData.Entry;
import com.android.systemui.statusbar.NotificationData.Entry;
import com.android.systemui.statusbar.notification.VisualStabilityManager;
import com.android.systemui.statusbar.notification.VisualStabilityManager;
@@ -1050,6 +1052,14 @@ public abstract class BaseStatusBar extends SystemUI implements
        }, false /* afterKeyguardGone */);
        }, 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) {
    private void bindGuts(final ExpandableNotificationRow row, MenuItem item) {
        row.inflateGuts();
        row.inflateGuts();
        row.setGutsView(item);
        row.setGutsView(item);
@@ -1063,6 +1073,11 @@ public abstract class BaseStatusBar extends SystemUI implements
            mNotificationGutsExposed = null;
            mNotificationGutsExposed = null;
        });
        });


        if (item.gutsContent instanceof SnoozeGutsContent) {
            ((SnoozeGutsContent) item.gutsContent).setSnoozeListener(getSnoozeListener());
            ((SnoozeGutsContent) item.gutsContent).setStatusBarNotification(sbn);
        }

        if (item.gutsContent instanceof NotificationInfo) {
        if (item.gutsContent instanceof NotificationInfo) {
            final NotificationChannel channel = row.getEntry().channel;
            final NotificationChannel channel = row.getEntry().channel;
            PackageManager pmUser = getPackageManagerForUser(mContext,
            PackageManager pmUser = getPackageManagerForUser(mContext,
+12 −1
Original line number Original line Diff line number Diff line
@@ -141,6 +141,7 @@ import com.android.systemui.keyguard.KeyguardViewMediator;
import com.android.systemui.plugins.qs.QS;
import com.android.systemui.plugins.qs.QS;
import com.android.systemui.ActivityStarter;
import com.android.systemui.ActivityStarter;
import com.android.systemui.plugins.qs.QS.BaseStatusBarHeader;
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.QSFragment;
import com.android.systemui.qs.QSPanel;
import com.android.systemui.qs.QSPanel;
import com.android.systemui.recents.ScreenPinningRequest;
import com.android.systemui.recents.ScreenPinningRequest;
@@ -205,7 +206,7 @@ import java.util.Map;


public class PhoneStatusBar extends BaseStatusBar implements DemoMode,
public class PhoneStatusBar extends BaseStatusBar implements DemoMode,
        DragDownHelper.DragDownCallback, ActivityStarter, OnUnlockMethodChangedListener,
        DragDownHelper.DragDownCallback, ActivityStarter, OnUnlockMethodChangedListener,
        OnHeadsUpChangedListener, VisualStabilityManager.Callback {
        OnHeadsUpChangedListener, VisualStabilityManager.Callback, SnoozeListener {
    static final String TAG = "PhoneStatusBar";
    static final String TAG = "PhoneStatusBar";
    public static final boolean DEBUG = BaseStatusBar.DEBUG;
    public static final boolean DEBUG = BaseStatusBar.DEBUG;
    public static final boolean SPEW = false;
    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);
    }
}
}