diff options
Diffstat (limited to 'app/src/fil/libre/repwifiapp/activities/SettingsActivity.java')
-rw-r--r-- | app/src/fil/libre/repwifiapp/activities/SettingsActivity.java | 126 |
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; + } + + } + } } |