From 801655b1a9d1ecd886242e7a098ea169e84e4ef8 Mon Sep 17 00:00:00 2001 From: str4d Date: Fri, 29 May 2015 06:07:44 +0000 Subject: [PATCH] Extract I2P router config to advanced settings --- .../config/AdvancedPreferenceFragment.java | 128 ++++++++++++++++++ .../config/GeneralPreferenceFragment.java | 103 +------------- .../bote/android/config/SettingsActivity.java | 5 + app/src/main/res/values/strings.xml | 7 +- app/src/main/res/xml/settings.xml | 3 + app/src/main/res/xml/settings_advanced.xml | 16 +++ app/src/main/res/xml/settings_general.xml | 11 -- 7 files changed, 157 insertions(+), 116 deletions(-) create mode 100644 app/src/main/java/i2p/bote/android/config/AdvancedPreferenceFragment.java create mode 100644 app/src/main/res/xml/settings_advanced.xml diff --git a/app/src/main/java/i2p/bote/android/config/AdvancedPreferenceFragment.java b/app/src/main/java/i2p/bote/android/config/AdvancedPreferenceFragment.java new file mode 100644 index 0000000..4d22c23 --- /dev/null +++ b/app/src/main/java/i2p/bote/android/config/AdvancedPreferenceFragment.java @@ -0,0 +1,128 @@ +package i2p.bote.android.config; + +import android.content.Context; +import android.os.Build; +import android.os.Bundle; +import android.preference.CheckBoxPreference; +import android.preference.EditTextPreference; +import android.preference.ListPreference; +import android.preference.Preference; +import android.preference.PreferenceCategory; +import android.support.v4.preference.PreferenceFragment; + +import i2p.bote.android.R; +import i2p.bote.android.widget.SummaryEditTextPreference; + +public class AdvancedPreferenceFragment extends PreferenceFragment { + @Override + public void onCreate(Bundle paramBundle) { + super.onCreate(paramBundle); + addPreferencesFromResource(R.xml.settings_advanced); + setupAdvancedSettings(); + } + + @Override + public void onResume() { + super.onResume(); + //noinspection ConstantConditions + ((SettingsActivity) getActivity()).getSupportActionBar().setTitle(R.string.settings_label_advanced); + } + + private void setupAdvancedSettings() { + final PreferenceCategory i2pCat = (PreferenceCategory) findPreference("i2pCategory"); + CheckBoxPreference routerAuto = (CheckBoxPreference) findPreference("i2pbote.router.auto"); + + if (!routerAuto.isChecked()) { + setupI2PCategory(getActivity(), i2pCat); + } + + routerAuto.setOnPreferenceChangeListener(new Preference.OnPreferenceChangeListener() { + public boolean onPreferenceChange(Preference preference, Object newValue) { + final Boolean checked = (Boolean) newValue; + if (!checked) { + setupI2PCategory(getActivity(), i2pCat); + } else { + Preference p1 = i2pCat.findPreference("i2pbote.router.use"); + Preference p2 = i2pCat.findPreference("i2pbote.i2cp.tcp.host"); + Preference p3 = i2pCat.findPreference("i2pbote.i2cp.tcp.port"); + if (p1 != null) + i2pCat.removePreference(p1); + if (p2 != null) + i2pCat.removePreference(p2); + if (p3 != null) + i2pCat.removePreference(p3); + } + return true; + } + }); + } + + private static void setupI2PCategory(Context context, PreferenceCategory i2pCat) { + final ListPreference routerChoice = createRouterChoice(context); + final EditTextPreference hostField = createHostField(context); + final EditTextPreference portField = createPortField(context); + i2pCat.addPreference(routerChoice); + i2pCat.addPreference(hostField); + i2pCat.addPreference(portField); + if (Build.VERSION.SDK_INT < Build.VERSION_CODES.HONEYCOMB) + routerChoice.setSummary(routerChoice.getEntry()); + + if ("remote".equals(routerChoice.getValue())) { + hostField.setEnabled(true); + portField.setEnabled(true); + } + + routerChoice.setOnPreferenceChangeListener(new Preference.OnPreferenceChangeListener() { + public boolean onPreferenceChange(Preference preference, Object newValue) { + final String val = newValue.toString(); + int index = routerChoice.findIndexOfValue(val); + if (Build.VERSION.SDK_INT < Build.VERSION_CODES.HONEYCOMB) + routerChoice.setSummary(routerChoice.getEntries()[index]); + if (index == 2) { + hostField.setEnabled(true); + hostField.setText("127.0.0.1"); + portField.setEnabled(true); + portField.setText("7654"); + } else { + hostField.setEnabled(false); + hostField.setText("internal"); + portField.setEnabled(false); + portField.setText("internal"); + } + return true; + } + }); + } + + private static ListPreference createRouterChoice(Context context) { + ListPreference routerChoice = new ListPreference(context); + routerChoice.setKey("i2pbote.router.use"); + routerChoice.setEntries(R.array.routerOptionNames); + routerChoice.setEntryValues(R.array.routerOptions); + routerChoice.setTitle(R.string.pref_title_router); + routerChoice.setSummary("%s"); + routerChoice.setDialogTitle(R.string.pref_dialog_title_router); + routerChoice.setDefaultValue("internal"); + return routerChoice; + } + + private static EditTextPreference createHostField(Context context) { + EditTextPreference p = new SummaryEditTextPreference(context); + p.setKey("i2pbote.i2cp.tcp.host"); + p.setTitle(R.string.pref_title_i2cp_host); + p.setSummary("%s"); + p.setDefaultValue("internal"); + p.setEnabled(false); + return p; + } + + private static EditTextPreference createPortField(Context context) { + EditTextPreference p = new SummaryEditTextPreference(context); + p.setKey("i2pbote.i2cp.tcp.port"); + p.setTitle(R.string.pref_title_i2cp_port); + p.setSummary("%s"); + p.setDefaultValue("internal"); + p.setEnabled(false); + return p; + } +} diff --git a/app/src/main/java/i2p/bote/android/config/GeneralPreferenceFragment.java b/app/src/main/java/i2p/bote/android/config/GeneralPreferenceFragment.java index 529d7b3..25d2f0b 100644 --- a/app/src/main/java/i2p/bote/android/config/GeneralPreferenceFragment.java +++ b/app/src/main/java/i2p/bote/android/config/GeneralPreferenceFragment.java @@ -1,14 +1,9 @@ package i2p.bote.android.config; -import android.content.Context; import android.content.SharedPreferences; -import android.os.Build; import android.os.Bundle; -import android.preference.CheckBoxPreference; -import android.preference.EditTextPreference; import android.preference.ListPreference; import android.preference.Preference; -import android.preference.PreferenceCategory; import android.preference.PreferenceManager; import android.support.v4.preference.PreferenceFragment; @@ -17,7 +12,6 @@ import java.util.Map; import i2p.bote.Configuration; import i2p.bote.I2PBote; import i2p.bote.android.R; -import i2p.bote.android.widget.SummaryEditTextPreference; public class GeneralPreferenceFragment extends PreferenceFragment { @Override @@ -30,6 +24,7 @@ public class GeneralPreferenceFragment extends PreferenceFragment { @Override public void onResume() { super.onResume(); + //noinspection ConstantConditions ((SettingsActivity) getActivity()).getSupportActionBar().setTitle(R.string.pref_title_general); } @@ -78,101 +73,5 @@ public class GeneralPreferenceFragment extends PreferenceFragment { return true; } }); - - final PreferenceCategory i2pCat = (PreferenceCategory) findPreference("i2pCategory"); - CheckBoxPreference routerAuto = (CheckBoxPreference) findPreference("i2pbote.router.auto"); - - if (!routerAuto.isChecked()) { - setupI2PCategory(getActivity(), i2pCat); - } - - routerAuto.setOnPreferenceChangeListener(new Preference.OnPreferenceChangeListener() { - public boolean onPreferenceChange(Preference preference, Object newValue) { - final Boolean checked = (Boolean) newValue; - if (!checked) { - setupI2PCategory(getActivity(), i2pCat); - } else { - Preference p1 = i2pCat.findPreference("i2pbote.router.use"); - Preference p2 = i2pCat.findPreference("i2pbote.i2cp.tcp.host"); - Preference p3 = i2pCat.findPreference("i2pbote.i2cp.tcp.port"); - if (p1 != null) - i2pCat.removePreference(p1); - if (p2 != null) - i2pCat.removePreference(p2); - if (p3 != null) - i2pCat.removePreference(p3); - } - return true; - } - }); - } - - private static void setupI2PCategory(Context context, PreferenceCategory i2pCat) { - final ListPreference routerChoice = createRouterChoice(context); - final EditTextPreference hostField = createHostField(context); - final EditTextPreference portField = createPortField(context); - i2pCat.addPreference(routerChoice); - i2pCat.addPreference(hostField); - i2pCat.addPreference(portField); - if (Build.VERSION.SDK_INT < Build.VERSION_CODES.HONEYCOMB) - routerChoice.setSummary(routerChoice.getEntry()); - - if ("remote".equals(routerChoice.getValue())) { - hostField.setEnabled(true); - portField.setEnabled(true); - } - - routerChoice.setOnPreferenceChangeListener(new Preference.OnPreferenceChangeListener() { - public boolean onPreferenceChange(Preference preference, Object newValue) { - final String val = newValue.toString(); - int index = routerChoice.findIndexOfValue(val); - if (Build.VERSION.SDK_INT < Build.VERSION_CODES.HONEYCOMB) - routerChoice.setSummary(routerChoice.getEntries()[index]); - if (index == 2) { - hostField.setEnabled(true); - hostField.setText("127.0.0.1"); - portField.setEnabled(true); - portField.setText("7654"); - } else { - hostField.setEnabled(false); - hostField.setText("internal"); - portField.setEnabled(false); - portField.setText("internal"); - } - return true; - } - }); - } - - private static ListPreference createRouterChoice(Context context) { - ListPreference routerChoice = new ListPreference(context); - routerChoice.setKey("i2pbote.router.use"); - routerChoice.setEntries(R.array.routerOptionNames); - routerChoice.setEntryValues(R.array.routerOptions); - routerChoice.setTitle(R.string.pref_title_router); - routerChoice.setSummary("%s"); - routerChoice.setDialogTitle(R.string.pref_dialog_title_router); - routerChoice.setDefaultValue("internal"); - return routerChoice; - } - - private static EditTextPreference createHostField(Context context) { - EditTextPreference p = new SummaryEditTextPreference(context); - p.setKey("i2pbote.i2cp.tcp.host"); - p.setTitle(R.string.pref_title_i2cp_host); - p.setSummary("%s"); - p.setDefaultValue("internal"); - p.setEnabled(false); - return p; - } - - private static EditTextPreference createPortField(Context context) { - EditTextPreference p = new SummaryEditTextPreference(context); - p.setKey("i2pbote.i2cp.tcp.port"); - p.setTitle(R.string.pref_title_i2cp_port); - p.setSummary("%s"); - p.setDefaultValue("internal"); - p.setEnabled(false); - return p; } } diff --git a/app/src/main/java/i2p/bote/android/config/SettingsActivity.java b/app/src/main/java/i2p/bote/android/config/SettingsActivity.java index 621303d..3bae68f 100644 --- a/app/src/main/java/i2p/bote/android/config/SettingsActivity.java +++ b/app/src/main/java/i2p/bote/android/config/SettingsActivity.java @@ -23,6 +23,7 @@ public class SettingsActivity extends BoteActivityBase implements public static final String PREFERENCE_CATEGORY_CHANGE_PASSWORD = "preference_category_change_password"; public static final String PREFERENCE_CATEGORY_IDENTITIES = "preference_category_identities"; public static final String PREFERENCE_CATEGORY_APPEARANCE = "preference_category_appearance"; + public static final String PREFERENCE_CATEGORY_ADVANCED = "preference_category_advanced"; // @@ -94,6 +95,8 @@ public class SettingsActivity extends BoteActivityBase implements .setOnPreferenceClickListener(new CategoryClickListener(PREFERENCE_CATEGORY_IDENTITIES)); findPreference(PREFERENCE_CATEGORY_APPEARANCE) .setOnPreferenceClickListener(new CategoryClickListener(PREFERENCE_CATEGORY_APPEARANCE)); + findPreference(PREFERENCE_CATEGORY_ADVANCED) + .setOnPreferenceClickListener(new CategoryClickListener(PREFERENCE_CATEGORY_ADVANCED)); } @Override @@ -142,6 +145,8 @@ public class SettingsActivity extends BoteActivityBase implements return new GeneralPreferenceFragment(); case PREFERENCE_CATEGORY_APPEARANCE: return new AppearancePreferenceFragment(); + case PREFERENCE_CATEGORY_ADVANCED: + return new AdvancedPreferenceFragment(); default: throw new AssertionError(); } diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml index 5e35dbb..43f2dc4 100644 --- a/app/src/main/res/values/strings.xml +++ b/app/src/main/res/values/strings.xml @@ -204,6 +204,10 @@ %s minutes Maximum delay per hop %s minutes + Appearance + Language + Default + Advanced Router settings Auto Manual @@ -213,9 +217,6 @@ Router to use I2CP host I2CP port - Appearance - Language - Default Change password Old password New password diff --git a/app/src/main/res/xml/settings.xml b/app/src/main/res/xml/settings.xml index 522ca2d..ee75cce 100644 --- a/app/src/main/res/xml/settings.xml +++ b/app/src/main/res/xml/settings.xml @@ -12,4 +12,7 @@ + \ No newline at end of file diff --git a/app/src/main/res/xml/settings_advanced.xml b/app/src/main/res/xml/settings_advanced.xml new file mode 100644 index 0000000..4e17004 --- /dev/null +++ b/app/src/main/res/xml/settings_advanced.xml @@ -0,0 +1,16 @@ + + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/xml/settings_general.xml b/app/src/main/res/xml/settings_general.xml index 9f19e0c..5b5c151 100644 --- a/app/src/main/res/xml/settings_general.xml +++ b/app/src/main/res/xml/settings_general.xml @@ -53,16 +53,5 @@ android:summary="@string/pref_summ_maxDelay" android:title="@string/pref_title_maxDelay" /> - - - \ No newline at end of file