This commit is contained in:
Jon Atkins 2015-02-16 19:32:02 +00:00
commit 9efc2fb508
2 changed files with 60 additions and 11 deletions

View File

@ -50,7 +50,7 @@ window.search.Query.prototype.init = function() {
this.list = $('<ul>') this.list = $('<ul>')
.appendTo(this.container) .appendTo(this.container)
.append($('<li>').text('No results')); .append($('<li>').text(this.confirmed ? 'No local results, searching online...' : 'No local results.'));
this.container.accordion({ this.container.accordion({
collapsible: true, collapsible: true,
@ -195,6 +195,8 @@ window.search.doSearch = function(term, confirmed) {
// clear results // clear results
if(term == '') return; if(term == '') return;
if(useAndroidPanes()) show('info');
$('#search').tooltip().tooltip('close'); $('#search').tooltip().tooltip('close');
window.search.lastSearch = new window.search.Query(term, confirmed); window.search.lastSearch = new window.search.Query(term, confirmed);
@ -270,6 +272,15 @@ addHook('search', function(query) {
if(!query.confirmed) return; if(!query.confirmed) return;
$.getJSON(NOMINATIM + encodeURIComponent(query.term), function(data) { $.getJSON(NOMINATIM + encodeURIComponent(query.term), function(data) {
if(data.length == 0) {
query.addResult({
title: 'No results on OpenStreetMap',
icon: '//www.openstreetmap.org/favicon.ico',
onSelected: function() {return true;},
});
return;
}
data.forEach(function(item) { data.forEach(function(item) {
var result = { var result = {
title: item.display_name, title: item.display_name,

View File

@ -268,15 +268,13 @@ public class IITC_Mobile extends Activity
} }
if (Intent.ACTION_SEARCH.equals(action)) { if (Intent.ACTION_SEARCH.equals(action)) {
String query = intent.getStringExtra(SearchManager.QUERY); final String query = intent.getStringExtra(SearchManager.QUERY);
query = query.replace("'", "''"); final SearchView searchView = (SearchView) mSearchMenuItem.getActionView();
final SearchView searchView =
(SearchView) mSearchMenuItem.getActionView();
searchView.setQuery(query, false); searchView.setQuery(query, false);
searchView.clearFocus(); searchView.clearFocus();
switchToPane(Pane.MAP); search(query, true);
mIitcWebView.loadUrl("javascript:if(window.search&&window.search.doSearch){window.search.doSearch('" + query + "',true);window.show('info')}");
return; 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 { private void handleGeoUri(final Uri uri) throws URISyntaxException {
final String[] parts = uri.getSchemeSpecificPart().split("\\?", 2); final String[] parts = uri.getSchemeSpecificPart().split("\\?", 2);
Double lat = null, lon = null; Double lat = null, lon = null;
@ -344,8 +350,7 @@ public class IITC_Mobile extends Activity
mSearchTerm = search; mSearchTerm = search;
loadUrl(mIntelUrl); loadUrl(mIntelUrl);
} else { } else {
switchToPane(Pane.MAP); search(search, true);
mIitcWebView.loadUrl("javascript:search('" + search + "');");
} }
return; return;
} }
@ -507,9 +512,43 @@ public class IITC_Mobile extends Activity
// Assumes current activity is the searchable activity // Assumes current activity is the searchable activity
searchView.setSearchableInfo(searchManager.getSearchableInfo(getComponentName())); searchView.setSearchableInfo(searchManager.getSearchableInfo(getComponentName()));
searchView.setIconifiedByDefault(false); // Do not iconify the widget; expand it by default 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; 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 @Override
public boolean onPrepareOptionsMenu(final Menu menu) { public boolean onPrepareOptionsMenu(final Menu menu) {
boolean visible = false; boolean visible = false;
@ -731,8 +770,7 @@ public class IITC_Mobile extends Activity
new Handler().postDelayed(new Runnable() { new Handler().postDelayed(new Runnable() {
@Override @Override
public void run() { public void run() {
// switchToPane(Pane.MAP); search(mSearchTerm, true);
mIitcWebView.loadUrl("javascript:search('" + mSearchTerm + "');");
mSearchTerm = null; mSearchTerm = null;
} }
}, 5000); }, 5000);