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

Commit 116d632e authored by Fabian Kozynski's avatar Fabian Kozynski Committed by Android (Google) Code Review
Browse files

Merge changes from topic "361587414" into main

* changes:
  Hide QQS/QS when quick settings is disabled
  Add quick-settings to cmd statusbar send-disable-flag
parents d1d010fd 09b1b6b2
Loading
Loading
Loading
Loading
+22 −2
Original line number Diff line number Diff line
@@ -1326,6 +1326,7 @@ public class StatusBarManager {
        private boolean mClock;
        private boolean mNotificationIcons;
        private boolean mRotationSuggestion;
        private boolean mQuickSettings;

        /** @hide */
        public DisableInfo(int flags1, int flags2) {
@@ -1338,6 +1339,7 @@ public class StatusBarManager {
            mClock = (flags1 & DISABLE_CLOCK) != 0;
            mNotificationIcons = (flags1 & DISABLE_NOTIFICATION_ICONS) != 0;
            mRotationSuggestion = (flags2 & DISABLE2_ROTATE_SUGGESTIONS) != 0;
            mQuickSettings = (flags2 & DISABLE2_QUICK_SETTINGS) != 0;
        }

        /** @hide */
@@ -1470,6 +1472,20 @@ public class StatusBarManager {
            return mRotationSuggestion;
        }

        /**
         * @hide
         */
        public void setQuickSettingsDisabled(boolean disabled) {
            mQuickSettings = disabled;
        }

        /**
         * @hide
         */
        public boolean isQuickSettingsDisabled() {
            return mQuickSettings;
        }

        /**
         * @return {@code true} if no components are disabled (default state)
         * @hide
@@ -1478,7 +1494,7 @@ public class StatusBarManager {
        public boolean areAllComponentsEnabled() {
            return !mStatusBarExpansion && !mNavigateHome && !mNotificationPeeking && !mRecents
                    && !mSearch && !mSystemIcons && !mClock && !mNotificationIcons
                    && !mRotationSuggestion;
                    && !mRotationSuggestion && !mQuickSettings;
        }

        /** @hide */
@@ -1492,6 +1508,7 @@ public class StatusBarManager {
            mClock = false;
            mNotificationIcons = false;
            mRotationSuggestion = false;
            mQuickSettings = false;
        }

        /**
@@ -1502,7 +1519,7 @@ public class StatusBarManager {
        public boolean areAllComponentsDisabled() {
            return mStatusBarExpansion && mNavigateHome && mNotificationPeeking
                    && mRecents && mSearch && mSystemIcons && mClock && mNotificationIcons
                    && mRotationSuggestion;
                    && mRotationSuggestion && mQuickSettings;
        }

        /** @hide */
@@ -1516,6 +1533,7 @@ public class StatusBarManager {
            mClock = true;
            mNotificationIcons = true;
            mRotationSuggestion = true;
            mQuickSettings = true;
        }

        @NonNull
@@ -1533,6 +1551,7 @@ public class StatusBarManager {
            sb.append(" mClock=").append(mClock ? "disabled" : "enabled");
            sb.append(" mNotificationIcons=").append(mNotificationIcons ? "disabled" : "enabled");
            sb.append(" mRotationSuggestion=").append(mRotationSuggestion ? "disabled" : "enabled");
            sb.append(" mQuickSettings=").append(mQuickSettings ? "disabled" : "enabled");

            return sb.toString();

@@ -1557,6 +1576,7 @@ public class StatusBarManager {
            if (mClock) disable1 |= DISABLE_CLOCK;
            if (mNotificationIcons) disable1 |= DISABLE_NOTIFICATION_ICONS;
            if (mRotationSuggestion) disable2 |= DISABLE2_ROTATE_SUGGESTIONS;
            if (mQuickSettings) disable2 |= DISABLE2_QUICK_SETTINGS;

            return new Pair<Integer, Integer>(disable1, disable2);
        }
+24 −0
Original line number Diff line number Diff line
@@ -16,6 +16,7 @@

package com.android.systemui.qs.composefragment.viewmodel

import android.app.StatusBarManager
import android.content.testableContext
import android.testing.TestableLooper.RunWithLooper
import androidx.lifecycle.Lifecycle
@@ -32,6 +33,8 @@ import com.android.systemui.qs.fgsManagerController
import com.android.systemui.res.R
import com.android.systemui.shade.largeScreenHeaderHelper
import com.android.systemui.statusbar.StatusBarState
import com.android.systemui.statusbar.disableflags.data.model.DisableFlagsModel
import com.android.systemui.statusbar.disableflags.data.repository.fakeDisableFlagsRepository
import com.android.systemui.statusbar.sysuiStatusBarStateController
import com.android.systemui.testKosmos
import com.google.common.truth.Truth.assertThat
@@ -178,6 +181,23 @@ class QSFragmentComposeViewModelTest : SysuiTestCase() {
            }
        }

    @Test
    fun qsEnabled_followsRepository() =
        with(kosmos) {
            testScope.testWithinLifecycle {
                val qsEnabled by collectLastValue(underTest.qsEnabled)

                fakeDisableFlagsRepository.disableFlags.value =
                    DisableFlagsModel(disable2 = QS_DISABLE_FLAG)

                assertThat(qsEnabled).isFalse()

                fakeDisableFlagsRepository.disableFlags.value = DisableFlagsModel()

                assertThat(qsEnabled).isTrue()
            }
        }

    private inline fun TestScope.testWithinLifecycle(
        crossinline block: suspend TestScope.() -> TestResult
    ): TestResult {
@@ -186,4 +206,8 @@ class QSFragmentComposeViewModelTest : SysuiTestCase() {
            block().also { lifecycleOwner.setCurrentState(Lifecycle.State.DESTROYED) }
        }
    }

    companion object {
        private const val QS_DISABLE_FLAG = StatusBarManager.DISABLE2_QUICK_SETTINGS
    }
}
+50 −34
Original line number Diff line number Diff line
@@ -32,6 +32,7 @@ import androidx.compose.foundation.layout.Column
import androidx.compose.foundation.layout.Spacer
import androidx.compose.foundation.layout.WindowInsets
import androidx.compose.foundation.layout.fillMaxSize
import androidx.compose.foundation.layout.fillMaxWidth
import androidx.compose.foundation.layout.navigationBars
import androidx.compose.foundation.layout.windowInsetsPadding
import androidx.compose.runtime.Composable
@@ -403,11 +404,15 @@ constructor(
            onDispose { qqsVisible.value = false }
        }
        Column(modifier = Modifier.sysuiResTag("quick_qs_panel")) {
            Box(modifier = Modifier.fillMaxWidth()) {
                val qsEnabled by viewModel.qsEnabled.collectAsStateWithLifecycle()
                if (qsEnabled) {
                    QuickQuickSettings(
                        viewModel = viewModel.containerViewModel.quickQuickSettingsViewModel,
                        modifier =
                            Modifier.onGloballyPositioned { coordinates ->
                            val (leftFromRoot, topFromRoot) = coordinates.positionInRoot().round()
                                    val (leftFromRoot, topFromRoot) =
                                        coordinates.positionInRoot().round()
                                    val (width, height) = coordinates.size
                                    qqsPositionOnRoot.set(
                                        leftFromRoot,
@@ -420,13 +425,19 @@ constructor(
                                    val placeable = measurable.measure(constraints)
                                    qqsHeight.value = placeable.height

                            layout(placeable.width, placeable.height) { placeable.place(0, 0) }
                                    layout(placeable.width, placeable.height) {
                                        placeable.place(0, 0)
                                    }
                                }
                                .padding(top = { qqsPadding })
                                .collapseExpandSemanticAction(
                            stringResource(id = R.string.accessibility_quick_settings_expand)
                                    stringResource(
                                        id = R.string.accessibility_quick_settings_expand
                                    )
                                )
                    )
                }
            }
            Spacer(modifier = Modifier.weight(1f))
        }
    }
@@ -441,9 +452,13 @@ constructor(
                    stringResource(id = R.string.accessibility_quick_settings_collapse)
                )
        ) {
            val qsEnabled by viewModel.qsEnabled.collectAsStateWithLifecycle()
            if (qsEnabled) {
                Box(modifier = Modifier.fillMaxSize().weight(1f)) {
                    Column {
                    Spacer(modifier = Modifier.height { qqsPadding + qsExtraPadding.roundToPx() })
                        Spacer(
                            modifier = Modifier.height { qqsPadding + qsExtraPadding.roundToPx() }
                        )
                        ShadeBody(viewModel = viewModel.containerViewModel)
                    }
                }
@@ -456,6 +471,7 @@ constructor(
                }
            }
        }
    }

    private fun Modifier.collapseExpandSemanticAction(label: String): Modifier {
        return viewModel.collapseExpandAccessibilityAction?.let {
+7 −3
Original line number Diff line number Diff line
@@ -132,13 +132,17 @@ constructor(
            _stackScrollerOverscrolling.value = value
        }

    private val qsDisabled =
    /**
     * Whether QS is enabled by policy. This is normally true, except when it's disabled by some
     * policy. See [DisableFlagsRepository].
     */
    val qsEnabled =
        disableFlagsRepository.disableFlags
            .map { !it.isQuickSettingsEnabled() }
            .map { it.isQuickSettingsEnabled() }
            .stateIn(
                lifecycleScope,
                SharingStarted.WhileSubscribed(),
                !disableFlagsRepository.disableFlags.value.isQuickSettingsEnabled()
                disableFlagsRepository.disableFlags.value.isQuickSettingsEnabled()
            )

    private val _showCollapsedOnKeyguard = MutableStateFlow(false)
+4 −0
Original line number Diff line number Diff line
@@ -190,6 +190,9 @@ public class StatusBarShellCommand extends ShellCommand {
                case "notification-icons":
                    info.setNotificationIconsDisabled(true);
                    break;
                case "quick-settings":
                    info.setQuickSettingsDisabled(true);
                    break;
                default:
                    break;
            }
@@ -277,6 +280,7 @@ public class StatusBarShellCommand extends ShellCommand {
        pw.println("        system-icons        - disable system icons appearing in status bar");
        pw.println("        clock               - disable clock appearing in status bar");
        pw.println("        notification-icons  - disable notification icons from status bar");
        pw.println("        quick-settings      - disable Quick Settings");
        pw.println("");
        pw.println("  tracing (start | stop)");
        pw.println("    Start or stop SystemUI tracing");