aboutsummaryrefslogtreecommitdiffstats
path: root/main/src/cgeo/geocaching
diff options
context:
space:
mode:
authorBananeweizen <Bananeweizen@gmx.de>2012-02-17 18:01:47 +0100
committerBananeweizen <Bananeweizen@gmx.de>2012-02-17 18:01:47 +0100
commit9649d1c0fc401be51432c7e23943c5cb40679954 (patch)
tree579a5aeeec7d7fe6eadc6e59995eede3016695e1 /main/src/cgeo/geocaching
parent5252edc70a02378624144a8e42ae4e71318f9ed3 (diff)
downloadcgeo-9649d1c0fc401be51432c7e23943c5cb40679954.zip
cgeo-9649d1c0fc401be51432c7e23943c5cb40679954.tar.gz
cgeo-9649d1c0fc401be51432c7e23943c5cb40679954.tar.bz2
fix #1110: onPrepareOptionsMenu compatible with Android 3.0
Diffstat (limited to 'main/src/cgeo/geocaching')
-rw-r--r--main/src/cgeo/geocaching/activity/AbstractActivity.java5
-rw-r--r--main/src/cgeo/geocaching/activity/AbstractListActivity.java5
-rw-r--r--main/src/cgeo/geocaching/activity/ActivityMixin.java5
-rw-r--r--main/src/cgeo/geocaching/activity/IAbstractActivity.java1
-rw-r--r--main/src/cgeo/geocaching/apps/cachelist/CacheListAppFactory.java7
-rw-r--r--main/src/cgeo/geocaching/cgeocaches.java13
-rw-r--r--main/src/cgeo/geocaching/cgeonavigate.java4
-rw-r--r--main/src/cgeo/geocaching/cgeopopup.java1
-rw-r--r--main/src/cgeo/geocaching/compatibility/AndroidLevel11.java17
-rw-r--r--main/src/cgeo/geocaching/compatibility/AndroidLevel11Dummy.java17
-rw-r--r--main/src/cgeo/geocaching/compatibility/AndroidLevel11Interface.java8
-rw-r--r--main/src/cgeo/geocaching/compatibility/Compatibility.java11
-rw-r--r--main/src/cgeo/geocaching/maps/CGeoMap.java7
-rw-r--r--main/src/cgeo/geocaching/maps/google/GoogleMapView.java6
-rw-r--r--main/src/cgeo/geocaching/maps/interfaces/MapViewImpl.java2
-rw-r--r--main/src/cgeo/geocaching/maps/interfaces/OnMapDragListener.java (renamed from main/src/cgeo/geocaching/maps/interfaces/OnDragListener.java)2
-rw-r--r--main/src/cgeo/geocaching/maps/mapsforge/MapsforgeMapView.java6
17 files changed, 103 insertions, 14 deletions
diff --git a/main/src/cgeo/geocaching/activity/AbstractActivity.java b/main/src/cgeo/geocaching/activity/AbstractActivity.java
index d4d578e..941cd08 100644
--- a/main/src/cgeo/geocaching/activity/AbstractActivity.java
+++ b/main/src/cgeo/geocaching/activity/AbstractActivity.java
@@ -98,4 +98,9 @@ public abstract class AbstractActivity extends Activity implements IAbstractActi
protected void restartActivity() {
Compatibility.restartActivity(this);
}
+
+ public void invalidateOptionsMenuCompatible() {
+ ActivityMixin.invalidateOptionsMenu(this);
+ }
+
}
diff --git a/main/src/cgeo/geocaching/activity/AbstractListActivity.java b/main/src/cgeo/geocaching/activity/AbstractListActivity.java
index 00e04cf..b3bbb3f 100644
--- a/main/src/cgeo/geocaching/activity/AbstractListActivity.java
+++ b/main/src/cgeo/geocaching/activity/AbstractListActivity.java
@@ -3,6 +3,7 @@ package cgeo.geocaching.activity;
import cgeo.geocaching.cgBase;
import cgeo.geocaching.cgCache;
import cgeo.geocaching.cgeoapplication;
+import cgeo.geocaching.compatibility.Compatibility;
import android.app.ListActivity;
import android.content.res.Resources;
@@ -85,4 +86,8 @@ public abstract class AbstractListActivity extends ListActivity implements
ActivityMixin.addVisitMenu(this, menu, cache);
}
+ @Override
+ public void invalidateOptionsMenuCompatible() {
+ Compatibility.invalidateOptionsMenu(this);
+ }
}
diff --git a/main/src/cgeo/geocaching/activity/ActivityMixin.java b/main/src/cgeo/geocaching/activity/ActivityMixin.java
index 30bc7bb..0e0041a 100644
--- a/main/src/cgeo/geocaching/activity/ActivityMixin.java
+++ b/main/src/cgeo/geocaching/activity/ActivityMixin.java
@@ -4,6 +4,7 @@ import cgeo.geocaching.R;
import cgeo.geocaching.Settings;
import cgeo.geocaching.cgCache;
import cgeo.geocaching.cgeo;
+import cgeo.geocaching.compatibility.Compatibility;
import cgeo.geocaching.enumerations.LogType;
import org.apache.commons.lang3.StringUtils;
@@ -153,4 +154,8 @@ public final class ActivityMixin {
abstractActivity.getWindow().addFlags(WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON);
}
}
+
+ public static void invalidateOptionsMenu(Activity activity) {
+ Compatibility.invalidateOptionsMenu(activity);
+ }
}
diff --git a/main/src/cgeo/geocaching/activity/IAbstractActivity.java b/main/src/cgeo/geocaching/activity/IAbstractActivity.java
index 85a112a..dd22cff 100644
--- a/main/src/cgeo/geocaching/activity/IAbstractActivity.java
+++ b/main/src/cgeo/geocaching/activity/IAbstractActivity.java
@@ -27,4 +27,5 @@ public interface IAbstractActivity {
void addVisitMenu(Menu menu, cgCache cache);
+ public void invalidateOptionsMenuCompatible();
}
diff --git a/main/src/cgeo/geocaching/apps/cachelist/CacheListAppFactory.java b/main/src/cgeo/geocaching/apps/cachelist/CacheListAppFactory.java
index 3bea266..fd19353 100644
--- a/main/src/cgeo/geocaching/apps/cachelist/CacheListAppFactory.java
+++ b/main/src/cgeo/geocaching/apps/cachelist/CacheListAppFactory.java
@@ -5,6 +5,7 @@ import cgeo.geocaching.SearchResult;
import cgeo.geocaching.Settings;
import cgeo.geocaching.cgCache;
import cgeo.geocaching.cgGeo;
+import cgeo.geocaching.activity.IAbstractActivity;
import cgeo.geocaching.apps.AbstractAppFactory;
import org.apache.commons.lang3.ArrayUtils;
@@ -62,12 +63,14 @@ public final class CacheListAppFactory extends AbstractAppFactory {
}
public static boolean onMenuItemSelected(final MenuItem item,
- final cgGeo geo, final List<cgCache> caches, final Activity activity,
+ final cgGeo geo, final List<cgCache> caches, final IAbstractActivity activity,
final SearchResult search) {
CacheListApp app = (CacheListApp) getAppFromMenuItem(item, apps);
if (app != null) {
try {
- return app.invoke(geo, caches, activity, search);
+ boolean result = app.invoke(geo, caches, (Activity) activity, search);
+ activity.invalidateOptionsMenuCompatible();
+ return result;
} catch (Exception e) {
Log.e(Settings.tag, "CacheListAppFactory.onMenuItemSelected: " + e.toString());
}
diff --git a/main/src/cgeo/geocaching/cgeocaches.java b/main/src/cgeo/geocaching/cgeocaches.java
index 0ac8461..fc25d1b 100644
--- a/main/src/cgeo/geocaching/cgeocaches.java
+++ b/main/src/cgeo/geocaching/cgeocaches.java
@@ -977,24 +977,31 @@ public class cgeocaches extends AbstractListActivity {
if (adapter != null) {
adapter.switchSelectMode();
}
+ invalidateOptionsMenuCompatible();
return true;
case MENU_REFRESH_STORED:
refreshStored();
+ invalidateOptionsMenuCompatible();
return true;
case MENU_DROP_CACHES:
dropStored(false);
+ invalidateOptionsMenuCompatible();
return false;
case MENU_DROP_CACHES_AND_LIST:
dropStored(true);
+ invalidateOptionsMenuCompatible();
return true;
case MENU_IMPORT_GPX:
importGpx();
+ invalidateOptionsMenuCompatible();
return false;
case MENU_CREATE_LIST:
createList(null);
+ invalidateOptionsMenuCompatible();
return false;
case MENU_DROP_LIST:
removeList(true);
+ invalidateOptionsMenuCompatible();
return false;
case MENU_RENAME_LIST:
renameList();
@@ -1003,6 +1010,7 @@ public class cgeocaches extends AbstractListActivity {
if (adapter != null) {
adapter.invertSelection();
}
+ invalidateOptionsMenuCompatible();
return false;
case MENU_SORT_DISTANCE:
setComparator(item, null);
@@ -1027,6 +1035,7 @@ public class cgeocaches extends AbstractListActivity {
return false;
case MENU_SWITCH_LIST:
selectList(null);
+ invalidateOptionsMenuCompatible();
return false;
case MENU_SORT_RATING:
setComparator(item, new RatingComparator());
@@ -1074,9 +1083,11 @@ public class cgeocaches extends AbstractListActivity {
return false;
case MENU_REMOVE_FROM_HISTORY:
removeFromHistoryCheck();
+ invalidateOptionsMenuCompatible();
return false;
case MENU_MOVE_TO_LIST:
moveCachesToOtherList();
+ invalidateOptionsMenuCompatible();
return true;
}
@@ -1284,6 +1295,7 @@ public class cgeocaches extends AbstractListActivity {
if (adapter != null) {
adapter.setFilter(filter);
prepareFilterBar();
+ invalidateOptionsMenuCompatible();
return true;
}
return false;
@@ -2377,6 +2389,7 @@ public class cgeocaches extends AbstractListActivity {
setLoadingCaches();
(new MoveCachesToListThread(listId, new MoveHandler())).start();
+ invalidateOptionsMenuCompatible();
}
private class MoveHandler extends Handler {
diff --git a/main/src/cgeo/geocaching/cgeonavigate.java b/main/src/cgeo/geocaching/cgeonavigate.java
index e0ffb80..e5600a9 100644
--- a/main/src/cgeo/geocaching/cgeonavigate.java
+++ b/main/src/cgeo/geocaching/cgeonavigate.java
@@ -232,8 +232,7 @@ public class cgeonavigate extends AbstractActivity {
public boolean onPrepareOptionsMenu(Menu menu) {
super.onPrepareOptionsMenu(menu);
- MenuItem item;
- item = menu.findItem(1);
+ MenuItem item = menu.findItem(MENU_SWITCH_COMPASS_GPS);
if (Settings.isUseCompass()) {
item.setTitle(res.getString(R.string.use_gps));
} else {
@@ -252,6 +251,7 @@ public class cgeonavigate extends AbstractActivity {
} else if (id == MENU_SWITCH_COMPASS_GPS) {
boolean oldSetting = Settings.isUseCompass();
Settings.setUseCompass(!oldSetting);
+ invalidateOptionsMenuCompatible();
if (oldSetting) {
if (dir != null) {
dir = app.removeDir();
diff --git a/main/src/cgeo/geocaching/cgeopopup.java b/main/src/cgeo/geocaching/cgeopopup.java
index ace1abc..0e0f1b2 100644
--- a/main/src/cgeo/geocaching/cgeopopup.java
+++ b/main/src/cgeo/geocaching/cgeopopup.java
@@ -559,6 +559,7 @@ public class cgeopopup extends AbstractActivity {
@Override
public void run() {
cache.store(cgeopopup.this, handler);
+ invalidateOptionsMenuCompatible();
}
}
diff --git a/main/src/cgeo/geocaching/compatibility/AndroidLevel11.java b/main/src/cgeo/geocaching/compatibility/AndroidLevel11.java
new file mode 100644
index 0000000..acb9dca
--- /dev/null
+++ b/main/src/cgeo/geocaching/compatibility/AndroidLevel11.java
@@ -0,0 +1,17 @@
+package cgeo.geocaching.compatibility;
+
+import android.app.Activity;
+
+/**
+ * Android level 11 support
+ *
+ * @author bananeweizen
+ *
+ */
+public class AndroidLevel11 implements AndroidLevel11Interface {
+
+ public void invalidateOptionsMenu(final Activity activity) {
+ activity.invalidateOptionsMenu();
+ }
+
+}
diff --git a/main/src/cgeo/geocaching/compatibility/AndroidLevel11Dummy.java b/main/src/cgeo/geocaching/compatibility/AndroidLevel11Dummy.java
new file mode 100644
index 0000000..cd18f67
--- /dev/null
+++ b/main/src/cgeo/geocaching/compatibility/AndroidLevel11Dummy.java
@@ -0,0 +1,17 @@
+package cgeo.geocaching.compatibility;
+
+import android.app.Activity;
+
+/**
+ * dummy class which has no functionality in the level 11 API
+ *
+ * @author bananeweizen
+ *
+ */
+public class AndroidLevel11Dummy implements AndroidLevel11Interface {
+
+ public void invalidateOptionsMenu(final Activity activity) {
+ // do nothing
+ }
+
+}
diff --git a/main/src/cgeo/geocaching/compatibility/AndroidLevel11Interface.java b/main/src/cgeo/geocaching/compatibility/AndroidLevel11Interface.java
new file mode 100644
index 0000000..236e92d
--- /dev/null
+++ b/main/src/cgeo/geocaching/compatibility/AndroidLevel11Interface.java
@@ -0,0 +1,8 @@
+package cgeo.geocaching.compatibility;
+
+import android.app.Activity;
+
+public interface AndroidLevel11Interface {
+ public void invalidateOptionsMenu(final Activity activity);
+
+}
diff --git a/main/src/cgeo/geocaching/compatibility/Compatibility.java b/main/src/cgeo/geocaching/compatibility/Compatibility.java
index 61e2629..b6d1061 100644
--- a/main/src/cgeo/geocaching/compatibility/Compatibility.java
+++ b/main/src/cgeo/geocaching/compatibility/Compatibility.java
@@ -24,6 +24,7 @@ public final class Compatibility {
private static Method dataChangedMethod = null;
private static Method getRotationMethod = null;
+ private static AndroidLevel11Interface level11;
static {
if (isLevel8) {
@@ -36,6 +37,12 @@ public final class Compatibility {
Log.e(Settings.tag, "Cannot load AndroidLevel8 class", e);
}
}
+ if (sdkVersion >= 11) {
+ level11 = new AndroidLevel11();
+ }
+ else {
+ level11 = new AndroidLevel11Dummy();
+ }
}
public static float getDirectionNow(final float directionNowPre,
@@ -109,4 +116,8 @@ public final class Compatibility {
activity.startActivity(intent);
}
+ public static void invalidateOptionsMenu(final Activity activity) {
+ level11.invalidateOptionsMenu(activity);
+ }
+
}
diff --git a/main/src/cgeo/geocaching/maps/CGeoMap.java b/main/src/cgeo/geocaching/maps/CGeoMap.java
index 61d7a80..8d25bf9 100644
--- a/main/src/cgeo/geocaching/maps/CGeoMap.java
+++ b/main/src/cgeo/geocaching/maps/CGeoMap.java
@@ -29,7 +29,7 @@ import cgeo.geocaching.maps.interfaces.MapActivityImpl;
import cgeo.geocaching.maps.interfaces.MapControllerImpl;
import cgeo.geocaching.maps.interfaces.MapProvider;
import cgeo.geocaching.maps.interfaces.MapViewImpl;
-import cgeo.geocaching.maps.interfaces.OnDragListener;
+import cgeo.geocaching.maps.interfaces.OnMapDragListener;
import cgeo.geocaching.maps.interfaces.OtherCachersOverlayItemImpl;
import cgeo.geocaching.utils.CancellableHandler;
@@ -70,7 +70,7 @@ import java.util.Set;
/**
* Class representing the Map in c:geo
*/
-public class CGeoMap extends AbstractMap implements OnDragListener, ViewFactory {
+public class CGeoMap extends AbstractMap implements OnMapDragListener, ViewFactory {
/** Handler Messages */
private static final int HIDE_PROGRESS = 0;
@@ -597,12 +597,14 @@ public class CGeoMap extends AbstractMap implements OnDragListener, ViewFactory
switch (id) {
case MENU_TRAIL_MODE:
Settings.setMapTrail(!Settings.isMapTrail());
+ ActivityMixin.invalidateOptionsMenu(activity);
return true;
case MENU_MAP_LIVE:
Settings.setLiveMap(!Settings.isLiveMap());
liveChanged = true;
search = null;
searchIntent = null;
+ ActivityMixin.invalidateOptionsMenu(activity);
return true;
case MENU_STORE_CACHES:
if (live && !isLoading() && CollectionUtils.isNotEmpty(caches)) {
@@ -688,6 +690,7 @@ public class CGeoMap extends AbstractMap implements OnDragListener, ViewFactory
overlayCaches.switchCircles();
mapView.repaintRequired(overlayCaches);
+ ActivityMixin.invalidateOptionsMenu(activity);
return true;
case MENU_AS_LIST: {
final SearchResult searchResult = new SearchResult();
diff --git a/main/src/cgeo/geocaching/maps/google/GoogleMapView.java b/main/src/cgeo/geocaching/maps/google/GoogleMapView.java
index 65e0ed1..9d9f3c9 100644
--- a/main/src/cgeo/geocaching/maps/google/GoogleMapView.java
+++ b/main/src/cgeo/geocaching/maps/google/GoogleMapView.java
@@ -12,7 +12,7 @@ import cgeo.geocaching.maps.interfaces.GeoPointImpl;
import cgeo.geocaching.maps.interfaces.MapControllerImpl;
import cgeo.geocaching.maps.interfaces.MapProjectionImpl;
import cgeo.geocaching.maps.interfaces.MapViewImpl;
-import cgeo.geocaching.maps.interfaces.OnDragListener;
+import cgeo.geocaching.maps.interfaces.OnMapDragListener;
import cgeo.geocaching.maps.interfaces.OverlayImpl;
import cgeo.geocaching.maps.interfaces.OverlayImpl.overlayType;
@@ -34,7 +34,7 @@ import android.widget.FrameLayout;
public class GoogleMapView extends MapView implements MapViewImpl {
private GestureDetector gestureDetector;
- private OnDragListener onDragListener;
+ private OnMapDragListener onDragListener;
public GoogleMapView(Context context, AttributeSet attrs) {
super(context, attrs);
@@ -151,7 +151,7 @@ public class GoogleMapView extends MapView implements MapViewImpl {
}
@Override
- public void setOnDragListener(OnDragListener onDragListener) {
+ public void setOnDragListener(OnMapDragListener onDragListener) {
this.onDragListener = onDragListener;
}
diff --git a/main/src/cgeo/geocaching/maps/interfaces/MapViewImpl.java b/main/src/cgeo/geocaching/maps/interfaces/MapViewImpl.java
index ad35d26..08eaaf4 100644
--- a/main/src/cgeo/geocaching/maps/interfaces/MapViewImpl.java
+++ b/main/src/cgeo/geocaching/maps/interfaces/MapViewImpl.java
@@ -69,7 +69,7 @@ public interface MapViewImpl {
*/
void repaintRequired(GeneralOverlay overlay);
- void setOnDragListener(OnDragListener onDragListener);
+ void setOnDragListener(OnMapDragListener onDragListener);
/**
* Indicates if overlay text or line colours should be dark (normal case)
diff --git a/main/src/cgeo/geocaching/maps/interfaces/OnDragListener.java b/main/src/cgeo/geocaching/maps/interfaces/OnMapDragListener.java
index 285aafa..0e51b32 100644
--- a/main/src/cgeo/geocaching/maps/interfaces/OnDragListener.java
+++ b/main/src/cgeo/geocaching/maps/interfaces/OnMapDragListener.java
@@ -6,7 +6,7 @@ package cgeo.geocaching.maps.interfaces;
* @author cachapa
*
*/
-public interface OnDragListener {
+public interface OnMapDragListener {
public void onDrag();
diff --git a/main/src/cgeo/geocaching/maps/mapsforge/MapsforgeMapView.java b/main/src/cgeo/geocaching/maps/mapsforge/MapsforgeMapView.java
index 9a64980..bcb6e61 100644
--- a/main/src/cgeo/geocaching/maps/mapsforge/MapsforgeMapView.java
+++ b/main/src/cgeo/geocaching/maps/mapsforge/MapsforgeMapView.java
@@ -10,7 +10,7 @@ import cgeo.geocaching.maps.interfaces.GeoPointImpl;
import cgeo.geocaching.maps.interfaces.MapControllerImpl;
import cgeo.geocaching.maps.interfaces.MapProjectionImpl;
import cgeo.geocaching.maps.interfaces.MapViewImpl;
-import cgeo.geocaching.maps.interfaces.OnDragListener;
+import cgeo.geocaching.maps.interfaces.OnMapDragListener;
import cgeo.geocaching.maps.interfaces.OverlayImpl;
import cgeo.geocaching.maps.interfaces.OverlayImpl.overlayType;
@@ -33,7 +33,7 @@ import android.view.MotionEvent;
public class MapsforgeMapView extends MapView implements MapViewImpl {
private GestureDetector gestureDetector;
- private OnDragListener onDragListener;
+ private OnMapDragListener onDragListener;
public MapsforgeMapView(Context context, AttributeSet attrs) {
super(context, attrs);
@@ -205,7 +205,7 @@ public class MapsforgeMapView extends MapView implements MapViewImpl {
}
@Override
- public void setOnDragListener(OnDragListener onDragListener) {
+ public void setOnDragListener(OnMapDragListener onDragListener) {
this.onDragListener = onDragListener;
}