Fix modification of WifiDialog doesn't take effect on details page
When clicking modify menu option in detiails page, modification on metered or privacy preferences in the WifiDialog does not effect back to details page but only changing internal data of WifiDialog. Adding callback to update those two preferences. Bug: 130775713 Test: make RunSettingsRoboTests -j32 ROBOTEST_FILTER=com.android.settings.wifi.details.WifiDetailPreferenceControllerTest Change-Id: I74bfa5a9581dfae73894c3e9f73d1069a36fd16b
This commit is contained in:
@@ -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);
|
||||
@@ -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));
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
Reference in New Issue
Block a user