From bd09f1887a8e6a8e9b919d4605c04155a3e73760 Mon Sep 17 00:00:00 2001 From: mucek4 Date: Wed, 4 Sep 2013 10:44:53 +0200 Subject: Fix 2830 Browse PQs as nearby search --- main/src/cgeo/geocaching/PocketQueryList.java | 124 ++++++++++++++++++++++++++ 1 file changed, 124 insertions(+) create mode 100644 main/src/cgeo/geocaching/PocketQueryList.java (limited to 'main/src/cgeo/geocaching/PocketQueryList.java') 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 = null; + RunnableWithArgument 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 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; + } + +} -- cgit v1.1