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

Commit b1d2cd87 authored by Jacky Wang's avatar Jacky Wang
Browse files

[Catalyst] Implement PreferenceScreenMixin for SupervisionDashboardScreen

Bug: 409940414
Flag: android.app.supervision.flags.enable_supervision_settings_screen
Test: manual
Change-Id: I97ee763b0877fa2e9ced270ca103f877e249c572
parent 5c402aad
Loading
Loading
Loading
Loading
+2 −1
Original line number Diff line number Diff line
@@ -50,7 +50,7 @@ constructor(
 * Use [DashboardFragment] as base class instead of [PreferenceFragment] to support injection and
 * highlighting specific preference.
 */
class CatalystFragment : DashboardFragment() {
open class CatalystFragment : DashboardFragment() {

    override fun getPreferenceScreenResId() = 0

@@ -62,5 +62,6 @@ class CatalystFragment : DashboardFragment() {

    override fun onCreatePreferences(savedInstanceState: Bundle?, rootKey: String?) {
        preferenceScreen = createPreferenceScreen()
        refreshDashboardTiles(logTag)
    }
}
+1 −1
Original line number Diff line number Diff line
@@ -560,7 +560,7 @@ public abstract class DashboardFragment extends SettingsPreferenceFragment
    /**
     * Refresh preference items backed by DashboardCategory.
     */
    private void refreshDashboardTiles(final String tag) {
    protected void refreshDashboardTiles(final String tag) {
        final PreferenceScreen screen = getPreferenceScreen();

        final DashboardCategory category =
+2 −19
Original line number Diff line number Diff line
@@ -15,32 +15,15 @@
 */
package com.android.settings.supervision

import android.app.settings.SettingsEnums
import android.content.Context
import com.android.settings.R
import com.android.settings.dashboard.DashboardFragment
import com.android.settings.CatalystFragment

/**
 * Fragment to display the Supervision settings landing page (Settings > Supervision).
 *
 * See [SupervisionDashboardScreen] for details on the page contents.
 *
 * This class extends [DashboardFragment] in order to support dynamic settings injection.
 */
class SupervisionDashboardFragment : DashboardFragment() {

    override fun getPreferenceScreenResId() = 0

    override fun getMetricsCategory() = SettingsEnums.SUPERVISION_DASHBOARD

    override fun getLogTag() = TAG
class SupervisionDashboardFragment : CatalystFragment() {

    override fun getPreferenceScreenBindingKey(context: Context) = SupervisionDashboardScreen.KEY

    // TODO(b/383405598): redirect to Play Store if supervisor client is not
    // fully present.

    companion object {
        private const val TAG = "SupervisionDashboard"
    }
}
+8 −2
Original line number Diff line number Diff line
@@ -15,15 +15,16 @@
 */
package com.android.settings.supervision

import android.app.settings.SettingsEnums
import android.app.supervision.flags.Flags
import android.content.Context
import com.android.settings.R
import com.android.settings.core.PreferenceScreenMixin
import com.android.settings.supervision.ipc.SupervisionMessengerClient
import com.android.settingslib.metadata.PreferenceLifecycleContext
import com.android.settingslib.metadata.PreferenceLifecycleProvider
import com.android.settingslib.metadata.ProvidePreferenceScreen
import com.android.settingslib.metadata.preferenceHierarchy
import com.android.settingslib.preference.PreferenceScreenCreator
import com.android.settingslib.widget.UntitledPreferenceCategoryMetadata

/**
@@ -37,7 +38,7 @@ import com.android.settingslib.widget.UntitledPreferenceCategoryMetadata
 * 3. Entry point to supervision PIN management settings page.
 */
@ProvidePreferenceScreen(SupervisionDashboardScreen.KEY)
class SupervisionDashboardScreen : PreferenceScreenCreator, PreferenceLifecycleProvider {
open class SupervisionDashboardScreen : PreferenceScreenMixin, PreferenceLifecycleProvider {
    private var supervisionClient: SupervisionMessengerClient? = null

    override fun isFlagEnabled(context: Context) = Flags.enableSupervisionSettingsScreen()
@@ -59,6 +60,11 @@ class SupervisionDashboardScreen : PreferenceScreenCreator, PreferenceLifecycleP

    override fun fragmentClass() = SupervisionDashboardFragment::class.java

    override fun getMetricsCategory() = SettingsEnums.SUPERVISION_DASHBOARD

    override val highlightMenuKey: Int
        get() = R.string.menu_key_supervision

    override fun onDestroy(context: PreferenceLifecycleContext) {
        supervisionClient?.close()
    }