aboutsummaryrefslogtreecommitdiffstats
path: root/app/src/fil/libre/repwifiapp/activities/SettingsActivity.java
diff options
context:
space:
mode:
Diffstat (limited to 'app/src/fil/libre/repwifiapp/activities/SettingsActivity.java')
-rw-r--r--app/src/fil/libre/repwifiapp/activities/SettingsActivity.java126
1 files changed, 105 insertions, 21 deletions
diff --git a/app/src/fil/libre/repwifiapp/activities/SettingsActivity.java b/app/src/fil/libre/repwifiapp/activities/SettingsActivity.java
index 36e0e1f..c50524a 100644
--- a/app/src/fil/libre/repwifiapp/activities/SettingsActivity.java
+++ b/app/src/fil/libre/repwifiapp/activities/SettingsActivity.java
@@ -1,5 +1,5 @@
//
-// Copyright 2017 Filippo "Fil" Bergamo <fil.bergamo@riseup.net>
+// Copyright 2017, 2018 Filippo "Fil" Bergamo <fil.bergamo@riseup.net>
//
// This file is part of RepWifiApp.
//
@@ -18,19 +18,28 @@
//
// ********************************************************************
-
package fil.libre.repwifiapp.activities;
-import org.apache.http.conn.util.InetAddressUtils;
-import java.util.List;
-import fil.libre.repwifiapp.Commons;
-import fil.libre.repwifiapp.R;
-import fil.libre.repwifiapp.helpers.Utils;
+import android.app.AlertDialog;
+import android.content.Context;
+import android.content.DialogInterface;
+import android.content.SharedPreferences.Editor;
import android.os.Bundle;
+import android.preference.CheckBoxPreference;
import android.preference.EditTextPreference;
+import android.preference.ListPreference;
import android.preference.Preference;
import android.preference.PreferenceActivity;
import android.preference.PreferenceFragment;
+import android.preference.PreferenceManager;
+import fil.libre.repwifiapp.Prefs;
+import fil.libre.repwifiapp.R;
+import fil.libre.repwifiapp.R.string;
+import fil.libre.repwifiapp.Utils;
+import fil.libre.repwifiapp.helpers.Logger;
+import fil.libre.repwifiapp.service.ConnectionManagementService;
+import org.apache.http.conn.util.InetAddressUtils;
+import java.util.List;
public class SettingsActivity extends PreferenceActivity {
@@ -38,6 +47,7 @@ public class SettingsActivity extends PreferenceActivity {
protected void onCreate(Bundle savedInstanceState) {
setTheme(R.style.Theme_SettingsTheme);
super.onCreate(savedInstanceState);
+
}
@Override
@@ -54,7 +64,7 @@ public class SettingsActivity extends PreferenceActivity {
setConfirmKillBackend();
setDumpFileClick();
-
+ setDebugPriorityChangeListener();
}
private void setConfirmKillBackend() {
@@ -64,7 +74,7 @@ public class SettingsActivity extends PreferenceActivity {
@Override
public boolean onPreferenceClick(Preference p) {
- Commons.killBackEnd(getActivity(), false);
+ Utils.killBackEnd(getActivity(), false);
return true;
}
});
@@ -77,18 +87,38 @@ public class SettingsActivity extends PreferenceActivity {
@Override
public boolean onPreferenceClick(Preference p) {
- if (Utils.dumpLogcatToFile(Commons.getLogDumpFile())) {
- Commons.showMessage(getString(R.string.msg_log_saved) + ": \n" + Commons.getLogDumpFile(),
- getActivity());
+ if (Logger.dumpLogcatToFile(getActivity())) {
+ Utils.showMessage(
+ getString(R.string.msg_log_saved) + ": \n"
+ + Logger.getLogDumpFile(), getActivity());
} else {
- Commons.showMessage(getString(R.string.msg_log_save_fail), getActivity());
+ Utils.showMessage(getString(R.string.msg_log_save_fail), getActivity());
}
return true;
}
});
}
+ /**
+ * Monitors changes in the "log priority" setting, and reflects them
+ * onto the Logger class.
+ */
+ private void setDebugPriorityChangeListener() {
+
+ ListPreference logPrioPref = (ListPreference) getPreferenceScreen().findPreference(
+ "debug_priority");
+
+ logPrioPref.setOnPreferenceChangeListener(new Preference.OnPreferenceChangeListener() {
+
+ @Override
+ public boolean onPreferenceChange(Preference preference, Object newValue) {
+ Logger.setLogPriority(Integer.parseInt((String) newValue));
+ return true;
+ }
+ });
+ }
+
}
public static class GeneralSettingFragment extends PreferenceFragment {
@@ -98,26 +128,37 @@ public class SettingsActivity extends PreferenceActivity {
super.onCreate(savedInstanceState);
addPreferencesFromResource(R.xml.general_settings);
- setValidationListener("dns1");
- setValidationListener("dns2");
+ setIpFormatValidationListener(Prefs.PREF_DNS_1);
+ setIpFormatValidationListener(Prefs.PREF_DNS_2);
setConfirmRestore();
+
+ formatSummaryMonitoryConnection();
+
+ }
+
+ private void formatSummaryMonitoryConnection() {
+
+ CheckBoxPreference chkMonitor = (CheckBoxPreference) findPreference("monitor_connection");
+ chkMonitor.setSummary(getString(string.summary_monitor_connection_state).replace(
+ ConnectionManagementService.PLACEHOLDER_CHECK_STATUS_INTERVAL,
+ String.valueOf(ConnectionManagementService.CHECK_STATUS_INTERVAL_SECS)));
}
- private void setValidationListener(String prefName) {
- EditTextPreference edit_Pref = (EditTextPreference) getPreferenceScreen()
+ private void setIpFormatValidationListener(String prefName) {
+ EditTextPreference editPref = (EditTextPreference) getPreferenceScreen()
.findPreference(prefName);
- edit_Pref.setOnPreferenceChangeListener(new Preference.OnPreferenceChangeListener() {
+ editPref.setOnPreferenceChangeListener(new Preference.OnPreferenceChangeListener() {
@Override
public boolean onPreferenceChange(Preference preference, Object newValue) {
- // put validation here..
+
if (((String) newValue).isEmpty()
|| InetAddressUtils.isIPv4Address((String) newValue)) {
return true;
} else {
- Commons.showMessage(getString(R.string.msg_error_ip_format), getActivity());
+ Utils.showMessage(getString(R.string.msg_error_ip_format), getActivity());
return false;
}
}
@@ -131,12 +172,55 @@ public class SettingsActivity extends PreferenceActivity {
@Override
public boolean onPreferenceClick(Preference p) {
- Commons.resetSettingsDefault(getActivity(), false);
+ resetSettingsDefault(false);
return true;
}
});
}
+
+ public void resetSettingsDefault(boolean silent) {
+
+ Context context = getActivity();
+
+ if (silent) {
+
+ Editor e = PreferenceManager.getDefaultSharedPreferences(context).edit();
+ e.clear();
+ e.commit();
+
+ } else {
+
+ String msg = context.getString(R.string.confirm_reset_settings);
+ AlertDialog.Builder dlgAlert = new AlertDialog.Builder(context,
+ R.style.Theme_RepWifiDialogTheme);
+ dlgAlert.setMessage(msg);
+ dlgAlert.setPositiveButton(context.getString(android.R.string.ok),
+ new DialogInterface.OnClickListener() {
+ @Override
+ public void onClick(DialogInterface dialog, int whichButton) {
+ resetSettingsDefault(true);
+ return;
+ }
+ });
+ dlgAlert.setNegativeButton(context.getString(android.R.string.cancel),
+ new DialogInterface.OnClickListener() {
+ @Override
+ public void onClick(DialogInterface dialog, int whichButton) {
+ return;
+ }
+ });
+
+ dlgAlert.setCancelable(false);
+ AlertDialog diag = dlgAlert.create();
+
+ diag.show();
+
+ return;
+ }
+
+ }
+
}
}