summaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
authorOwen Lin <owenlin@google.com>2012-08-16 11:28:58 +0800
committerOwen Lin <owenlin@google.com>2012-08-16 15:11:23 +0800
commitb2927a6811d4b1c46570d6642f9c872320ac7b5b (patch)
tree748cafdbef92c0f53dcbae9abad02c4b780acdf2 /src
parenta987b12c396ef9b0482c4ca827131db125bf8ef8 (diff)
downloadandroid_packages_apps_Snap-b2927a6811d4b1c46570d6642f9c872320ac7b5b.tar.gz
android_packages_apps_Snap-b2927a6811d4b1c46570d6642f9c872320ac7b5b.tar.bz2
android_packages_apps_Snap-b2927a6811d4b1c46570d6642f9c872320ac7b5b.zip
Fix some bugs introduced by the ActionBarWrapper.
bug: 6927267 Change-Id: If05082a4fec25f93d38c6096ebacc5a82e7e7c2e
Diffstat (limited to 'src')
-rw-r--r--src/com/android/gallery3d/actionbar/SystemActionBarWrapper.java30
-rw-r--r--src/com/android/gallery3d/actionbar/SystemActionModeWrapper.java23
-rw-r--r--src/com/android/gallery3d/ui/ActionModeHandler.java1
-rw-r--r--src/com/android/gallery3d/util/Holder.java29
4 files changed, 68 insertions, 15 deletions
diff --git a/src/com/android/gallery3d/actionbar/SystemActionBarWrapper.java b/src/com/android/gallery3d/actionbar/SystemActionBarWrapper.java
index cf3589cef..3c4dac5ae 100644
--- a/src/com/android/gallery3d/actionbar/SystemActionBarWrapper.java
+++ b/src/com/android/gallery3d/actionbar/SystemActionBarWrapper.java
@@ -29,6 +29,7 @@ import android.widget.SpinnerAdapter;
import com.android.gallery3d.R;
import com.android.gallery3d.common.ApiHelper;
import com.android.gallery3d.common.Utils;
+import com.android.gallery3d.util.Holder;
import java.util.HashMap;
@@ -40,11 +41,15 @@ public class SystemActionBarWrapper implements ActionBarInterface {
private Menu mMenu;
private MenuItem mShareMenuItem;
- private ShareActionProvider mShareActionProvider;
+ private Holder<ShareActionProvider> mShareActionProvider = new Holder<ShareActionProvider>();
+ @TargetApi(ApiHelper.VERSION_CODES.ICE_CREAM_SANDWICH)
public SystemActionBarWrapper(Activity activity) {
mActivity = activity;
mActionBar = activity.getActionBar();
+ if (ApiHelper.HAS_SHARE_ACTION_PROVIDER) {
+ mShareActionProvider.set(new ShareActionProvider(activity));
+ }
}
@Override
@@ -99,8 +104,11 @@ public class SystemActionBarWrapper implements ActionBarInterface {
}
@Override
+ @TargetApi(ApiHelper.VERSION_CODES.ICE_CREAM_SANDWICH)
public void setHomeButtonEnabled(boolean enabled) {
- mActionBar.setHomeButtonEnabled(enabled);
+ if (ApiHelper.HAS_ACTION_BAR_SET_HOME_BUTTON_ENABLED) {
+ mActionBar.setHomeButtonEnabled(enabled);
+ }
}
@Override
@@ -109,8 +117,11 @@ public class SystemActionBarWrapper implements ActionBarInterface {
}
@Override
+ @TargetApi(ApiHelper.VERSION_CODES.ICE_CREAM_SANDWICH)
public void setLogo(Drawable logo) {
- mActionBar.setLogo(logo);
+ if (ApiHelper.HAS_ACTION_BAR_SET_LOGO) {
+ mActionBar.setLogo(logo);
+ }
}
@Override
@@ -129,23 +140,24 @@ public class SystemActionBarWrapper implements ActionBarInterface {
}
@Override
+ @TargetApi(ApiHelper.VERSION_CODES.ICE_CREAM_SANDWICH)
public void setShareIntent(Intent intent) {
if (mShareMenuItem != null) {
mShareMenuItem.setEnabled(intent != null);
- }
- if (mShareActionProvider != null) {
- mShareActionProvider.setShareIntent(intent);
+ if (ApiHelper.HAS_SHARE_ACTION_PROVIDER) {
+ mShareActionProvider.get().setShareIntent(intent);
+ }
}
}
@Override
+ @TargetApi(ApiHelper.VERSION_CODES.ICE_CREAM_SANDWICH)
public boolean createActionMenu(Menu menu, int menuRes) {
mActivity.getMenuInflater().inflate(menuRes, menu);
mMenu = menu;
mShareMenuItem = menu.findItem(R.id.action_share);
- if (mShareMenuItem != null) {
- mShareActionProvider = new ShareActionProvider(mActivity);
- mShareMenuItem.setActionProvider(mShareActionProvider);
+ if (mShareMenuItem != null && ApiHelper.HAS_SHARE_ACTION_PROVIDER) {
+ mShareMenuItem.setActionProvider(mShareActionProvider.get());
}
return true;
}
diff --git a/src/com/android/gallery3d/actionbar/SystemActionModeWrapper.java b/src/com/android/gallery3d/actionbar/SystemActionModeWrapper.java
index af925eacc..202a58568 100644
--- a/src/com/android/gallery3d/actionbar/SystemActionModeWrapper.java
+++ b/src/com/android/gallery3d/actionbar/SystemActionModeWrapper.java
@@ -28,17 +28,21 @@ import android.widget.ShareActionProvider;
import com.android.gallery3d.R;
import com.android.gallery3d.common.ApiHelper;
import com.android.gallery3d.common.Utils;
+import com.android.gallery3d.util.Holder;
@TargetApi(ApiHelper.VERSION_CODES.HONEYCOMB)
public class SystemActionModeWrapper implements ActionModeInterface {
private ActionMode mActionMode;
private Menu mMenu;
private MenuItem mShareMenuItem;
- private final ShareActionProvider mShareActionProvider;
+ private Holder<ShareActionProvider> mShareActionProvider = new Holder<ShareActionProvider>();
+ @TargetApi(ApiHelper.VERSION_CODES.ICE_CREAM_SANDWICH)
public SystemActionModeWrapper(Activity activity, ActionModeInterface.Callback callback) {
+ if (ApiHelper.HAS_SHARE_ACTION_PROVIDER) {
+ mShareActionProvider.set(new ShareActionProvider(activity));
+ }
// mActionMode will be set in callback.onCreateActionMode
- mShareActionProvider = new ShareActionProvider(activity);
activity.startActionMode(new CallbackWrapper(callback));
}
@@ -84,20 +88,24 @@ public class SystemActionModeWrapper implements ActionModeInterface {
}
@Override
+ @TargetApi(ApiHelper.VERSION_CODES.ICE_CREAM_SANDWICH)
public void inflateMenu(int menuRes) {
Utils.assertTrue(mMenu != null);
mActionMode.getMenuInflater().inflate(menuRes, mMenu);
mShareMenuItem = mMenu.findItem(R.id.action_share);
- if (mShareMenuItem != null) {
- mShareMenuItem.setActionProvider(mShareActionProvider);
+ if (mShareMenuItem != null && ApiHelper.HAS_SHARE_ACTION_PROVIDER) {
+ mShareMenuItem.setActionProvider(mShareActionProvider.get());
}
}
@Override
+ @TargetApi(ApiHelper.VERSION_CODES.ICE_CREAM_SANDWICH)
public void setShareIntent(Intent shareIntent) {
if (mShareMenuItem != null) {
mShareMenuItem.setEnabled(shareIntent != null);
- mShareActionProvider.setShareIntent(shareIntent);
+ if (ApiHelper.HAS_SHARE_ACTION_PROVIDER) {
+ mShareActionProvider.get().setShareIntent(shareIntent);
+ }
}
}
@@ -107,8 +115,11 @@ public class SystemActionModeWrapper implements ActionModeInterface {
}
@Override
+ @TargetApi(ApiHelper.VERSION_CODES.ICE_CREAM_SANDWICH)
public void setOnShareTargetSelectedListener(final OnShareTargetSelectedListener listener) {
- mShareActionProvider.setOnShareTargetSelectedListener(
+ if (mShareActionProvider.get() == null) return;
+
+ mShareActionProvider.get().setOnShareTargetSelectedListener(
new ShareActionProvider.OnShareTargetSelectedListener() {
@Override
public boolean onShareTargetSelected(ShareActionProvider source, Intent intent) {
diff --git a/src/com/android/gallery3d/ui/ActionModeHandler.java b/src/com/android/gallery3d/ui/ActionModeHandler.java
index 2ab1521ce..7deee5bc8 100644
--- a/src/com/android/gallery3d/ui/ActionModeHandler.java
+++ b/src/com/android/gallery3d/ui/ActionModeHandler.java
@@ -303,6 +303,7 @@ public class ActionModeHandler implements
MenuExecutor.updateMenuOperation(mActionMode, operation);
if (hasShareButton) {
mActionMode.setShareIntent(intent);
+ mMenuExecutor.setShareIntent(intent);
}
}
}
diff --git a/src/com/android/gallery3d/util/Holder.java b/src/com/android/gallery3d/util/Holder.java
new file mode 100644
index 000000000..0ce914c1d
--- /dev/null
+++ b/src/com/android/gallery3d/util/Holder.java
@@ -0,0 +1,29 @@
+/*
+ * Copyright (C) 2012 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package com.android.gallery3d.util;
+
+public class Holder<T> {
+ private T mObject;
+
+ public void set(T object) {
+ mObject = object;
+ }
+
+ public T get() {
+ return mObject;
+ }
+}