Merge "Make Notification long clickable" into tm-qpr-dev

This commit is contained in:
Ibrahim Yilmaz
2023-02-15 18:10:09 +00:00
committed by Android (Google) Code Review
2 changed files with 29 additions and 2 deletions

View File

@@ -1196,6 +1196,22 @@ public class ExpandableNotificationRow extends ActivatableNotificationView
return getShowingLayout().getVisibleWrapper();
}
/**
* @return whether the notification row is long clickable or not.
*/
public boolean isNotificationRowLongClickable() {
if (mLongPressListener == null) {
return false;
}
if (!areGutsExposed()) { // guts is not opened
return true;
}
// if it is leave behind, it shouldn't be long clickable.
return !isGutsLeaveBehind();
}
public void setLongPressListener(LongPressListener longPressListener) {
mLongPressListener = longPressListener;
}
@@ -2947,6 +2963,10 @@ public class ExpandableNotificationRow extends ActivatableNotificationView
return (mGuts != null && mGuts.isExposed());
}
private boolean isGutsLeaveBehind() {
return (mGuts != null && mGuts.isLeavebehind());
}
@Override
public boolean isContentExpandable() {
if (mIsSummaryWithChildren && !shouldShowPublic()) {
@@ -3394,7 +3414,12 @@ public class ExpandableNotificationRow extends ActivatableNotificationView
@Override
public void onInitializeAccessibilityNodeInfoInternal(AccessibilityNodeInfo info) {
super.onInitializeAccessibilityNodeInfoInternal(info);
info.addAction(AccessibilityNodeInfo.AccessibilityAction.ACTION_LONG_CLICK);
final boolean isLongClickable = isNotificationRowLongClickable();
if (isLongClickable) {
info.addAction(AccessibilityNodeInfo.AccessibilityAction.ACTION_LONG_CLICK);
}
info.setLongClickable(isLongClickable);
if (canViewBeDismissed() && !mIsSnoozed) {
info.addAction(AccessibilityNodeInfo.AccessibilityAction.ACTION_DISMISS);
}

View File

@@ -586,7 +586,9 @@ public class NotificationGutsManager implements NotifGutsViewManager {
}
final ExpandableNotificationRow row = (ExpandableNotificationRow) view;
view.performHapticFeedback(HapticFeedbackConstants.LONG_PRESS);
if (row.isNotificationRowLongClickable()) {
view.performHapticFeedback(HapticFeedbackConstants.LONG_PRESS);
}
if (row.areGutsExposed()) {
closeAndSaveGuts(false /* removeLeavebehind */, false /* force */,
true /* removeControls */, -1 /* x */, -1 /* y */,