diff options
author | Owen Lin <owenlin@google.com> | 2012-08-16 00:18:46 -0700 |
---|---|---|
committer | Android (Google) Code Review <android-gerrit@google.com> | 2012-08-16 00:18:47 -0700 |
commit | ea8c8f1126c75e2284d9eb8be20fc423366871a5 (patch) | |
tree | 4020db97cbf85b50e176e76cd4a5360c267da6e7 | |
parent | ad2d3108ead2b057fb7ece3984bc7252268afabf (diff) | |
parent | b2927a6811d4b1c46570d6642f9c872320ac7b5b (diff) | |
download | android_packages_apps_Snap-ea8c8f1126c75e2284d9eb8be20fc423366871a5.tar.gz android_packages_apps_Snap-ea8c8f1126c75e2284d9eb8be20fc423366871a5.tar.bz2 android_packages_apps_Snap-ea8c8f1126c75e2284d9eb8be20fc423366871a5.zip |
Merge "Fix some bugs introduced by the ActionBarWrapper." into gb-ub-photos-arches
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; + } +} |