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

Commit 570981d5 authored by Selim Cinek's avatar Selim Cinek
Browse files

Fixed the handling of the expand on the lockscreen

The user can now directly go to the unlockd shade
by doubletapping the expand button.

Change-Id: Id4c3c901eaa29482e7473480feee5701bbdf29af
parent 30be970a
Loading
Loading
Loading
Loading
+27 −10
Original line number Diff line number Diff line
@@ -130,6 +130,7 @@ public abstract class ActivatableNotificationView extends ExpandableOutlineView
    private final int mLowPriorityColor;
    private boolean mIsBelowSpeedBump;
    private FalsingManager mFalsingManager;
    private boolean mTrackTouch;

    public ActivatableNotificationView(Context context, AttributeSet attrs) {
        super(context, attrs);
@@ -175,12 +176,27 @@ public abstract class ActivatableNotificationView extends ExpandableOutlineView
    };

    @Override
    public boolean onTouchEvent(MotionEvent event) {
        if (mDimmed) {
    public boolean dispatchTouchEvent(MotionEvent event) {
        if (mDimmed && !mActivated) {
            return handleTouchEventDimmed(event);
        } else {
            return super.onTouchEvent(event);
            return super.dispatchTouchEvent(event);
        }
    }

    @Override
    public boolean onTouchEvent(MotionEvent event) {
        boolean result;
        if (mDimmed && mActivated) {
            result = handleTouchEventDimmed(event);
        } else {
            result = super.onTouchEvent(event);
        }
        if (mActivated && result && event.getAction() == MotionEvent.ACTION_UP) {
            mFalsingManager.onNotificationDoubleTap();
            removeCallbacks(mTapTimeoutRunnable);
        }
        return result;
    }

    @Override
@@ -206,14 +222,15 @@ public abstract class ActivatableNotificationView extends ExpandableOutlineView
            case MotionEvent.ACTION_DOWN:
                mDownX = event.getX();
                mDownY = event.getY();
                mTrackTouch = true;
                if (mDownY > getActualHeight()) {
                    return false;
                    mTrackTouch = false;
                }
                break;
            case MotionEvent.ACTION_MOVE:
                if (!isWithinTouchSlop(event)) {
                    makeInactive(true /* animate */);
                    return false;
                    mTrackTouch = false;
                }
                break;
            case MotionEvent.ACTION_UP:
@@ -222,23 +239,23 @@ public abstract class ActivatableNotificationView extends ExpandableOutlineView
                        makeActive();
                        postDelayed(mTapTimeoutRunnable, DOUBLETAP_TIMEOUT_MS);
                    } else {
                        mFalsingManager.onNotificationDoubleTap();
                        boolean performed = performClick();
                        if (performed) {
                            removeCallbacks(mTapTimeoutRunnable);
                        if (!performClick()) {
                            return false;
                        }
                    }
                } else {
                    makeInactive(true /* animate */);
                    mTrackTouch = false;
                }
                break;
            case MotionEvent.ACTION_CANCEL:
                makeInactive(true /* animate */);
                mTrackTouch = false;
                break;
            default:
                break;
        }
        return true;
        return mTrackTouch;
    }

    private void makeActive() {
+7 −1
Original line number Diff line number Diff line
@@ -116,7 +116,8 @@ import static com.android.keyguard.KeyguardHostView.OnDismissAction;

public abstract class BaseStatusBar extends SystemUI implements
        CommandQueue.Callbacks, ActivatableNotificationView.OnActivatedListener,
        ExpandableNotificationRow.ExpansionLogger, NotificationData.Environment {
        ExpandableNotificationRow.ExpansionLogger, NotificationData.Environment,
        ExpandableNotificationRow.OnExpandClickListener {
    public static final String TAG = "StatusBar";
    public static final boolean DEBUG = Log.isLoggable(TAG, Log.DEBUG);
    public static final boolean MULTIUSER_DEBUG = false;
@@ -1301,6 +1302,10 @@ public abstract class BaseStatusBar extends SystemUI implements
        }
    }

    @Override
    public void onExpandClicked(View clickedView, boolean nowExpanded) {
    }

    protected class H extends Handler {
        public void handleMessage(Message m) {
            switch (m.what) {
@@ -1381,6 +1386,7 @@ public abstract class BaseStatusBar extends SystemUI implements
                    parent, false);
            row.setExpansionLogger(this, entry.notification.getKey());
            row.setGroupManager(mGroupManager);
            row.setOnExpandClickListener(this);
        }

        workAroundBadLayerDrawableOpacity(row);
+15 −1
Original line number Diff line number Diff line
@@ -104,14 +104,20 @@ public class ExpandableNotificationRow extends ActivatableNotificationView {
    private boolean mIconAnimationRunning;
    private boolean mShowNoBackground;
    private ExpandableNotificationRow mNotificationParent;
    private OnExpandClickListener mOnExpandClickListener;
    private OnClickListener mExpandClickListener = new OnClickListener() {
        @Override
        public void onClick(View v) {
            if (mGroupManager.isSummaryOfGroup(mStatusBarNotification)) {
                mGroupManager.toggleGroupExpansion(mStatusBarNotification);
                mOnExpandClickListener.onExpandClicked(ExpandableNotificationRow.this,
                        mGroupManager.isGroupExpanded(mStatusBarNotification));
            } else {
                setUserExpanded(!isExpanded());
                boolean nowExpanded = !isExpanded();
                setUserExpanded(nowExpanded);
                notifyHeightChanged(true);
                mOnExpandClickListener.onExpandClicked(ExpandableNotificationRow.this,
                        nowExpanded);
            }
        }
    };
@@ -421,6 +427,10 @@ public class ExpandableNotificationRow extends ActivatableNotificationView {
        mPrivateLayout.setSubTextVisible(visible);
    }

    public void setOnExpandClickListener(OnExpandClickListener onExpandClickListener) {
        mOnExpandClickListener = onExpandClickListener;
    }

    public interface ExpansionLogger {
        public void logNotificationExpansion(String key, boolean userAction, boolean expanded);
    }
@@ -986,4 +996,8 @@ public class ExpandableNotificationRow extends ActivatableNotificationView {
            mLogger.logNotificationExpansion(mLoggingKey, userAction, nowExpanded) ;
        }
    }

    public interface OnExpandClickListener {
        void onExpandClicked(View clickedView, boolean nowExpanded);
    }
}
+7 −1
Original line number Diff line number Diff line
@@ -25,7 +25,6 @@ import android.app.ActivityManagerNative;
import android.app.IActivityManager;
import android.app.Notification;
import android.app.PendingIntent;
import android.app.RemoteInput;
import android.app.StatusBarManager;
import android.content.BroadcastReceiver;
import android.content.ComponentCallbacks2;
@@ -3999,6 +3998,13 @@ public class PhoneStatusBar extends BaseStatusBar implements DemoMode,
        }
    }

    @Override
    public void onExpandClicked(View clickedView, boolean nowExpanded) {
        if (mState == StatusBarState.KEYGUARD && nowExpanded) {
            goToLockedShade(clickedView);
        }
    }

    /**
     * Goes back to the keyguard after hanging around in {@link StatusBarState#SHADE_LOCKED}.
     */