Loading src/com/android/settings/wifi/details/WifiMeteredPreferenceController.java +25 −1 Original line number Diff line number Diff line Loading @@ -24,19 +24,22 @@ import android.net.wifi.WifiManager; import androidx.annotation.VisibleForTesting; import androidx.preference.DropDownPreference; import androidx.preference.Preference; import androidx.preference.PreferenceScreen; import com.android.settings.core.BasePreferenceController; import com.android.settings.wifi.WifiDialog; import com.android.settingslib.core.AbstractPreferenceController; /** * {@link AbstractPreferenceController} that controls whether the wifi network is metered or not */ public class WifiMeteredPreferenceController extends BasePreferenceController implements Preference.OnPreferenceChangeListener { Preference.OnPreferenceChangeListener, WifiDialog.WifiDialogListener { private static final String KEY_WIFI_METERED = "metered"; private WifiConfiguration mWifiConfiguration; private WifiManager mWifiManager; private Preference mPreference; public WifiMeteredPreferenceController(Context context, WifiConfiguration wifiConfiguration) { super(context, KEY_WIFI_METERED); Loading Loading @@ -81,4 +84,25 @@ public class WifiMeteredPreferenceController extends BasePreferenceController im private void updateSummary(DropDownPreference preference, int meteredOverride) { preference.setSummary(preference.getEntries()[meteredOverride]); } @Override public void displayPreference(PreferenceScreen screen) { super.displayPreference(screen); mPreference = screen.findPreference(getPreferenceKey()); } @Override public void onSubmit(WifiDialog dialog) { if (dialog.getController() != null) { final WifiConfiguration newConfig = dialog.getController().getConfig(); if (newConfig == null || mWifiConfiguration == null) { return; } if (newConfig.meteredOverride != mWifiConfiguration.meteredOverride) { mWifiConfiguration = newConfig; onPreferenceChange(mPreference, String.valueOf(newConfig.meteredOverride)); } } } } src/com/android/settings/wifi/details/WifiNetworkDetailsFragment.java +23 −5 Original line number Diff line number Diff line Loading @@ -47,12 +47,14 @@ import java.util.List; * <p>The AccessPoint should be saved to the intent Extras when launching this class via * {@link AccessPoint#saveWifiState(Bundle)} in order to properly render this page. */ public class WifiNetworkDetailsFragment extends DashboardFragment { public class WifiNetworkDetailsFragment extends DashboardFragment implements WifiDialog.WifiDialogListener { private static final String TAG = "WifiNetworkDetailsFrg"; private AccessPoint mAccessPoint; private WifiDetailPreferenceController mWifiDetailPreferenceController; private List<WifiDialog.WifiDialogListener> mWifiDialogListeners = new ArrayList<>(); @Override public void onAttach(Context context) { Loading Loading @@ -89,7 +91,7 @@ public class WifiNetworkDetailsFragment extends DashboardFragment { || mAccessPoint == null) { return null; } return WifiDialog.createModal(getActivity(), mWifiDetailPreferenceController, mAccessPoint, return WifiDialog.createModal(getActivity(), this, mAccessPoint, WifiConfigUiBase.MODE_MODIFY); } Loading Loading @@ -135,15 +137,31 @@ public class WifiNetworkDetailsFragment extends DashboardFragment { controllers.add(mWifiDetailPreferenceController); controllers.add(new AddDevicePreferenceController(context).init(mAccessPoint)); controllers.add(new WifiMeteredPreferenceController(context, mAccessPoint.getConfig())); WifiPrivacyPreferenceController privacyController = new WifiPrivacyPreferenceController( context); final WifiMeteredPreferenceController meteredPreferenceController = new WifiMeteredPreferenceController(context, mAccessPoint.getConfig()); controllers.add(meteredPreferenceController); final WifiPrivacyPreferenceController privacyController = new WifiPrivacyPreferenceController(context); privacyController.setWifiConfiguration(mAccessPoint.getConfig()); privacyController.setIsEphemeral(mAccessPoint.isEphemeral()); privacyController.setIsPasspoint( mAccessPoint.isPasspoint() || mAccessPoint.isPasspointConfig()); controllers.add(privacyController); // Sets callback listener for wifi dialog. mWifiDialogListeners.add(mWifiDetailPreferenceController); mWifiDialogListeners.add(privacyController); mWifiDialogListeners.add(meteredPreferenceController); return controllers; } @Override public void onSubmit(WifiDialog dialog) { for (WifiDialog.WifiDialogListener listener : mWifiDialogListeners) { listener.onSubmit(dialog); } } } src/com/android/settings/wifi/details/WifiPrivacyPreferenceController.java +33 −6 Original line number Diff line number Diff line Loading @@ -18,16 +18,17 @@ package com.android.settings.wifi.details; import android.content.Context; import android.net.wifi.WifiConfiguration; import android.net.wifi.WifiInfo; import android.net.wifi.WifiManager; import android.util.FeatureFlagUtils; import androidx.annotation.VisibleForTesting; import androidx.preference.DropDownPreference; import androidx.preference.Preference; import androidx.preference.PreferenceScreen; import com.android.settings.R; import com.android.settings.core.BasePreferenceController; import com.android.settings.core.FeatureFlags; import com.android.settings.wifi.WifiDialog; import com.android.settingslib.core.AbstractPreferenceController; /** Loading @@ -35,13 +36,14 @@ import com.android.settingslib.core.AbstractPreferenceController; * or not */ public class WifiPrivacyPreferenceController extends BasePreferenceController implements Preference.OnPreferenceChangeListener { Preference.OnPreferenceChangeListener, WifiDialog.WifiDialogListener { private static final String KEY_WIFI_PRIVACY = "privacy"; private WifiConfiguration mWifiConfiguration; private WifiManager mWifiManager; private boolean mIsEphemeral = false; private boolean mIsPasspoint = false; private Preference mPreference; public WifiPrivacyPreferenceController(Context context) { super(context, KEY_WIFI_PRIVACY); Loading @@ -68,6 +70,12 @@ public class WifiPrivacyPreferenceController extends BasePreferenceController im AVAILABLE : CONDITIONALLY_UNAVAILABLE; } @Override public void displayPreference(PreferenceScreen screen) { super.displayPreference(screen); mPreference = screen.findPreference(getPreferenceKey()); } @Override public void updateState(Preference preference) { final DropDownPreference dropDownPreference = (DropDownPreference) preference; Loading @@ -87,10 +95,14 @@ public class WifiPrivacyPreferenceController extends BasePreferenceController im if (mWifiConfiguration != null) { mWifiConfiguration.macRandomizationSetting = Integer.parseInt((String) newValue); mWifiManager.updateNetwork(mWifiConfiguration); // To activate changing, we need reconnect network. WiFi will auto connect to current // network after disconnect(). // To activate changing, we need to reconnect network. WiFi will auto connect to // current network after disconnect(). Only needed when this is connected network. final WifiInfo wifiInfo = mWifiManager.getConnectionInfo(); if (wifiInfo != null && wifiInfo.getNetworkId() == mWifiConfiguration.networkId) { mWifiManager.disconnect(); } } updateSummary((DropDownPreference) preference, Integer.parseInt((String) newValue)); return true; } Loading Loading @@ -133,4 +145,19 @@ public class WifiPrivacyPreferenceController extends BasePreferenceController im final int prefMacRandomized = translateMacRandomizedValueToPrefValue(macRandomized); preference.setSummary(preference.getEntries()[prefMacRandomized]); } @Override public void onSubmit(WifiDialog dialog) { if (dialog.getController() != null) { final WifiConfiguration newConfig = dialog.getController().getConfig(); if (newConfig == null || mWifiConfiguration == null) { return; } if (newConfig.macRandomizationSetting != mWifiConfiguration.macRandomizationSetting) { mWifiConfiguration = newConfig; onPreferenceChange(mPreference, String.valueOf(newConfig.macRandomizationSetting)); } } } } Loading
src/com/android/settings/wifi/details/WifiMeteredPreferenceController.java +25 −1 Original line number Diff line number Diff line Loading @@ -24,19 +24,22 @@ import android.net.wifi.WifiManager; import androidx.annotation.VisibleForTesting; import androidx.preference.DropDownPreference; import androidx.preference.Preference; import androidx.preference.PreferenceScreen; import com.android.settings.core.BasePreferenceController; import com.android.settings.wifi.WifiDialog; import com.android.settingslib.core.AbstractPreferenceController; /** * {@link AbstractPreferenceController} that controls whether the wifi network is metered or not */ public class WifiMeteredPreferenceController extends BasePreferenceController implements Preference.OnPreferenceChangeListener { Preference.OnPreferenceChangeListener, WifiDialog.WifiDialogListener { private static final String KEY_WIFI_METERED = "metered"; private WifiConfiguration mWifiConfiguration; private WifiManager mWifiManager; private Preference mPreference; public WifiMeteredPreferenceController(Context context, WifiConfiguration wifiConfiguration) { super(context, KEY_WIFI_METERED); Loading Loading @@ -81,4 +84,25 @@ public class WifiMeteredPreferenceController extends BasePreferenceController im private void updateSummary(DropDownPreference preference, int meteredOverride) { preference.setSummary(preference.getEntries()[meteredOverride]); } @Override public void displayPreference(PreferenceScreen screen) { super.displayPreference(screen); mPreference = screen.findPreference(getPreferenceKey()); } @Override public void onSubmit(WifiDialog dialog) { if (dialog.getController() != null) { final WifiConfiguration newConfig = dialog.getController().getConfig(); if (newConfig == null || mWifiConfiguration == null) { return; } if (newConfig.meteredOverride != mWifiConfiguration.meteredOverride) { mWifiConfiguration = newConfig; onPreferenceChange(mPreference, String.valueOf(newConfig.meteredOverride)); } } } }
src/com/android/settings/wifi/details/WifiNetworkDetailsFragment.java +23 −5 Original line number Diff line number Diff line Loading @@ -47,12 +47,14 @@ import java.util.List; * <p>The AccessPoint should be saved to the intent Extras when launching this class via * {@link AccessPoint#saveWifiState(Bundle)} in order to properly render this page. */ public class WifiNetworkDetailsFragment extends DashboardFragment { public class WifiNetworkDetailsFragment extends DashboardFragment implements WifiDialog.WifiDialogListener { private static final String TAG = "WifiNetworkDetailsFrg"; private AccessPoint mAccessPoint; private WifiDetailPreferenceController mWifiDetailPreferenceController; private List<WifiDialog.WifiDialogListener> mWifiDialogListeners = new ArrayList<>(); @Override public void onAttach(Context context) { Loading Loading @@ -89,7 +91,7 @@ public class WifiNetworkDetailsFragment extends DashboardFragment { || mAccessPoint == null) { return null; } return WifiDialog.createModal(getActivity(), mWifiDetailPreferenceController, mAccessPoint, return WifiDialog.createModal(getActivity(), this, mAccessPoint, WifiConfigUiBase.MODE_MODIFY); } Loading Loading @@ -135,15 +137,31 @@ public class WifiNetworkDetailsFragment extends DashboardFragment { controllers.add(mWifiDetailPreferenceController); controllers.add(new AddDevicePreferenceController(context).init(mAccessPoint)); controllers.add(new WifiMeteredPreferenceController(context, mAccessPoint.getConfig())); WifiPrivacyPreferenceController privacyController = new WifiPrivacyPreferenceController( context); final WifiMeteredPreferenceController meteredPreferenceController = new WifiMeteredPreferenceController(context, mAccessPoint.getConfig()); controllers.add(meteredPreferenceController); final WifiPrivacyPreferenceController privacyController = new WifiPrivacyPreferenceController(context); privacyController.setWifiConfiguration(mAccessPoint.getConfig()); privacyController.setIsEphemeral(mAccessPoint.isEphemeral()); privacyController.setIsPasspoint( mAccessPoint.isPasspoint() || mAccessPoint.isPasspointConfig()); controllers.add(privacyController); // Sets callback listener for wifi dialog. mWifiDialogListeners.add(mWifiDetailPreferenceController); mWifiDialogListeners.add(privacyController); mWifiDialogListeners.add(meteredPreferenceController); return controllers; } @Override public void onSubmit(WifiDialog dialog) { for (WifiDialog.WifiDialogListener listener : mWifiDialogListeners) { listener.onSubmit(dialog); } } }
src/com/android/settings/wifi/details/WifiPrivacyPreferenceController.java +33 −6 Original line number Diff line number Diff line Loading @@ -18,16 +18,17 @@ package com.android.settings.wifi.details; import android.content.Context; import android.net.wifi.WifiConfiguration; import android.net.wifi.WifiInfo; import android.net.wifi.WifiManager; import android.util.FeatureFlagUtils; import androidx.annotation.VisibleForTesting; import androidx.preference.DropDownPreference; import androidx.preference.Preference; import androidx.preference.PreferenceScreen; import com.android.settings.R; import com.android.settings.core.BasePreferenceController; import com.android.settings.core.FeatureFlags; import com.android.settings.wifi.WifiDialog; import com.android.settingslib.core.AbstractPreferenceController; /** Loading @@ -35,13 +36,14 @@ import com.android.settingslib.core.AbstractPreferenceController; * or not */ public class WifiPrivacyPreferenceController extends BasePreferenceController implements Preference.OnPreferenceChangeListener { Preference.OnPreferenceChangeListener, WifiDialog.WifiDialogListener { private static final String KEY_WIFI_PRIVACY = "privacy"; private WifiConfiguration mWifiConfiguration; private WifiManager mWifiManager; private boolean mIsEphemeral = false; private boolean mIsPasspoint = false; private Preference mPreference; public WifiPrivacyPreferenceController(Context context) { super(context, KEY_WIFI_PRIVACY); Loading @@ -68,6 +70,12 @@ public class WifiPrivacyPreferenceController extends BasePreferenceController im AVAILABLE : CONDITIONALLY_UNAVAILABLE; } @Override public void displayPreference(PreferenceScreen screen) { super.displayPreference(screen); mPreference = screen.findPreference(getPreferenceKey()); } @Override public void updateState(Preference preference) { final DropDownPreference dropDownPreference = (DropDownPreference) preference; Loading @@ -87,10 +95,14 @@ public class WifiPrivacyPreferenceController extends BasePreferenceController im if (mWifiConfiguration != null) { mWifiConfiguration.macRandomizationSetting = Integer.parseInt((String) newValue); mWifiManager.updateNetwork(mWifiConfiguration); // To activate changing, we need reconnect network. WiFi will auto connect to current // network after disconnect(). // To activate changing, we need to reconnect network. WiFi will auto connect to // current network after disconnect(). Only needed when this is connected network. final WifiInfo wifiInfo = mWifiManager.getConnectionInfo(); if (wifiInfo != null && wifiInfo.getNetworkId() == mWifiConfiguration.networkId) { mWifiManager.disconnect(); } } updateSummary((DropDownPreference) preference, Integer.parseInt((String) newValue)); return true; } Loading Loading @@ -133,4 +145,19 @@ public class WifiPrivacyPreferenceController extends BasePreferenceController im final int prefMacRandomized = translateMacRandomizedValueToPrefValue(macRandomized); preference.setSummary(preference.getEntries()[prefMacRandomized]); } @Override public void onSubmit(WifiDialog dialog) { if (dialog.getController() != null) { final WifiConfiguration newConfig = dialog.getController().getConfig(); if (newConfig == null || mWifiConfiguration == null) { return; } if (newConfig.macRandomizationSetting != mWifiConfiguration.macRandomizationSetting) { mWifiConfiguration = newConfig; onPreferenceChange(mPreference, String.valueOf(newConfig.macRandomizationSetting)); } } } }