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

Commit 2bab900f authored by Jacky Wang's avatar Jacky Wang
Browse files

[Catalyst] Add Data Saver settings metadata

Bug: 368359883
Flag: com.android.settings.flags.catalyst
Test: manual
Change-Id: I7a4fe8cdd73a551a2b281e3a5a3a0f269b54ee5e
parent 8fab3bf0
Loading
Loading
Loading
Loading
+1 −0
Original line number Diff line number Diff line
@@ -81,6 +81,7 @@
        android:title="@string/data_saver_title"
        android:icon="@drawable/ic_settings_data_usage"
        android:order="10"
        android:persistent="false"
        settings:isPreferenceVisible="@bool/config_show_data_saver"
        android:fragment="com.android.settings.datausage.DataSaverSummary"/>

+14 −4
Original line number Diff line number Diff line
@@ -17,30 +17,40 @@ package com.android.settings.datausage;
import android.content.Context;
import android.util.AttributeSet;

import androidx.annotation.Nullable;
import androidx.preference.Preference;

import com.android.settings.R;
import com.android.settings.flags.Flags;

public class DataSaverPreference extends Preference implements DataSaverBackend.Listener {

    private final DataSaverBackend mDataSaverBackend;
    private final @Nullable DataSaverBackend mDataSaverBackend;

    public DataSaverPreference(Context context, AttributeSet attrs) {
        super(context, attrs);
        mDataSaverBackend = new DataSaverBackend(context);
        mDataSaverBackend = isCatalystEnabled() ? null : new DataSaverBackend(context);
    }

    private boolean isCatalystEnabled() {
        return Flags.catalyst() && Flags.catalystRestrictBackgroundParentEntry();
    }

    @Override
    public void onAttached() {
        super.onAttached();
        if (mDataSaverBackend != null) {
            mDataSaverBackend.addListener(this);
        }
    }

    @Override
    public void onDetached() {
        super.onDetached();
        if (mDataSaverBackend != null) {
            mDataSaverBackend.remListener(this);
        }
    }

    @Override
    public void onDataSaverChanged(boolean isDataSaving) {
+40 −1
Original line number Diff line number Diff line
@@ -17,14 +17,27 @@
package com.android.settings.datausage

import android.content.Context
import android.telephony.SubscriptionManager.INVALID_SUBSCRIPTION_ID
import com.android.settings.R
import com.android.settings.flags.Flags
import com.android.settingslib.metadata.PreferenceAvailabilityProvider
import com.android.settingslib.metadata.PreferenceLifecycleContext
import com.android.settingslib.metadata.PreferenceLifecycleProvider
import com.android.settingslib.metadata.PreferenceSummaryProvider
import com.android.settingslib.metadata.ProvidePreferenceScreen
import com.android.settingslib.metadata.preferenceHierarchy
import com.android.settingslib.preference.PreferenceScreenCreator

@ProvidePreferenceScreen
class DataSaverScreen : PreferenceScreenCreator {
class DataSaverScreen :
    PreferenceScreenCreator,
    PreferenceAvailabilityProvider,
    PreferenceSummaryProvider,
    PreferenceLifecycleProvider {

    private var dataSaverBackend: DataSaverBackend? = null
    private var dataSaverBackendListener: DataSaverBackend.Listener? = null

    override val key
        get() = KEY

@@ -34,6 +47,20 @@ class DataSaverScreen : PreferenceScreenCreator {
    override val icon: Int
        get() = R.drawable.ic_settings_data_usage

    override fun isIndexable(context: Context) =
        DataUsageUtils.hasMobileData(context) &&
            DataUsageUtils.getDefaultSubscriptionId(context) != INVALID_SUBSCRIPTION_ID

    override fun getSummary(context: Context): CharSequence? =
        when {
            DataSaverBackend(context).isDataSaverEnabled ->
                context.getString(R.string.data_saver_on)
            else -> context.getString(R.string.data_saver_off)
        }

    override fun isAvailable(context: Context) =
        context.resources.getBoolean(R.bool.config_show_data_saver)

    override fun isFlagEnabled(context: Context) = Flags.catalystRestrictBackgroundParentEntry()

    override fun fragmentClass() = DataSaverSummary::class.java
@@ -43,6 +70,18 @@ class DataSaverScreen : PreferenceScreenCreator {

    override fun hasCompleteHierarchy() = false

    override fun onStart(context: PreferenceLifecycleContext) {
        val listener = DataSaverBackend.Listener { context.notifyPreferenceChange(this) }
        dataSaverBackendListener = listener
        dataSaverBackend = DataSaverBackend(context).apply { addListener(listener) }
    }

    override fun onStop(context: PreferenceLifecycleContext) {
        dataSaverBackend?.remListener(dataSaverBackendListener)
        dataSaverBackend = null
        dataSaverBackendListener = null
    }

    companion object {
        const val KEY = "restrict_background_parent_entry"
    }
+5 −1
Original line number Diff line number Diff line
@@ -17,6 +17,7 @@ package com.android.settings.network

import android.content.Context
import com.android.settings.R
import com.android.settings.datausage.DataSaverScreen
import com.android.settings.flags.Flags
import com.android.settingslib.metadata.PreferenceIconProvider
import com.android.settingslib.metadata.ProvidePreferenceScreen
@@ -43,7 +44,10 @@ class NetworkDashboardScreen : PreferenceScreenCreator, PreferenceIconProvider {

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

    override fun getPreferenceHierarchy(context: Context) = preferenceHierarchy(this) {}
    override fun getPreferenceHierarchy(context: Context) =
        preferenceHierarchy(this) {
            +DataSaverScreen.KEY order 10
        }

    companion object {
        const val KEY = "network_provider_and_internet_screen"