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

Unverified Commit c452fdec authored by Alexander Koskovich's avatar Alexander Koskovich Committed by Michael Bestas
Browse files

Add a mobile data toggle for setup

mIsInSetupWizard was moved to top of NetworkProviderSetting's onCreate
so it is available for addPreferences().

Change-Id: I9299c3033e96bcd30450ec239f14fb5daa800d63
parent 508df0d3
Loading
Loading
Loading
Loading
+7 −0
Original line number Diff line number Diff line
@@ -57,6 +57,13 @@
            android:icon="@drawable/ic_settings_ethernet"/>
    </com.android.settingslib.widget.UntitledPreferenceCategory>

    <SwitchPreferenceCompat
        android:key="main_toggle_mobile_data"
        android:title="@string/mobile_data_settings_title"
        android:summary="@string/mobile_data_settings_summary"
        settings:isPreferenceVisible="@bool/config_show_sim_info"
        settings:controller="com.android.settings.network.telephony.MobileDataPreferenceController"/>

    <PreferenceCategory
        android:key="provider_model_mobile_network"
        android:title="@string/mobile_data_settings_title"
+22 −2
Original line number Diff line number Diff line
@@ -81,6 +81,7 @@ import com.android.settings.network.ethernet.EthernetSwitchPreferenceController;
import com.android.settings.network.ethernet.EthernetTracker;
import com.android.settings.network.ethernet.EthernetTrackerImpl;
import com.android.settings.network.MobileDataEnabledListener;
import com.android.settings.network.telephony.MobileDataPreferenceController;
import com.android.settings.search.BaseSearchIndexProvider;
import com.android.settings.widget.GearPreference;
import com.android.settings.wifi.AddNetworkFragment;
@@ -281,6 +282,12 @@ public class NetworkProviderSettings extends RestrictedDashboardFragment
    @VisibleForTesting
    PreferenceCategory mEthernetPreferenceCategory;

    /**
     * Mobile data toggle
     */
    private static final String PREF_KEY_MOBILE_DATA_TOGGLE = "main_toggle_mobile_data";
    private MobileDataPreferenceController mMobileDataPreferenceController;

    /**
     * Mobile networks list for provider model
     */
