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

Commit 184498ce authored by Joe Onorato's avatar Joe Onorato Committed by Marco Nelissen
Browse files

Allow notifications to not specify a contentIntent.

If they don't, the click events will be passed through to the individual
views in the notification view, which may have their own PendingIntents
attached.

Previously, it was against the UX spec to allow this, but now we are
changing that and will have buttons in there.

Change-Id: I674234212f64b2b8802a0708b7eed0614e147ca3
parent 5d794412
Loading
Loading
Loading
Loading
+11 −1
Original line number Diff line number Diff line
@@ -23,12 +23,22 @@ import android.view.MotionEvent;
import android.widget.FrameLayout;

public class LatestItemView extends FrameLayout {
    private boolean mDispatchTorches;

    public LatestItemView(Context context, AttributeSet attrs) {
        super(context, attrs);
    }

    public boolean dispatchTouchEvent(MotionEvent ev) {
        if (mDispatchTorches) {
            return super.dispatchTouchEvent(ev);
        } else {
            return onTouchEvent(ev);
        }
    }

    public void setOnClickListener(OnClickListener l) {
        mDispatchTorches = l == null;
        super.setOnClickListener(l);
    }
}
+4 −0
Original line number Diff line number Diff line
@@ -440,6 +440,8 @@ public class PhoneStatusBarService extends StatusBarService {
                if (contentIntent != null) {
                    oldEntry.content.setOnClickListener(new Launcher(contentIntent,
                                notification.pkg, notification.tag, notification.id));
                } else {
                    oldEntry.content.setOnClickListener(null);
                }
                // Update the icon.
                final StatusBarIcon ic = new StatusBarIcon(notification.pkg,
@@ -516,6 +518,8 @@ public class PhoneStatusBarService extends StatusBarService {
        if (contentIntent != null) {
            content.setOnClickListener(new Launcher(contentIntent, notification.pkg,
                        notification.tag, notification.id));
        } else {
            content.setOnClickListener(null);
        }

        View expanded = null;
+4 −0
Original line number Diff line number Diff line
@@ -372,6 +372,8 @@ public class TabletStatusBarService extends StatusBarService {
                if (contentIntent != null) {
                    oldEntry.content.setOnClickListener(new NotificationClicker(contentIntent,
                                notification.pkg, notification.tag, notification.id));
                } else {
                    oldEntry.content.setOnClickListener(null);
                }
                // Update the icon.
                final StatusBarIcon ic = new StatusBarIcon(notification.pkg,
@@ -771,6 +773,8 @@ public class TabletStatusBarService extends StatusBarService {
        if (contentIntent != null) {
            content.setOnClickListener(new NotificationClicker(contentIntent,
                        sbn.pkg, sbn.tag, sbn.id));
        } else {
            content.setOnClickListener(null);
        }

        View expanded = null;
+0 −4
Original line number Diff line number Diff line
@@ -741,10 +741,6 @@ public class NotificationManagerService extends INotificationManager.Stub
                throw new IllegalArgumentException("contentView required: pkg=" + pkg
                        + " id=" + id + " notification=" + notification);
            }
            if (notification.contentIntent == null) {
                throw new IllegalArgumentException("contentIntent required: pkg=" + pkg
                        + " id=" + id + " notification=" + notification);
            }
        }

        synchronized (mNotificationList) {
+18 −0
Original line number Diff line number Diff line
@@ -86,6 +86,18 @@ public class NotificationTestList extends TestActivity
            }
        },

        new Test("custom intent on text view") {
            public void run() {
                Notification n = new Notification(R.drawable.icon1, null,
                        mActivityCreateTime);
                n.setLatestEventInfo(NotificationTestList.this, "Persistent #1",
                            "This is a notification!!!", null);
                n.contentView.setOnClickPendingIntent(com.android.internal.R.id.text,
                        makeIntent2());
                mNM.notify(1, n);
            }
        },

        new Test("Ticker 1 line") {
            public void run() {
                Notification n = new Notification(R.drawable.icon1, "tick tick tick",
@@ -776,6 +788,12 @@ public class NotificationTestList extends TestActivity
        return PendingIntent.getActivity(this, 0, intent, 0);
    }

    private PendingIntent makeIntent2() {
        Intent intent = new Intent(this, StatusBarTest.class);
        return PendingIntent.getActivity(this, 0, intent, 0);
    }


    class StateStress extends Test {
        StateStress(String name, int pause, int iterations, Runnable[] tasks) {
            super(name);