diff options
Diffstat (limited to 'main/src/cgeo/geocaching/SearchActivity.java')
-rw-r--r-- | main/src/cgeo/geocaching/SearchActivity.java | 35 |
1 files changed, 18 insertions, 17 deletions
diff --git a/main/src/cgeo/geocaching/SearchActivity.java b/main/src/cgeo/geocaching/SearchActivity.java index edd611a..ea91857 100644 --- a/main/src/cgeo/geocaching/SearchActivity.java +++ b/main/src/cgeo/geocaching/SearchActivity.java @@ -9,10 +9,11 @@ import cgeo.geocaching.connector.ConnectorFactory; import cgeo.geocaching.connector.IConnector; import cgeo.geocaching.connector.capability.ISearchByGeocode; import cgeo.geocaching.connector.trackable.TrackableConnector; -import cgeo.geocaching.geopoint.Geopoint; -import cgeo.geocaching.geopoint.GeopointFormatter; +import cgeo.geocaching.location.Geopoint; +import cgeo.geocaching.location.GeopointFormatter; import cgeo.geocaching.search.AutoCompleteAdapter; -import cgeo.geocaching.sensors.IGeoData; +import cgeo.geocaching.sensors.GeoData; +import cgeo.geocaching.sensors.Sensors; import cgeo.geocaching.settings.Settings; import cgeo.geocaching.ui.dialog.CoordinatesInputDialog; import cgeo.geocaching.ui.dialog.Dialogs; @@ -62,6 +63,8 @@ public class SearchActivity extends AbstractActionBarActivity implements Coordin @InjectView(R.id.trackable) protected AutoCompleteTextView trackableEditText; @InjectView(R.id.display_trackable) protected Button buttonSearchTrackable; + private static final String GOOGLE_NOW_SEARCH_ACTION = "com.google.android.gms.actions.SEARCH_ACTION"; + @Override public final void onCreate(final Bundle savedInstanceState) { super.onCreate(savedInstanceState); @@ -81,8 +84,8 @@ public class SearchActivity extends AbstractActionBarActivity implements Coordin return; } - // search query - if (Intent.ACTION_SEARCH.equals(intent.getAction())) { + // search query, from search toolbar or from google now + if (Intent.ACTION_SEARCH.equals(intent.getAction()) || GOOGLE_NOW_SEARCH_ACTION.equals(intent.getAction())) { hideKeyboard(); final String query = intent.getStringExtra(SearchManager.QUERY); final boolean keywordSearch = intent.getBooleanExtra(Intents.EXTRA_KEYWORD_SEARCH, true); @@ -124,7 +127,7 @@ public class SearchActivity extends AbstractActionBarActivity implements Coordin /** * Performs a search for query either as geocode, trackable code or keyword * - * @param query + * @param nonTrimmedQuery * String to search for * @param keywordSearch * Set to true if keyword search should be performed if query isn't GC or TB @@ -142,7 +145,7 @@ public class SearchActivity extends AbstractActionBarActivity implements Coordin } final IConnector connector = ConnectorFactory.getConnector(geocode); - if (connector instanceof ISearchByGeocode) { + if (connector instanceof ISearchByGeocode && geocode != null) { CacheDetailActivity.startActivity(this, geocode.toUpperCase(Locale.US)); return true; } @@ -159,7 +162,7 @@ public class SearchActivity extends AbstractActionBarActivity implements Coordin } } - if (trackableConnector != ConnectorFactory.UNKNOWN_TRACKABLE_CONNECTOR) { + if (trackableConnector != ConnectorFactory.UNKNOWN_TRACKABLE_CONNECTOR && geocode != null) { final Intent trackablesIntent = new Intent(this, TrackableActivity.class); trackablesIntent.putExtra(Intents.EXTRA_GEOCODE, geocode.toUpperCase(Locale.US)); startActivity(trackablesIntent); @@ -291,7 +294,7 @@ public class SearchActivity extends AbstractActionBarActivity implements Coordin } private void updateCoordinates() { - final CoordinatesInputDialog coordsDialog = CoordinatesInputDialog.getInstance(null, null, app.currentGeo()); + final CoordinatesInputDialog coordsDialog = CoordinatesInputDialog.getInstance(null, null, Sensors.getInstance().currentGeo()); coordsDialog.setCancelable(true); coordsDialog.show(getSupportFragmentManager(), "wpedit_dialog"); } @@ -307,14 +310,12 @@ public class SearchActivity extends AbstractActionBarActivity implements Coordin final String lonText = StringUtils.trim(buttonLongitude.getText().toString()); if (StringUtils.isEmpty(latText) || StringUtils.isEmpty(lonText)) { - final IGeoData geo = app.currentGeo(); - if (geo.getCoords() != null) { - buttonLatitude.setText(geo.getCoords().format(GeopointFormatter.Format.LAT_DECMINUTE)); - buttonLongitude.setText(geo.getCoords().format(GeopointFormatter.Format.LON_DECMINUTE)); - } + final GeoData geo = Sensors.getInstance().currentGeo(); + buttonLatitude.setText(geo.getCoords().format(GeopointFormatter.Format.LAT_DECMINUTE)); + buttonLongitude.setText(geo.getCoords().format(GeopointFormatter.Format.LON_DECMINUTE)); } else { try { - CacheListActivity.startActivityCoordinates(this, new Geopoint(latText, lonText)); + CacheListActivity.startActivityCoordinates(this, new Geopoint(latText, lonText), null); } catch (final Geopoint.ParseException e) { showToast(res.getString(e.resource)); } @@ -373,7 +374,7 @@ public class SearchActivity extends AbstractActionBarActivity implements Coordin } private void findByGeocodeFn() { - final String geocodeText = StringUtils.trim(geocodeEditText.getText().toString()); + final String geocodeText = StringUtils.trimToEmpty(geocodeEditText.getText().toString()); if (StringUtils.isBlank(geocodeText) || geocodeText.equalsIgnoreCase("GC")) { Dialogs.message(this, R.string.warn_search_help_title, R.string.warn_search_help_gccode); @@ -384,7 +385,7 @@ public class SearchActivity extends AbstractActionBarActivity implements Coordin } private void findTrackableFn() { - final String trackableText = StringUtils.trim(trackableEditText.getText().toString()); + final String trackableText = StringUtils.trimToEmpty(trackableEditText.getText().toString()); if (StringUtils.isBlank(trackableText) || trackableText.equalsIgnoreCase("TB")) { Dialogs.message(this, R.string.warn_search_help_title, R.string.warn_search_help_tb); |