aboutsummaryrefslogtreecommitdiffstats
path: root/src/cgeo/geocaching/cgeoadvsearch.java
diff options
context:
space:
mode:
Diffstat (limited to 'src/cgeo/geocaching/cgeoadvsearch.java')
-rw-r--r--src/cgeo/geocaching/cgeoadvsearch.java959
1 files changed, 480 insertions, 479 deletions
diff --git a/src/cgeo/geocaching/cgeoadvsearch.java b/src/cgeo/geocaching/cgeoadvsearch.java
index 70db229..e70e331 100644
--- a/src/cgeo/geocaching/cgeoadvsearch.java
+++ b/src/cgeo/geocaching/cgeoadvsearch.java
@@ -1,8 +1,7 @@
package cgeo.geocaching;
-import java.util.Map;
-import java.util.regex.Matcher;
-import java.util.regex.Pattern;
+import cgeo.geocaching.activity.AbstractActivity;
+import cgeo.geocaching.geopoint.Geopoint;
import org.apache.commons.lang3.StringUtils;
@@ -22,484 +21,486 @@ import android.widget.AutoCompleteTextView;
import android.widget.Button;
import android.widget.EditText;
import android.widget.TextView;
-import cgeo.geocaching.activity.AbstractActivity;
-import cgeo.geocaching.geopoint.Geopoint;
+
+import java.util.Map;
+import java.util.regex.Matcher;
+import java.util.regex.Pattern;
public class cgeoadvsearch extends AbstractActivity {
- private static final int MENU_SEARCH_OWN_CACHES = 1;
- private cgGeo geo = null;
- private cgUpdateLoc geoUpdate = new update();
- private EditText latEdit = null;
- private EditText lonEdit = null;
- private String[] geocodesInCache = null;
-
- public cgeoadvsearch() {
- super("c:geo-search");
- }
-
- @Override
- public void onCreate(Bundle savedInstanceState) {
- super.onCreate(savedInstanceState);
-
- // init
- app.setAction(null);
-
- // search query
- Intent intent = getIntent();
- if (Intent.ACTION_SEARCH.equals(intent.getAction())) {
- final String query = intent.getStringExtra(SearchManager.QUERY);
- final boolean found = instantSearch(query);
-
- if (found) {
- finish();
-
- return;
- }
- }
-
- setTheme();
- setContentView(R.layout.search);
- setTitle(res.getString(R.string.search));
-
- init();
- }
-
- @Override
- public void onConfigurationChanged(Configuration newConfig) {
- super.onConfigurationChanged(newConfig);
-
- init();
- }
-
- @Override
- public void onResume() {
- super.onResume();
-
- settings.load();
- init();
- }
-
- @Override
- public void onDestroy() {
- if (geo != null) {
- geo = app.removeGeo();
- }
-
- super.onDestroy();
- }
+ private static final int MENU_SEARCH_OWN_CACHES = 1;
+ private cgGeo geo = null;
+ private cgUpdateLoc geoUpdate = new update();
+ private EditText latEdit = null;
+ private EditText lonEdit = null;
+ private String[] geocodesInCache = null;
+
+ public cgeoadvsearch() {
+ super("c:geo-search");
+ }
+
+ @Override
+ public void onCreate(Bundle savedInstanceState) {
+ super.onCreate(savedInstanceState);
+
+ // init
+ app.setAction(null);
+
+ // search query
+ Intent intent = getIntent();
+ if (Intent.ACTION_SEARCH.equals(intent.getAction())) {
+ final String query = intent.getStringExtra(SearchManager.QUERY);
+ final boolean found = instantSearch(query);
+
+ if (found) {
+ finish();
+
+ return;
+ }
+ }
+
+ setTheme();
+ setContentView(R.layout.search);
+ setTitle(res.getString(R.string.search));
+
+ init();
+ }
+
+ @Override
+ public void onConfigurationChanged(Configuration newConfig) {
+ super.onConfigurationChanged(newConfig);
+
+ init();
+ }
+
+ @Override
+ public void onResume() {
+ super.onResume();
+
+ settings.load();
+ init();
+ }
+
+ @Override
+ public void onDestroy() {
+ if (geo != null) {
+ geo = app.removeGeo();
+ }
+
+ super.onDestroy();
+ }
+
+ @Override
+ public void onStop() {
+ if (geo != null) {
+ geo = app.removeGeo();
+ }
+
+ super.onStop();
+ }
+
+ @Override
+ public void onPause() {
+ if (geo != null) {
+ geo = app.removeGeo();
+ }
+
+ super.onPause();
+ }
+
+ private boolean instantSearch(String query) {
+ boolean found = false;
+
+ final Pattern gcCode = Pattern.compile("^GC[0-9A-Z]+$", Pattern.CASE_INSENSITIVE);
+ final Pattern tbCode = Pattern.compile("^TB[0-9A-Z]+$", Pattern.CASE_INSENSITIVE);
+ final Matcher gcCodeM = gcCode.matcher(query);
+ final Matcher tbCodeM = tbCode.matcher(query);
- @Override
- public void onStop() {
- if (geo != null) {
- geo = app.removeGeo();
- }
-
- super.onStop();
- }
-
- @Override
- public void onPause() {
- if (geo != null) {
- geo = app.removeGeo();
- }
-
- super.onPause();
- }
-
- private boolean instantSearch(String query) {
- boolean found = false;
-
- final Pattern gcCode = Pattern.compile("^GC[0-9A-Z]+$", Pattern.CASE_INSENSITIVE);
- final Pattern tbCode = Pattern.compile("^TB[0-9A-Z]+$", Pattern.CASE_INSENSITIVE);
- final Matcher gcCodeM = gcCode.matcher(query);
- final Matcher tbCodeM = tbCode.matcher(query);
-
- try {
- if (gcCodeM.find()) { // GC-code
- final Intent cachesIntent = new Intent(this, cgeodetail.class);
- cachesIntent.putExtra("geocode", query.trim().toUpperCase());
- startActivity(cachesIntent);
-
- found = true;
- } else if (tbCodeM.find()) { // TB-code
- final Intent trackablesIntent = new Intent(this, cgeotrackable.class);
- trackablesIntent.putExtra("geocode", query.trim().toUpperCase());
- startActivity(trackablesIntent);
-
- found = true;
- } else { // keyword (fallback)
- final Intent cachesIntent = new Intent(this, cgeocaches.class);
- cachesIntent.putExtra("type", "keyword");
- cachesIntent.putExtra("keyword", query);
- cachesIntent.putExtra("cachetype", settings.cacheType);
- startActivity(cachesIntent);
-
- found = true;
- }
- } catch (Exception e) {
- Log.w(cgSettings.tag, "cgeoadvsearch.instantSearch: " + e.toString());
- }
-
- return found;
- }
-
- private void init() {
- settings.getLogin();
- settings.reloadCacheType();
-
- if (settings.cacheType != null && cgBase.cacheTypesInv.containsKey(settings.cacheType) == false) {
- settings.setCacheType(null);
- }
-
- if (geo == null) {
- geo = app.startGeo(this, geoUpdate, base, settings, 0, 0);
- }
-
- ((Button) findViewById(R.id.buttonLatitude)).setOnClickListener(new findByCoordsAction());
- ((Button) findViewById(R.id.buttonLongitude)).setOnClickListener(new findByCoordsAction());
-
- final Button findByCoords = (Button) findViewById(R.id.search_coordinates);
- findByCoords.setOnClickListener(new findByCoordsListener());
-
- ((EditText) findViewById(R.id.address)).setOnEditorActionListener(new findByAddressAction());
-
- final Button findByAddress = (Button) findViewById(R.id.search_address);
- findByAddress.setOnClickListener(new findByAddressListener());
-
- final AutoCompleteTextView geocodeEdit = (AutoCompleteTextView) findViewById(R.id.geocode);
- geocodeEdit.setOnEditorActionListener(new findByGeocodeAction());
- geocodesInCache = app.geocodesInCache();
- if (geocodesInCache != null) {
- final ArrayAdapter<String> geocodesAdapter = new ArrayAdapter<String>(this, android.R.layout.simple_dropdown_item_1line, geocodesInCache);
- geocodeEdit.setAdapter(geocodesAdapter);
- }
-
- final Button displayByGeocode = (Button) findViewById(R.id.display_geocode);
- displayByGeocode.setOnClickListener(new findByGeocodeListener());
-
- ((EditText) findViewById(R.id.keyword)).setOnEditorActionListener(new findByKeywordAction());
-
- final Button findByKeyword = (Button) findViewById(R.id.search_keyword);
- findByKeyword.setOnClickListener(new findByKeywordListener());
-
- ((EditText) findViewById(R.id.username)).setOnEditorActionListener(new findByUsernameAction());
-
- final Button findByUserName = (Button) findViewById(R.id.search_username);
- findByUserName.setOnClickListener(new findByUsernameListener());
-
- ((EditText) findViewById(R.id.owner)).setOnEditorActionListener(new findByOwnerAction());
-
- final Button findByOwner = (Button) findViewById(R.id.search_owner);
- findByOwner.setOnClickListener(new OnClickListener() {
-
- @Override
- public void onClick(View arg0) {
- findByOwnerFn();
- }
- });
-
- EditText trackable = (EditText) findViewById(R.id.trackable);
- trackable.setOnEditorActionListener(new findTrackableAction());
-
- final Button displayTrackable = (Button) findViewById(R.id.display_trackable);
- displayTrackable.setOnClickListener(new findTrackableListener());
- }
-
- private class update extends cgUpdateLoc {
-
- @Override
- public void updateLoc(cgGeo geo) {
- if (geo == null) {
- return;
- }
-
- try {
- if (latEdit == null) {
- latEdit = (EditText) findViewById(R.id.latitude);
- }
- if (lonEdit == null) {
- lonEdit = (EditText) findViewById(R.id.longitude);
- }
-
- if (geo.coordsNow != null) {
- latEdit.setHint(cgBase.formatLatitude(geo.coordsNow.getLatitude(), false));
- lonEdit.setHint(cgBase.formatLongitude(geo.coordsNow.getLongitude(), false));
- }
- } catch (Exception e) {
- Log.w(cgSettings.tag, "Failed to update location.");
- }
- }
- }
-
- private class findByCoordsAction implements OnClickListener {
-
- @Override
- public void onClick(View arg0) {
- cgeocoords coordsDialog = new cgeocoords(cgeoadvsearch.this, settings, null, geo);
- coordsDialog.setCancelable(true);
- coordsDialog.setOnCoordinateUpdate(new cgeocoords.CoordinateUpdate() {
- @Override
- public void update(Geopoint gp) {
- ((Button) findViewById(R.id.buttonLatitude)).setText(cgBase.formatLatitude(gp.getLatitude(), true));
- ((Button) findViewById(R.id.buttonLongitude)).setText(cgBase.formatLongitude(gp.getLongitude(), true));
- }
- });
- coordsDialog.show();
- }
- }
-
- private class findByCoordsListener implements View.OnClickListener {
-
- public void onClick(View arg0) {
- findByCoordsFn();
- }
- }
-
- private void findByCoordsFn() {
- final Button latView = (Button) findViewById(R.id.buttonLatitude);
- final Button lonView = (Button) findViewById(R.id.buttonLongitude);
- final String latText = latView.getText().toString();
- final String lonText = lonView.getText().toString();
-
- if (StringUtils.isEmpty(latText) || StringUtils.isEmpty(lonText)) { // TODO: now coordinates
- latView.setText(cgBase.formatLatitude(geo.coordsNow.getLatitude(), true));
- lonView.setText(cgBase.formatLongitude(geo.coordsNow.getLongitude(), true));
- } else {
- Map<String, Object> latParsed = cgBase.parseCoordinate(latText, "lat");
- Map<String, Object> lonParsed = cgBase.parseCoordinate(lonText, "lat");
-
- if (latParsed == null || latParsed.get("coordinate") == null || latParsed.get("string") == null) {
- showToast(res.getString(R.string.err_parse_lat));
- return;
- }
-
- if (lonParsed == null || lonParsed.get("coordinate") == null || lonParsed.get("string") == null) {
- showToast(res.getString(R.string.err_parse_lon));
- return;
- }
-
- final Intent cachesIntent = new Intent(this, cgeocaches.class);
- cachesIntent.putExtra("type", "coordinate");
- cachesIntent.putExtra("latitude", (Double) latParsed.get("coordinate"));
- cachesIntent.putExtra("longitude", (Double) lonParsed.get("coordinate"));
- cachesIntent.putExtra("cachetype", settings.cacheType);
- startActivity(cachesIntent);
- }
- }
-
- private class findByKeywordAction implements TextView.OnEditorActionListener {
-
- @Override
- public boolean onEditorAction(TextView view, int action, KeyEvent event) {
- if (action == EditorInfo.IME_ACTION_GO) {
- findByKeywordFn();
- return true;
- }
-
- return false;
- }
- }
-
- private class findByKeywordListener implements View.OnClickListener {
-
- public void onClick(View arg0) {
- findByKeywordFn();
- }
- }
-
- private void findByKeywordFn() {
- // find caches by coordinates
- String keyText = ((EditText) findViewById(R.id.keyword)).getText().toString();
-
- if (StringUtils.isBlank(keyText)) {
- helpDialog(res.getString(R.string.warn_search_help_title), res.getString(R.string.warn_search_help_keyword));
- return;
- }
-
- final Intent cachesIntent = new Intent(this, cgeocaches.class);
- cachesIntent.putExtra("type", "keyword");
- cachesIntent.putExtra("keyword", keyText);
- cachesIntent.putExtra("cachetype", settings.cacheType);
- startActivity(cachesIntent);
- }
-
- private class findByAddressAction implements TextView.OnEditorActionListener {
-
- @Override
- public boolean onEditorAction(TextView view, int action, KeyEvent event) {
- if (action == EditorInfo.IME_ACTION_GO) {
- findByAddressFn();
- return true;
- }
-
- return false;
- }
- }
-
- private class findByAddressListener implements View.OnClickListener {
-
- public void onClick(View arg0) {
- findByAddressFn();
- }
- }
-
- private void findByAddressFn() {
- final String addText = ((EditText) findViewById(R.id.address)).getText().toString();
-
- if (StringUtils.isBlank(addText)) {
- helpDialog(res.getString(R.string.warn_search_help_title), res.getString(R.string.warn_search_help_address));
- return;
- }
-
- final Intent addressesIntent = new Intent(this, cgeoaddresses.class);
- addressesIntent.putExtra("keyword", addText);
- startActivity(addressesIntent);
- }
-
- private class findByUsernameAction implements TextView.OnEditorActionListener {
-
- @Override
- public boolean onEditorAction(TextView view, int action, KeyEvent event) {
- if (action == EditorInfo.IME_ACTION_GO) {
- findByUsernameFn();
- return true;
- }
-
- return false;
- }
- }
-
- private class findByUsernameListener implements View.OnClickListener {
-
- public void onClick(View arg0) {
- findByUsernameFn();
- }
- }
-
- public void findByUsernameFn() {
- final String usernameText = ((EditText) findViewById(R.id.username)).getText().toString();
-
- if (StringUtils.isBlank(usernameText)) {
- helpDialog(res.getString(R.string.warn_search_help_title), res.getString(R.string.warn_search_help_user));
- return;
- }
-
- final Intent cachesIntent = new Intent(this, cgeocaches.class);
- cachesIntent.putExtra("type", "username");
- cachesIntent.putExtra("username", usernameText);
- cachesIntent.putExtra("cachetype", settings.cacheType);
- startActivity(cachesIntent);
- }
-
- private class findByOwnerAction implements TextView.OnEditorActionListener {
-
- @Override
- public boolean onEditorAction(TextView view, int action, KeyEvent event) {
- if (action == EditorInfo.IME_ACTION_GO) {
- findByOwnerFn();
- return true;
- }
-
- return false;
- }
- }
-
- private void findByOwnerFn() {
- findByOwnerFn(((EditText) findViewById(R.id.owner)).getText().toString());
- }
-
- private void findByOwnerFn(String userName) {
- final String usernameText = StringUtils.trimToEmpty(userName);
-
- if (StringUtils.isBlank(usernameText)) {
- helpDialog(res.getString(R.string.warn_search_help_title), res.getString(R.string.warn_search_help_user));
- return;
- }
-
- final Intent cachesIntent = new Intent(this, cgeocaches.class);
- cachesIntent.putExtra("type", "owner");
- cachesIntent.putExtra("username", usernameText);
- cachesIntent.putExtra("cachetype", settings.cacheType);
- startActivity(cachesIntent);
- }
-
- private class findByGeocodeAction implements TextView.OnEditorActionListener {
-
- @Override
- public boolean onEditorAction(TextView view, int action, KeyEvent event) {
- if (action == EditorInfo.IME_ACTION_GO) {
- findByGeocodeFn();
- return true;
- }
-
- return false;
- }
- }
-
- private class findByGeocodeListener implements View.OnClickListener {
-
- public void onClick(View arg0) {
- findByGeocodeFn();
- }
- }
-
- private void findByGeocodeFn() {
- final String geocodeText = ((EditText) findViewById(R.id.geocode)).getText().toString();
-
- if (StringUtils.isBlank(geocodeText) || geocodeText.equalsIgnoreCase("GC")) {
- helpDialog(res.getString(R.string.warn_search_help_title), res.getString(R.string.warn_search_help_gccode));
- return;
- }
-
- cgeodetail.startActivity(this, geocodeText);
- }
-
- private class findTrackableAction implements TextView.OnEditorActionListener {
-
- @Override
- public boolean onEditorAction(TextView view, int action, KeyEvent event) {
- if (action == EditorInfo.IME_ACTION_GO) {
- findTrackableFn();
- return true;
- }
-
- return false;
- }
- }
-
- private class findTrackableListener implements View.OnClickListener {
-
- public void onClick(View arg0) {
- findTrackableFn();
- }
- }
-
- private void findTrackableFn() {
- final String trackableText = ((EditText) findViewById(R.id.trackable)).getText().toString();
-
- if (StringUtils.isBlank(trackableText)|| trackableText.equalsIgnoreCase("TB")) {
- helpDialog(res.getString(R.string.warn_search_help_title), res.getString(R.string.warn_search_help_tb));
- return;
- }
-
- final Intent trackablesIntent = new Intent(this, cgeotrackable.class);
- trackablesIntent.putExtra("geocode", trackableText.toUpperCase());
- startActivity(trackablesIntent);
- }
-
- @Override
- public boolean onCreateOptionsMenu(Menu menu) {
- menu.add(0, MENU_SEARCH_OWN_CACHES, 0, res.getString(R.string.search_own_caches));
- return true;
- }
-
- @Override
- public boolean onOptionsItemSelected(MenuItem item) {
- if (item.getItemId() == MENU_SEARCH_OWN_CACHES) {
- findByOwnerFn(settings.getUsername());
- return true;
- }
- return super.onOptionsItemSelected(item);
- }
+ try {
+ if (gcCodeM.find()) { // GC-code
+ final Intent cachesIntent = new Intent(this, cgeodetail.class);
+ cachesIntent.putExtra("geocode", query.trim().toUpperCase());
+ startActivity(cachesIntent);
+
+ found = true;
+ } else if (tbCodeM.find()) { // TB-code
+ final Intent trackablesIntent = new Intent(this, cgeotrackable.class);
+ trackablesIntent.putExtra("geocode", query.trim().toUpperCase());
+ startActivity(trackablesIntent);
+
+ found = true;
+ } else { // keyword (fallback)
+ final Intent cachesIntent = new Intent(this, cgeocaches.class);
+ cachesIntent.putExtra("type", "keyword");
+ cachesIntent.putExtra("keyword", query);
+ cachesIntent.putExtra("cachetype", settings.cacheType);
+ startActivity(cachesIntent);
+
+ found = true;
+ }
+ } catch (Exception e) {
+ Log.w(cgSettings.tag, "cgeoadvsearch.instantSearch: " + e.toString());
+ }
+
+ return found;
+ }
+
+ private void init() {
+ settings.getLogin();
+ settings.reloadCacheType();
+
+ if (settings.cacheType != null && cgBase.cacheTypesInv.containsKey(settings.cacheType) == false) {
+ settings.setCacheType(null);
+ }
+
+ if (geo == null) {
+ geo = app.startGeo(this, geoUpdate, base, settings, 0, 0);
+ }
+
+ ((Button) findViewById(R.id.buttonLatitude)).setOnClickListener(new findByCoordsAction());
+ ((Button) findViewById(R.id.buttonLongitude)).setOnClickListener(new findByCoordsAction());
+
+ final Button findByCoords = (Button) findViewById(R.id.search_coordinates);
+ findByCoords.setOnClickListener(new findByCoordsListener());
+
+ ((EditText) findViewById(R.id.address)).setOnEditorActionListener(new findByAddressAction());
+
+ final Button findByAddress = (Button) findViewById(R.id.search_address);
+ findByAddress.setOnClickListener(new findByAddressListener());
+
+ final AutoCompleteTextView geocodeEdit = (AutoCompleteTextView) findViewById(R.id.geocode);
+ geocodeEdit.setOnEditorActionListener(new findByGeocodeAction());
+ geocodesInCache = app.geocodesInCache();
+ if (geocodesInCache != null) {
+ final ArrayAdapter<String> geocodesAdapter = new ArrayAdapter<String>(this, android.R.layout.simple_dropdown_item_1line, geocodesInCache);
+ geocodeEdit.setAdapter(geocodesAdapter);
+ }
+
+ final Button displayByGeocode = (Button) findViewById(R.id.display_geocode);
+ displayByGeocode.setOnClickListener(new findByGeocodeListener());
+
+ ((EditText) findViewById(R.id.keyword)).setOnEditorActionListener(new findByKeywordAction());
+
+ final Button findByKeyword = (Button) findViewById(R.id.search_keyword);
+ findByKeyword.setOnClickListener(new findByKeywordListener());
+
+ ((EditText) findViewById(R.id.username)).setOnEditorActionListener(new findByUsernameAction());
+
+ final Button findByUserName = (Button) findViewById(R.id.search_username);
+ findByUserName.setOnClickListener(new findByUsernameListener());
+
+ ((EditText) findViewById(R.id.owner)).setOnEditorActionListener(new findByOwnerAction());
+
+ final Button findByOwner = (Button) findViewById(R.id.search_owner);
+ findByOwner.setOnClickListener(new OnClickListener() {
+
+ @Override
+ public void onClick(View arg0) {
+ findByOwnerFn();
+ }
+ });
+
+ EditText trackable = (EditText) findViewById(R.id.trackable);
+ trackable.setOnEditorActionListener(new findTrackableAction());
+
+ final Button displayTrackable = (Button) findViewById(R.id.display_trackable);
+ displayTrackable.setOnClickListener(new findTrackableListener());
+ }
+
+ private class update extends cgUpdateLoc {
+
+ @Override
+ public void updateLoc(cgGeo geo) {
+ if (geo == null) {
+ return;
+ }
+
+ try {
+ if (latEdit == null) {
+ latEdit = (EditText) findViewById(R.id.latitude);
+ }
+ if (lonEdit == null) {
+ lonEdit = (EditText) findViewById(R.id.longitude);
+ }
+
+ if (geo.coordsNow != null) {
+ latEdit.setHint(cgBase.formatLatitude(geo.coordsNow.getLatitude(), false));
+ lonEdit.setHint(cgBase.formatLongitude(geo.coordsNow.getLongitude(), false));
+ }
+ } catch (Exception e) {
+ Log.w(cgSettings.tag, "Failed to update location.");
+ }
+ }
+ }
+
+ private class findByCoordsAction implements OnClickListener {
+
+ @Override
+ public void onClick(View arg0) {
+ cgeocoords coordsDialog = new cgeocoords(cgeoadvsearch.this, settings, null, geo);
+ coordsDialog.setCancelable(true);
+ coordsDialog.setOnCoordinateUpdate(new cgeocoords.CoordinateUpdate() {
+ @Override
+ public void update(Geopoint gp) {
+ ((Button) findViewById(R.id.buttonLatitude)).setText(cgBase.formatLatitude(gp.getLatitude(), true));
+ ((Button) findViewById(R.id.buttonLongitude)).setText(cgBase.formatLongitude(gp.getLongitude(), true));
+ }
+ });
+ coordsDialog.show();
+ }
+ }
+
+ private class findByCoordsListener implements View.OnClickListener {
+
+ public void onClick(View arg0) {
+ findByCoordsFn();
+ }
+ }
+
+ private void findByCoordsFn() {
+ final Button latView = (Button) findViewById(R.id.buttonLatitude);
+ final Button lonView = (Button) findViewById(R.id.buttonLongitude);
+ final String latText = latView.getText().toString();
+ final String lonText = lonView.getText().toString();
+
+ if (StringUtils.isEmpty(latText) || StringUtils.isEmpty(lonText)) { // TODO: now coordinates
+ latView.setText(cgBase.formatLatitude(geo.coordsNow.getLatitude(), true));
+ lonView.setText(cgBase.formatLongitude(geo.coordsNow.getLongitude(), true));
+ } else {
+ Map<String, Object> latParsed = cgBase.parseCoordinate(latText, "lat");
+ Map<String, Object> lonParsed = cgBase.parseCoordinate(lonText, "lat");
+
+ if (latParsed == null || latParsed.get("coordinate") == null || latParsed.get("string") == null) {
+ showToast(res.getString(R.string.err_parse_lat));
+ return;
+ }
+
+ if (lonParsed == null || lonParsed.get("coordinate") == null || lonParsed.get("string") == null) {
+ showToast(res.getString(R.string.err_parse_lon));
+ return;
+ }
+
+ final Intent cachesIntent = new Intent(this, cgeocaches.class);
+ cachesIntent.putExtra("type", "coordinate");
+ cachesIntent.putExtra("latitude", (Double) latParsed.get("coordinate"));
+ cachesIntent.putExtra("longitude", (Double) lonParsed.get("coordinate"));
+ cachesIntent.putExtra("cachetype", settings.cacheType);
+ startActivity(cachesIntent);
+ }
+ }
+
+ private class findByKeywordAction implements TextView.OnEditorActionListener {
+
+ @Override
+ public boolean onEditorAction(TextView view, int action, KeyEvent event) {
+ if (action == EditorInfo.IME_ACTION_GO) {
+ findByKeywordFn();
+ return true;
+ }
+
+ return false;
+ }
+ }
+
+ private class findByKeywordListener implements View.OnClickListener {
+
+ public void onClick(View arg0) {
+ findByKeywordFn();
+ }
+ }
+
+ private void findByKeywordFn() {
+ // find caches by coordinates
+ String keyText = ((EditText) findViewById(R.id.keyword)).getText().toString();
+
+ if (StringUtils.isBlank(keyText)) {
+ helpDialog(res.getString(R.string.warn_search_help_title), res.getString(R.string.warn_search_help_keyword));
+ return;
+ }
+
+ final Intent cachesIntent = new Intent(this, cgeocaches.class);
+ cachesIntent.putExtra("type", "keyword");
+ cachesIntent.putExtra("keyword", keyText);
+ cachesIntent.putExtra("cachetype", settings.cacheType);
+ startActivity(cachesIntent);
+ }
+
+ private class findByAddressAction implements TextView.OnEditorActionListener {
+
+ @Override
+ public boolean onEditorAction(TextView view, int action, KeyEvent event) {
+ if (action == EditorInfo.IME_ACTION_GO) {
+ findByAddressFn();
+ return true;
+ }
+
+ return false;
+ }
+ }
+
+ private class findByAddressListener implements View.OnClickListener {
+
+ public void onClick(View arg0) {
+ findByAddressFn();
+ }
+ }
+
+ private void findByAddressFn() {
+ final String addText = ((EditText) findViewById(R.id.address)).getText().toString();
+
+ if (StringUtils.isBlank(addText)) {
+ helpDialog(res.getString(R.string.warn_search_help_title), res.getString(R.string.warn_search_help_address));
+ return;
+ }
+
+ final Intent addressesIntent = new Intent(this, cgeoaddresses.class);
+ addressesIntent.putExtra("keyword", addText);
+ startActivity(addressesIntent);
+ }
+
+ private class findByUsernameAction implements TextView.OnEditorActionListener {
+
+ @Override
+ public boolean onEditorAction(TextView view, int action, KeyEvent event) {
+ if (action == EditorInfo.IME_ACTION_GO) {
+ findByUsernameFn();
+ return true;
+ }
+
+ return false;
+ }
+ }
+
+ private class findByUsernameListener implements View.OnClickListener {
+
+ public void onClick(View arg0) {
+ findByUsernameFn();
+ }
+ }
+
+ public void findByUsernameFn() {
+ final String usernameText = ((EditText) findViewById(R.id.username)).getText().toString();
+
+ if (StringUtils.isBlank(usernameText)) {
+ helpDialog(res.getString(R.string.warn_search_help_title), res.getString(R.string.warn_search_help_user));
+ return;
+ }
+
+ final Intent cachesIntent = new Intent(this, cgeocaches.class);
+ cachesIntent.putExtra("type", "username");
+ cachesIntent.putExtra("username", usernameText);
+ cachesIntent.putExtra("cachetype", settings.cacheType);
+ startActivity(cachesIntent);
+ }
+
+ private class findByOwnerAction implements TextView.OnEditorActionListener {
+
+ @Override
+ public boolean onEditorAction(TextView view, int action, KeyEvent event) {
+ if (action == EditorInfo.IME_ACTION_GO) {
+ findByOwnerFn();
+ return true;
+ }
+
+ return false;
+ }
+ }
+
+ private void findByOwnerFn() {
+ findByOwnerFn(((EditText) findViewById(R.id.owner)).getText().toString());
+ }
+
+ private void findByOwnerFn(String userName) {
+ final String usernameText = StringUtils.trimToEmpty(userName);
+
+ if (StringUtils.isBlank(usernameText)) {
+ helpDialog(res.getString(R.string.warn_search_help_title), res.getString(R.string.warn_search_help_user));
+ return;
+ }
+
+ final Intent cachesIntent = new Intent(this, cgeocaches.class);
+ cachesIntent.putExtra("type", "owner");
+ cachesIntent.putExtra("username", usernameText);
+ cachesIntent.putExtra("cachetype", settings.cacheType);
+ startActivity(cachesIntent);
+ }
+
+ private class findByGeocodeAction implements TextView.OnEditorActionListener {
+
+ @Override
+ public boolean onEditorAction(TextView view, int action, KeyEvent event) {
+ if (action == EditorInfo.IME_ACTION_GO) {
+ findByGeocodeFn();
+ return true;
+ }
+
+ return false;
+ }
+ }
+
+ private class findByGeocodeListener implements View.OnClickListener {
+
+ public void onClick(View arg0) {
+ findByGeocodeFn();
+ }
+ }
+
+ private void findByGeocodeFn() {
+ final String geocodeText = ((EditText) findViewById(R.id.geocode)).getText().toString();
+
+ if (StringUtils.isBlank(geocodeText) || geocodeText.equalsIgnoreCase("GC")) {
+ helpDialog(res.getString(R.string.warn_search_help_title), res.getString(R.string.warn_search_help_gccode));
+ return;
+ }
+
+ cgeodetail.startActivity(this, geocodeText);
+ }
+
+ private class findTrackableAction implements TextView.OnEditorActionListener {
+
+ @Override
+ public boolean onEditorAction(TextView view, int action, KeyEvent event) {
+ if (action == EditorInfo.IME_ACTION_GO) {
+ findTrackableFn();
+ return true;
+ }
+
+ return false;
+ }
+ }
+
+ private class findTrackableListener implements View.OnClickListener {
+
+ public void onClick(View arg0) {
+ findTrackableFn();
+ }
+ }
+
+ private void findTrackableFn() {
+ final String trackableText = ((EditText) findViewById(R.id.trackable)).getText().toString();
+
+ if (StringUtils.isBlank(trackableText) || trackableText.equalsIgnoreCase("TB")) {
+ helpDialog(res.getString(R.string.warn_search_help_title), res.getString(R.string.warn_search_help_tb));
+ return;
+ }
+
+ final Intent trackablesIntent = new Intent(this, cgeotrackable.class);
+ trackablesIntent.putExtra("geocode", trackableText.toUpperCase());
+ startActivity(trackablesIntent);
+ }
+
+ @Override
+ public boolean onCreateOptionsMenu(Menu menu) {
+ menu.add(0, MENU_SEARCH_OWN_CACHES, 0, res.getString(R.string.search_own_caches));
+ return true;
+ }
+
+ @Override
+ public boolean onOptionsItemSelected(MenuItem item) {
+ if (item.getItemId() == MENU_SEARCH_OWN_CACHES) {
+ findByOwnerFn(settings.getUsername());
+ return true;
+ }
+ return super.onOptionsItemSelected(item);
+ }
}