Skip to content

Commit

Permalink
Add a mobile data toggle for setup
Browse files Browse the repository at this point in the history
mIsInSetupWizard was moved to top of NetworkProviderSetting's onCreate
so it is available for addPreferences().

Change-Id: I9299c3033e96bcd30450ec239f14fb5daa800d63
  • Loading branch information
AKoskovich authored and bgcngm committed Nov 7, 2024
1 parent 4b5fe3f commit 400176f
Show file tree
Hide file tree
Showing 6 changed files with 42 additions and 10 deletions.
7 changes: 7 additions & 0 deletions res/xml/network_provider_settings.xml
Original file line number Diff line number Diff line change
Expand Up @@ -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"
Expand Down
24 changes: 22 additions & 2 deletions src/com/android/settings/network/NetworkProviderSettings.java
Original file line number Diff line number Diff line change
Expand Up @@ -72,6 +72,7 @@
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;
Expand Down Expand Up @@ -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
*/
Expand Down Expand Up @@ -320,13 +327,15 @@ private boolean hasWifiManager() {
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();
return;
}
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).
Expand Down Expand Up @@ -374,8 +383,6 @@ public void onPrepareMenu(@NonNull Menu menu) {
fixConnectivityItem.setVisible(!mIsGuest && (!isAirplaneModeOn || isWifiEnabled));
}
};
final Intent intent = this.getIntent();
mIsInSetupWizard = WizardManagerHelper.isAnySetupWizard(intent);
}

private void updateUserType() {
Expand Down Expand Up @@ -418,6 +425,7 @@ private void addPreferences() {
if (mResetInternetPreference != null) {
mResetInternetPreference.setVisible(false);
}
addMobileDataPreferenceController();
addNetworkMobileProviderController();
addConnectedEthernetNetworkController();
addWifiSwitchPreferenceController();
Expand All @@ -440,6 +448,18 @@ boolean showAnySubscriptionInfo(Context context) {
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;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -36,6 +36,7 @@
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;
Expand Down Expand Up @@ -64,6 +65,7 @@ public class MobileDataPreferenceController extends TelephonyTogglePreferenceCon
int mDialogType;
@VisibleForTesting
boolean mNeedDialog;
boolean mIsInSetupWizard;

private WifiPickerTrackerHelper mWifiPickerTrackerHelper;
protected MobileNetworkRepository mMobileNetworkRepository;
Expand All @@ -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);
Expand All @@ -92,12 +95,13 @@ public MobileDataPreferenceController(Context context, String key) {

@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
Expand Down Expand Up @@ -174,6 +178,7 @@ private void update() {
return;
}

mPreference.setVisible(isAvailable());
mPreference.setChecked(isChecked());
if (mSubscriptionInfoEntity.isOpportunistic) {
mPreference.setEnabled(false);
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -185,7 +185,7 @@ protected List<AbstractPreferenceController> createPreferenceControllers(Context
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);
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -131,7 +131,7 @@ public void test_disable_mobile_network() {
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));
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -112,7 +112,7 @@ public void setUp() {

mPreference = new SwitchPreference(mContext);
mController = new MobileDataPreferenceController(mContext, "mobile_data", mLifecycle,
mLifecycleOwner, SUB_ID);
mLifecycleOwner, SUB_ID, false);
mController.init(mFragmentManager, SUB_ID, mSubInfo1, mNetworkInfo1);
mPreference.setKey(mController.getPreferenceKey());
mLifecycleRegistry = new LifecycleRegistry(mLifecycleOwner);
Expand Down

0 comments on commit 400176f

Please sign in to comment.