@@ -340,6 +347,7 @@ public class NetworkProviderSettings extends RestrictedDashboardFragment
    public void onCreate(Bundle icicle) {
        super.onCreate(icicle);
        final Context context = getContext();
        final Intent intent = this.getIntent();
        if (context != null && !context.getResources().getBoolean(
                R.bool.config_show_internet_settings)) {
            finish();
@@ -347,6 +355,7 @@ public class NetworkProviderSettings extends RestrictedDashboardFragment
        }
        mAirplaneModeEnabler = new AirplaneModeEnabler(getContext(), this);
        mDataStateListener = new MobileDataEnabledListener(getContext(), this);
        mIsInSetupWizard = WizardManagerHelper.isAnySetupWizard(intent);

        // TODO(b/37429702): Add animations and preference comparator back after initial screen is
        // loaded (ODR).
@@ -394,8 +403,6 @@ public class NetworkProviderSettings extends RestrictedDashboardFragment
                fixConnectivityItem.setVisible(!mIsGuest && (!isAirplaneModeOn || isWifiEnabled));
            }
        };
        final Intent intent = this.getIntent();
        mIsInSetupWizard = WizardManagerHelper.isAnySetupWizard(intent);
    }

    private void updateUserType() {
@@ -448,6 +455,7 @@ public class NetworkProviderSettings extends RestrictedDashboardFragment
        if (mResetInternetPreference != null) {
            mResetInternetPreference.setVisible(false);
        }
        addMobileDataPreferenceController();
        addNetworkMobileProviderController();
        addWifiSwitchPreferenceController();
        if (com.android.settings.connectivity.Flags.ethernetSettings()) {
@@ -475,6 +483,18 @@ public class NetworkProviderSettings extends RestrictedDashboardFragment
                || Utils.isVoiceCapable(context));
    }

    private void addMobileDataPreferenceController() {
        if (!showAnySubscriptionInfo(getContext())) {
            return;
        }
        if (mMobileDataPreferenceController == null) {
            mMobileDataPreferenceController = new MobileDataPreferenceController(
                    getContext(), PREF_KEY_MOBILE_DATA_TOGGLE, getSettingsLifecycle(),
                    mSubId, mIsInSetupWizard);
        }
        mMobileDataPreferenceController.displayPreference(getPreferenceScreen());
    }

    private void addNetworkMobileProviderController() {
        if (!showAnySubscriptionInfo(getContext())) {
            return;
+18 −17
Original line number Diff line number Diff line
@@ -16,9 +16,6 @@

package com.android.settings.network.telephony;

import static androidx.lifecycle.Lifecycle.Event.ON_START;
import static androidx.lifecycle.Lifecycle.Event.ON_STOP;

import android.content.Context;
import android.provider.Settings;
import android.telephony.SubscriptionManager;
@@ -26,9 +23,10 @@ import android.telephony.TelephonyManager;
import android.text.TextUtils;
import android.util.Log;

import androidx.annotation.NonNull;
import androidx.annotation.VisibleForTesting;
import androidx.fragment.app.FragmentManager;
import androidx.lifecycle.LifecycleObserver;
import androidx.lifecycle.DefaultLifecycleObserver;
import androidx.lifecycle.LifecycleOwner;
import androidx.lifecycle.OnLifecycleEvent;
import androidx.preference.Preference;
@@ -36,6 +34,7 @@ import androidx.preference.PreferenceScreen;
import androidx.preference.TwoStatePreference;

import com.android.settings.R;
import com.android.settings.datausage.DataUsageUtils;
import com.android.settings.flags.Flags;
import com.android.settings.network.MobileNetworkRepository;
import com.android.settings.wifi.WifiPickerTrackerHelper;
@@ -52,7 +51,7 @@ import java.util.List;
 * Preference controller for "Mobile data"
 */
public class MobileDataPreferenceController extends TelephonyTogglePreferenceController
        implements LifecycleObserver, MobileNetworkRepository.MobileNetworkCallback {
        implements DefaultLifecycleObserver, MobileNetworkRepository.MobileNetworkCallback {

    private static final String DIALOG_TAG = "MobileDataDialog";

@@ -64,10 +63,10 @@ public class MobileDataPreferenceController extends TelephonyTogglePreferenceCon
    int mDialogType;
    @VisibleForTesting
    boolean mNeedDialog;
    boolean mIsInSetupWizard;

    private WifiPickerTrackerHelper mWifiPickerTrackerHelper;
    protected MobileNetworkRepository mMobileNetworkRepository;
    protected LifecycleOwner mLifecycleOwner;
    private List<SubscriptionInfoEntity> mSubscriptionInfoEntityList = new ArrayList<>();
    private List<MobileNetworkInfoEntity> mMobileNetworkInfoEntityList = new ArrayList<>();
    private int mDefaultSubId = SubscriptionManager.INVALID_SUBSCRIPTION_ID;
@@ -75,10 +74,10 @@ public class MobileDataPreferenceController extends TelephonyTogglePreferenceCon
    MobileNetworkInfoEntity mMobileNetworkInfoEntity;

    public MobileDataPreferenceController(Context context, String key, Lifecycle lifecycle,
            LifecycleOwner lifecycleOwner, int subId) {
            int subId, boolean isInSetupWizard) {
        this(context, key);
        mSubId = subId;
        mLifecycleOwner = lifecycleOwner;
        mIsInSetupWizard = isInSetupWizard;
        if (lifecycle != null) {
            lifecycle.addObserver(this);
        }
@@ -92,12 +91,13 @@ public class MobileDataPreferenceController extends TelephonyTogglePreferenceCon

    @Override
    public int getAvailabilityStatus(int subId) {
        if (Flags.isDualSimOnboardingEnabled()) {
        if ((Flags.isDualSimOnboardingEnabled() && !mIsInSetupWizard)
                || mSubscriptionManager.getActiveSubscriptionInfo(subId) == null
                || !mSubscriptionManager.isUsableSubscriptionId(subId)
                || !DataUsageUtils.hasMobileData(mContext)) {
            return CONDITIONALLY_UNAVAILABLE;
        }
        return subId != SubscriptionManager.INVALID_SUBSCRIPTION_ID
                ? AVAILABLE
                : AVAILABLE_UNSEARCHABLE;
        return AVAILABLE;
    }

    @Override
@@ -106,14 +106,14 @@ public class MobileDataPreferenceController extends TelephonyTogglePreferenceCon
        mPreference = screen.findPreference(getPreferenceKey());
    }

    @OnLifecycleEvent(ON_START)
    public void onStart() {
        mMobileNetworkRepository.addRegister(mLifecycleOwner, this, mSubId);
    @Override
    public void onResume(@NonNull LifecycleOwner owner) {
        mMobileNetworkRepository.addRegister(owner, this, mSubId);
        mMobileNetworkRepository.updateEntity();
    }

    @OnLifecycleEvent(ON_STOP)
    public void onStop() {
    @Override
    public void onPause(@NonNull LifecycleOwner owner) {
        mMobileNetworkRepository.removeRegister(this);
    }

@@ -174,6 +174,7 @@ public class MobileDataPreferenceController extends TelephonyTogglePreferenceCon
            return;
        }

        mPreference.setVisible(isAvailable());
        mPreference.setChecked(isChecked());
        if (mSubscriptionInfoEntity.isOpportunistic) {
            mPreference.setEnabled(false);
+1 −1
Original line number Diff line number Diff line
@@ -198,7 +198,7 @@ public class MobileNetworkSettings extends AbstractMobileNetworkSettings impleme
                new SmsDefaultSubscriptionController(context, KEY_SMS_PREF, getSettingsLifecycle(),
                        this),
                new MobileDataPreferenceController(context, KEY_MOBILE_DATA_PREF,
                        getSettingsLifecycle(), this, mSubId),
                        getSettingsLifecycle(), mSubId, false),
                new ConvertToEsimPreferenceController(context, KEY_CONVERT_TO_ESIM_PREF,
                        getSettingsLifecycle(), this, mSubId), eid);
    }
+1 −1
Original line number Diff line number Diff line
@@ -131,7 +131,7 @@ public class MobileDataPreferenceControllerComponentTest {
                URL url = new URL("https://www.google.net");
                MobileDataPreferenceController controller = new MobileDataPreferenceController(
                        mInstrumentation.getTargetContext(), "mobile_data", mLifecycle,
                        mLifecycleOwner, sSubscriptionId);
                        sSubscriptionId, false);
                FragmentManager manager = ((FragmentActivity) activity).getSupportFragmentManager();
                controller.init(manager, sSubscriptionId, mock(SubscriptionInfoEntity.class), mock(
                        MobileNetworkInfoEntity.class));
Loading