Merge "Launch UserSwitchDialog using the expandable" into tm-qpr-dev

This commit is contained in:
Ale Nijamkin
2023-01-10 00:31:03 +00:00
committed by Android (Google) Code Review
7 changed files with 48 additions and 20 deletions

View File

@@ -36,6 +36,7 @@ import com.android.systemui.plugins.FalsingManager
import com.android.systemui.qs.QSUserSwitcherEvent import com.android.systemui.qs.QSUserSwitcherEvent
import com.android.systemui.qs.tiles.UserDetailView import com.android.systemui.qs.tiles.UserDetailView
import com.android.systemui.statusbar.phone.SystemUIDialog import com.android.systemui.statusbar.phone.SystemUIDialog
import com.android.systemui.user.ui.dialog.DialogShowerImpl
import javax.inject.Inject import javax.inject.Inject
import javax.inject.Provider import javax.inject.Provider
@@ -130,19 +131,6 @@ class UserSwitchDialogController @VisibleForTesting constructor(
} }
} }
private class DialogShowerImpl(
private val animateFrom: Dialog,
private val dialogLaunchAnimator: DialogLaunchAnimator
) : DialogInterface by animateFrom, DialogShower {
override fun showDialog(dialog: Dialog, cuj: DialogCuj) {
dialogLaunchAnimator.showFromDialog(
dialog,
animateFrom = animateFrom,
cuj
)
}
}
interface DialogShower : DialogInterface { interface DialogShower : DialogInterface {
fun showDialog(dialog: Dialog, cuj: DialogCuj) fun showDialog(dialog: Dialog, cuj: DialogCuj)
} }

View File

@@ -115,9 +115,7 @@ constructor(
private val callbackMutex = Mutex() private val callbackMutex = Mutex()
private val callbacks = mutableSetOf<UserCallback>() private val callbacks = mutableSetOf<UserCallback>()
private val userInfos: Flow<List<UserInfo>> = private val userInfos: Flow<List<UserInfo>> =
repository.userInfos.map { userInfos -> repository.userInfos.map { userInfos -> userInfos.filter { it.isFull } }
userInfos.filter { it.isFull }
}
/** List of current on-device users to select from. */ /** List of current on-device users to select from. */
val users: Flow<List<UserModel>> val users: Flow<List<UserModel>>
@@ -493,7 +491,7 @@ constructor(
fun showUserSwitcher(context: Context, expandable: Expandable) { fun showUserSwitcher(context: Context, expandable: Expandable) {
if (!featureFlags.isEnabled(Flags.FULL_SCREEN_USER_SWITCHER)) { if (!featureFlags.isEnabled(Flags.FULL_SCREEN_USER_SWITCHER)) {
showDialog(ShowDialogRequestModel.ShowUserSwitcherDialog) showDialog(ShowDialogRequestModel.ShowUserSwitcherDialog(expandable))
return return
} }

View File

@@ -18,11 +18,13 @@
package com.android.systemui.user.domain.model package com.android.systemui.user.domain.model
import android.os.UserHandle import android.os.UserHandle
import com.android.systemui.animation.Expandable
import com.android.systemui.qs.user.UserSwitchDialogController import com.android.systemui.qs.user.UserSwitchDialogController
/** Encapsulates a request to show a dialog. */ /** Encapsulates a request to show a dialog. */
sealed class ShowDialogRequestModel( sealed class ShowDialogRequestModel(
open val dialogShower: UserSwitchDialogController.DialogShower? = null, open val dialogShower: UserSwitchDialogController.DialogShower? = null,
open val expandable: Expandable? = null,
) { ) {
data class ShowAddUserDialog( data class ShowAddUserDialog(
val userHandle: UserHandle, val userHandle: UserHandle,
@@ -45,5 +47,7 @@ sealed class ShowDialogRequestModel(
) : ShowDialogRequestModel(dialogShower) ) : ShowDialogRequestModel(dialogShower)
/** Show the user switcher dialog */ /** Show the user switcher dialog */
object ShowUserSwitcherDialog : ShowDialogRequestModel() data class ShowUserSwitcherDialog(
override val expandable: Expandable?,
) : ShowDialogRequestModel()
} }

View File

@@ -0,0 +1,33 @@
/*
* Copyright (C) 2022 The Android Open Source Project
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package com.android.systemui.user.ui.dialog
import android.app.Dialog
import android.content.DialogInterface
import com.android.systemui.animation.DialogCuj
import com.android.systemui.animation.DialogLaunchAnimator
import com.android.systemui.qs.user.UserSwitchDialogController.DialogShower
/** Extracted from [UserSwitchDialogController] */
class DialogShowerImpl(
private val animateFrom: Dialog,
private val dialogLaunchAnimator: DialogLaunchAnimator,
) : DialogInterface by animateFrom, DialogShower {
override fun showDialog(dialog: Dialog, cuj: DialogCuj) {
dialogLaunchAnimator.showFromDialog(dialog, animateFrom = animateFrom, cuj)
}
}

View File

@@ -60,6 +60,7 @@ class UserSwitchDialog(
setView(gridFrame) setView(gridFrame)
adapter.linkToViewGroup(gridFrame.findViewById(R.id.grid)) adapter.linkToViewGroup(gridFrame.findViewById(R.id.grid))
adapter.injectDialogShower(DialogShowerImpl(this, dialogLaunchAnimator))
} }
companion object { companion object {

View File

@@ -133,7 +133,10 @@ constructor(
} }
currentDialog = dialog currentDialog = dialog
if (request.dialogShower != null && dialogCuj != null) { val controller = request.expandable?.dialogLaunchController(dialogCuj)
if (controller != null) {
dialogLaunchAnimator.get().show(dialog, controller)
} else if (request.dialogShower != null && dialogCuj != null) {
request.dialogShower?.showDialog(dialog, dialogCuj) request.dialogShower?.showDialog(dialog, dialogCuj)
} else { } else {
dialog.show() dialog.show()

View File

@@ -813,7 +813,8 @@ class UserInteractorTest : SysuiTestCase() {
val job = underTest.dialogShowRequests.onEach { dialogRequest = it }.launchIn(this) val job = underTest.dialogShowRequests.onEach { dialogRequest = it }.launchIn(this)
// Dialog is shown. // Dialog is shown.
assertThat(dialogRequest).isEqualTo(ShowDialogRequestModel.ShowUserSwitcherDialog) assertThat(dialogRequest)
.isEqualTo(ShowDialogRequestModel.ShowUserSwitcherDialog(expandable))
underTest.onDialogShown() underTest.onDialogShown()
assertThat(dialogRequest).isNull() assertThat(dialogRequest).isNull()