summaryrefslogtreecommitdiff
path: root/app/java/src/SettingsActivity.java
diff options
context:
space:
mode:
Diffstat (limited to 'app/java/src/SettingsActivity.java')
-rw-r--r--app/java/src/SettingsActivity.java118
1 files changed, 111 insertions, 7 deletions
diff --git a/app/java/src/SettingsActivity.java b/app/java/src/SettingsActivity.java
index c71693a..d04e2ba 100644
--- a/app/java/src/SettingsActivity.java
+++ b/app/java/src/SettingsActivity.java
@@ -7,8 +7,12 @@ import android.content.BroadcastReceiver;
import android.content.Context;
import android.content.Intent;
import android.content.IntentFilter;
+import android.content.SharedPreferences;
+import android.content.SharedPreferences.OnSharedPreferenceChangeListener;
import android.net.VpnService;
+import android.net.wifi.WifiManager;
+import android.net.wifi.WifiInfo;
import android.os.Bundle;
@@ -39,15 +43,9 @@ public class SettingsActivity extends PreferenceActivity {
super.onCreate(savedInstanceState);
getFragmentManager().beginTransaction().replace(android.R.id.content, new SettingsFragment()).commit();
-
- // if (setting.get(USE_WIFI_LISTENER))
- // requestPermissions(new String[]{
- // android.Manifest.permission.ACCESS_FINE_LOCATION,
- // }, 1234);
- // startService(WifiListenerService);
}
- public static class SettingsFragment extends PreferenceFragment {
+ public static class SettingsFragment extends PreferenceFragment implements OnSharedPreferenceChangeListener {
@Override
public void onCreate(Bundle savedInstanceState) {
@@ -55,5 +53,111 @@ public class SettingsActivity extends PreferenceActivity {
addPreferencesFromResource(R.xml.settings);
}
+
+ @Override
+ public void onResume() {
+ super.onResume();
+
+ getPreferenceScreen().getSharedPreferences().registerOnSharedPreferenceChangeListener(this);
+
+ DNSServerAddress.toggleEnabled(this);
+ DNSServerAddress.displayValue(this);
+ WifiListener.SSID.displayValue(this);
+ }
+
+ @Override
+ public void onPause() {
+ super.onPause();
+
+ getPreferenceScreen().getSharedPreferences().unregisterOnSharedPreferenceChangeListener(this);
+ }
+
+ @Override
+ public void onSharedPreferenceChanged(SharedPreferences sharedPreferences, String key) {
+ if (key.equals("use_automatic_dns_server_discovery")) {
+ DNSServerAddress.toggleEnabled(this);
+ }
+
+ else if (key.equals("dns_server_address")) {
+ DNSServerAddress.displayValue(this);
+ }
+
+ else if (key.equals("use_wifi_listener")) {
+ WifiListener.toggle(this);
+ }
+
+ else if (key.equals("use_wifi_listener_for_activation")) {
+ if (sharedPreferences.getBoolean("use_wifi_listener_for_activation", false)) {
+ WifiListener.Activation.enable(this);
+ }
+ }
+
+ else if (key.equals("wifi_listener_ssid")) {
+ WifiListener.SSID.displayValue(this);
+ }
+ }
+
+ static class DNSServerAddress {
+ public static void toggleEnabled(PreferenceFragment context) {
+ context.findPreference("dns_server_address").setEnabled(
+ !context.getPreferenceScreen().getSharedPreferences().getBoolean("use_automatic_dns_server_discovery", true)
+ );
+ }
+
+ public static void displayValue(PreferenceFragment context) {
+ context.findPreference("dns_server_address").setSummary(
+ context.getPreferenceScreen().getSharedPreferences().getString("dns_server_address", "")
+ );
+ }
+ }
+
+ static class WifiListener {
+ public static void toggle(PreferenceFragment context) {
+ SharedPreferences sharedPreferences = context.getPreferenceScreen().getSharedPreferences();
+
+ if (sharedPreferences.getBoolean("use_wifi_listener", false)) {
+ WifiListenerService.start(context.getActivity());
+ } else {
+ disable(context);
+ }
+ }
+
+ public static void disable(PreferenceFragment context) {
+ SharedPreferences sharedPreferences = context.getPreferenceScreen().getSharedPreferences();
+
+ WifiListenerService.disable(context.getActivity());
+ }
+
+ static class Activation {
+ public static void enable(PreferenceFragment context) {
+ SharedPreferences sharedPreferences = context.getPreferenceScreen().getSharedPreferences();
+
+ WifiListenerService.OnActivationListener.askLocationIfNeeded(context.getActivity());
+
+ if (sharedPreferences.getString("wifi_listener_ssid", "").equals("")) {
+ WifiManager wifiManager = (WifiManager) context.getActivity().getSystemService(Context.WIFI_SERVICE);
+ WifiInfo wifiInfo = wifiManager.getConnectionInfo();
+ String ssid = wifiInfo.getSSID();
+
+ // remove quotes around ssid
+ ssid = ssid.substring(1, ssid.length() - 1);
+
+ if (!ssid.equals("unknown ssid")) {
+ SharedPreferences.Editor sharedPreferencesEditor = sharedPreferences.edit();
+ sharedPreferencesEditor.putString("wifi_listener_ssid", ssid);
+ sharedPreferencesEditor.commit();
+ }
+ }
+ }
+ }
+
+ static class SSID {
+ public static void displayValue(PreferenceFragment context) {
+ context.findPreference("wifi_listener_ssid").setSummary(
+ context.getPreferenceScreen().getSharedPreferences().getString("wifi_listener_ssid", "")
+ );
+ }
+ }
+ }
}
}