aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorBananeweizen <bananeweizen@gmx.de>2011-09-05 17:47:29 +0200
committerBananeweizen <bananeweizen@gmx.de>2011-09-05 17:47:29 +0200
commitf3c39234c6b9d0eb19be699aa0e41a9f44c25f96 (patch)
tree6bad68918412ba176396e746f444a5bc3a3083b1
parent78fa7bc4e9c4dd7fd48506da2d16bbace11a2855 (diff)
downloadcgeo-f3c39234c6b9d0eb19be699aa0e41a9f44c25f96.zip
cgeo-f3c39234c6b9d0eb19be699aa0e41a9f44c25f96.tar.gz
cgeo-f3c39234c6b9d0eb19be699aa0e41a9f44c25f96.tar.bz2
fix #186: Back from TB-detail should go to TB-list, sort trackables by
name, go directly into details if there is only one TB
-rw-r--r--src/cgeo/geocaching/cgData.java2
-rw-r--r--src/cgeo/geocaching/cgeodetail.java13
-rw-r--r--src/cgeo/geocaching/cgeotrackable.java11
-rw-r--r--src/cgeo/geocaching/cgeotrackables.java14
4 files changed, 27 insertions, 13 deletions
diff --git a/src/cgeo/geocaching/cgData.java b/src/cgeo/geocaching/cgData.java
index 6e184bc..f830052 100644
--- a/src/cgeo/geocaching/cgData.java
+++ b/src/cgeo/geocaching/cgData.java
@@ -2357,7 +2357,7 @@ public class cgData {
null,
null,
null,
- null,
+ "title COLLATE NOCASE ASC",
"100");
if (cursor != null && cursor.getCount() > 0) {
diff --git a/src/cgeo/geocaching/cgeodetail.java b/src/cgeo/geocaching/cgeodetail.java
index 7a7cee0..64d521d 100644
--- a/src/cgeo/geocaching/cgeodetail.java
+++ b/src/cgeo/geocaching/cgeodetail.java
@@ -1669,9 +1669,16 @@ public class cgeodetail extends AbstractActivity {
public void onClick(View arg0) {
// show list of trackables
try {
- Intent trackablesIntent = new Intent(cgeodetail.this, cgeotrackables.class);
- trackablesIntent.putExtra("geocode", geocode.toUpperCase());
- startActivity(trackablesIntent);
+ // jump directly into details if there is only one trackable
+ if (cache != null && cache.inventory != null && cache.inventory.size() == 1) {
+ cgTrackable trackable = cache.inventory.get(0);
+ cgeotrackable.startActivity(cgeodetail.this, trackable.guid, trackable.geocode, trackable.name);
+ }
+ else {
+ Intent trackablesIntent = new Intent(cgeodetail.this, cgeotrackables.class);
+ trackablesIntent.putExtra("geocode", geocode.toUpperCase());
+ startActivity(trackablesIntent);
+ }
} catch (Exception e) {
Log.e(cgSettings.tag, "cgeodetail.selectTrackable: " + e.toString());
}
diff --git a/src/cgeo/geocaching/cgeotrackable.java b/src/cgeo/geocaching/cgeotrackable.java
index 8959771..de0f9a6 100644
--- a/src/cgeo/geocaching/cgeotrackable.java
+++ b/src/cgeo/geocaching/cgeotrackable.java
@@ -617,4 +617,13 @@ public class cgeotrackable extends AbstractActivity {
}
}
}
-}
+
+ public static void startActivity(final AbstractActivity fromContext,
+ final String guid, final String geocode, final String name) {
+ Intent trackableIntent = new Intent(fromContext, cgeotrackable.class);
+ trackableIntent.putExtra("guid", guid);
+ trackableIntent.putExtra("geocode", geocode);
+ trackableIntent.putExtra("name", name);
+ fromContext.startActivity(trackableIntent);
+ }
+} \ No newline at end of file
diff --git a/src/cgeo/geocaching/cgeotrackables.java b/src/cgeo/geocaching/cgeotrackables.java
index 3005ad4..14c2364 100644
--- a/src/cgeo/geocaching/cgeotrackables.java
+++ b/src/cgeo/geocaching/cgeotrackables.java
@@ -3,7 +3,6 @@ package cgeo.geocaching;
import java.util.ArrayList;
import android.app.ProgressDialog;
-import android.content.Intent;
import android.os.Bundle;
import android.os.Handler;
import android.os.Message;
@@ -43,6 +42,11 @@ public class cgeotrackables extends AbstractActivity {
finish();
return;
+ } else if (trackables.size() == 1){
+ cgTrackable trackable = trackables.get(0);
+ cgeotrackable.startActivity(cgeotrackables.this, trackable.guid, trackable.geocode, trackable.name);
+ finish();
+ return;
} else {
LinearLayout oneTbPre = null;
for (cgTrackable trackable : trackables) {
@@ -139,13 +143,7 @@ public class cgeotrackables extends AbstractActivity {
}
public void onClick(View arg0) {
- Intent trackableIntent = new Intent(cgeotrackables.this, cgeotrackable.class);
- trackableIntent.putExtra("guid", guid);
- trackableIntent.putExtra("geocode", geocode);
- trackableIntent.putExtra("name", name);
- startActivity(trackableIntent);
-
- finish();
+ cgeotrackable.startActivity(cgeotrackables.this, guid, geocode, name);
return;
}
}