From 9c657c34f479b4a11abc556cdff807d2f3ee73ab Mon Sep 17 00:00:00 2001 From: Jeff Tinker Date: Wed, 20 May 2020 16:54:04 +0000 Subject: [PATCH] Revert "[Settings] Remove mobile network v1" This reverts commit daf6c9e85b407657d241e6742c951841dbca0f73. Reason for revert: Broken build 6513883 on aosp-master on errorprone Change-Id: I5e473863c2669a3c89014e12cc952c5c72a12cb7 bug:157138919 --- .../mobile_network_settings_container.xml | 50 +++++++++++++++++++ .../network/NetworkDashboardFragment.java | 33 ++++++++++-- .../telephony/MobileNetworkActivity.java | 38 +++++++++++++- .../MobileNetworkSwitchController.java | 26 ++++++---- 4 files changed, 133 insertions(+), 14 deletions(-) create mode 100644 res/layout/mobile_network_settings_container.xml diff --git a/res/layout/mobile_network_settings_container.xml b/res/layout/mobile_network_settings_container.xml new file mode 100644 index 00000000000..c88b512f443 --- /dev/null +++ b/res/layout/mobile_network_settings_container.xml @@ -0,0 +1,50 @@ + + + + + + + + + + + diff --git a/src/com/android/settings/network/NetworkDashboardFragment.java b/src/com/android/settings/network/NetworkDashboardFragment.java index 4669e740e9a..8c686a54aae 100644 --- a/src/com/android/settings/network/NetworkDashboardFragment.java +++ b/src/com/android/settings/network/NetworkDashboardFragment.java @@ -27,7 +27,9 @@ import androidx.appcompat.app.AlertDialog; import androidx.fragment.app.Fragment; import com.android.settings.R; +import com.android.settings.core.FeatureFlags; import com.android.settings.dashboard.DashboardFragment; +import com.android.settings.development.featureflags.FeatureFlagPersistent; import com.android.settings.network.MobilePlanPreferenceController.MobilePlanPreferenceHost; import com.android.settings.search.BaseSearchIndexProvider; import com.android.settings.wifi.WifiMasterSwitchPreferenceController; @@ -58,14 +60,20 @@ public class NetworkDashboardFragment extends DashboardFragment implements @Override protected int getPreferenceScreenResId() { - return R.xml.network_and_internet_v2; + if (FeatureFlagPersistent.isEnabled(getContext(), FeatureFlags.NETWORK_INTERNET_V2)) { + return R.xml.network_and_internet_v2; + } else { + return R.xml.network_and_internet; + } } @Override public void onAttach(Context context) { super.onAttach(context); - use(MultiNetworkHeaderController.class).init(getSettingsLifecycle()); + if (FeatureFlagPersistent.isEnabled(context, FeatureFlags.NETWORK_INTERNET_V2)) { + use(MultiNetworkHeaderController.class).init(getSettingsLifecycle()); + } use(AirplaneModePreferenceController.class).setFragment(this); } @@ -87,6 +95,10 @@ public class NetworkDashboardFragment extends DashboardFragment implements new MobilePlanPreferenceController(context, mobilePlanHost); final WifiMasterSwitchPreferenceController wifiPreferenceController = new WifiMasterSwitchPreferenceController(context, metricsFeatureProvider); + MobileNetworkPreferenceController mobileNetworkPreferenceController = null; + if (!FeatureFlagPersistent.isEnabled(context, FeatureFlags.NETWORK_INTERNET_V2)) { + mobileNetworkPreferenceController = new MobileNetworkPreferenceController(context); + } final VpnPreferenceController vpnPreferenceController = new VpnPreferenceController(context); @@ -96,13 +108,21 @@ public class NetworkDashboardFragment extends DashboardFragment implements if (lifecycle != null) { lifecycle.addObserver(mobilePlanPreferenceController); lifecycle.addObserver(wifiPreferenceController); + if (mobileNetworkPreferenceController != null) { + lifecycle.addObserver(mobileNetworkPreferenceController); + } lifecycle.addObserver(vpnPreferenceController); lifecycle.addObserver(privateDnsPreferenceController); } final List controllers = new ArrayList<>(); - controllers.add(new MobileNetworkSummaryController(context, lifecycle)); + if (FeatureFlagPersistent.isEnabled(context, FeatureFlags.NETWORK_INTERNET_V2)) { + controllers.add(new MobileNetworkSummaryController(context, lifecycle)); + } + if (mobileNetworkPreferenceController != null) { + controllers.add(mobileNetworkPreferenceController); + } controllers.add(new TetherPreferenceController(context, lifecycle)); controllers.add(vpnPreferenceController); controllers.add(new ProxyPreferenceController(context)); @@ -148,7 +168,12 @@ public class NetworkDashboardFragment extends DashboardFragment implements public List getXmlResourcesToIndex( Context context, boolean enabled) { final SearchIndexableResource sir = new SearchIndexableResource(context); - sir.xmlResId = R.xml.network_and_internet_v2; + if (FeatureFlagPersistent.isEnabled(context, + FeatureFlags.NETWORK_INTERNET_V2)) { + sir.xmlResId = R.xml.network_and_internet_v2; + } else { + sir.xmlResId = R.xml.network_and_internet; + } return Arrays.asList(sir); } diff --git a/src/com/android/settings/network/telephony/MobileNetworkActivity.java b/src/com/android/settings/network/telephony/MobileNetworkActivity.java index c47b29b5fc4..90b73f86426 100644 --- a/src/com/android/settings/network/telephony/MobileNetworkActivity.java +++ b/src/com/android/settings/network/telephony/MobileNetworkActivity.java @@ -28,6 +28,8 @@ import android.telephony.SubscriptionInfo; import android.telephony.SubscriptionManager; import android.telephony.ims.ImsRcsManager; import android.text.TextUtils; +import android.view.Menu; +import android.view.View; import androidx.annotation.NonNull; import androidx.annotation.VisibleForTesting; @@ -38,9 +40,13 @@ import androidx.fragment.app.FragmentTransaction; import com.android.internal.telephony.TelephonyIntents; import com.android.internal.util.CollectionUtils; import com.android.settings.R; +import com.android.settings.core.FeatureFlags; import com.android.settings.core.SettingsBaseActivity; +import com.android.settings.development.featureflags.FeatureFlagPersistent; import com.android.settings.network.SubscriptionUtil; +import com.google.android.material.bottomnavigation.BottomNavigationView; + import java.util.ArrayList; import java.util.List; import java.util.Objects; @@ -108,7 +114,11 @@ public class MobileNetworkActivity extends SettingsBaseActivity { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); - setContentView(R.layout.mobile_network_settings_container_v2); + if (FeatureFlagPersistent.isEnabled(this, FeatureFlags.NETWORK_INTERNET_V2)) { + setContentView(R.layout.mobile_network_settings_container_v2); + } else { + setContentView(R.layout.mobile_network_settings_container); + } setActionBar(findViewById(R.id.mobile_action_bar)); mPhoneChangeReceiver = new PhoneChangeReceiver(this, new PhoneChangeReceiver.Client() { @Override @@ -176,6 +186,10 @@ public class MobileNetworkActivity extends SettingsBaseActivity { mSubscriptionInfos = mSubscriptionManager.getActiveSubscriptionInfoList(true); + if (!FeatureFlagPersistent.isEnabled(this, FeatureFlags.NETWORK_INTERNET_V2)) { + updateBottomNavigationView(); + } + if (savedInstanceState == null) { switchFragment(new MobileNetworkSettings(), getSubscriptionId()); } @@ -229,6 +243,28 @@ public class MobileNetworkActivity extends SettingsBaseActivity { return SubscriptionManager.INVALID_SUBSCRIPTION_ID; } + @VisibleForTesting + void updateBottomNavigationView() { + final BottomNavigationView navigation = findViewById(R.id.bottom_nav); + + if (CollectionUtils.size(mSubscriptionInfos) <= 1) { + navigation.setVisibility(View.GONE); + } else { + final Menu menu = navigation.getMenu(); + menu.clear(); + for (int i = 0, size = mSubscriptionInfos.size(); i < size; i++) { + final SubscriptionInfo subscriptionInfo = mSubscriptionInfos.get(i); + menu.add(0, subscriptionInfo.getSubscriptionId(), i, + subscriptionInfo.getDisplayName()) + .setIcon(R.drawable.ic_settings_sim); + } + navigation.setOnNavigationItemSelectedListener(item -> { + switchFragment(new MobileNetworkSettings(), item.getItemId()); + return true; + }); + } + } + @VisibleForTesting void switchFragment(Fragment fragment, int subscriptionId) { switchFragment(fragment, subscriptionId, false /* forceUpdate */); diff --git a/src/com/android/settings/network/telephony/MobileNetworkSwitchController.java b/src/com/android/settings/network/telephony/MobileNetworkSwitchController.java index 94f86f490c4..02396ddef70 100644 --- a/src/com/android/settings/network/telephony/MobileNetworkSwitchController.java +++ b/src/com/android/settings/network/telephony/MobileNetworkSwitchController.java @@ -22,19 +22,24 @@ import static androidx.lifecycle.Lifecycle.Event.ON_RESUME; import android.content.Context; import android.telephony.SubscriptionInfo; import android.telephony.SubscriptionManager; +import android.util.Log; + +import com.android.settings.R; +import com.android.settings.core.BasePreferenceController; +import com.android.settings.core.FeatureFlags; +import com.android.settings.development.featureflags.FeatureFlagPersistent; +import com.android.settings.network.SubscriptionUtil; +import com.android.settings.network.SubscriptionsChangeListener; +import com.android.settings.widget.SwitchBar; +import com.android.settingslib.widget.LayoutPreference; + +import java.util.List; import androidx.lifecycle.Lifecycle; import androidx.lifecycle.LifecycleObserver; import androidx.lifecycle.OnLifecycleEvent; import androidx.preference.PreferenceScreen; -import com.android.settings.R; -import com.android.settings.core.BasePreferenceController; -import com.android.settings.network.SubscriptionUtil; -import com.android.settings.network.SubscriptionsChangeListener; -import com.android.settings.widget.SwitchBar; -import com.android.settingslib.widget.LayoutPreference; - /** This controls a switch to allow enabling/disabling a mobile network */ public class MobileNetworkSwitchController extends BasePreferenceController implements SubscriptionsChangeListener.SubscriptionsChangeListenerClient, LifecycleObserver { @@ -113,8 +118,11 @@ public class MobileNetworkSwitchController extends BasePreferenceController impl @Override public int getAvailabilityStatus() { - return AVAILABLE_UNSEARCHABLE; - + if (FeatureFlagPersistent.isEnabled(mContext, FeatureFlags.NETWORK_INTERNET_V2)) { + return AVAILABLE_UNSEARCHABLE; + } else { + return CONDITIONALLY_UNAVAILABLE; + } } @Override