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