From e071de3728b676c49fc17bbcd15ce893e6d83c66 Mon Sep 17 00:00:00 2001 From: Eric Kok Date: Wed, 23 Oct 2013 10:51:56 +0200 Subject: [PATCH] Make a custom search site (selected in settings) stick. Fixes #35. Also collapse the search view after searching. --- .../app/settings/ApplicationSettings.java | 78 ++++++++----------- .../core/app/settings/WebsearchSetting.java | 2 +- .../transdroid/core/gui/TorrentsActivity.java | 7 ++ .../core/gui/search/SearchActivity.java | 11 ++- 4 files changed, 49 insertions(+), 49 deletions(-) diff --git a/core/src/org/transdroid/core/app/settings/ApplicationSettings.java b/core/src/org/transdroid/core/app/settings/ApplicationSettings.java index 55921036..c511dbb5 100644 --- a/core/src/org/transdroid/core/app/settings/ApplicationSettings.java +++ b/core/src/org/transdroid/core/app/settings/ApplicationSettings.java @@ -92,33 +92,23 @@ public class ApplicationSettings { // @formatter:off Daemon type = Daemon.fromCode(prefs.getString("server_type_" + order, null)); boolean ssl = prefs.getBoolean("server_sslenabled_" + order, false); - + String port = prefs.getString("server_port_" + order, ""); - if(port.equals("")) + if (port.equals("")) port = Integer.toString(Daemon.getDefaultPortNumber(type, ssl)); - - return new ServerSetting(order, - prefs.getString("server_name_" + order, null), type, - prefs.getString("server_address_" + order, null), - prefs.getString("server_localaddress_" + order, null), - prefs.getString("server_localnetwork_" + order, null), - Integer.parseInt(port), - ssl, - prefs.getBoolean("server_ssltrustall_" + order, false), - prefs.getString("server_ssltrustkey_" + order, null), + + return new ServerSetting(order, prefs.getString("server_name_" + order, null), type, prefs.getString( + "server_address_" + order, null), prefs.getString("server_localaddress_" + order, null), + prefs.getString("server_localnetwork_" + order, null), Integer.parseInt(port), ssl, prefs.getBoolean( + "server_ssltrustall_" + order, false), prefs.getString("server_ssltrustkey_" + order, null), prefs.getString("server_folder_" + order, null), - !prefs.getBoolean("server_disableauth_" + order, false), - prefs.getString("server_user_" + order, null), - prefs.getString("server_pass_" + order, null), - prefs.getString("server_extrapass_" + order, null), - OS.fromCode(prefs.getString("server_os_" + order, "type_linux")), - prefs.getString("server_downloaddir_" + order, null), - prefs.getString("server_ftpurl_" + order, null), - prefs.getString("server_ftppass_" + order, null), - Integer.parseInt(prefs.getString("server_timeout_" + order, "8")), - prefs.getBoolean("server_alarmfinished_" + order, true), - prefs.getBoolean("server_alarmnew_" + order, false), - false); + !prefs.getBoolean("server_disableauth_" + order, false), prefs.getString("server_user_" + order, null), + prefs.getString("server_pass_" + order, null), prefs.getString("server_extrapass_" + order, null), + OS.fromCode(prefs.getString("server_os_" + order, "type_linux")), prefs.getString("server_downloaddir_" + + order, null), prefs.getString("server_ftpurl_" + order, null), prefs.getString( + "server_ftppass_" + order, null), Integer.parseInt(prefs.getString("server_timeout_" + order, + "8")), prefs.getBoolean("server_alarmfinished_" + order, true), prefs.getBoolean( + "server_alarmnew_" + order, false), false); // @formatter:on } @@ -261,10 +251,8 @@ public class ApplicationSettings { */ public WebsearchSetting getWebsearchSetting(int order) { // @formatter:off - return new WebsearchSetting(order, - prefs.getString("websearch_name_" + order, null), - prefs.getString("websearch_baseurl_" + order, null), - prefs.getString("websearch_cookies_" + order, null)); + return new WebsearchSetting(order, prefs.getString("websearch_name_" + order, null), prefs.getString( + "websearch_baseurl_" + order, null), prefs.getString("websearch_cookies_" + order, null)); // @formatter:on } @@ -325,11 +313,9 @@ public class ApplicationSettings { public RssfeedSetting getRssfeedSetting(int order) { // @formatter:off long lastViewed = prefs.getLong("rssfeed_lastviewed_" + order, -1); - return new RssfeedSetting(order, - prefs.getString("rssfeed_name_" + order, null), - prefs.getString("rssfeed_url_" + order, null), - prefs.getBoolean("rssfeed_reqauth_" + order, false), - lastViewed == -1L ? null: new Date(lastViewed)); + return new RssfeedSetting(order, prefs.getString("rssfeed_name_" + order, null), prefs.getString("rssfeed_url_" + + order, null), prefs.getBoolean("rssfeed_reqauth_" + order, false), lastViewed == -1L ? null + : new Date(lastViewed)); // @formatter:on } @@ -427,12 +413,6 @@ public class ApplicationSettings { public SearchSetting getLastUsedSearchSite() { String lastKey = getLastUsedSearchSiteKey(); List allsites = searchHelper.getAvailableSites(); - int lastWebsearch = -1; - try { - lastWebsearch = Integer.parseInt(lastKey); - } catch (Exception e) { - // Not an in-app search site, but probably an in-app search - } if (lastKey == null) { // No site yet set specified; return the first in-app one, if available @@ -442,6 +422,14 @@ public class ApplicationSettings { return null; } + int lastWebsearch = -1; + if (lastKey.startsWith(WebsearchSetting.KEY_PREFIX)) { + try { + lastWebsearch = Integer.parseInt(lastKey.substring(WebsearchSetting.KEY_PREFIX.length())); + } catch (Exception e) { + // Not an in-app search site, but probably an in-app search + } + } if (lastWebsearch >= 0) { // The last used site should be a user-configured web search site int max = getMaxWebsearch(); // Zero-based index, so with max == 0 there is 1 server @@ -481,7 +469,7 @@ public class ApplicationSettings { * Registers the unique key of some web search or in-app search site as being last used by the user * @param order The key identifying the specific server */ - public void setLastUsedSearchSite(SearchSite site) { + public void setLastUsedSearchSite(SearchSetting site) { prefs.edit().putString("header_setsearchsite", site.getKey()).commit(); } @@ -520,12 +508,10 @@ public class ApplicationSettings { if (!prefs.contains("widget_server_" + appWidgetId)) return null; // @formatter:off - return new WidgetConfig( - prefs.getInt("widget_server_" + appWidgetId, -1), - StatusType.valueOf(prefs.getString("widget_status_" + appWidgetId, StatusType.ShowAll.name())), - TorrentsSortBy.valueOf(prefs.getString("widget_sortby_" + appWidgetId, TorrentsSortBy.Alphanumeric.name())), - prefs.getBoolean("widget_reverse_" + appWidgetId, false), - prefs.getBoolean("widget_darktheme_" + appWidgetId, false)); + return new WidgetConfig(prefs.getInt("widget_server_" + appWidgetId, -1), StatusType.valueOf(prefs.getString( + "widget_status_" + appWidgetId, StatusType.ShowAll.name())), TorrentsSortBy.valueOf(prefs.getString( + "widget_sortby_" + appWidgetId, TorrentsSortBy.Alphanumeric.name())), prefs.getBoolean( + "widget_reverse_" + appWidgetId, false), prefs.getBoolean("widget_darktheme_" + appWidgetId, false)); // @formatter:on } diff --git a/core/src/org/transdroid/core/app/settings/WebsearchSetting.java b/core/src/org/transdroid/core/app/settings/WebsearchSetting.java index 7db25f5c..8115d822 100644 --- a/core/src/org/transdroid/core/app/settings/WebsearchSetting.java +++ b/core/src/org/transdroid/core/app/settings/WebsearchSetting.java @@ -29,7 +29,7 @@ import android.text.TextUtils; public class WebsearchSetting implements SimpleListItem, SearchSetting { private static final String DEFAULT_NAME = "Default"; - private static final String KEY_PREFIX = "websearch_"; + public static final String KEY_PREFIX = "websearch_"; private final int order; private final String name; diff --git a/core/src/org/transdroid/core/gui/TorrentsActivity.java b/core/src/org/transdroid/core/gui/TorrentsActivity.java index c1113ac2..c8ec5792 100644 --- a/core/src/org/transdroid/core/gui/TorrentsActivity.java +++ b/core/src/org/transdroid/core/gui/TorrentsActivity.java @@ -553,6 +553,13 @@ public class TorrentsActivity extends SherlockFragmentActivity implements OnNavi } + @Override + protected void onPause() { + if (searchMenu != null) + searchMenu.collapseActionView(); + super.onPause(); + } + @Override public boolean onSearchRequested() { if (searchMenu != null) { diff --git a/core/src/org/transdroid/core/gui/search/SearchActivity.java b/core/src/org/transdroid/core/gui/search/SearchActivity.java index 0b7d27eb..1031723c 100644 --- a/core/src/org/transdroid/core/gui/search/SearchActivity.java +++ b/core/src/org/transdroid/core/gui/search/SearchActivity.java @@ -255,21 +255,28 @@ public class SearchActivity extends SherlockFragmentActivity implements OnNaviga @OptionsItem(resName = "action_refresh") protected void refreshSearch() { + + if (searchMenu != null) { + // Close the search view in the ation bar + searchMenu.collapseActionView(); + } + if (lastUsedSite instanceof WebsearchSetting) { // Start a browser page directly to the requested search results WebsearchSetting websearch = (WebsearchSetting) lastUsedSite; startActivity(new Intent(Intent.ACTION_VIEW, Uri.parse(String.format(websearch.getBaseUrl(), lastUsedQuery)))); + finish(); } else if (lastUsedSite instanceof SearchSite) { + // Save the search site currently used to search for future usage + applicationSettings.setLastUsedSearchSite(lastUsedSite); // Update the activity title (only shown on large devices) getSupportActionBar().setTitle( NavigationHelper.buildCondensedFontString(getString(R.string.search_queryonsite, lastUsedQuery, lastUsedSite.getName()))); - // Save the search site currently used to search for future usage - applicationSettings.setLastUsedSearchSite((SearchSite) lastUsedSite); // Ask the results fragment to start a search for the specified query fragmentResults.startSearch(lastUsedQuery, (SearchSite) lastUsedSite);