I2P Address: [http://git.idk.i2p]

Skip to content
Snippets Groups Projects
Commit fbf35385 authored by str4d's avatar str4d
Browse files

Added settings page for logging, config option for default log level

parent 99ef07d1
No related branches found
No related tags found
No related merge requests found
......@@ -17,6 +17,13 @@
<item>ERROR</item>
<item>All</item>
</string-array>
<string-array name="log_levels">
<item>CRIT</item>
<item>ERROR</item>
<item>WARN</item>
<item>INFO</item>
<item>DEBUG</item>
</string-array>
<string-array name="setting0to3">
<item>0</item>
<item>1</item>
......
......@@ -79,6 +79,8 @@
<string name="settings_desc_sharePercent">Percentage of bandwidth to share (default=80)</string>
<string name="settings_dialog_sharePercent">Percentage of bandwidth to share</string>
<string name="settings_desc_upnp">Open firewall ports automatically</string>
<string name="settings_label_logging">Logging</string>
<string name="settings_label_default_log_level">Default log level</string>
<string name="settings_label_advanced">Advanced</string>
<string name="settings_label_transports">Transports</string>
<string name="settings_label_maxConns">Max connections</string>
......
......@@ -14,6 +14,13 @@
android:name="settings"
android:value="graphs" />
</header>
<header
android:fragment="net.i2p.android.router.SettingsActivity$SettingsFragment"
android:title="@string/settings_label_logging">
<extra
android:name="settings"
android:value="logging" />
</header>
<header
android:title="@string/label_addressbook">
<intent
......
......@@ -12,6 +12,12 @@
android:targetClass="net.i2p.android.router.SettingsActivity"
android:action="net.i2p.android.router.PREFS_GRAPHS" />
</Preference>
<Preference android:title="@string/settings_label_logging">
<intent
android:targetPackage="net.i2p.android.router"
android:targetClass="net.i2p.android.router.SettingsActivity"
android:action="net.i2p.android.router.PREFS_LOGGING" />
</Preference>
<Preference android:title="@string/label_addressbook">
<intent
android:targetPackage="net.i2p.android.router"
......
......@@ -14,23 +14,29 @@ import android.preference.PreferenceManager;
import android.preference.PreferenceScreen;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.Iterator;
import java.util.List;
import java.util.Map;
import java.util.Properties;
import java.util.SortedSet;
import java.util.TreeSet;
import net.i2p.android.router.R;
import net.i2p.android.router.util.Util;
import net.i2p.router.RouterContext;
import net.i2p.stat.FrequencyStat;
import net.i2p.stat.Rate;
import net.i2p.stat.RateStat;
import net.i2p.stat.StatManager;
import net.i2p.util.LogManager;
import net.i2p.util.OrderedProperties;
public class SettingsActivity extends PreferenceActivity {
// Actions for legacy settings
private static final String ACTION_PREFS_NET = "net.i2p.android.router.PREFS_NET";
private static final String ACTION_PREFS_GRAPHS = "net.i2p.android.router.PREFS_GRAPHS";
private static final String ACTION_PREFS_LOGGING = "net.i2p.android.router.PREFS_LOGGING";
private static final String ACTION_PREFS_ADVANCED = "net.i2p.android.router.PREFS_ADVANCED";
@SuppressWarnings("deprecation")
......@@ -39,24 +45,40 @@ public class SettingsActivity extends PreferenceActivity {
super.onCreate(savedInstanceState);
String action = getIntent().getAction();
if (action != null && action.equals(ACTION_PREFS_NET)) {
addPreferencesFromResource(R.xml.settings_net);
} else if (action != null && action.equals(ACTION_PREFS_GRAPHS)) {
addPreferencesFromResource(R.xml.settings_graphs);
setupGraphSettings(this, getPreferenceScreen());
} else if (action != null && action.equals(ACTION_PREFS_ADVANCED)) {
addPreferencesFromResource(R.xml.settings_advanced);
if (action != null) {
if (ACTION_PREFS_NET.equals(action)) {
addPreferencesFromResource(R.xml.settings_net);
} else if (ACTION_PREFS_GRAPHS.equals(action)){
addPreferencesFromResource(R.xml.settings_graphs);
RouterContext ctx = getRouterContext();
if (ctx != null)
setupGraphSettings(this, getPreferenceScreen(), ctx);
} else if (ACTION_PREFS_LOGGING.equals(action)) {
addPreferencesFromResource(R.xml.settings_logging);
RouterContext ctx = getRouterContext();
if (ctx != null)
setupLoggingSettings(this, getPreferenceScreen(), ctx);
} else if (ACTION_PREFS_ADVANCED.equals(action)) {
addPreferencesFromResource(R.xml.settings_advanced);
}
} else if (Build.VERSION.SDK_INT < Build.VERSION_CODES.HONEYCOMB) {
// Load the legacy preferences headers
addPreferencesFromResource(R.xml.settings_headers_legacy);
}
}
protected static void setupGraphSettings(Context context, PreferenceScreen ps) {
protected static RouterContext getRouterContext() {
List<RouterContext> contexts = RouterContext.listContexts();
if ( !((contexts == null) || (contexts.isEmpty())) ) {
RouterContext _context = contexts.get(0);
Map<String, SortedSet<String>> all = _context.statManager().getStatsByGroup();
return contexts.get(0);
}
return null;
}
protected static void setupGraphSettings(Context context, PreferenceScreen ps, RouterContext ctx) {
if (ctx != null) {
StatManager mgr = ctx.statManager();
Map<String, SortedSet<String>> all = mgr.getStatsByGroup();
for (String group : all.keySet()) {
SortedSet<String> stats = all.get(group);
if (stats.size() == 0) continue;
......@@ -69,7 +91,7 @@ public class SettingsActivity extends PreferenceActivity {
String description;
boolean canBeGraphed = false;
boolean currentIsGraphed = false;
RateStat rs = _context.statManager().getRate(stat);
RateStat rs = mgr.getRate(stat);
if (rs != null) {
description = rs.getDescription();
long period = rs.getPeriods()[0]; // should be the minimum
......@@ -82,7 +104,7 @@ public class SettingsActivity extends PreferenceActivity {
}
}
} else {
FrequencyStat fs = _context.statManager().getFrequency(stat);
FrequencyStat fs = mgr.getFrequency(stat);
if (fs != null) {
key = stat;
description = fs.getDescription();
......@@ -110,6 +132,17 @@ public class SettingsActivity extends PreferenceActivity {
}
}
protected static void setupLoggingSettings(Context context, PreferenceScreen ps, RouterContext ctx) {
if (ctx != null) {
LogManager mgr = ctx.logManager();
// TODO: Add other log config settings
} else {
PreferenceCategory noRouter = new PreferenceCategory(context);
noRouter.setTitle(R.string.router_not_running);
ps.addPreference(noRouter);
}
}
@TargetApi(Build.VERSION_CODES.HONEYCOMB)
@Override
public void onBuildHeaders(List<Header> target) {
......@@ -131,6 +164,9 @@ public class SettingsActivity extends PreferenceActivity {
// List to store stats for graphing
List<String> statSummaries = new ArrayList<String>();
// List to store Log settings
Map<String, String> logSettings = new HashMap<String, String>();
Map<String, ?> all = preferences.getAll();
Iterator<String> iterator = all.keySet().iterator();
// get values from the Map and make them strings.
......@@ -151,6 +187,8 @@ public class SettingsActivity extends PreferenceActivity {
if (checked.equals("true")) {
statSummaries.add(stat);
}
} else if ( x.startsWith("logger.")) {
logSettings.put(x, all.get(x).toString());
} else if(! x.startsWith("DO_NOT_SAVE")) {
// Disabled?
@SuppressWarnings("deprecation")
......@@ -191,10 +229,34 @@ public class SettingsActivity extends PreferenceActivity {
if ( !((contexts == null) || (contexts.isEmpty())) ) {
RouterContext _context = contexts.get(0);
_context.router().saveConfig(props, null);
// Merge in new log settings
saveLoggingChanges(_context, logSettings);
}
// Store the settings in Android
super.onPause();
}
private void saveLoggingChanges(RouterContext ctx, Map<String, String> logSettings) {
boolean shouldSave = false;
for (String key : logSettings.keySet()) {
if ("logger.defaultLevel".equals(key)) {
String defaultLevel = logSettings.get(key);
String oldDefault = ctx.logManager().getDefaultLimit();
if (!defaultLevel.equals(oldDefault)) {
shouldSave = true;
ctx.logManager().setDefaultLimit(defaultLevel);
}
}
}
if (shouldSave) {
ctx.logManager().saveConfig();
}
}
@TargetApi(Build.VERSION_CODES.HONEYCOMB)
public static class SettingsFragment extends PreferenceFragment {
@Override
......@@ -206,7 +268,14 @@ public class SettingsActivity extends PreferenceActivity {
addPreferencesFromResource(R.xml.settings_net);
} else if ("graphs".equals(settings)) {
addPreferencesFromResource(R.xml.settings_graphs);
setupGraphSettings(getActivity(), getPreferenceScreen());
RouterContext ctx = getRouterContext();
if (ctx != null)
setupGraphSettings(getActivity(), getPreferenceScreen(), ctx);
} else if ("logging".equals(settings)) {
addPreferencesFromResource(R.xml.settings_logging);
RouterContext ctx = getRouterContext();
if (ctx != null)
setupLoggingSettings(getActivity(), getPreferenceScreen(), ctx);
} else if ("advanced".equals(settings)) {
addPreferencesFromResource(R.xml.settings_advanced);
}
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment