aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--main/res/values/strings.xml4
-rw-r--r--main/src/cgeo/geocaching/CacheDetailActivity.java76
2 files changed, 65 insertions, 15 deletions
diff --git a/main/res/values/strings.xml b/main/res/values/strings.xml
index 976a253..b2d735f 100644
--- a/main/res/values/strings.xml
+++ b/main/res/values/strings.xml
@@ -538,6 +538,10 @@
<string name="cache_dialog_watchlist_add_message">Adding cache to your watchlist…</string>
<string name="cache_dialog_watchlist_remove_title">Watchlist</string>
<string name="cache_dialog_watchlist_remove_message">Removing cache from your watchlist…</string>
+ <string name="cache_dialog_favourite_add_title">Favourite</string>
+ <string name="cache_dialog_favourite_add_message">Adding cache to your favourites…</string>
+ <string name="cache_dialog_favourite_remove_title">Favourite</string>
+ <string name="cache_dialog_favourite_remove_message">Removing cache from your favourites…</string>
<string name="cache_menu_navigate">Navigate</string>
<string name="cache_menu_navigation_drive">Navigation (Driving)</string>
<string name="cache_menu_navigation_walk">Navigation (Walking)</string>
diff --git a/main/src/cgeo/geocaching/CacheDetailActivity.java b/main/src/cgeo/geocaching/CacheDetailActivity.java
index 4307886..89537e6 100644
--- a/main/src/cgeo/geocaching/CacheDetailActivity.java
+++ b/main/src/cgeo/geocaching/CacheDetailActivity.java
@@ -1216,21 +1216,8 @@ public class CacheDetailActivity extends AbstractViewPagerActivity<CacheDetailAc
// favorite points
Button buttonFavPointAdd = (Button) view.findViewById(R.id.add_to_favpoint);
Button buttonFavPointRemove = (Button) view.findViewById(R.id.remove_from_favpoint);
- buttonFavPointAdd.setOnClickListener(new View.OnClickListener() {
- @Override
- public void onClick(View v) {
- GCConnector.addToFavorites(cache);
- updateFavPointBox();
- }
- });
- buttonFavPointRemove.setOnClickListener(new View.OnClickListener() {
- @Override
- public void onClick(View v) {
- GCConnector.removeFromFavorites(cache);
- updateFavPointBox();
- }
- });
-
+ buttonFavPointAdd.setOnClickListener(new FavoriteAddClickListener());
+ buttonFavPointRemove.setOnClickListener(new FavoriteRemoveClickListener());
updateFavPointBox();
// data license
@@ -1465,6 +1452,65 @@ public class CacheDetailActivity extends AbstractViewPagerActivity<CacheDetailAc
}
}
+ /** Thread to add this cache to the favourite list of the user */
+ private class FavoriteAddThread extends Thread {
+ private final Handler handler;
+
+ public FavoriteAddThread(Handler handler) {
+ this.handler = handler;
+ }
+
+ @Override
+ public void run() {
+ handler.sendEmptyMessage(GCConnector.addToFavorites(cache) ? 1 : -1);
+ }
+ }
+
+ /** Thread to remove this cache to the favourite list of the user */
+ private class FavoriteRemoveThread extends Thread {
+ private final Handler handler;
+
+ public FavoriteRemoveThread(Handler handler) {
+ this.handler = handler;
+ }
+
+ @Override
+ public void run() {
+ handler.sendEmptyMessage(GCConnector.removeFromFavorites(cache) ? 1 : -1);
+ }
+ }
+
+ private class FavoriteUpdateHandler extends Handler {
+ @Override
+ public void handleMessage(Message msg) {
+ updateFavPointBox();
+ }
+ }
+
+ /**
+ * Listener for "add to favourites" button
+ */
+ private class FavoriteAddClickListener extends AbstractWatchlistClickListener {
+ @Override
+ public void onClick(View arg0) {
+ doExecute(R.string.cache_dialog_favourite_add_title,
+ R.string.cache_dialog_favourite_add_message,
+ new FavoriteAddThread(new FavoriteUpdateHandler()));
+ }
+ }
+
+ /**
+ * Listener for "remove from favourites" button
+ */
+ private class FavoriteRemoveClickListener extends AbstractWatchlistClickListener {
+ @Override
+ public void onClick(View arg0) {
+ doExecute(R.string.cache_dialog_favourite_remove_title,
+ R.string.cache_dialog_favourite_remove_message,
+ new FavoriteRemoveThread(new FavoriteUpdateHandler()));
+ }
+ }
+
/**
* shows/hides buttons, sets text in watchlist box
*/