You cannot select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
85 lines
3.4 KiB
Java
85 lines
3.4 KiB
Java
package name.mikanoshi.customiuizer.subs;
|
|
|
|
import android.os.Bundle;
|
|
import android.os.Handler;
|
|
import android.preference.Preference;
|
|
import android.preference.PreferenceScreen;
|
|
import android.provider.Settings;
|
|
import android.text.TextUtils;
|
|
|
|
import java.util.ArrayList;
|
|
import java.util.Arrays;
|
|
|
|
import name.mikanoshi.customiuizer.SubFragment;
|
|
import name.mikanoshi.customiuizer.prefs.ListPreferenceEx;
|
|
|
|
public class System_AirplaneModeConfig extends SubFragment {
|
|
ArrayList<String> radios;
|
|
ArrayList<String> radios_toggle;
|
|
|
|
Preference.OnPreferenceChangeListener listener = new Preference.OnPreferenceChangeListener() {
|
|
@Override
|
|
public boolean onPreferenceChange(Preference preference, Object newValue) {
|
|
new Handler(getContext().getMainLooper()).post(System_AirplaneModeConfig.this::processValues);
|
|
return true;
|
|
}
|
|
};
|
|
|
|
private void processValues() {
|
|
radios.clear();
|
|
radios_toggle.clear();
|
|
PreferenceScreen screen = getPreferenceScreen();
|
|
for (int i = 0; i < screen.getPreferenceCount(); i++) {
|
|
if (!(screen.getPreference(i) instanceof ListPreferenceEx)) continue;
|
|
ListPreferenceEx pref = ((ListPreferenceEx)screen.getPreference(i));
|
|
String dev = null;
|
|
switch (pref.getKey()) {
|
|
case "pref_key_system_airplanemodeconfig_cell": dev = "cell"; break;
|
|
case "pref_key_system_airplanemodeconfig_bt": dev = "bluetooth"; break;
|
|
case "pref_key_system_airplanemodeconfig_wifi": dev = "wifi"; break;
|
|
case "pref_key_system_airplanemodeconfig_nfc": dev = "nfc"; break;
|
|
case "pref_key_system_airplanemodeconfig_wimax": dev = "wimax"; break;
|
|
}
|
|
if (dev == null) continue;
|
|
String val = pref.getValue();
|
|
if ("1".equals(val)) {
|
|
radios.add(dev);
|
|
radios_toggle.add(dev);
|
|
} else if ("2".equals(val)) radios.add(dev);
|
|
}
|
|
Settings.Global.putString(getActivity().getContentResolver(), "airplane_mode_radios", TextUtils.join(",", radios));
|
|
Settings.Global.putString(getActivity().getContentResolver(), "airplane_mode_toggleable_radios", TextUtils.join(",", radios_toggle));
|
|
}
|
|
|
|
private void setupPref(String name, String dev) {
|
|
ListPreferenceEx pref = (ListPreferenceEx)findPreference(name);
|
|
if (radios.contains(dev) && radios_toggle.contains(dev)) pref.setValue("1");
|
|
else if (radios.contains(dev)) pref.setValue("2");
|
|
else pref.setValue("0");
|
|
pref.setOnPreferenceChangeListener(listener);
|
|
}
|
|
|
|
@Override
|
|
public void onActivityCreated(Bundle savedInstanceState) {
|
|
super.onActivityCreated(savedInstanceState);
|
|
|
|
try {
|
|
radios = new ArrayList<String>(Arrays.asList(Settings.Global.getString(getActivity().getContentResolver(), "airplane_mode_radios").split(",")));
|
|
} catch (Throwable t) {
|
|
radios = new ArrayList<String>();
|
|
}
|
|
try {
|
|
radios_toggle = new ArrayList<String>(Arrays.asList(Settings.Global.getString(getActivity().getContentResolver(), "airplane_mode_toggleable_radios").split(",")));
|
|
} catch (Throwable t) {
|
|
radios_toggle = new ArrayList<String>();
|
|
}
|
|
|
|
setupPref("pref_key_system_airplanemodeconfig_cell", "cell");
|
|
setupPref("pref_key_system_airplanemodeconfig_bt", "bluetooth");
|
|
setupPref("pref_key_system_airplanemodeconfig_wifi", "wifi");
|
|
setupPref("pref_key_system_airplanemodeconfig_nfc", "nfc");
|
|
setupPref("pref_key_system_airplanemodeconfig_wimax", "wimax");
|
|
findPreference("pref_key_system_airplanemodeconfig_note").setEnabled(false);
|
|
}
|
|
}
|