From bebf5e3d2e46b92a1a16ca5877221f69ba3c2efe Mon Sep 17 00:00:00 2001 From: Eric Kok Date: Fri, 22 Mar 2013 16:46:22 +0100 Subject: [PATCH] Added removing and fixed updating of settings. --- ...by_size.png => ic_action_sort_by_size.png} | Bin core/res/drawable-xhdpi/loading_progress.xml | 5 + core/res/menu/activity_deleteableprefs.xml | 2 +- core/res/values/strings.xml | 7 +- core/res/xml/pref_server.xml | 13 +- core/res/xml/pref_system.xml | 3 +- .../app/settings/ApplicationSettings.java | 172 ++++++++++++++-- .../core/app/settings/RssfeedSetting.java | 16 +- .../core/app/settings/ServerSetting.java | 9 +- .../core/app/settings/WebsearchSetting.java | 14 +- .../settings/KeyBoundPreferencesActivity.java | 191 ++++++++++++++++++ .../gui/settings/MainSettingsActivity.java | 9 +- .../core/gui/settings/RssfeedPreference.java | 1 + .../gui/settings/RssfeedSettingsActivity.java | 42 ++-- .../core/gui/settings/ServerPreference.java | 3 +- .../gui/settings/ServerSettingsActivity.java | 120 +++++------ .../gui/settings/WebsearchPreference.java | 1 + .../settings/WebsearchSettingsActivity.java | 40 ++-- 18 files changed, 482 insertions(+), 166 deletions(-) rename core/res/drawable-xhdpi/{action_sort_by_size.png => ic_action_sort_by_size.png} (100%) create mode 100644 core/res/drawable-xhdpi/loading_progress.xml create mode 100644 core/src/org/transdroid/core/gui/settings/KeyBoundPreferencesActivity.java diff --git a/core/res/drawable-xhdpi/action_sort_by_size.png b/core/res/drawable-xhdpi/ic_action_sort_by_size.png similarity index 100% rename from core/res/drawable-xhdpi/action_sort_by_size.png rename to core/res/drawable-xhdpi/ic_action_sort_by_size.png diff --git a/core/res/drawable-xhdpi/loading_progress.xml b/core/res/drawable-xhdpi/loading_progress.xml new file mode 100644 index 00000000..222cc87e --- /dev/null +++ b/core/res/drawable-xhdpi/loading_progress.xml @@ -0,0 +1,5 @@ + + diff --git a/core/res/menu/activity_deleteableprefs.xml b/core/res/menu/activity_deleteableprefs.xml index ad353807..0d3e970e 100644 --- a/core/res/menu/activity_deleteableprefs.xml +++ b/core/res/menu/activity_deleteableprefs.xml @@ -1,7 +1,7 @@ diff --git a/core/res/values/strings.xml b/core/res/values/strings.xml index 21b63d75..358ecd7f 100644 --- a/core/res/values/strings.xml +++ b/core/res/values/strings.xml @@ -131,7 +131,7 @@ Local IP or host When connected to the specified local network Local network - The server\'s local (wifi) network + The server\'s local network SSID Folder Usually empty SCGI mount point @@ -169,14 +169,15 @@ System Check for updates - Check transdroidorg for latest app version + Check transdroid.org for latest app version Import settings Export settings Send error log Get support or report a bug View install guides + Available at transdroid.org/download Recent changes - About + About Transdroid BitComet Bitflu 1.2+ diff --git a/core/res/xml/pref_server.xml b/core/res/xml/pref_server.xml index c415267a..453c06b1 100644 --- a/core/res/xml/pref_server.xml +++ b/core/res/xml/pref_server.xml @@ -15,10 +15,6 @@ android:key="server_address" android:title="@string/pref_address" android:inputType="textUri" /> - + - @@ -87,7 +87,8 @@ android:key="server_os" android:title="@string/pref_os" android:entries="@array/pref_os_types" - android:entryValues="@array/pref_os_values" /> + android:entryValues="@array/pref_os_values" + android:defaultValue="type_linux" /> + android:title="@string/pref_installhelp" + android:summary="@string/pref_installhelp_info" /> servers = applicationSettings.getServerSettings(); for (ServerSetting serverSetting : servers) { diff --git a/core/src/org/transdroid/core/gui/settings/RssfeedPreference.java b/core/src/org/transdroid/core/gui/settings/RssfeedPreference.java index 59d86415..b47e4772 100644 --- a/core/src/org/transdroid/core/gui/settings/RssfeedPreference.java +++ b/core/src/org/transdroid/core/gui/settings/RssfeedPreference.java @@ -29,6 +29,7 @@ public class RssfeedPreference extends Preference { public RssfeedPreference setRssfeedSetting(RssfeedSetting rssfeedSetting) { this.rssfeedSetting = rssfeedSetting; setTitle(rssfeedSetting.getName()); + setSummary(rssfeedSetting.getHumanReadableIdentifier()); setOrder(ORDER_START + rssfeedSetting.getOrder()); return this; } diff --git a/core/src/org/transdroid/core/gui/settings/RssfeedSettingsActivity.java b/core/src/org/transdroid/core/gui/settings/RssfeedSettingsActivity.java index 3d5d8f3a..5c7a472b 100644 --- a/core/src/org/transdroid/core/gui/settings/RssfeedSettingsActivity.java +++ b/core/src/org/transdroid/core/gui/settings/RssfeedSettingsActivity.java @@ -1,16 +1,13 @@ package org.transdroid.core.gui.settings; -import org.androidannotations.annotations.Bean; import org.androidannotations.annotations.EActivity; -import org.androidannotations.annotations.Extra; +import org.androidannotations.annotations.OptionsItem; import org.androidannotations.annotations.OptionsMenu; import org.transdroid.core.R; -import org.transdroid.core.app.settings.ApplicationSettings; +import org.transdroid.core.app.settings.ApplicationSettings_; import android.os.Bundle; -import com.actionbarsherlock.app.SherlockPreferenceActivity; - /** * Activity that allows for a configuration of some RSS feed. The key can be supplied to update an * existing RSS feed setting instead of creating a new one. @@ -18,31 +15,24 @@ import com.actionbarsherlock.app.SherlockPreferenceActivity; */ @EActivity @OptionsMenu(resName="activity_deleteableprefs") -public class RssfeedSettingsActivity extends SherlockPreferenceActivity { - - @Extra - protected int key = -1; - - @Bean - protected ApplicationSettings applicationSettings; - - @SuppressWarnings("deprecation") - @Override - protected void onCreate(Bundle savedInstanceState) { - super.onCreate(savedInstanceState); +public class RssfeedSettingsActivity extends KeyBoundPreferencesActivity { + @Override + public void onCreate(Bundle savedInstanceState) { + super.onCreate(savedInstanceState); + // Load the raw preferences to show in this screen - addPreferencesFromResource(R.xml.pref_rssfeed); + init(R.xml.pref_rssfeed, ApplicationSettings_.getInstance_(this).getMaxRssfeed()); + initTextPreference("rssfeed_name"); + initTextPreference("rssfeed_url"); + initBooleanPreference("rssfeed_reqauth"); - // Bind the preferences to the correct storage key, e.g. the first RSS feed setting stores its URL in the - // 'rssfeed_url_0' shared preferences field - if (key < 0) { - key = applicationSettings.getMaxRssfeed() + 1; - } - findPreference("rssfeed_name").setKey("rssfeed_name_" + key); - findPreference("rssfeed_url").setKey("rssfeed_url_" + key); - findPreference("rssfeed_reqauth").setKey("rssfeed_reqauth_" + key); + } + @OptionsItem(resName = "action_removesettings") + protected void removeSettings() { + ApplicationSettings_.getInstance_(this).removeRssfeedSettings(key); + finish(); } } diff --git a/core/src/org/transdroid/core/gui/settings/ServerPreference.java b/core/src/org/transdroid/core/gui/settings/ServerPreference.java index 0aa0bbb2..01ab0402 100644 --- a/core/src/org/transdroid/core/gui/settings/ServerPreference.java +++ b/core/src/org/transdroid/core/gui/settings/ServerPreference.java @@ -28,7 +28,8 @@ public class ServerPreference extends Preference { */ public ServerPreference setServerSetting(ServerSetting serverSetting) { this.serverSetting = serverSetting; - setTitle(serverSetting.getHumanReadableIdentifier()); + setTitle(serverSetting.getName()); + setSummary(serverSetting.getHumanReadableIdentifier()); setOrder(ORDER_START + serverSetting.getOrder()); return this; } diff --git a/core/src/org/transdroid/core/gui/settings/ServerSettingsActivity.java b/core/src/org/transdroid/core/gui/settings/ServerSettingsActivity.java index 9e8cceb1..70508074 100644 --- a/core/src/org/transdroid/core/gui/settings/ServerSettingsActivity.java +++ b/core/src/org/transdroid/core/gui/settings/ServerSettingsActivity.java @@ -1,99 +1,77 @@ package org.transdroid.core.gui.settings; -import org.androidannotations.annotations.Bean; import org.androidannotations.annotations.EActivity; -import org.androidannotations.annotations.Extra; +import org.androidannotations.annotations.OptionsItem; import org.androidannotations.annotations.OptionsMenu; -import org.transdroid.daemon.Daemon; import org.transdroid.core.R; -import org.transdroid.core.app.settings.ApplicationSettings; +import org.transdroid.core.app.settings.ApplicationSettings_; +import org.transdroid.daemon.Daemon; import android.content.SharedPreferences; import android.os.Bundle; -import android.preference.Preference; -import android.preference.Preference.OnPreferenceChangeListener; +import android.preference.EditTextPreference; import android.preference.PreferenceManager; -import com.actionbarsherlock.app.SherlockPreferenceActivity; - /** * Activity that allows for a configuration of a server. The key can be supplied to update an existing server setting * instead of creating a new one. * @author Eric Kok */ @EActivity -@OptionsMenu(resName="activity_deleteableprefs") -public class ServerSettingsActivity extends SherlockPreferenceActivity { +@OptionsMenu(resName = "activity_deleteableprefs") +public class ServerSettingsActivity extends KeyBoundPreferencesActivity { - @Extra - protected int key = -1; + private EditTextPreference extraPass, folder, downloadDir; - @Bean - protected ApplicationSettings applicationSettings; - - @SuppressWarnings("deprecation") @Override - protected void onCreate(Bundle savedInstanceState) { + public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); // Load the raw preferences to show in this screen - addPreferencesFromResource(R.xml.pref_server); - - // Bind the preferences to the correct storage key, e.g. the first server setting stores its address in the - // 'server_address_0' shared preferences field - if (key < 0) { - key = applicationSettings.getMaxWebsearch() + 1; - } - findPreference("server_name").setKey("server_name_" + key); - findPreference("server_type").setKey("server_type_" + key); - findPreference("server_address").setKey("server_address_" + key); - findPreference("server_port").setKey("server_port_" + key); - findPreference("server_user").setKey("server_user_" + key); - findPreference("server_pass").setKey("server_pass_" + key); - findPreference("server_extrapass").setKey("server_extrapass_" + key); - findPreference("server_localaddress").setKey("server_localaddress_" + key); - findPreference("server_localnetwork").setKey("server_localnetwork_" + key); - findPreference("server_folder").setKey("server_folder_" + key); - findPreference("server_timeout").setKey("server_timeout_" + key); - findPreference("server_alarmfinished").setKey("server_alarmfinished_" + key); - findPreference("server_alarmnew").setKey("server_alarmnew_" + key); - findPreference("server_os").setKey("server_os_" + key); - findPreference("server_downloaddir").setKey("server_downloaddir_" + key); - findPreference("server_ftpurl").setKey("server_ftpurl_" + key); - findPreference("server_ftppass").setKey("server_ftppass_" + key); - findPreference("server_sslenabled").setKey("server_sslenabled_" + key); - findPreference("server_ssltrustall").setKey("server_ssltrustall_" + key); - findPreference("server_ssltrustall_" + key).setDependency("server_sslenabled_" + key); - findPreference("server_ssltrustkey").setKey("server_ssltrustkey_" + key); - findPreference("server_ssltrustkey_" + key).setDependency("server_sslenabled_" + key); + init(R.xml.pref_server, ApplicationSettings_.getInstance_(this).getMaxServer()); + initTextPreference("server_name"); + initListPreference("server_type"); + initTextPreference("server_address"); + initTextPreference("server_port"); + initTextPreference("server_user"); + initTextPreference("server_pass"); + extraPass = initTextPreference("server_extrapass"); + initTextPreference("server_localaddress"); + initTextPreference("server_localnetwork"); + folder = initTextPreference("server_folder"); + initTextPreference("server_timeout", "8"); + initBooleanPreference("server_alarmfinished", true); + initBooleanPreference("server_alarmnew"); + initListPreference("server_os", "type_linux"); + downloadDir = initTextPreference("server_downloaddir"); + initTextPreference("server_ftpurl"); + initTextPreference("server_ftppass"); + initBooleanPreference("server_sslenabled"); + initBooleanPreference("server_ssltrustall", false, "server_sslenabled"); + initTextPreference("server_ssltrustkey", null, "server_sslenabled"); - // Monitor preference changes - getPreferenceScreen().setOnPreferenceChangeListener(onPreferenceChangeListener); } - private OnPreferenceChangeListener onPreferenceChangeListener = new OnPreferenceChangeListener() { - @Override - public boolean onPreferenceChange(Preference preference, Object newValue) { - // TODO: This doesn't get called - updatePreferenceAvailability(); - return true; - } - }; + @OptionsItem(resName = "action_removesettings") + protected void removeSettings() { + ApplicationSettings_.getInstance_(this).removeServerSettings(key); + finish(); + } + + @Override + protected void onPreferencesChanged() { - @SuppressWarnings("deprecation") - private void updatePreferenceAvailability() { - // Use daemon factory to see if the newly selected daemon supports the feature - SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(this); - Daemon daemonType = Daemon.fromCode(prefs.getString("server_type_" + key, null)); - findPreference("server_extrapass_" + key).setEnabled(Daemon.supportsExtraPassword(daemonType)); - findPreference("server_folder_" + key).setEnabled(daemonType == null? false: Daemon.supportsCustomFolder(daemonType)); - findPreference("server_downloaddir_" + key).setEnabled(daemonType == null? false: Daemon.needsManualPathSpecified(daemonType)); - //findPreference("server_ssltrustkey_" + key).setEnabled(sslValue && !sslTAValue); - - // Adjust title texts accordingly - findPreference("server_folder_" + key).setTitle(daemonType == Daemon.rTorrent? R.string.pref_scgifolder: R.string.pref_folder); - - } - + SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(this); + Daemon daemonType = Daemon.fromCode(prefs.getString("server_type_" + key, null)); + extraPass.setEnabled(Daemon.supportsExtraPassword(daemonType)); + folder.setEnabled(daemonType == null ? false : Daemon.supportsCustomFolder(daemonType)); + downloadDir.setEnabled(daemonType == null ? false : Daemon.needsManualPathSpecified(daemonType)); + // sslTrustKey.setEnabled(sslValue && !sslTAValue); + + // Adjust title texts accordingly + folder.setTitle(daemonType == Daemon.rTorrent ? R.string.pref_scgifolder : R.string.pref_folder); + + } + } diff --git a/core/src/org/transdroid/core/gui/settings/WebsearchPreference.java b/core/src/org/transdroid/core/gui/settings/WebsearchPreference.java index a4a5d173..63550f03 100644 --- a/core/src/org/transdroid/core/gui/settings/WebsearchPreference.java +++ b/core/src/org/transdroid/core/gui/settings/WebsearchPreference.java @@ -29,6 +29,7 @@ public class WebsearchPreference extends Preference { public WebsearchPreference setWebsearchSetting(WebsearchSetting websearchSetting) { this.websearchSetting = websearchSetting; setTitle(websearchSetting.getName()); + setSummary(websearchSetting.getHumanReadableIdentifier()); setOrder(ORDER_START + websearchSetting.getOrder()); return this; } diff --git a/core/src/org/transdroid/core/gui/settings/WebsearchSettingsActivity.java b/core/src/org/transdroid/core/gui/settings/WebsearchSettingsActivity.java index 6d1b02cb..93c0e040 100644 --- a/core/src/org/transdroid/core/gui/settings/WebsearchSettingsActivity.java +++ b/core/src/org/transdroid/core/gui/settings/WebsearchSettingsActivity.java @@ -1,16 +1,13 @@ package org.transdroid.core.gui.settings; -import org.androidannotations.annotations.Bean; import org.androidannotations.annotations.EActivity; -import org.androidannotations.annotations.Extra; +import org.androidannotations.annotations.OptionsItem; import org.androidannotations.annotations.OptionsMenu; import org.transdroid.core.R; -import org.transdroid.core.app.settings.ApplicationSettings; +import org.transdroid.core.app.settings.ApplicationSettings_; import android.os.Bundle; -import com.actionbarsherlock.app.SherlockPreferenceActivity; - /** * Activity that allows for a configuration of a web search site. The key can be supplied to update an existing web * search site setting instead of creating a new one. @@ -18,30 +15,23 @@ import com.actionbarsherlock.app.SherlockPreferenceActivity; */ @EActivity @OptionsMenu(resName="activity_deleteableprefs") -public class WebsearchSettingsActivity extends SherlockPreferenceActivity { - - @Extra - protected int key = -1; - - @Bean - protected ApplicationSettings applicationSettings; +public class WebsearchSettingsActivity extends KeyBoundPreferencesActivity { - @SuppressWarnings("deprecation") - @Override - protected void onCreate(Bundle savedInstanceState) { - super.onCreate(savedInstanceState); + @Override + public void onCreate(Bundle savedInstanceState) { + super.onCreate(savedInstanceState); // Load the raw preferences to show in this screen - addPreferencesFromResource(R.xml.pref_websearch); - - // Bind the preferences to the correct storage key, e.g. the first site setting stores its URL in the - // 'websearch_baseurl_0' shared preferences field - if (key < 0) { - key = applicationSettings.getMaxWebsearch() + 1; - } - findPreference("websearch_name").setKey("websearch_name_" + key); - findPreference("websearch_baseurl").setKey("websearch_baseurl_" + key); + init(R.xml.pref_websearch, ApplicationSettings_.getInstance_(this).getMaxWebsearch()); + initTextPreference("websearch_name"); + initTextPreference("websearch_baseurl"); } + @OptionsItem(resName = "action_removesettings") + protected void removeSettings() { + ApplicationSettings_.getInstance_(this).removeWebsearchSettings(key); + finish(); + } + }