Merge "Launch UserSwitchDialog using the expandable" into tm-qpr-dev
This commit is contained in:
@@ -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)
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -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
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -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()
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -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)
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -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 {
|
||||||
|
|||||||
@@ -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()
|
||||||
|
|||||||
@@ -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()
|
||||||
|
|||||||
Reference in New Issue
Block a user