aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorBananeweizen <Bananeweizen@gmx.de>2012-12-26 16:10:52 +0100
committerBananeweizen <Bananeweizen@gmx.de>2012-12-26 16:10:52 +0100
commita92fb90678daa6964e0aad776eece7dacf523b1b (patch)
tree8d586d484cce437725e8df63b1493d235a03c9ff
parente88672bac97b38de6c17aa98e008e85088072387 (diff)
downloadcgeo-a92fb90678daa6964e0aad776eece7dacf523b1b.zip
cgeo-a92fb90678daa6964e0aad776eece7dacf523b1b.tar.gz
cgeo-a92fb90678daa6964e0aad776eece7dacf523b1b.tar.bz2
new: menu to delete past events in caches list
-rw-r--r--main/res/values-de/strings.xml1
-rw-r--r--main/res/values/strings.xml1
-rw-r--r--main/res/values/strings_not_translatable.xml1
-rw-r--r--main/src/cgeo/geocaching/cgeocaches.java38
4 files changed, 38 insertions, 3 deletions
diff --git a/main/res/values-de/strings.xml b/main/res/values-de/strings.xml
index 6f94789..d8b6222 100644
--- a/main/res/values-de/strings.xml
+++ b/main/res/values-de/strings.xml
@@ -288,6 +288,7 @@
<string name="caches_drop_stored">Gespeicherte löschen</string>
<string name="caches_drop_progress">Entferne Caches…</string>
<string name="caches_drop_all_and_list">Alle und Liste löschen</string>
+ <string name="caches_delete_events">Vergangene Events löschen</string>
<string name="caches_refresh_selected">Ausgewählte aktualisieren</string>
<string name="caches_refresh_all">Alle aktualisieren</string>
<string name="caches_move_selected">Ausgewählte verschieben</string>
diff --git a/main/res/values/strings.xml b/main/res/values/strings.xml
index 7c18065..3d2cb13 100644
--- a/main/res/values/strings.xml
+++ b/main/res/values/strings.xml
@@ -290,6 +290,7 @@
<string name="caches_drop_stored">Drop stored</string>
<string name="caches_drop_progress">Removing caches</string>
<string name="caches_drop_all_and_list">Drop all and remove list</string>
+ <string name="caches_delete_events">Delete past events</string>
<string name="caches_refresh_selected">Refresh selected</string>
<string name="caches_refresh_all">Refresh all</string>
<string name="caches_move_selected">Move selected</string>
diff --git a/main/res/values/strings_not_translatable.xml b/main/res/values/strings_not_translatable.xml
index 774a926..d907563 100644
--- a/main/res/values/strings_not_translatable.xml
+++ b/main/res/values/strings_not_translatable.xml
@@ -85,6 +85,7 @@
· Support for searching opencaching.nl caches\n
· Inverse sorting of cache lists (hit the same menu again)\n
· view pager in trackable activity\n
+ · menu item to delete past events\n
\n
<b>Bugfixing:</b>\n
· Final flag icon lost when updating cache with self defined final\n
diff --git a/main/src/cgeo/geocaching/cgeocaches.java b/main/src/cgeo/geocaching/cgeocaches.java
index ce43faa..901743c 100644
--- a/main/src/cgeo/geocaching/cgeocaches.java
+++ b/main/src/cgeo/geocaching/cgeocaches.java
@@ -30,6 +30,7 @@ import cgeo.geocaching.sorting.VisitComparator;
import cgeo.geocaching.ui.CacheListAdapter;
import cgeo.geocaching.ui.LoggingUI;
import cgeo.geocaching.ui.WeakReferenceHandler;
+import cgeo.geocaching.utils.DateUtils;
import cgeo.geocaching.utils.GeoDirHandler;
import cgeo.geocaching.utils.Log;
import cgeo.geocaching.utils.RunnableWithArgument;
@@ -62,6 +63,7 @@ import android.widget.TextView;
import java.util.ArrayList;
import java.util.Collections;
+import java.util.Date;
import java.util.HashSet;
import java.util.List;
import java.util.Set;
@@ -100,6 +102,7 @@ public class cgeocaches extends AbstractListActivity implements FilteredActivity
private static final int MENU_NAVIGATION = 69;
private static final int MENU_STORE_CACHE = 73;
private static final int MENU_FILTER = 74;
+ private static final int MENU_DELETE_EVENTS = 75;
private static final int MSG_DONE = -1;
private static final int MSG_RESTART_GEO_AND_DIR = -2;
@@ -708,6 +711,7 @@ public class cgeocaches extends AbstractListActivity implements FilteredActivity
subMenu.add(0, MENU_DROP_CACHES_AND_LIST, 0, res.getString(R.string.caches_drop_all_and_list));
subMenu.add(0, MENU_REFRESH_STORED, 0, res.getString(R.string.cache_offline_refresh)); // download details for all caches
subMenu.add(0, MENU_MOVE_TO_LIST, 0, res.getString(R.string.cache_menu_move_list));
+ subMenu.add(0, MENU_DELETE_EVENTS, 0, res.getString(R.string.caches_delete_events));
//TODO: add submenu/AlertDialog and use R.string.gpx_import_title
subMenu.add(0, MENU_IMPORT_GPX, 0, res.getString(R.string.gpx_import_title));
@@ -770,6 +774,7 @@ public class cgeocaches extends AbstractListActivity implements FilteredActivity
setVisible(menu, MENU_REFRESH_STORED, !isEmpty && (isConcrete || type != CacheListType.OFFLINE));
setVisible(menu, MENU_DROP_CACHES, !isEmpty);
setVisible(menu, MENU_DROP_CACHES_AND_LIST, isConcrete && !isEmpty);
+ setVisible(menu, MENU_DELETE_EVENTS, isConcrete && !isEmpty && containsEvents());
setVisible(menu, MENU_MOVE_TO_LIST, !isEmpty);
setVisible(menu, MENU_EXPORT, !isEmpty);
setVisible(menu, MENU_REMOVE_FROM_HISTORY, !isEmpty);
@@ -820,6 +825,15 @@ public class cgeocaches extends AbstractListActivity implements FilteredActivity
return true;
}
+ private boolean containsEvents() {
+ for (cgCache cache : adapter.getCheckedOrAllCaches()) {
+ if (cache.isEventCache()) {
+ return true;
+ }
+ }
+ return false;
+ }
+
private void setMenuItemLabel(final Menu menu, final int menuId, final int resIdSelection, final int resId) {
final MenuItem menuItem = menu.findItem(menuId);
if (menuItem == null) {
@@ -905,11 +919,29 @@ public class cgeocaches extends AbstractListActivity implements FilteredActivity
moveCachesToOtherList();
invalidateOptionsMenuCompatible();
return true;
+ case MENU_DELETE_EVENTS:
+ deletePastEvents();
+ invalidateOptionsMenuCompatible();
+ return true;
default:
return CacheListAppFactory.onMenuItemSelected(item, cacheList, this, search);
}
}
+ public void deletePastEvents() {
+ progress.show(this, null, res.getString(R.string.caches_drop_progress), true, dropDetailsHandler.obtainMessage(MSG_CANCEL));
+ final List<cgCache> deletion = new ArrayList<cgCache>();
+ for (cgCache cache : adapter.getCheckedOrAllCaches()) {
+ if (cache.isEventCache()) {
+ final Date eventDate = cache.getHiddenDate();
+ if (DateUtils.daysSince(eventDate.getTime()) > 0) {
+ deletion.add(cache);
+ }
+ }
+ }
+ new DropDetailsThread(dropDetailsHandler, deletion).start();
+ }
+
/**
* called from the filter bar view
*/
@@ -1294,7 +1326,7 @@ public class cgeocaches extends AbstractListActivity implements FilteredActivity
public void dropSelected() {
progress.show(this, null, res.getString(R.string.caches_drop_progress), true, dropDetailsHandler.obtainMessage(MSG_CANCEL));
- new DropDetailsThread(dropDetailsHandler).start();
+ new DropDetailsThread(dropDetailsHandler, adapter.getCheckedOrAllCaches()).start();
}
private class LoadByOfflineThread extends Thread {
@@ -1598,9 +1630,9 @@ public class cgeocaches extends AbstractListActivity implements FilteredActivity
final private Handler handler;
final private List<cgCache> selected;
- public DropDetailsThread(Handler handlerIn) {
+ public DropDetailsThread(Handler handlerIn, List<cgCache> selectedIn) {
handler = handlerIn;
- selected = adapter.getCheckedOrAllCaches();
+ selected = selectedIn;
}
@Override