diff options
| -rw-r--r-- | main/res/values/strings.xml | 4 | ||||
| -rw-r--r-- | main/src/cgeo/geocaching/CacheDetailActivity.java | 76 |
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 */ |
