1f9a0a4306d589b4a4e20554fed512a603426bfa1Owen Lin/* 2f9a0a4306d589b4a4e20554fed512a603426bfa1Owen Lin * Copyright (C) 2011 The Android Open Source Project 3f9a0a4306d589b4a4e20554fed512a603426bfa1Owen Lin * 4f9a0a4306d589b4a4e20554fed512a603426bfa1Owen Lin * Licensed under the Apache License, Version 2.0 (the "License"); 5f9a0a4306d589b4a4e20554fed512a603426bfa1Owen Lin * you may not use this file except in compliance with the License. 6f9a0a4306d589b4a4e20554fed512a603426bfa1Owen Lin * You may obtain a copy of the License at 7f9a0a4306d589b4a4e20554fed512a603426bfa1Owen Lin * 8f9a0a4306d589b4a4e20554fed512a603426bfa1Owen Lin * http://www.apache.org/licenses/LICENSE-2.0 9f9a0a4306d589b4a4e20554fed512a603426bfa1Owen Lin * 10f9a0a4306d589b4a4e20554fed512a603426bfa1Owen Lin * Unless required by applicable law or agreed to in writing, software 11f9a0a4306d589b4a4e20554fed512a603426bfa1Owen Lin * distributed under the License is distributed on an "AS IS" BASIS, 12f9a0a4306d589b4a4e20554fed512a603426bfa1Owen Lin * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13f9a0a4306d589b4a4e20554fed512a603426bfa1Owen Lin * See the License for the specific language governing permissions and 14f9a0a4306d589b4a4e20554fed512a603426bfa1Owen Lin * limitations under the License. 15f9a0a4306d589b4a4e20554fed512a603426bfa1Owen Lin */ 16f9a0a4306d589b4a4e20554fed512a603426bfa1Owen Lin 17f9a0a4306d589b4a4e20554fed512a603426bfa1Owen Linpackage com.android.gallery3d.app; 18f9a0a4306d589b4a4e20554fed512a603426bfa1Owen Lin 19cc8e7ab7ae0912186beff20e7f042fd6c1e78b35Owen Linimport android.annotation.TargetApi; 202abaaf7caa9a83ba1ea759868aabde7f21387184John Reckimport android.app.ActionBar; 212abaaf7caa9a83ba1ea759868aabde7f21387184John Reckimport android.app.ActionBar.OnMenuVisibilityListener; 222abaaf7caa9a83ba1ea759868aabde7f21387184John Reckimport android.app.ActionBar.OnNavigationListener; 23f9a0a4306d589b4a4e20554fed512a603426bfa1Owen Linimport android.app.Activity; 24f9a0a4306d589b4a4e20554fed512a603426bfa1Owen Linimport android.app.AlertDialog; 25f9a0a4306d589b4a4e20554fed512a603426bfa1Owen Linimport android.content.Context; 26f9a0a4306d589b4a4e20554fed512a603426bfa1Owen Linimport android.content.DialogInterface; 272bb717f1ea38e2ce33dd102a23afe6bfacb5675cOwen Linimport android.content.Intent; 283cf502a91b36bf6ce633f897505b0a2c3fc53ad5Bobby Georgescuimport android.content.res.Resources; 29b5f8d908c5dd287052cd49eddaf1f82d858cca03Ray Chenimport android.view.LayoutInflater; 302abaaf7caa9a83ba1ea759868aabde7f21387184John Reckimport android.view.Menu; 312abaaf7caa9a83ba1ea759868aabde7f21387184John Reckimport android.view.MenuItem; 32b5f8d908c5dd287052cd49eddaf1f82d858cca03Ray Chenimport android.view.View; 33b5f8d908c5dd287052cd49eddaf1f82d858cca03Ray Chenimport android.view.ViewGroup; 34b5f8d908c5dd287052cd49eddaf1f82d858cca03Ray Chenimport android.widget.BaseAdapter; 352abaaf7caa9a83ba1ea759868aabde7f21387184John Reckimport android.widget.ShareActionProvider; 36b5f8d908c5dd287052cd49eddaf1f82d858cca03Ray Chenimport android.widget.TextView; 37a2ce811cb505d579112f5e3c4ecb030d8252371eBobby Georgescuimport android.widget.TwoLineListItem; 386cf807453fb58ccd4cc513ff187b306c7090e67cOwen Lin 392b3ee0ea07246b859a5b75d8a6102a7cce7ec838Owen Linimport com.android.gallery3d.R; 40cc8e7ab7ae0912186beff20e7f042fd6c1e78b35Owen Linimport com.android.gallery3d.common.ApiHelper; 412b3ee0ea07246b859a5b75d8a6102a7cce7ec838Owen Lin 426cf807453fb58ccd4cc513ff187b306c7090e67cOwen Linimport java.util.ArrayList; 43f9a0a4306d589b4a4e20554fed512a603426bfa1Owen Lin 44b21b8e58a604f6c701245d84b141b5b87663192bOwen Linpublic class GalleryActionBar implements OnNavigationListener { 457817979db0c52ffeacb951625b1e821eba303285Ahbong Chang @SuppressWarnings("unused") 46f9a0a4306d589b4a4e20554fed512a603426bfa1Owen Lin private static final String TAG = "GalleryActionBar"; 47f9a0a4306d589b4a4e20554fed512a603426bfa1Owen Lin 488cab3e872dd95e55ba34fdb94269a0c5069e72aeRay Chen private ClusterRunner mClusterRunner; 498cab3e872dd95e55ba34fdb94269a0c5069e72aeRay Chen private CharSequence[] mTitles; 508cab3e872dd95e55ba34fdb94269a0c5069e72aeRay Chen private ArrayList<Integer> mActions; 518cab3e872dd95e55ba34fdb94269a0c5069e72aeRay Chen private Context mContext; 528cab3e872dd95e55ba34fdb94269a0c5069e72aeRay Chen private LayoutInflater mInflater; 53b21b8e58a604f6c701245d84b141b5b87663192bOwen Lin private AbstractGalleryActivity mActivity; 54b21b8e58a604f6c701245d84b141b5b87663192bOwen Lin private ActionBar mActionBar; 558cab3e872dd95e55ba34fdb94269a0c5069e72aeRay Chen private int mCurrentIndex; 568cab3e872dd95e55ba34fdb94269a0c5069e72aeRay Chen private ClusterAdapter mAdapter = new ClusterAdapter(); 578cab3e872dd95e55ba34fdb94269a0c5069e72aeRay Chen 583cf502a91b36bf6ce633f897505b0a2c3fc53ad5Bobby Georgescu private AlbumModeAdapter mAlbumModeAdapter; 593cf502a91b36bf6ce633f897505b0a2c3fc53ad5Bobby Georgescu private OnAlbumModeSelectedListener mAlbumModeListener; 605d4b8fd9fd2e601b780c027ef912c8fabfe3ee1eBobby Georgescu private int mLastAlbumModeSelected; 613cf502a91b36bf6ce633f897505b0a2c3fc53ad5Bobby Georgescu private CharSequence [] mAlbumModes; 623cf502a91b36bf6ce633f897505b0a2c3fc53ad5Bobby Georgescu public static final int ALBUM_FILMSTRIP_MODE_SELECTED = 0; 633cf502a91b36bf6ce633f897505b0a2c3fc53ad5Bobby Georgescu public static final int ALBUM_GRID_MODE_SELECTED = 1; 643cf502a91b36bf6ce633f897505b0a2c3fc53ad5Bobby Georgescu 65f9a0a4306d589b4a4e20554fed512a603426bfa1Owen Lin public interface ClusterRunner { 66f9a0a4306d589b4a4e20554fed512a603426bfa1Owen Lin public void doCluster(int id); 67f9a0a4306d589b4a4e20554fed512a603426bfa1Owen Lin } 68f9a0a4306d589b4a4e20554fed512a603426bfa1Owen Lin 693cf502a91b36bf6ce633f897505b0a2c3fc53ad5Bobby Georgescu public interface OnAlbumModeSelectedListener { 703cf502a91b36bf6ce633f897505b0a2c3fc53ad5Bobby Georgescu public void onAlbumModeSelected(int mode); 713cf502a91b36bf6ce633f897505b0a2c3fc53ad5Bobby Georgescu } 723cf502a91b36bf6ce633f897505b0a2c3fc53ad5Bobby Georgescu 73f9a0a4306d589b4a4e20554fed512a603426bfa1Owen Lin private static class ActionItem { 74f9a0a4306d589b4a4e20554fed512a603426bfa1Owen Lin public int action; 75f9a0a4306d589b4a4e20554fed512a603426bfa1Owen Lin public boolean enabled; 76f9a0a4306d589b4a4e20554fed512a603426bfa1Owen Lin public boolean visible; 77b5f8d908c5dd287052cd49eddaf1f82d858cca03Ray Chen public int spinnerTitle; 78f9a0a4306d589b4a4e20554fed512a603426bfa1Owen Lin public int dialogTitle; 79f9a0a4306d589b4a4e20554fed512a603426bfa1Owen Lin public int clusterBy; 80f9a0a4306d589b4a4e20554fed512a603426bfa1Owen Lin 81f9a0a4306d589b4a4e20554fed512a603426bfa1Owen Lin public ActionItem(int action, boolean applied, boolean enabled, int title, 82f9a0a4306d589b4a4e20554fed512a603426bfa1Owen Lin int clusterBy) { 83f9a0a4306d589b4a4e20554fed512a603426bfa1Owen Lin this(action, applied, enabled, title, title, clusterBy); 84f9a0a4306d589b4a4e20554fed512a603426bfa1Owen Lin } 85f9a0a4306d589b4a4e20554fed512a603426bfa1Owen Lin 86b5f8d908c5dd287052cd49eddaf1f82d858cca03Ray Chen public ActionItem(int action, boolean applied, boolean enabled, int spinnerTitle, 87f9a0a4306d589b4a4e20554fed512a603426bfa1Owen Lin int dialogTitle, int clusterBy) { 88f9a0a4306d589b4a4e20554fed512a603426bfa1Owen Lin this.action = action; 89f9a0a4306d589b4a4e20554fed512a603426bfa1Owen Lin this.enabled = enabled; 90b5f8d908c5dd287052cd49eddaf1f82d858cca03Ray Chen this.spinnerTitle = spinnerTitle; 91f9a0a4306d589b4a4e20554fed512a603426bfa1Owen Lin this.dialogTitle = dialogTitle; 92f9a0a4306d589b4a4e20554fed512a603426bfa1Owen Lin this.clusterBy = clusterBy; 93f9a0a4306d589b4a4e20554fed512a603426bfa1Owen Lin this.visible = true; 94f9a0a4306d589b4a4e20554fed512a603426bfa1Owen Lin } 95f9a0a4306d589b4a4e20554fed512a603426bfa1Owen Lin } 96f9a0a4306d589b4a4e20554fed512a603426bfa1Owen Lin 97f9a0a4306d589b4a4e20554fed512a603426bfa1Owen Lin private static final ActionItem[] sClusterItems = new ActionItem[] { 98f9a0a4306d589b4a4e20554fed512a603426bfa1Owen Lin new ActionItem(FilterUtils.CLUSTER_BY_ALBUM, true, false, R.string.albums, 99f9a0a4306d589b4a4e20554fed512a603426bfa1Owen Lin R.string.group_by_album), 100f9a0a4306d589b4a4e20554fed512a603426bfa1Owen Lin new ActionItem(FilterUtils.CLUSTER_BY_LOCATION, true, false, 101f9a0a4306d589b4a4e20554fed512a603426bfa1Owen Lin R.string.locations, R.string.location, R.string.group_by_location), 102f9a0a4306d589b4a4e20554fed512a603426bfa1Owen Lin new ActionItem(FilterUtils.CLUSTER_BY_TIME, true, false, R.string.times, 103f9a0a4306d589b4a4e20554fed512a603426bfa1Owen Lin R.string.time, R.string.group_by_time), 104f9a0a4306d589b4a4e20554fed512a603426bfa1Owen Lin new ActionItem(FilterUtils.CLUSTER_BY_FACE, true, false, R.string.people, 105f9a0a4306d589b4a4e20554fed512a603426bfa1Owen Lin R.string.group_by_faces), 106f9a0a4306d589b4a4e20554fed512a603426bfa1Owen Lin new ActionItem(FilterUtils.CLUSTER_BY_TAG, true, false, R.string.tags, 107f9a0a4306d589b4a4e20554fed512a603426bfa1Owen Lin R.string.group_by_tags) 108f9a0a4306d589b4a4e20554fed512a603426bfa1Owen Lin }; 109f9a0a4306d589b4a4e20554fed512a603426bfa1Owen Lin 110b5f8d908c5dd287052cd49eddaf1f82d858cca03Ray Chen private class ClusterAdapter extends BaseAdapter { 111b5f8d908c5dd287052cd49eddaf1f82d858cca03Ray Chen 1127817979db0c52ffeacb951625b1e821eba303285Ahbong Chang @Override 113b5f8d908c5dd287052cd49eddaf1f82d858cca03Ray Chen public int getCount() { 114b5f8d908c5dd287052cd49eddaf1f82d858cca03Ray Chen return sClusterItems.length; 115b5f8d908c5dd287052cd49eddaf1f82d858cca03Ray Chen } 116b5f8d908c5dd287052cd49eddaf1f82d858cca03Ray Chen 1177817979db0c52ffeacb951625b1e821eba303285Ahbong Chang @Override 118b5f8d908c5dd287052cd49eddaf1f82d858cca03Ray Chen public Object getItem(int position) { 119b5f8d908c5dd287052cd49eddaf1f82d858cca03Ray Chen return sClusterItems[position]; 120b5f8d908c5dd287052cd49eddaf1f82d858cca03Ray Chen } 121b5f8d908c5dd287052cd49eddaf1f82d858cca03Ray Chen 1227817979db0c52ffeacb951625b1e821eba303285Ahbong Chang @Override 123b5f8d908c5dd287052cd49eddaf1f82d858cca03Ray Chen public long getItemId(int position) { 124b5f8d908c5dd287052cd49eddaf1f82d858cca03Ray Chen return sClusterItems[position].action; 125b5f8d908c5dd287052cd49eddaf1f82d858cca03Ray Chen } 126b5f8d908c5dd287052cd49eddaf1f82d858cca03Ray Chen 1277817979db0c52ffeacb951625b1e821eba303285Ahbong Chang @Override 128b5f8d908c5dd287052cd49eddaf1f82d858cca03Ray Chen public View getView(int position, View convertView, ViewGroup parent) { 129b5f8d908c5dd287052cd49eddaf1f82d858cca03Ray Chen if (convertView == null) { 1305ccc96ac39f9513f13977de4419d814112c23ab8Owen Lin convertView = mInflater.inflate(R.layout.action_bar_text, 131b5f8d908c5dd287052cd49eddaf1f82d858cca03Ray Chen parent, false); 132b5f8d908c5dd287052cd49eddaf1f82d858cca03Ray Chen } 133b5f8d908c5dd287052cd49eddaf1f82d858cca03Ray Chen TextView view = (TextView) convertView; 134b5f8d908c5dd287052cd49eddaf1f82d858cca03Ray Chen view.setText(sClusterItems[position].spinnerTitle); 135b5f8d908c5dd287052cd49eddaf1f82d858cca03Ray Chen return convertView; 136b5f8d908c5dd287052cd49eddaf1f82d858cca03Ray Chen } 137b5f8d908c5dd287052cd49eddaf1f82d858cca03Ray Chen } 138b5f8d908c5dd287052cd49eddaf1f82d858cca03Ray Chen 1393cf502a91b36bf6ce633f897505b0a2c3fc53ad5Bobby Georgescu private class AlbumModeAdapter extends BaseAdapter { 1403cf502a91b36bf6ce633f897505b0a2c3fc53ad5Bobby Georgescu @Override 1413cf502a91b36bf6ce633f897505b0a2c3fc53ad5Bobby Georgescu public int getCount() { 1423cf502a91b36bf6ce633f897505b0a2c3fc53ad5Bobby Georgescu return mAlbumModes.length; 1433cf502a91b36bf6ce633f897505b0a2c3fc53ad5Bobby Georgescu } 1443cf502a91b36bf6ce633f897505b0a2c3fc53ad5Bobby Georgescu 1453cf502a91b36bf6ce633f897505b0a2c3fc53ad5Bobby Georgescu @Override 1463cf502a91b36bf6ce633f897505b0a2c3fc53ad5Bobby Georgescu public Object getItem(int position) { 1473cf502a91b36bf6ce633f897505b0a2c3fc53ad5Bobby Georgescu return mAlbumModes[position]; 1483cf502a91b36bf6ce633f897505b0a2c3fc53ad5Bobby Georgescu } 1493cf502a91b36bf6ce633f897505b0a2c3fc53ad5Bobby Georgescu 1503cf502a91b36bf6ce633f897505b0a2c3fc53ad5Bobby Georgescu @Override 1513cf502a91b36bf6ce633f897505b0a2c3fc53ad5Bobby Georgescu public long getItemId(int position) { 1523cf502a91b36bf6ce633f897505b0a2c3fc53ad5Bobby Georgescu return position; 1533cf502a91b36bf6ce633f897505b0a2c3fc53ad5Bobby Georgescu } 1543cf502a91b36bf6ce633f897505b0a2c3fc53ad5Bobby Georgescu 155a2ce811cb505d579112f5e3c4ecb030d8252371eBobby Georgescu @Override 156a2ce811cb505d579112f5e3c4ecb030d8252371eBobby Georgescu public View getView(int position, View convertView, ViewGroup parent) { 1573cf502a91b36bf6ce633f897505b0a2c3fc53ad5Bobby Georgescu if (convertView == null) { 158a2ce811cb505d579112f5e3c4ecb030d8252371eBobby Georgescu convertView = mInflater.inflate(R.layout.action_bar_two_line_text, 1593cf502a91b36bf6ce633f897505b0a2c3fc53ad5Bobby Georgescu parent, false); 1603cf502a91b36bf6ce633f897505b0a2c3fc53ad5Bobby Georgescu } 161a2ce811cb505d579112f5e3c4ecb030d8252371eBobby Georgescu TwoLineListItem view = (TwoLineListItem) convertView; 162a2ce811cb505d579112f5e3c4ecb030d8252371eBobby Georgescu view.getText1().setText(mActionBar.getTitle()); 163a2ce811cb505d579112f5e3c4ecb030d8252371eBobby Georgescu view.getText2().setText((CharSequence) getItem(position)); 1643cf502a91b36bf6ce633f897505b0a2c3fc53ad5Bobby Georgescu return convertView; 1653cf502a91b36bf6ce633f897505b0a2c3fc53ad5Bobby Georgescu } 1663cf502a91b36bf6ce633f897505b0a2c3fc53ad5Bobby Georgescu 1673cf502a91b36bf6ce633f897505b0a2c3fc53ad5Bobby Georgescu @Override 1683cf502a91b36bf6ce633f897505b0a2c3fc53ad5Bobby Georgescu public View getDropDownView(int position, View convertView, ViewGroup parent) { 169a2ce811cb505d579112f5e3c4ecb030d8252371eBobby Georgescu if (convertView == null) { 170a2ce811cb505d579112f5e3c4ecb030d8252371eBobby Georgescu convertView = mInflater.inflate(R.layout.action_bar_text, 171a2ce811cb505d579112f5e3c4ecb030d8252371eBobby Georgescu parent, false); 172a2ce811cb505d579112f5e3c4ecb030d8252371eBobby Georgescu } 173a2ce811cb505d579112f5e3c4ecb030d8252371eBobby Georgescu TextView view = (TextView) convertView; 174a2ce811cb505d579112f5e3c4ecb030d8252371eBobby Georgescu view.setText((CharSequence) getItem(position)); 175a2ce811cb505d579112f5e3c4ecb030d8252371eBobby Georgescu return convertView; 1763cf502a91b36bf6ce633f897505b0a2c3fc53ad5Bobby Georgescu } 1773cf502a91b36bf6ce633f897505b0a2c3fc53ad5Bobby Georgescu } 1783cf502a91b36bf6ce633f897505b0a2c3fc53ad5Bobby Georgescu 1798cab3e872dd95e55ba34fdb94269a0c5069e72aeRay Chen public static String getClusterByTypeString(Context context, int type) { 1808cab3e872dd95e55ba34fdb94269a0c5069e72aeRay Chen for (ActionItem item : sClusterItems) { 1818cab3e872dd95e55ba34fdb94269a0c5069e72aeRay Chen if (item.action == type) { 1828cab3e872dd95e55ba34fdb94269a0c5069e72aeRay Chen return context.getString(item.clusterBy); 1838cab3e872dd95e55ba34fdb94269a0c5069e72aeRay Chen } 1848cab3e872dd95e55ba34fdb94269a0c5069e72aeRay Chen } 1858cab3e872dd95e55ba34fdb94269a0c5069e72aeRay Chen return null; 1868cab3e872dd95e55ba34fdb94269a0c5069e72aeRay Chen } 1878cab3e872dd95e55ba34fdb94269a0c5069e72aeRay Chen 188b21b8e58a604f6c701245d84b141b5b87663192bOwen Lin public GalleryActionBar(AbstractGalleryActivity activity) { 1892abaaf7caa9a83ba1ea759868aabde7f21387184John Reck mActionBar = activity.getActionBar(); 1905ccc96ac39f9513f13977de4419d814112c23ab8Owen Lin mContext = activity.getAndroidContext(); 1915ccc96ac39f9513f13977de4419d814112c23ab8Owen Lin mActivity = activity; 1925ccc96ac39f9513f13977de4419d814112c23ab8Owen Lin mInflater = ((Activity) mActivity).getLayoutInflater(); 193b5f8d908c5dd287052cd49eddaf1f82d858cca03Ray Chen mCurrentIndex = 0; 194f9a0a4306d589b4a4e20554fed512a603426bfa1Owen Lin } 195f9a0a4306d589b4a4e20554fed512a603426bfa1Owen Lin 196f9a0a4306d589b4a4e20554fed512a603426bfa1Owen Lin private void createDialogData() { 197f9a0a4306d589b4a4e20554fed512a603426bfa1Owen Lin ArrayList<CharSequence> titles = new ArrayList<CharSequence>(); 198f9a0a4306d589b4a4e20554fed512a603426bfa1Owen Lin mActions = new ArrayList<Integer>(); 199f9a0a4306d589b4a4e20554fed512a603426bfa1Owen Lin for (ActionItem item : sClusterItems) { 200f9a0a4306d589b4a4e20554fed512a603426bfa1Owen Lin if (item.enabled && item.visible) { 201f9a0a4306d589b4a4e20554fed512a603426bfa1Owen Lin titles.add(mContext.getString(item.dialogTitle)); 202f9a0a4306d589b4a4e20554fed512a603426bfa1Owen Lin mActions.add(item.action); 203f9a0a4306d589b4a4e20554fed512a603426bfa1Owen Lin } 204f9a0a4306d589b4a4e20554fed512a603426bfa1Owen Lin } 205f9a0a4306d589b4a4e20554fed512a603426bfa1Owen Lin mTitles = new CharSequence[titles.size()]; 206f9a0a4306d589b4a4e20554fed512a603426bfa1Owen Lin titles.toArray(mTitles); 207f9a0a4306d589b4a4e20554fed512a603426bfa1Owen Lin } 208f9a0a4306d589b4a4e20554fed512a603426bfa1Owen Lin 2098cab3e872dd95e55ba34fdb94269a0c5069e72aeRay Chen public int getHeight() { 2108cab3e872dd95e55ba34fdb94269a0c5069e72aeRay Chen return mActionBar != null ? mActionBar.getHeight() : 0; 2118cab3e872dd95e55ba34fdb94269a0c5069e72aeRay Chen } 2128cab3e872dd95e55ba34fdb94269a0c5069e72aeRay Chen 213f9a0a4306d589b4a4e20554fed512a603426bfa1Owen Lin public void setClusterItemEnabled(int id, boolean enabled) { 214f9a0a4306d589b4a4e20554fed512a603426bfa1Owen Lin for (ActionItem item : sClusterItems) { 215f9a0a4306d589b4a4e20554fed512a603426bfa1Owen Lin if (item.action == id) { 216f9a0a4306d589b4a4e20554fed512a603426bfa1Owen Lin item.enabled = enabled; 217f9a0a4306d589b4a4e20554fed512a603426bfa1Owen Lin return; 218f9a0a4306d589b4a4e20554fed512a603426bfa1Owen Lin } 219f9a0a4306d589b4a4e20554fed512a603426bfa1Owen Lin } 220f9a0a4306d589b4a4e20554fed512a603426bfa1Owen Lin } 221f9a0a4306d589b4a4e20554fed512a603426bfa1Owen Lin 222f9a0a4306d589b4a4e20554fed512a603426bfa1Owen Lin public void setClusterItemVisibility(int id, boolean visible) { 223f9a0a4306d589b4a4e20554fed512a603426bfa1Owen Lin for (ActionItem item : sClusterItems) { 224f9a0a4306d589b4a4e20554fed512a603426bfa1Owen Lin if (item.action == id) { 225f9a0a4306d589b4a4e20554fed512a603426bfa1Owen Lin item.visible = visible; 226f9a0a4306d589b4a4e20554fed512a603426bfa1Owen Lin return; 227f9a0a4306d589b4a4e20554fed512a603426bfa1Owen Lin } 228f9a0a4306d589b4a4e20554fed512a603426bfa1Owen Lin } 229f9a0a4306d589b4a4e20554fed512a603426bfa1Owen Lin } 230f9a0a4306d589b4a4e20554fed512a603426bfa1Owen Lin 231f9a0a4306d589b4a4e20554fed512a603426bfa1Owen Lin public int getClusterTypeAction() { 232b5f8d908c5dd287052cd49eddaf1f82d858cca03Ray Chen return sClusterItems[mCurrentIndex].action; 233f9a0a4306d589b4a4e20554fed512a603426bfa1Owen Lin } 234f9a0a4306d589b4a4e20554fed512a603426bfa1Owen Lin 235fe1625c46f8258be4cd5e5e1ba69b584c1fe1a49Ray Chen public void enableClusterMenu(int action, ClusterRunner runner) { 2368cab3e872dd95e55ba34fdb94269a0c5069e72aeRay Chen if (mActionBar != null) { 2378cab3e872dd95e55ba34fdb94269a0c5069e72aeRay Chen // Don't set cluster runner until action bar is ready. 2388cab3e872dd95e55ba34fdb94269a0c5069e72aeRay Chen mClusterRunner = null; 2398cab3e872dd95e55ba34fdb94269a0c5069e72aeRay Chen mActionBar.setListNavigationCallbacks(mAdapter, this); 240b21b8e58a604f6c701245d84b141b5b87663192bOwen Lin mActionBar.setNavigationMode(ActionBar.NAVIGATION_MODE_LIST); 2418cab3e872dd95e55ba34fdb94269a0c5069e72aeRay Chen setSelectedAction(action); 2428cab3e872dd95e55ba34fdb94269a0c5069e72aeRay Chen mClusterRunner = runner; 2438cab3e872dd95e55ba34fdb94269a0c5069e72aeRay Chen } 244f9a0a4306d589b4a4e20554fed512a603426bfa1Owen Lin } 245f9a0a4306d589b4a4e20554fed512a603426bfa1Owen Lin 246fe1625c46f8258be4cd5e5e1ba69b584c1fe1a49Ray Chen // The only use case not to hideMenu in this method is to ensure 247fe1625c46f8258be4cd5e5e1ba69b584c1fe1a49Ray Chen // all elements disappear at the same time when exiting gallery. 248fe1625c46f8258be4cd5e5e1ba69b584c1fe1a49Ray Chen // hideMenu should always be true in all other cases. 249fe1625c46f8258be4cd5e5e1ba69b584c1fe1a49Ray Chen public void disableClusterMenu(boolean hideMenu) { 2508cab3e872dd95e55ba34fdb94269a0c5069e72aeRay Chen if (mActionBar != null) { 2518cab3e872dd95e55ba34fdb94269a0c5069e72aeRay Chen mClusterRunner = null; 2528cab3e872dd95e55ba34fdb94269a0c5069e72aeRay Chen if (hideMenu) { 253b21b8e58a604f6c701245d84b141b5b87663192bOwen Lin mActionBar.setNavigationMode(ActionBar.NAVIGATION_MODE_STANDARD); 2548cab3e872dd95e55ba34fdb94269a0c5069e72aeRay Chen } 255fe1625c46f8258be4cd5e5e1ba69b584c1fe1a49Ray Chen } 256f9a0a4306d589b4a4e20554fed512a603426bfa1Owen Lin } 257f9a0a4306d589b4a4e20554fed512a603426bfa1Owen Lin 2585d4b8fd9fd2e601b780c027ef912c8fabfe3ee1eBobby Georgescu public void onConfigurationChanged() { 2595d4b8fd9fd2e601b780c027ef912c8fabfe3ee1eBobby Georgescu if (mActionBar != null && mAlbumModeListener != null) { 2605d4b8fd9fd2e601b780c027ef912c8fabfe3ee1eBobby Georgescu OnAlbumModeSelectedListener listener = mAlbumModeListener; 2615d4b8fd9fd2e601b780c027ef912c8fabfe3ee1eBobby Georgescu enableAlbumModeMenu(mLastAlbumModeSelected, listener); 2625d4b8fd9fd2e601b780c027ef912c8fabfe3ee1eBobby Georgescu } 2635d4b8fd9fd2e601b780c027ef912c8fabfe3ee1eBobby Georgescu } 2645d4b8fd9fd2e601b780c027ef912c8fabfe3ee1eBobby Georgescu 2653cf502a91b36bf6ce633f897505b0a2c3fc53ad5Bobby Georgescu public void enableAlbumModeMenu(int selected, OnAlbumModeSelectedListener listener) { 2663cf502a91b36bf6ce633f897505b0a2c3fc53ad5Bobby Georgescu if (mActionBar != null) { 2673cf502a91b36bf6ce633f897505b0a2c3fc53ad5Bobby Georgescu if (mAlbumModeAdapter == null) { 2683cf502a91b36bf6ce633f897505b0a2c3fc53ad5Bobby Georgescu // Initialize the album mode options if they haven't been already 2693cf502a91b36bf6ce633f897505b0a2c3fc53ad5Bobby Georgescu Resources res = mActivity.getResources(); 2703cf502a91b36bf6ce633f897505b0a2c3fc53ad5Bobby Georgescu mAlbumModes = new CharSequence[] { 2713cf502a91b36bf6ce633f897505b0a2c3fc53ad5Bobby Georgescu res.getString(R.string.switch_photo_filmstrip), 2723cf502a91b36bf6ce633f897505b0a2c3fc53ad5Bobby Georgescu res.getString(R.string.switch_photo_grid)}; 2733cf502a91b36bf6ce633f897505b0a2c3fc53ad5Bobby Georgescu mAlbumModeAdapter = new AlbumModeAdapter(); 2743cf502a91b36bf6ce633f897505b0a2c3fc53ad5Bobby Georgescu } 2753cf502a91b36bf6ce633f897505b0a2c3fc53ad5Bobby Georgescu mAlbumModeListener = null; 2765d4b8fd9fd2e601b780c027ef912c8fabfe3ee1eBobby Georgescu mLastAlbumModeSelected = selected; 2773cf502a91b36bf6ce633f897505b0a2c3fc53ad5Bobby Georgescu mActionBar.setListNavigationCallbacks(mAlbumModeAdapter, this); 2783cf502a91b36bf6ce633f897505b0a2c3fc53ad5Bobby Georgescu mActionBar.setNavigationMode(ActionBar.NAVIGATION_MODE_LIST); 2793cf502a91b36bf6ce633f897505b0a2c3fc53ad5Bobby Georgescu mActionBar.setSelectedNavigationItem(selected); 2803cf502a91b36bf6ce633f897505b0a2c3fc53ad5Bobby Georgescu mAlbumModeListener = listener; 2813cf502a91b36bf6ce633f897505b0a2c3fc53ad5Bobby Georgescu } 2823cf502a91b36bf6ce633f897505b0a2c3fc53ad5Bobby Georgescu } 2833cf502a91b36bf6ce633f897505b0a2c3fc53ad5Bobby Georgescu 2843cf502a91b36bf6ce633f897505b0a2c3fc53ad5Bobby Georgescu public void disableAlbumModeMenu(boolean hideMenu) { 2853cf502a91b36bf6ce633f897505b0a2c3fc53ad5Bobby Georgescu if (mActionBar != null) { 2863cf502a91b36bf6ce633f897505b0a2c3fc53ad5Bobby Georgescu mAlbumModeListener = null; 2873cf502a91b36bf6ce633f897505b0a2c3fc53ad5Bobby Georgescu if (hideMenu) { 2883cf502a91b36bf6ce633f897505b0a2c3fc53ad5Bobby Georgescu mActionBar.setNavigationMode(ActionBar.NAVIGATION_MODE_STANDARD); 2893cf502a91b36bf6ce633f897505b0a2c3fc53ad5Bobby Georgescu } 2903cf502a91b36bf6ce633f897505b0a2c3fc53ad5Bobby Georgescu } 2913cf502a91b36bf6ce633f897505b0a2c3fc53ad5Bobby Georgescu } 2923cf502a91b36bf6ce633f897505b0a2c3fc53ad5Bobby Georgescu 293f9a0a4306d589b4a4e20554fed512a603426bfa1Owen Lin public void showClusterDialog(final ClusterRunner clusterRunner) { 294f9a0a4306d589b4a4e20554fed512a603426bfa1Owen Lin createDialogData(); 295f9a0a4306d589b4a4e20554fed512a603426bfa1Owen Lin final ArrayList<Integer> actions = mActions; 296f9a0a4306d589b4a4e20554fed512a603426bfa1Owen Lin new AlertDialog.Builder(mContext).setTitle(R.string.group_by).setItems( 297f9a0a4306d589b4a4e20554fed512a603426bfa1Owen Lin mTitles, new DialogInterface.OnClickListener() { 2987817979db0c52ffeacb951625b1e821eba303285Ahbong Chang @Override 299f9a0a4306d589b4a4e20554fed512a603426bfa1Owen Lin public void onClick(DialogInterface dialog, int which) { 300677584c7242d21ef2ca8adbedb5f9e3f016b54b3Yuli Huang // Need to lock rendering when operations invoked by system UI (main thread) are 301677584c7242d21ef2ca8adbedb5f9e3f016b54b3Yuli Huang // modifying slot data used in GL thread for rendering. 302677584c7242d21ef2ca8adbedb5f9e3f016b54b3Yuli Huang mActivity.getGLRoot().lockRenderThread(); 303677584c7242d21ef2ca8adbedb5f9e3f016b54b3Yuli Huang try { 304677584c7242d21ef2ca8adbedb5f9e3f016b54b3Yuli Huang clusterRunner.doCluster(actions.get(which).intValue()); 305677584c7242d21ef2ca8adbedb5f9e3f016b54b3Yuli Huang } finally { 306677584c7242d21ef2ca8adbedb5f9e3f016b54b3Yuli Huang mActivity.getGLRoot().unlockRenderThread(); 307677584c7242d21ef2ca8adbedb5f9e3f016b54b3Yuli Huang } 308f9a0a4306d589b4a4e20554fed512a603426bfa1Owen Lin } 309f9a0a4306d589b4a4e20554fed512a603426bfa1Owen Lin }).create().show(); 310f9a0a4306d589b4a4e20554fed512a603426bfa1Owen Lin } 311f9a0a4306d589b4a4e20554fed512a603426bfa1Owen Lin 312cc8e7ab7ae0912186beff20e7f042fd6c1e78b35Owen Lin @TargetApi(ApiHelper.VERSION_CODES.ICE_CREAM_SANDWICH) 313cc8e7ab7ae0912186beff20e7f042fd6c1e78b35Owen Lin private void setHomeButtonEnabled(boolean enabled) { 314b21b8e58a604f6c701245d84b141b5b87663192bOwen Lin if (mActionBar != null) mActionBar.setHomeButtonEnabled(enabled); 315cc8e7ab7ae0912186beff20e7f042fd6c1e78b35Owen Lin } 316cc8e7ab7ae0912186beff20e7f042fd6c1e78b35Owen Lin 31784c220f10a643927c8a2126de8a755d8d7f7ec9eRay Chen public void setDisplayOptions(boolean displayHomeAsUp, boolean showTitle) { 3182bb717f1ea38e2ce33dd102a23afe6bfacb5675cOwen Lin if (mActionBar == null) return; 3192bb717f1ea38e2ce33dd102a23afe6bfacb5675cOwen Lin int options = 0; 320b21b8e58a604f6c701245d84b141b5b87663192bOwen Lin if (displayHomeAsUp) options |= ActionBar.DISPLAY_HOME_AS_UP; 321b21b8e58a604f6c701245d84b141b5b87663192bOwen Lin if (showTitle) options |= ActionBar.DISPLAY_SHOW_TITLE; 3222bb717f1ea38e2ce33dd102a23afe6bfacb5675cOwen Lin 3232bb717f1ea38e2ce33dd102a23afe6bfacb5675cOwen Lin mActionBar.setDisplayOptions(options, 324b21b8e58a604f6c701245d84b141b5b87663192bOwen Lin ActionBar.DISPLAY_HOME_AS_UP | ActionBar.DISPLAY_SHOW_TITLE); 3252bb717f1ea38e2ce33dd102a23afe6bfacb5675cOwen Lin mActionBar.setHomeButtonEnabled(displayHomeAsUp); 32684c220f10a643927c8a2126de8a755d8d7f7ec9eRay Chen } 32784c220f10a643927c8a2126de8a755d8d7f7ec9eRay Chen 328f9a0a4306d589b4a4e20554fed512a603426bfa1Owen Lin public void setTitle(String title) { 329f9a0a4306d589b4a4e20554fed512a603426bfa1Owen Lin if (mActionBar != null) mActionBar.setTitle(title); 330f9a0a4306d589b4a4e20554fed512a603426bfa1Owen Lin } 331f9a0a4306d589b4a4e20554fed512a603426bfa1Owen Lin 332f9a0a4306d589b4a4e20554fed512a603426bfa1Owen Lin public void setTitle(int titleId) { 3332bb717f1ea38e2ce33dd102a23afe6bfacb5675cOwen Lin if (mActionBar != null) { 3342bb717f1ea38e2ce33dd102a23afe6bfacb5675cOwen Lin mActionBar.setTitle(mContext.getString(titleId)); 3352bb717f1ea38e2ce33dd102a23afe6bfacb5675cOwen Lin } 336f9a0a4306d589b4a4e20554fed512a603426bfa1Owen Lin } 337f9a0a4306d589b4a4e20554fed512a603426bfa1Owen Lin 338f9a0a4306d589b4a4e20554fed512a603426bfa1Owen Lin public void setSubtitle(String title) { 339f9a0a4306d589b4a4e20554fed512a603426bfa1Owen Lin if (mActionBar != null) mActionBar.setSubtitle(title); 340f9a0a4306d589b4a4e20554fed512a603426bfa1Owen Lin } 341f9a0a4306d589b4a4e20554fed512a603426bfa1Owen Lin 3428cab3e872dd95e55ba34fdb94269a0c5069e72aeRay Chen public void show() { 3438cab3e872dd95e55ba34fdb94269a0c5069e72aeRay Chen if (mActionBar != null) mActionBar.show(); 3448cab3e872dd95e55ba34fdb94269a0c5069e72aeRay Chen } 3458cab3e872dd95e55ba34fdb94269a0c5069e72aeRay Chen 3468cab3e872dd95e55ba34fdb94269a0c5069e72aeRay Chen public void hide() { 3478cab3e872dd95e55ba34fdb94269a0c5069e72aeRay Chen if (mActionBar != null) mActionBar.hide(); 3488cab3e872dd95e55ba34fdb94269a0c5069e72aeRay Chen } 3498cab3e872dd95e55ba34fdb94269a0c5069e72aeRay Chen 3508cab3e872dd95e55ba34fdb94269a0c5069e72aeRay Chen public void addOnMenuVisibilityListener(OnMenuVisibilityListener listener) { 3518cab3e872dd95e55ba34fdb94269a0c5069e72aeRay Chen if (mActionBar != null) mActionBar.addOnMenuVisibilityListener(listener); 3528cab3e872dd95e55ba34fdb94269a0c5069e72aeRay Chen } 3538cab3e872dd95e55ba34fdb94269a0c5069e72aeRay Chen 3548cab3e872dd95e55ba34fdb94269a0c5069e72aeRay Chen public void removeOnMenuVisibilityListener(OnMenuVisibilityListener listener) { 3558cab3e872dd95e55ba34fdb94269a0c5069e72aeRay Chen if (mActionBar != null) mActionBar.removeOnMenuVisibilityListener(listener); 3568cab3e872dd95e55ba34fdb94269a0c5069e72aeRay Chen } 3578cab3e872dd95e55ba34fdb94269a0c5069e72aeRay Chen 358b5f8d908c5dd287052cd49eddaf1f82d858cca03Ray Chen public boolean setSelectedAction(int type) { 3598cab3e872dd95e55ba34fdb94269a0c5069e72aeRay Chen if (mActionBar == null) return false; 3608cab3e872dd95e55ba34fdb94269a0c5069e72aeRay Chen 361b5f8d908c5dd287052cd49eddaf1f82d858cca03Ray Chen for (int i = 0, n = sClusterItems.length; i < n; i++) { 3626cf807453fb58ccd4cc513ff187b306c7090e67cOwen Lin ActionItem item = sClusterItems[i]; 36300b5f3c66113d14a7fc6f37d3a4e9d0c9b566eaaRay Chen if (item.action == type) { 364b5f8d908c5dd287052cd49eddaf1f82d858cca03Ray Chen mActionBar.setSelectedNavigationItem(i); 365b5f8d908c5dd287052cd49eddaf1f82d858cca03Ray Chen mCurrentIndex = i; 3666cf807453fb58ccd4cc513ff187b306c7090e67cOwen Lin return true; 3676cf807453fb58ccd4cc513ff187b306c7090e67cOwen Lin } 3686cf807453fb58ccd4cc513ff187b306c7090e67cOwen Lin } 3696cf807453fb58ccd4cc513ff187b306c7090e67cOwen Lin return false; 3706cf807453fb58ccd4cc513ff187b306c7090e67cOwen Lin } 371b5f8d908c5dd287052cd49eddaf1f82d858cca03Ray Chen 3725ccc96ac39f9513f13977de4419d814112c23ab8Owen Lin @Override 373b5f8d908c5dd287052cd49eddaf1f82d858cca03Ray Chen public boolean onNavigationItemSelected(int itemPosition, long itemId) { 3743cf502a91b36bf6ce633f897505b0a2c3fc53ad5Bobby Georgescu if (itemPosition != mCurrentIndex && mClusterRunner != null 3753cf502a91b36bf6ce633f897505b0a2c3fc53ad5Bobby Georgescu || mAlbumModeListener != null) { 376677584c7242d21ef2ca8adbedb5f9e3f016b54b3Yuli Huang // Need to lock rendering when operations invoked by system UI (main thread) are 377677584c7242d21ef2ca8adbedb5f9e3f016b54b3Yuli Huang // modifying slot data used in GL thread for rendering. 3785ccc96ac39f9513f13977de4419d814112c23ab8Owen Lin mActivity.getGLRoot().lockRenderThread(); 3795ccc96ac39f9513f13977de4419d814112c23ab8Owen Lin try { 3803cf502a91b36bf6ce633f897505b0a2c3fc53ad5Bobby Georgescu if (mAlbumModeListener != null) { 3813cf502a91b36bf6ce633f897505b0a2c3fc53ad5Bobby Georgescu mAlbumModeListener.onAlbumModeSelected(itemPosition); 3823cf502a91b36bf6ce633f897505b0a2c3fc53ad5Bobby Georgescu } else { 3833cf502a91b36bf6ce633f897505b0a2c3fc53ad5Bobby Georgescu mClusterRunner.doCluster(sClusterItems[itemPosition].action); 3843cf502a91b36bf6ce633f897505b0a2c3fc53ad5Bobby Georgescu } 3855ccc96ac39f9513f13977de4419d814112c23ab8Owen Lin } finally { 3865ccc96ac39f9513f13977de4419d814112c23ab8Owen Lin mActivity.getGLRoot().unlockRenderThread(); 3875ccc96ac39f9513f13977de4419d814112c23ab8Owen Lin } 388b5f8d908c5dd287052cd49eddaf1f82d858cca03Ray Chen } 389b5f8d908c5dd287052cd49eddaf1f82d858cca03Ray Chen return false; 390b5f8d908c5dd287052cd49eddaf1f82d858cca03Ray Chen } 3912bb717f1ea38e2ce33dd102a23afe6bfacb5675cOwen Lin 392b21b8e58a604f6c701245d84b141b5b87663192bOwen Lin private Menu mActionBarMenu; 3935172dee697c05235ddf932827d75e6fa0b81d382Mangesh Ghiware private ShareActionProvider mSharePanoramaActionProvider; 3945172dee697c05235ddf932827d75e6fa0b81d382Mangesh Ghiware private ShareActionProvider mShareActionProvider; 395b037754eac0a4f99747edd3135776dc471d566f8Mangesh Ghiware private Intent mSharePanoramaIntent; 396b037754eac0a4f99747edd3135776dc471d566f8Mangesh Ghiware private Intent mShareIntent; 3972bb717f1ea38e2ce33dd102a23afe6bfacb5675cOwen Lin 398b21b8e58a604f6c701245d84b141b5b87663192bOwen Lin public void createActionBarMenu(int menuRes, Menu menu) { 3992abaaf7caa9a83ba1ea759868aabde7f21387184John Reck mActivity.getMenuInflater().inflate(menuRes, menu); 400b21b8e58a604f6c701245d84b141b5b87663192bOwen Lin mActionBarMenu = menu; 4015172dee697c05235ddf932827d75e6fa0b81d382Mangesh Ghiware 40271ce96fc79787dedac56af75385dc227d52be3afMangesh Ghiware MenuItem item = menu.findItem(R.id.action_share_panorama); 40371ce96fc79787dedac56af75385dc227d52be3afMangesh Ghiware if (item != null) { 40471ce96fc79787dedac56af75385dc227d52be3afMangesh Ghiware mSharePanoramaActionProvider = (ShareActionProvider) 40571ce96fc79787dedac56af75385dc227d52be3afMangesh Ghiware item.getActionProvider(); 40671ce96fc79787dedac56af75385dc227d52be3afMangesh Ghiware mSharePanoramaActionProvider 40771ce96fc79787dedac56af75385dc227d52be3afMangesh Ghiware .setShareHistoryFileName("panorama_share_history.xml"); 408b037754eac0a4f99747edd3135776dc471d566f8Mangesh Ghiware mSharePanoramaActionProvider.setShareIntent(mSharePanoramaIntent); 40971ce96fc79787dedac56af75385dc227d52be3afMangesh Ghiware } 4105172dee697c05235ddf932827d75e6fa0b81d382Mangesh Ghiware 41171ce96fc79787dedac56af75385dc227d52be3afMangesh Ghiware item = menu.findItem(R.id.action_share); 41271ce96fc79787dedac56af75385dc227d52be3afMangesh Ghiware if (item != null) { 41371ce96fc79787dedac56af75385dc227d52be3afMangesh Ghiware mShareActionProvider = (ShareActionProvider) 41471ce96fc79787dedac56af75385dc227d52be3afMangesh Ghiware item.getActionProvider(); 41571ce96fc79787dedac56af75385dc227d52be3afMangesh Ghiware mShareActionProvider 41671ce96fc79787dedac56af75385dc227d52be3afMangesh Ghiware .setShareHistoryFileName("share_history.xml"); 417b037754eac0a4f99747edd3135776dc471d566f8Mangesh Ghiware mShareActionProvider.setShareIntent(mShareIntent); 41871ce96fc79787dedac56af75385dc227d52be3afMangesh Ghiware } 4192bb717f1ea38e2ce33dd102a23afe6bfacb5675cOwen Lin } 4202bb717f1ea38e2ce33dd102a23afe6bfacb5675cOwen Lin 421b21b8e58a604f6c701245d84b141b5b87663192bOwen Lin public Menu getMenu() { 422b21b8e58a604f6c701245d84b141b5b87663192bOwen Lin return mActionBarMenu; 4232bb717f1ea38e2ce33dd102a23afe6bfacb5675cOwen Lin } 4242bb717f1ea38e2ce33dd102a23afe6bfacb5675cOwen Lin 4252251386437163898eb4b6f7546705d1365744fd1Flavio Lerda public void setShareIntents(Intent sharePanoramaIntent, Intent shareIntent, 4262251386437163898eb4b6f7546705d1365744fd1Flavio Lerda ShareActionProvider.OnShareTargetSelectedListener onShareListener) { 427b037754eac0a4f99747edd3135776dc471d566f8Mangesh Ghiware mSharePanoramaIntent = sharePanoramaIntent; 42871ce96fc79787dedac56af75385dc227d52be3afMangesh Ghiware if (mSharePanoramaActionProvider != null) { 429f98aafb7eb65b889b0f831d607828ca4f8af64b6Mangesh Ghiware mSharePanoramaActionProvider.setShareIntent(sharePanoramaIntent); 430f98aafb7eb65b889b0f831d607828ca4f8af64b6Mangesh Ghiware } 431b037754eac0a4f99747edd3135776dc471d566f8Mangesh Ghiware mShareIntent = shareIntent; 43271ce96fc79787dedac56af75385dc227d52be3afMangesh Ghiware if (mShareActionProvider != null) { 433f98aafb7eb65b889b0f831d607828ca4f8af64b6Mangesh Ghiware mShareActionProvider.setShareIntent(shareIntent); 4342251386437163898eb4b6f7546705d1365744fd1Flavio Lerda mShareActionProvider.setOnShareTargetSelectedListener( 4352251386437163898eb4b6f7546705d1365744fd1Flavio Lerda onShareListener); 43624081fe26ca25448ddb9c8f9cc7f406d26344decOwen Lin } 4372bb717f1ea38e2ce33dd102a23afe6bfacb5675cOwen Lin } 438f9a0a4306d589b4a4e20554fed512a603426bfa1Owen Lin} 439