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

Commit 400176ff authored by Alexander Koskovich's avatar Alexander Koskovich Committed by Bruno Martins
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 4b5fe3fc
Loading
Loading
Loading
Loading
+7 −0
Original line number Diff line number Diff line
@@ -42,6 +42,13 @@
        android:summary="@string/to_switch_networks_disconnect_ethernet"
        android:icon="@drawable/ic_settings_ethernet"/>

    <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/summary_placeholder"
+22 −2
Original line number Diff line number Diff line
@@ -72,6 +72,7 @@ import com.android.settings.datausage.DataUsagePreference;
import com.android.settings.datausage.DataUsageUtils;
import com.android.settings.location.WifiScanningFragment;
import com.android.settings.network.MobileDataEnabledListener;
import com.android.settings.network.telephony.MobileDataPreferenceController;
import com.android.settings.search.BaseSearchIndexProvider;
import com.android.settings.wifi.AddNetworkFragment;
import com.android.settings.wifi.AddWifiNetworkPreference;
@@ -260,6 +261,12 @@ public class NetworkProviderSettings extends RestrictedSettingsFragment
    @VisibleForTesting
    MenuProvider mMenuProvider;

    /**
     * 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
     */
@@ -320,6 +327,7 @@ public class NetworkProviderSettings extends RestrictedSettingsFragment
    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();
@@ -327,6 +335,7 @@ public class NetworkProviderSettings extends RestrictedSettingsFragment
        }
        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).
@@ -374,8 +383,6 @@ public class NetworkProviderSettings extends RestrictedSettingsFragment
                fixConnectivityItem.setVisible(!mIsGuest && (!isAirplaneModeOn || isWifiEnabled));
            }
        };
        final Intent intent = this.getIntent();
        mIsInSetupWizard = WizardManagerHelper.isAnySetupWizard(intent);
    }

    private void updateUserType() {
@@ -418,6 +425,7 @@ public class NetworkProviderSettings extends RestrictedSettingsFragment
        if (mResetInternetPreference != null) {
            mResetInternetPreference.setVisible(false);
        }
        addMobileDataPreferenceController();
        addNetworkMobileProviderController();
        addConnectedEthernetNetworkController();
        addWifiSwitchPreferenceController();
@@ -440,6 +448,18 @@ public class NetworkProviderSettings extends RestrictedSettingsFragment
        return (context != null) && SubscriptionUtil.isSimHardwareVisible(context);
    }

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

    private void addNetworkMobileProviderController() {
        if (!showAnySubscriptionInfo(getContext())) {
            return;
+10 −5
Original line number Diff line number Diff line
@@ -36,6 +36,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;
@@ -64,6 +65,7 @@ public class MobileDataPreferenceController extends TelephonyTogglePreferenceCon
    int mDialogType;
    @VisibleForTesting
    boolean mNeedDialog;
    boolean mIsInSetupWizard;

    private WifiPickerTrackerHelper mWifiPickerTrackerHelper;
    protected MobileNetworkRepository mMobileNetworkRepository;
@@ -75,9 +77,10 @@ public class MobileDataPreferenceController extends TelephonyTogglePreferenceCon
    MobileNetworkInfoEntity mMobileNetworkInfoEntity;

    public MobileDataPreferenceController(Context context, String key, Lifecycle lifecycle,
            LifecycleOwner lifecycleOwner, int subId) {
            LifecycleOwner lifecycleOwner, int subId, boolean isInSetupWizard) {
        this(context, key);
        mSubId = subId;
        mIsInSetupWizard = isInSetupWizard;
        mLifecycleOwner = lifecycleOwner;
        if (lifecycle != null) {
            lifecycle.addObserver(this);
@@ -92,12 +95,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
@@ -174,6 +178,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
@@ -185,7 +185,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(), this, 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);
                        mLifecycleOwner, sSubscriptionId, false);
                FragmentManager manager = ((FragmentActivity) activity).getSupportFragmentManager();
                controller.init(manager, sSubscriptionId, mock(SubscriptionInfoEntity.class), mock(
                        MobileNetworkInfoEntity.class));
Loading