summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--gallerycommon/src/com/android/gallery3d/common/ApiHelper.java16
-rw-r--r--src/com/android/gallery3d/app/AbstractGalleryActivity.java29
-rw-r--r--src/com/android/gallery3d/app/ActivityState.java3
-rw-r--r--src/com/android/gallery3d/app/Gallery.java8
4 files changed, 45 insertions, 11 deletions
diff --git a/gallerycommon/src/com/android/gallery3d/common/ApiHelper.java b/gallerycommon/src/com/android/gallery3d/common/ApiHelper.java
index 4545b92f3..305fb2cf3 100644
--- a/gallerycommon/src/com/android/gallery3d/common/ApiHelper.java
+++ b/gallerycommon/src/com/android/gallery3d/common/ApiHelper.java
@@ -16,6 +16,7 @@
package com.android.gallery3d.common;
+import android.app.Activity;
import android.os.Build;
import android.provider.MediaStore.MediaColumns;
import android.view.View;
@@ -60,6 +61,9 @@ public class ApiHelper {
public static final boolean HAS_AUTO_FOCUS_MOVE_CALLBACK =
Build.VERSION.SDK_INT >= VERSION_CODES.JELLY_BEAN;
+ public static final boolean HAS_ACTIVITY_INVALIDATE_OPTIONS_MENU =
+ hasMethod(Activity.class, "invalidateOptionsMenu");
+
private static boolean hasField(Class<?> klass, String fieldName) {
try {
klass.getDeclaredField(fieldName);
@@ -72,11 +76,21 @@ public class ApiHelper {
private static boolean hasMethod(String className, String methodName,
Class<?>... parameterTypes) {
try {
- Class klass = Class.forName(className);
+ Class<?> klass = Class.forName(className);
klass.getDeclaredMethod(methodName, parameterTypes);
return true;
} catch (Throwable th) {
return false;
}
}
+
+ private static boolean hasMethod(
+ Class<?> klass, String methodName, Class<?> ... paramTypes) {
+ try {
+ klass.getDeclaredMethod(methodName, paramTypes);
+ return true;
+ } catch (NoSuchMethodException e) {
+ return false;
+ }
+ }
}
diff --git a/src/com/android/gallery3d/app/AbstractGalleryActivity.java b/src/com/android/gallery3d/app/AbstractGalleryActivity.java
index 9b2a85ed4..24d5dbcdf 100644
--- a/src/com/android/gallery3d/app/AbstractGalleryActivity.java
+++ b/src/com/android/gallery3d/app/AbstractGalleryActivity.java
@@ -16,6 +16,7 @@
package com.android.gallery3d.app;
+import android.annotation.TargetApi;
import android.app.Activity;
import android.app.AlertDialog;
import android.content.BroadcastReceiver;
@@ -27,11 +28,13 @@ import android.content.Intent;
import android.content.IntentFilter;
import android.content.res.Configuration;
import android.os.Bundle;
+import android.view.Menu;
import android.view.MenuItem;
import android.view.Window;
import android.view.WindowManager;
import com.android.gallery3d.R;
+import com.android.gallery3d.common.ApiHelper;
import com.android.gallery3d.data.BitmapPool;
import com.android.gallery3d.data.DataManager;
import com.android.gallery3d.data.MediaItem;
@@ -85,18 +88,42 @@ public class AbstractGalleryActivity extends Activity implements GalleryActivity
toggleStatusBarByOrientation();
}
+ private Menu mOptionsMenu;
+
+ @Override
+ public boolean onCreateOptionsMenu(Menu menu) {
+ mOptionsMenu = menu;
+ super.onCreateOptionsMenu(menu);
+ return getStateManager().createOptionsMenu(menu);
+ }
+
+ @Override
+ @TargetApi(ApiHelper.VERSION_CODES.HONEYCOMB)
+ public void invalidateOptionsMenu() {
+ if (ApiHelper.HAS_ACTIVITY_INVALIDATE_OPTIONS_MENU) {
+ super.invalidateOptionsMenu();
+ } else if (mOptionsMenu != null) {
+ mOptionsMenu.clear();
+ getStateManager().createOptionsMenu(mOptionsMenu);
+ }
+ }
+
+ @Override
public Context getAndroidContext() {
return this;
}
+ @Override
public DataManager getDataManager() {
return ((GalleryApp) getApplication()).getDataManager();
}
+ @Override
public ThreadPool getThreadPool() {
return ((GalleryApp) getApplication()).getThreadPool();
}
+ @Override
public synchronized StateManager getStateManager() {
if (mStateManager == null) {
mStateManager = new StateManager(this);
@@ -104,10 +131,12 @@ public class AbstractGalleryActivity extends Activity implements GalleryActivity
return mStateManager;
}
+ @Override
public GLRoot getGLRoot() {
return mGLRootView;
}
+ @Override
public OrientationManager getOrientationManager() {
return mOrientationManager;
}
diff --git a/src/com/android/gallery3d/app/ActivityState.java b/src/com/android/gallery3d/app/ActivityState.java
index 867cda3e5..c870855c9 100644
--- a/src/com/android/gallery3d/app/ActivityState.java
+++ b/src/com/android/gallery3d/app/ActivityState.java
@@ -27,7 +27,6 @@ import android.os.BatteryManager;
import android.os.Bundle;
import android.view.Menu;
import android.view.MenuItem;
-import android.view.View;
import android.view.Window;
import android.view.WindowManager;
@@ -135,7 +134,7 @@ abstract public class ActivityState {
// should only be called by StateManager
void resume() {
- Activity activity = (Activity) mActivity;
+ AbstractGalleryActivity activity = (AbstractGalleryActivity) mActivity;
ActionBar actionBar = activity.getActionBar();
if (actionBar != null) {
if ((mFlags & FLAG_HIDE_ACTION_BAR) != 0) {
diff --git a/src/com/android/gallery3d/app/Gallery.java b/src/com/android/gallery3d/app/Gallery.java
index 468d202d4..0d5770cd5 100644
--- a/src/com/android/gallery3d/app/Gallery.java
+++ b/src/com/android/gallery3d/app/Gallery.java
@@ -26,7 +26,6 @@ import android.database.Cursor;
import android.net.Uri;
import android.os.Bundle;
import android.provider.OpenableColumns;
-import android.view.Menu;
import android.view.Window;
import android.widget.Toast;
@@ -37,7 +36,6 @@ import com.android.gallery3d.data.MediaItem;
import com.android.gallery3d.data.MediaSet;
import com.android.gallery3d.data.Path;
import com.android.gallery3d.picasasource.PicasaSource;
-import com.android.gallery3d.ui.GLRoot;
import com.android.gallery3d.util.GalleryUtils;
public final class Gallery extends AbstractGalleryActivity implements OnCancelListener {
@@ -232,12 +230,6 @@ public final class Gallery extends AbstractGalleryActivity implements OnCancelLi
}
@Override
- public boolean onCreateOptionsMenu(Menu menu) {
- super.onCreateOptionsMenu(menu);
- return getStateManager().createOptionsMenu(menu);
- }
-
- @Override
protected void onResume() {
Utils.assertTrue(getStateManager().getStateCount() > 0);
super.onResume();