| /* |
| * 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.actionbar; |
| |
| import android.annotation.TargetApi; |
| import android.app.Activity; |
| import android.content.Intent; |
| import android.view.ActionMode; |
| import android.view.Menu; |
| import android.view.MenuItem; |
| import android.view.View; |
| 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 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 |
| activity.startActionMode(new CallbackWrapper(callback)); |
| } |
| |
| private class CallbackWrapper implements ActionMode.Callback { |
| ActionModeInterface.Callback mActual; |
| |
| public CallbackWrapper(Callback callback) { |
| mActual = callback; |
| } |
| |
| @Override |
| public boolean onCreateActionMode(ActionMode mode, Menu menu) { |
| mMenu = menu; |
| mActionMode = mode; |
| return mActual.onCreateActionMode(SystemActionModeWrapper.this, menu); |
| } |
| |
| @Override |
| public boolean onPrepareActionMode(ActionMode mode, Menu menu) { |
| // return true to turn on the system action mode |
| return true; |
| } |
| |
| @Override |
| public boolean onActionItemClicked(ActionMode mode, MenuItem item) { |
| return mActual.onActionItemClicked(SystemActionModeWrapper.this, item); |
| } |
| |
| @Override |
| public void onDestroyActionMode(ActionMode mode) { |
| mActual.onDestroyActionMode(SystemActionModeWrapper.this); |
| } |
| } |
| |
| @Override |
| public void setCustomView(View view) { |
| mActionMode.setCustomView(view); |
| } |
| |
| @Override |
| public void finish() { |
| mActionMode.finish(); |
| } |
| |
| @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 && 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); |
| if (ApiHelper.HAS_SHARE_ACTION_PROVIDER) { |
| mShareActionProvider.get().setShareIntent(shareIntent); |
| } |
| } |
| } |
| |
| @Override |
| public boolean hasShareButton() { |
| return mShareMenuItem != null; |
| } |
| |
| @Override |
| @TargetApi(ApiHelper.VERSION_CODES.ICE_CREAM_SANDWICH) |
| public void setOnShareTargetSelectedListener(final OnShareTargetSelectedListener listener) { |
| if (mShareActionProvider.get() == null) return; |
| |
| mShareActionProvider.get().setOnShareTargetSelectedListener( |
| new ShareActionProvider.OnShareTargetSelectedListener() { |
| @Override |
| public boolean onShareTargetSelected(ShareActionProvider source, Intent intent) { |
| return listener.onShareTargetSelected(intent); |
| } |
| }); |
| } |
| |
| @Override |
| public void setMenuItemVisible(int menuItemId, boolean visible) { |
| MenuItem item = mMenu.findItem(menuItemId); |
| if (item != null) item.setVisible(visible); |
| } |
| |
| @Override |
| public void setMenuItemTitle(int menuItemId, String title) { |
| MenuItem item = mMenu.findItem(menuItemId); |
| if (item != null) item.setTitle(title); |
| } |
| |
| @Override |
| public void setMenuItemIntent(int menuItemId, Intent intent) { |
| MenuItem item = mMenu.findItem(menuItemId); |
| if (item != null) item.setIntent(intent); |
| } |
| } |