From 4d6a7df596ea3e3a87e63f8f6adb5648b6f823cc Mon Sep 17 00:00:00 2001 From: fkloft Date: Mon, 16 Feb 2015 01:10:24 +0100 Subject: [PATCH 1/2] [iitcm] improved search --- code/search.js | 2 + .../com/cradle/iitc_mobile/IITC_Mobile.java | 58 +++++++++++++++---- 2 files changed, 50 insertions(+), 10 deletions(-) diff --git a/code/search.js b/code/search.js index 746c4bf0..800adbc5 100644 --- a/code/search.js +++ b/code/search.js @@ -195,6 +195,8 @@ window.search.doSearch = function(term, confirmed) { // clear results if(term == '') return; + if(useAndroidPanes()) show('info'); + $('#search').tooltip().tooltip('close'); window.search.lastSearch = new window.search.Query(term, confirmed); diff --git a/mobile/src/com/cradle/iitc_mobile/IITC_Mobile.java b/mobile/src/com/cradle/iitc_mobile/IITC_Mobile.java index 7ab609a4..ce260370 100644 --- a/mobile/src/com/cradle/iitc_mobile/IITC_Mobile.java +++ b/mobile/src/com/cradle/iitc_mobile/IITC_Mobile.java @@ -268,15 +268,13 @@ public class IITC_Mobile extends Activity } if (Intent.ACTION_SEARCH.equals(action)) { - String query = intent.getStringExtra(SearchManager.QUERY); - query = query.replace("'", "''"); - final SearchView searchView = - (SearchView) mSearchMenuItem.getActionView(); + final String query = intent.getStringExtra(SearchManager.QUERY); + final SearchView searchView = (SearchView) mSearchMenuItem.getActionView(); searchView.setQuery(query, false); searchView.clearFocus(); - switchToPane(Pane.MAP); - mIitcWebView.loadUrl("javascript:if(window.search&&window.search.doSearch){window.search.doSearch('" + query + "',true);window.show('info')}"); + search(query, true); + return; } @@ -285,6 +283,14 @@ public class IITC_Mobile extends Activity } } + private void search(String term, final boolean confirmed) { + if (term.isEmpty() && !confirmed) return; + + term = term.replace("'", "\\'"); + mIitcWebView.loadUrl("javascript:if(window.search&&window.search.doSearch){window.search.doSearch('" + term + + "'," + confirmed + ");}"); + } + private void handleGeoUri(final Uri uri) throws URISyntaxException { final String[] parts = uri.getSchemeSpecificPart().split("\\?", 2); Double lat = null, lon = null; @@ -344,8 +350,7 @@ public class IITC_Mobile extends Activity mSearchTerm = search; loadUrl(mIntelUrl); } else { - switchToPane(Pane.MAP); - mIitcWebView.loadUrl("javascript:search('" + search + "');"); + search(search, true); } return; } @@ -507,9 +512,43 @@ public class IITC_Mobile extends Activity // Assumes current activity is the searchable activity searchView.setSearchableInfo(searchManager.getSearchableInfo(getComponentName())); searchView.setIconifiedByDefault(false); // Do not iconify the widget; expand it by default + searchView.setOnQueryTextListener(new SearchView.OnQueryTextListener() { + @Override + public boolean onQueryTextSubmit(final String query) { + search(query, true); + return true; + } + + @Override + public boolean onQueryTextChange(final String query) { + search(query, false); + return true; + } + }); + + // the SearchView does not allow submitting an empty query, so we catch the clear button + final View buttonClear = searchView.findViewById( + getResources().getIdentifier("android:id/search_close_btn", null, null)); + if (buttonClear != null) buttonClear.setOnClickListener(new View.OnClickListener() { + @Override + public void onClick(final View v) { + searchView.setQuery("", false); + search("", true); + } + }); return true; } + @Override + public boolean onKeyDown(final int keyCode, final KeyEvent event) { + if (keyCode == KeyEvent.KEYCODE_SEARCH) { + mSearchMenuItem.expandActionView(); + mSearchMenuItem.getActionView().requestFocus(); + return true; + } + return super.onKeyDown(keyCode, event); + } + @Override public boolean onPrepareOptionsMenu(final Menu menu) { boolean visible = false; @@ -731,8 +770,7 @@ public class IITC_Mobile extends Activity new Handler().postDelayed(new Runnable() { @Override public void run() { - // switchToPane(Pane.MAP); - mIitcWebView.loadUrl("javascript:search('" + mSearchTerm + "');"); + search(mSearchTerm, true); mSearchTerm = null; } }, 5000); From 4808f4469c0f018c513e44ab9f726bb240caed30 Mon Sep 17 00:00:00 2001 From: fkloft Date: Mon, 16 Feb 2015 01:28:55 +0100 Subject: [PATCH 2/2] [search] Better feedback when nothing can be found --- code/search.js | 11 ++++++++++- 1 file changed, 10 insertions(+), 1 deletion(-) diff --git a/code/search.js b/code/search.js index 800adbc5..ac6359f1 100644 --- a/code/search.js +++ b/code/search.js @@ -50,7 +50,7 @@ window.search.Query.prototype.init = function() { this.list = $('