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

Commit 80a752c5 authored by Joe Onorato's avatar Joe Onorato
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: Ie3b2e96c6a1c4449fa86ed571f3ad0f047320d31
parent 481bbb9c
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 {
            oldEntry.content.setOnClickListener(null);
        }

        View expanded = null;
+4 −0
Original line number Diff line number Diff line
@@ -370,6 +370,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,
@@ -760,6 +762,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);