aboutsummaryrefslogtreecommitdiffstats
path: root/main/src/cgeo/geocaching/PocketQueryList.java
diff options
context:
space:
mode:
authormucek4 <tomaz@gorenc.org>2013-09-04 10:44:53 +0200
committermucek4 <tomaz@gorenc.org>2013-09-04 10:44:53 +0200
commitbd09f1887a8e6a8e9b919d4605c04155a3e73760 (patch)
tree29e65f4b81e983300f080a3509ee982576bfeb14 /main/src/cgeo/geocaching/PocketQueryList.java
parent8fe25127326d3b29d53cd3ef663aa6e46241fcbc (diff)
downloadcgeo-bd09f1887a8e6a8e9b919d4605c04155a3e73760.zip
cgeo-bd09f1887a8e6a8e9b919d4605c04155a3e73760.tar.gz
cgeo-bd09f1887a8e6a8e9b919d4605c04155a3e73760.tar.bz2
Fix 2830 Browse PQs as nearby search
Diffstat (limited to 'main/src/cgeo/geocaching/PocketQueryList.java')
-rw-r--r--main/src/cgeo/geocaching/PocketQueryList.java124
1 files changed, 124 insertions, 0 deletions
diff --git a/main/src/cgeo/geocaching/PocketQueryList.java b/main/src/cgeo/geocaching/PocketQueryList.java
new file mode 100644
index 0000000..cef4463
--- /dev/null
+++ b/main/src/cgeo/geocaching/PocketQueryList.java
@@ -0,0 +1,124 @@
+package cgeo.geocaching;
+
+import cgeo.geocaching.activity.ActivityMixin;
+import cgeo.geocaching.connector.gc.GCParser;
+import cgeo.geocaching.utils.RunnableWithArgument;
+
+import android.app.Activity;
+import android.app.AlertDialog;
+import android.app.ProgressDialog;
+import android.content.DialogInterface;
+import android.content.res.Resources;
+import android.os.Handler;
+import android.os.Message;
+
+import java.util.List;
+
+public final class PocketQueryList {
+
+ private final String guid;
+ private final int maxCaches;
+ private final String name;
+
+ public PocketQueryList(String guid, String name, int maxCaches) {
+ this.guid = guid;
+ this.name = name;
+ this.maxCaches = maxCaches;
+ }
+
+ public static class UserInterface {
+
+ List<PocketQueryList> pocketQueryList = null;
+ RunnableWithArgument<PocketQueryList> runAfterwards;
+
+ private Handler loadPocketQueryHandler = new Handler() {
+
+ @Override
+ public void handleMessage(Message msg) {
+ if ((pocketQueryList == null) || (pocketQueryList.size() == 0)) {
+ if (waitDialog != null) {
+ waitDialog.dismiss();
+ }
+
+ ActivityMixin.showToast(activity, res.getString(R.string.warn_no_pocket_query_found));
+
+ return;
+ }
+
+ if (waitDialog != null) {
+ waitDialog.dismiss();
+ }
+
+ final CharSequence[] items = new CharSequence[pocketQueryList.size()];
+
+ for (int i = 0; i < pocketQueryList.size(); i++) {
+ PocketQueryList pq = pocketQueryList.get(i);
+
+ items[i] = pq.name + " (" + pq.maxCaches + ")";
+
+ }
+
+ AlertDialog.Builder builder = new AlertDialog.Builder(activity);
+ builder.setTitle(res.getString(R.string.search_pocket_select));
+ builder.setItems(items, new DialogInterface.OnClickListener() {
+ @Override
+ public void onClick(DialogInterface dialogInterface, int itemId) {
+ runAfterwards.run(pocketQueryList.get(itemId));
+ }
+ });
+ builder.create().show();
+
+ }
+ };
+
+ private class LoadPocketQueryListThread extends Thread {
+ final private Handler handler;
+
+ public LoadPocketQueryListThread(Handler handlerIn) {
+ handler = handlerIn;
+ }
+
+ @Override
+ public void run() {
+ pocketQueryList = GCParser.searchPocketQueryList();
+ handler.sendMessage(Message.obtain());
+ }
+ }
+
+ private final Activity activity;
+ private final cgeoapplication app;
+ private final Resources res;
+ private ProgressDialog waitDialog = null;
+
+ public UserInterface(final Activity activity) {
+ this.activity = activity;
+ app = cgeoapplication.getInstance();
+ res = app.getResources();
+ }
+
+ public void promptForListSelection(final RunnableWithArgument<PocketQueryList> runAfterwards) {
+
+ this.runAfterwards = runAfterwards;
+
+ waitDialog = ProgressDialog.show(activity, res.getString(R.string.search_pocket_title), res.getString(R.string.search_pocket_loading), true, true);
+
+ LoadPocketQueryListThread thread = new LoadPocketQueryListThread(loadPocketQueryHandler);
+ thread.start();
+ }
+
+
+ }
+
+ public String getGuid() {
+ return guid;
+ }
+
+ public int getMaxCaches() {
+ return maxCaches;
+ }
+
+ public String getName() {
+ return name;
+ }
+
+}