Merge "[RemoteInputView] Reorder fields + clean listener registration APIs" into sc-v2-dev
This commit is contained in:
committed by
Android (Google) Code Review
commit
6afd143ea0
@@ -1253,7 +1253,7 @@ public class NotificationContentView extends FrameLayout {
|
|||||||
}
|
}
|
||||||
if (hasRemoteInput) {
|
if (hasRemoteInput) {
|
||||||
existing.setWrapper(wrapper);
|
existing.setWrapper(wrapper);
|
||||||
existing.setOnVisibilityChangedListener(this::setRemoteInputVisible);
|
existing.addOnVisibilityChangedListener(this::setRemoteInputVisible);
|
||||||
|
|
||||||
if (existingPendingIntent != null || existing.isActive()) {
|
if (existingPendingIntent != null || existing.isActive()) {
|
||||||
// The current action could be gone, or the pending intent no longer valid.
|
// The current action could be gone, or the pending intent no longer valid.
|
||||||
|
|||||||
@@ -108,36 +108,36 @@ public class RemoteInputView extends LinearLayout implements View.OnClickListene
|
|||||||
|
|
||||||
private final SendButtonTextWatcher mTextWatcher;
|
private final SendButtonTextWatcher mTextWatcher;
|
||||||
private final TextView.OnEditorActionListener mEditorActionHandler;
|
private final TextView.OnEditorActionListener mEditorActionHandler;
|
||||||
private final UiEventLogger mUiEventLogger;
|
private final ArrayList<OnSendRemoteInputListener> mOnSendListeners = new ArrayList<>();
|
||||||
private final RemoteInputQuickSettingsDisabler mRemoteInputQuickSettingsDisabler;
|
private final ArrayList<Consumer<Boolean>> mOnVisibilityChangedListeners = new ArrayList<>();
|
||||||
private final List<OnFocusChangeListener> mEditTextFocusChangeListeners = new ArrayList<>();
|
private final ArrayList<OnFocusChangeListener> mEditTextFocusChangeListeners =
|
||||||
private final List<OnSendRemoteInputListener> mOnSendListeners = new ArrayList<>();
|
new ArrayList<>();
|
||||||
|
|
||||||
private RemoteEditText mEditText;
|
private RemoteEditText mEditText;
|
||||||
private ImageButton mSendButton;
|
private ImageButton mSendButton;
|
||||||
private GradientDrawable mContentBackground;
|
private GradientDrawable mContentBackground;
|
||||||
private ProgressBar mProgressBar;
|
private ProgressBar mProgressBar;
|
||||||
private PendingIntent mPendingIntent;
|
private ImageView mDelete;
|
||||||
private RemoteInput[] mRemoteInputs;
|
private ImageView mDeleteBg;
|
||||||
private RemoteInput mRemoteInput;
|
// TODO(b/193539698): remove reveal param fields, turn them into parameters where needed
|
||||||
private RemoteInputController mController;
|
|
||||||
|
|
||||||
private NotificationEntry mEntry;
|
|
||||||
|
|
||||||
private boolean mRemoved;
|
|
||||||
|
|
||||||
private int mRevealCx;
|
private int mRevealCx;
|
||||||
private int mRevealCy;
|
private int mRevealCy;
|
||||||
private int mRevealR;
|
private int mRevealR;
|
||||||
|
|
||||||
private boolean mColorized;
|
private boolean mColorized;
|
||||||
private int mTint;
|
private int mTint;
|
||||||
|
|
||||||
private boolean mResetting;
|
private boolean mResetting;
|
||||||
private NotificationViewWrapper mWrapper;
|
|
||||||
private Consumer<Boolean> mOnVisibilityChangedListener;
|
// TODO(b/193539698): move these to a Controller
|
||||||
|
private RemoteInputController mController;
|
||||||
|
private final RemoteInputQuickSettingsDisabler mRemoteInputQuickSettingsDisabler;
|
||||||
|
private final UiEventLogger mUiEventLogger;
|
||||||
|
private NotificationEntry mEntry;
|
||||||
|
private PendingIntent mPendingIntent;
|
||||||
|
private RemoteInput mRemoteInput;
|
||||||
|
private RemoteInput[] mRemoteInputs;
|
||||||
private NotificationRemoteInputManager.BouncerChecker mBouncerChecker;
|
private NotificationRemoteInputManager.BouncerChecker mBouncerChecker;
|
||||||
private ImageView mDelete;
|
private boolean mRemoved;
|
||||||
private ImageView mDeleteBg;
|
private NotificationViewWrapper mWrapper;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Enum for logged notification remote input UiEvents.
|
* Enum for logged notification remote input UiEvents.
|
||||||
@@ -382,7 +382,7 @@ public class RemoteInputView extends LinearLayout implements View.OnClickListene
|
|||||||
private void sendRemoteInput(Intent intent) {
|
private void sendRemoteInput(Intent intent) {
|
||||||
if (mBouncerChecker != null && mBouncerChecker.showBouncerIfNecessary()) {
|
if (mBouncerChecker != null && mBouncerChecker.showBouncerIfNecessary()) {
|
||||||
mEditText.hideIme();
|
mEditText.hideIme();
|
||||||
for (OnSendRemoteInputListener listener : mOnSendListeners) {
|
for (OnSendRemoteInputListener listener : new ArrayList<>(mOnSendListeners)) {
|
||||||
listener.onSendRequestBounced();
|
listener.onSendRequestBounced();
|
||||||
}
|
}
|
||||||
return;
|
return;
|
||||||
@@ -399,7 +399,7 @@ public class RemoteInputView extends LinearLayout implements View.OnClickListene
|
|||||||
mController.remoteInputSent(mEntry);
|
mController.remoteInputSent(mEntry);
|
||||||
mEntry.setHasSentReply();
|
mEntry.setHasSentReply();
|
||||||
|
|
||||||
for (OnSendRemoteInputListener listener : mOnSendListeners) {
|
for (OnSendRemoteInputListener listener : new ArrayList<>(mOnSendListeners)) {
|
||||||
listener.onSendRemoteInput();
|
listener.onSendRemoteInput();
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -760,15 +760,32 @@ public class RemoteInputView extends LinearLayout implements View.OnClickListene
|
|||||||
mWrapper = wrapper;
|
mWrapper = wrapper;
|
||||||
}
|
}
|
||||||
|
|
||||||
public void setOnVisibilityChangedListener(Consumer<Boolean> visibilityChangedListener) {
|
/**
|
||||||
mOnVisibilityChangedListener = visibilityChangedListener;
|
* Register a listener to be notified when this view's visibility changes.
|
||||||
|
*
|
||||||
|
* Specifically, the passed {@link Consumer} will receive {@code true} when
|
||||||
|
* {@link #getVisibility()} would return {@link View#VISIBLE}, and {@code false} it would return
|
||||||
|
* any other value.
|
||||||
|
*/
|
||||||
|
public void addOnVisibilityChangedListener(Consumer<Boolean> listener) {
|
||||||
|
mOnVisibilityChangedListeners.add(listener);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Unregister a listener previously registered via
|
||||||
|
* {@link #addOnVisibilityChangedListener(Consumer)}.
|
||||||
|
*/
|
||||||
|
public void removeOnVisibilityChangedListener(Consumer<Boolean> listener) {
|
||||||
|
mOnVisibilityChangedListeners.remove(listener);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
protected void onVisibilityChanged(View changedView, int visibility) {
|
protected void onVisibilityChanged(View changedView, int visibility) {
|
||||||
super.onVisibilityChanged(changedView, visibility);
|
super.onVisibilityChanged(changedView, visibility);
|
||||||
if (changedView == this && mOnVisibilityChangedListener != null) {
|
if (changedView == this) {
|
||||||
mOnVisibilityChangedListener.accept(visibility == VISIBLE);
|
for (Consumer<Boolean> listener : new ArrayList<>(mOnVisibilityChangedListeners)) {
|
||||||
|
listener.accept(visibility == VISIBLE);
|
||||||
|
}
|
||||||
// Hide soft-keyboard when the input view became invisible
|
// Hide soft-keyboard when the input view became invisible
|
||||||
// (i.e. The notification shade collapsed by pressing the home key)
|
// (i.e. The notification shade collapsed by pressing the home key)
|
||||||
if (visibility != VISIBLE && !mEditText.isVisibleToUser()
|
if (visibility != VISIBLE && !mEditText.isVisibleToUser()
|
||||||
|
|||||||
@@ -205,7 +205,7 @@ public class RemoteInputViewTest extends SysuiTestCase {
|
|||||||
ExpandableNotificationRow row = helper.createRow();
|
ExpandableNotificationRow row = helper.createRow();
|
||||||
RemoteInputView view = RemoteInputView.inflate(mContext, null, row.getEntry(), mController);
|
RemoteInputView view = RemoteInputView.inflate(mContext, null, row.getEntry(), mController);
|
||||||
|
|
||||||
view.setOnVisibilityChangedListener(null);
|
view.addOnVisibilityChangedListener(null);
|
||||||
view.setVisibility(View.INVISIBLE);
|
view.setVisibility(View.INVISIBLE);
|
||||||
view.setVisibility(View.VISIBLE);
|
view.setVisibility(View.VISIBLE);
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user