Merge "Close notification guts after applying changes" into qt-dev

am: 2cf73d7976

Change-Id: I6dc3a01456b69529f505879d2db3dd670b7ead20
This commit is contained in:
Evan Laird
2019-05-31 15:11:02 -07:00
committed by android-build-merger
3 changed files with 28 additions and 6 deletions

View File

@@ -43,6 +43,18 @@ import javax.inject.Singleton
const val TAG = "ChannelDialogController"
/**
* ChannelEditorDialogController is the controller for the dialog half-shelf
* that allows users to quickly turn off channels. It is launched from the NotificationInfo
* guts view and displays controls for toggling app notifications as well as up to 4 channels
* from that app like so:
*
* APP TOGGLE <on/off>
* - Channel from which we launched <on/off>
* - <on/off>
* - the next 3 channels sorted alphabetically for that app <on/off>
* - <on/off>
*/
@Singleton
class ChannelEditorDialogController @Inject constructor(
c: Context,
@@ -58,6 +70,9 @@ class ChannelEditorDialogController @Inject constructor(
private var appName: String? = null
private var onSettingsClickListener: NotificationInfo.OnSettingsClickListener? = null
// Caller should set this if they care about when we dismiss
var onFinishListener: OnChannelEditorDialogFinishedListener? = null
// Channels handed to us from NotificationInfo
@VisibleForTesting
internal val providedChannels = mutableListOf<NotificationChannel>()
@@ -144,6 +159,7 @@ class ChannelEditorDialogController @Inject constructor(
private fun done() {
resetState()
dialog.dismiss()
onFinishListener?.onChannelEditorDialogFinished()
}
private fun resetState() {
@@ -242,7 +258,7 @@ class ChannelEditorDialogController @Inject constructor(
findViewById<TextView>(R.id.see_more_button)?.setOnClickListener {
onSettingsClickListener?.onClick(it, null, appUid!!)
dismiss()
done()
}
window?.apply {
@@ -267,3 +283,7 @@ class ChannelEditorDialogController @Inject constructor(
or WindowManager.LayoutParams.FLAG_WATCH_OUTSIDE_TOUCH
or WindowManager.LayoutParams.FLAG_HARDWARE_ACCELERATED)
}
interface OnChannelEditorDialogFinishedListener {
fun onChannelEditorDialogFinished()
}

View File

@@ -159,13 +159,13 @@ public class NotificationInfo extends LinearLayout implements NotificationGuts.G
// used by standard ui
private OnClickListener mOnDismissSettings = v -> {
mPressedApply = true;
closeControls(v);
closeControls(v, true);
};
// used by blocking helper
private OnClickListener mOnKeepShowing = v -> {
mExitReason = NotificationCounters.BLOCKING_HELPER_KEEP_SHOWING;
closeControls(v);
closeControls(v, true);
mMetricsLogger.write(getLogMaker().setCategory(
MetricsEvent.NOTIFICATION_BLOCKING_HELPER)
.setType(MetricsEvent.TYPE_ACTION)
@@ -445,6 +445,8 @@ public class NotificationInfo extends LinearLayout implements NotificationGuts.G
if (mChannelEditorDialogController != null) {
mChannelEditorDialogController.prepareDialogForApp(mAppName, mPackageName, mAppUid,
mUniqueChannelsInRow, mPkgIcon, mOnSettingsClickListener);
mChannelEditorDialogController.setOnFinishListener(
() -> closeControls(this, false));
mChannelEditorDialogController.show();
}
});
@@ -725,7 +727,7 @@ public class NotificationInfo extends LinearLayout implements NotificationGuts.G
* {@link #swapContent(boolean, boolean)} for where undo is handled.
*/
@VisibleForTesting
void closeControls(View v) {
void closeControls(View v, boolean save) {
int[] parentLoc = new int[2];
int[] targetLoc = new int[2];
mGutsContainer.getLocationOnScreen(parentLoc);
@@ -734,7 +736,7 @@ public class NotificationInfo extends LinearLayout implements NotificationGuts.G
final int centerY = v.getHeight() / 2;
final int x = targetLoc[0] - parentLoc[0] + centerX;
final int y = targetLoc[1] - parentLoc[1] + centerY;
mGutsContainer.closeControls(x, y, true /* save */, false /* force */);
mGutsContainer.closeControls(x, y, save, false /* force */);
}
@Override

View File

@@ -646,7 +646,7 @@ public class NotificationInfoTest extends SysuiTestCase {
doCallRealMethod().when(guts).closeControls(anyInt(), anyInt(), anyBoolean(), anyBoolean());
mNotificationInfo.setGutsParent(guts);
mNotificationInfo.closeControls(mNotificationInfo);
mNotificationInfo.closeControls(mNotificationInfo, true);
verify(mBlockingHelperManager).dismissCurrentBlockingHelper();
}