Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 2a9dd990 authored by axfordjc's avatar axfordjc
Browse files

Refactor of LargeScreenUtils.shouldUseLargeScreenShadeHeader

Primary reason for refactor is to include flagging - so split shade on small landscape screens can be flag-guarded.

Refactor:
- removed static methods LargeScreenUtils.shouldUseLargeScreenShadeHeader
- now using SplitShadeStateController.shouldUseSplitNotificationShade
- SplitShadeStateController is injected or passed when necessary
- flag guarding can now be done in SplitShadeStateController.shouldUseSplitNotificationShade
- FakeSplitShadeStateController is passed in test classes

Improvements that could be made in a follow up CL:
- no longer need resources as a parameter for shouldUseLargeScreenShadeHeader, context can be injected and then context.resources could be used internally
- StateFlow could be used, this could be subscribed to instead of checking shouldUseLargeScreenShadeHeader in 'updateResources' methods.
- Improvements ignored for now to reduce the size of the change and speed up review

Now, when LOCKSCREEN_ENABLE_LANDSCAPE is on: split shade is used on small landscape screens.

Bug: 293252410

Test: See files
Change-Id: If35ad6d5e095f15e037b0d2bb58f346758966379
parent 60485875
Loading
Loading
Loading
Loading
+4 −0
Original line number Diff line number Diff line
@@ -42,4 +42,8 @@
    <!-- Whether we use large screen shade header which takes only one row compared to QS header -->
    <bool name="config_use_large_screen_shade_header">true</bool>

    <!-- Whether to force split shade.
     For now, this value has effect only when flag lockscreen.enable_landscape is enabled.
     TODO (b/293290851) - change this comment/resource when flag is enabled -->
    <bool name="force_config_use_split_notification_shade">true</bool>
</resources>
+4 −0
Original line number Diff line number Diff line
@@ -36,4 +36,8 @@
    <integer name="power_menu_lite_max_columns">3</integer>
    <integer name="power_menu_lite_max_rows">2</integer>

    <!-- Whether to force split shade.
    For now, this value has effect only when flag lockscreen.enable_landscape is enabled.
    TODO (b/293290851) - change this comment/resource when flag is enabled -->
    <bool name="force_config_use_split_notification_shade">false</bool>
</resources>
+5 −0
Original line number Diff line number Diff line
@@ -592,6 +592,11 @@
    <!-- Whether to use the split 2-column notification shade -->
    <bool name="config_use_split_notification_shade">false</bool>

    <!-- Whether to force split shade.
    For now, this value has effect only when flag lockscreen.enable_landscape is enabled.
    TODO (b/293290851) - change this comment/resource when flag is enabled -->
    <bool name="force_config_use_split_notification_shade">false</bool>

    <!-- Whether we use large screen shade header which takes only one row compared to QS header -->
    <bool name="config_use_large_screen_shade_header">false</bool>

+3 −2
Original line number Diff line number Diff line
@@ -39,7 +39,7 @@ import com.android.systemui.keyguard.shared.model.KeyguardSection
import com.android.systemui.media.controls.ui.KeyguardMediaController
import com.android.systemui.shade.NotificationPanelView
import com.android.systemui.shade.NotificationPanelViewController
import com.android.systemui.util.LargeScreenUtils
import com.android.systemui.statusbar.policy.SplitShadeStateController
import com.android.systemui.util.Utils
import dagger.Lazy
import javax.inject.Inject
@@ -55,6 +55,7 @@ constructor(
    private val keyguardViewConfigurator: Lazy<KeyguardViewConfigurator>,
    private val notificationPanelViewController: Lazy<NotificationPanelViewController>,
    private val keyguardMediaController: KeyguardMediaController,
    private val splitShadeStateController: SplitShadeStateController
) : KeyguardSection() {
    private val statusViewId = R.id.keyguard_status_view

@@ -104,7 +105,7 @@ constructor(
            connect(statusViewId, END, PARENT_ID, END)

            val margin =
                if (LargeScreenUtils.shouldUseSplitNotificationShade(context.resources)) {
                if (splitShadeStateController.shouldUseSplitNotificationShade(context.resources)) {
                    context.resources.getDimensionPixelSize(R.dimen.keyguard_split_shade_top_margin)
                } else {
                    context.resources.getDimensionPixelSize(R.dimen.keyguard_clock_top_margin) +
+3 −2
Original line number Diff line number Diff line
@@ -35,7 +35,7 @@ import com.android.systemui.statusbar.SysuiStatusBarStateController
import com.android.systemui.statusbar.notification.stack.MediaContainerView
import com.android.systemui.statusbar.phone.KeyguardBypassController
import com.android.systemui.statusbar.policy.ConfigurationController
import com.android.systemui.util.LargeScreenUtils
import com.android.systemui.statusbar.policy.SplitShadeStateController
import com.android.systemui.util.settings.SecureSettings
import javax.inject.Inject
import javax.inject.Named
@@ -55,6 +55,7 @@ constructor(
    private val secureSettings: SecureSettings,
    @Main private val handler: Handler,
    configurationController: ConfigurationController,
    private val splitShadeStateController: SplitShadeStateController
) {

    init {
@@ -108,7 +109,7 @@ constructor(
    }

    private fun updateResources() {
        useSplitShade = LargeScreenUtils.shouldUseSplitNotificationShade(context.resources)
        useSplitShade = splitShadeStateController.shouldUseSplitNotificationShade(context.resources)
    }

    @VisibleForTesting
Loading