Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 8ba4b19a authored by Shaleen Jain's avatar Shaleen Jain Committed by Steve Kondik
Browse files

Restore list preferences from system preference instead of currently used values

WiFi country code and frequency band are updated only when wifi is restarted.
Restore values to the list preferences from Settings.Global to convince the
user changes have been acknowledged.
Also make sure they are applied at every preference activity start.

Change-Id: I3c4e78a210550e5bc0b12d43a4f952dfd0035190
parent fe597aa3
Loading
Loading
Loading
Loading
+23 −7
Original line number Diff line number Diff line
@@ -115,12 +115,20 @@ public class AdvancedWifiSettings extends SettingsPreferenceFragment

        if (mWifiManager.isDualBandSupported()) {
            frequencyPref.setOnPreferenceChangeListener(this);
            int value = mWifiManager.getFrequencyBand();
            try {
                int value = Settings.Global.getInt(getContentResolver(),
                Global.WIFI_FREQUENCY_BAND);
                if (value != -1) {
                    frequencyPref.setValue(String.valueOf(value));
                    updateFrequencyBandSummary(frequencyPref, value);
            } else {
                Log.e(TAG, "Failed to fetch frequency band");

                    // make sure this frequeny band is in use
                    if (mWifiManager.getFrequencyBand() != value)
                        mWifiManager.setFrequencyBand(value, true);

                }
            } catch(Settings.SettingNotFoundException e) {
                Log.e(TAG, "Failed to fetch frequency band:" + e.getMessage());
            }
        } else {
            if (frequencyPref != null) {
@@ -132,9 +140,17 @@ public class AdvancedWifiSettings extends SettingsPreferenceFragment
        ListPreference ccodePref = (ListPreference) findPreference(KEY_COUNTRY_CODE);
        if (ccodePref != null) {
            ccodePref.setOnPreferenceChangeListener(this);
            String value = mWifiManager.getCountryCode();
            String value = Settings.Global.getString(getContentResolver(),
            Settings.Global.WIFI_COUNTRY_CODE);
            if (value != null) {
                ccodePref.setValue(value);

                // make sure this country code is in use
                String ccode = mWifiManager.getCountryCode();
                if (ccode != null) {
                    if (!ccode.equals(value))
                        mWifiManager.setCountryCode(value, true);
                }
            } else {
                Log.e(TAG, "Failed to fetch country code");
            }