Loading res/layout/mobile_network_settings_container.xml 0 → 100644 +50 −0 Original line number Diff line number Diff line <?xml version="1.0" encoding="utf-8"?> <!-- Copyright (C) 2018 The Android Open Source Project Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0 Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License. --> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:app="http://schemas.android.com/apk/res-auto" android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="vertical"> <Toolbar android:id="@+id/mobile_action_bar" style="?android:attr/actionBarStyle" android:layout_width="match_parent" android:layout_height="wrap_content" android:navigationContentDescription="@*android:string/action_bar_up_description" android:theme="?android:attr/actionBarTheme"/> <FrameLayout android:id="@+id/main_content" android:layout_width="match_parent" android:layout_height="wrap_content" android:layout_weight="1"/> <com.google.android.material.bottomnavigation.BottomNavigationView android:id="@+id/bottom_nav" android:layout_width="match_parent" android:layout_height="wrap_content" android:layout_alignParentBottom="true" android:layout_marginEnd="0dp" android:layout_marginStart="0dp" android:background="?android:attr/windowBackground" app:itemIconTint="@color/bottom_navigation_colors" app:itemTextColor="@color/bottom_navigation_colors" app:menu="@menu/home_bottom_navigation"/> </LinearLayout> src/com/android/settings/network/NetworkDashboardFragment.java +29 −4 Original line number Diff line number Diff line Loading @@ -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; Loading Loading @@ -58,14 +60,20 @@ public class NetworkDashboardFragment extends DashboardFragment implements @Override protected int getPreferenceScreenResId() { 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); if (FeatureFlagPersistent.isEnabled(context, FeatureFlags.NETWORK_INTERNET_V2)) { use(MultiNetworkHeaderController.class).init(getSettingsLifecycle()); } use(AirplaneModePreferenceController.class).setFragment(this); } Loading @@ -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); Loading @@ -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<AbstractPreferenceController> controllers = new ArrayList<>(); 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)); Loading Loading @@ -148,7 +168,12 @@ public class NetworkDashboardFragment extends DashboardFragment implements public List<SearchIndexableResource> getXmlResourcesToIndex( Context context, boolean enabled) { final SearchIndexableResource sir = new SearchIndexableResource(context); 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); } Loading src/com/android/settings/network/telephony/MobileNetworkActivity.java +37 −1 Original line number Diff line number Diff line Loading @@ -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; Loading @@ -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; Loading Loading @@ -108,7 +114,11 @@ public class MobileNetworkActivity extends SettingsBaseActivity { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); 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 Loading Loading @@ -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()); } Loading Loading @@ -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 */); Loading src/com/android/settings/network/telephony/MobileNetworkSwitchController.java +15 −7 Original line number Diff line number Diff line Loading @@ -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 androidx.lifecycle.Lifecycle; import androidx.lifecycle.LifecycleObserver; import androidx.lifecycle.OnLifecycleEvent; import androidx.preference.PreferenceScreen; 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; /** This controls a switch to allow enabling/disabling a mobile network */ public class MobileNetworkSwitchController extends BasePreferenceController implements SubscriptionsChangeListener.SubscriptionsChangeListenerClient, LifecycleObserver { Loading Loading @@ -113,8 +118,11 @@ public class MobileNetworkSwitchController extends BasePreferenceController impl @Override public int getAvailabilityStatus() { if (FeatureFlagPersistent.isEnabled(mContext, FeatureFlags.NETWORK_INTERNET_V2)) { return AVAILABLE_UNSEARCHABLE; } else { return CONDITIONALLY_UNAVAILABLE; } } @Override Loading Loading
res/layout/mobile_network_settings_container.xml 0 → 100644 +50 −0 Original line number Diff line number Diff line <?xml version="1.0" encoding="utf-8"?> <!-- Copyright (C) 2018 The Android Open Source Project Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0 Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License. --> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:app="http://schemas.android.com/apk/res-auto" android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="vertical"> <Toolbar android:id="@+id/mobile_action_bar" style="?android:attr/actionBarStyle" android:layout_width="match_parent" android:layout_height="wrap_content" android:navigationContentDescription="@*android:string/action_bar_up_description" android:theme="?android:attr/actionBarTheme"/> <FrameLayout android:id="@+id/main_content" android:layout_width="match_parent" android:layout_height="wrap_content" android:layout_weight="1"/> <com.google.android.material.bottomnavigation.BottomNavigationView android:id="@+id/bottom_nav" android:layout_width="match_parent" android:layout_height="wrap_content" android:layout_alignParentBottom="true" android:layout_marginEnd="0dp" android:layout_marginStart="0dp" android:background="?android:attr/windowBackground" app:itemIconTint="@color/bottom_navigation_colors" app:itemTextColor="@color/bottom_navigation_colors" app:menu="@menu/home_bottom_navigation"/> </LinearLayout>
src/com/android/settings/network/NetworkDashboardFragment.java +29 −4 Original line number Diff line number Diff line Loading @@ -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; Loading Loading @@ -58,14 +60,20 @@ public class NetworkDashboardFragment extends DashboardFragment implements @Override protected int getPreferenceScreenResId() { 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); if (FeatureFlagPersistent.isEnabled(context, FeatureFlags.NETWORK_INTERNET_V2)) { use(MultiNetworkHeaderController.class).init(getSettingsLifecycle()); } use(AirplaneModePreferenceController.class).setFragment(this); } Loading @@ -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); Loading @@ -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<AbstractPreferenceController> controllers = new ArrayList<>(); 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)); Loading Loading @@ -148,7 +168,12 @@ public class NetworkDashboardFragment extends DashboardFragment implements public List<SearchIndexableResource> getXmlResourcesToIndex( Context context, boolean enabled) { final SearchIndexableResource sir = new SearchIndexableResource(context); 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); } Loading
src/com/android/settings/network/telephony/MobileNetworkActivity.java +37 −1 Original line number Diff line number Diff line Loading @@ -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; Loading @@ -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; Loading Loading @@ -108,7 +114,11 @@ public class MobileNetworkActivity extends SettingsBaseActivity { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); 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 Loading Loading @@ -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()); } Loading Loading @@ -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 */); Loading
src/com/android/settings/network/telephony/MobileNetworkSwitchController.java +15 −7 Original line number Diff line number Diff line Loading @@ -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 androidx.lifecycle.Lifecycle; import androidx.lifecycle.LifecycleObserver; import androidx.lifecycle.OnLifecycleEvent; import androidx.preference.PreferenceScreen; 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; /** This controls a switch to allow enabling/disabling a mobile network */ public class MobileNetworkSwitchController extends BasePreferenceController implements SubscriptionsChangeListener.SubscriptionsChangeListenerClient, LifecycleObserver { Loading Loading @@ -113,8 +118,11 @@ public class MobileNetworkSwitchController extends BasePreferenceController impl @Override public int getAvailabilityStatus() { if (FeatureFlagPersistent.isEnabled(mContext, FeatureFlags.NETWORK_INTERNET_V2)) { return AVAILABLE_UNSEARCHABLE; } else { return CONDITIONALLY_UNAVAILABLE; } } @Override Loading