1fd8cdedb816cb1fc5894e2e3c5e144ff16b90b7cKatherine Kuan/*
2fd8cdedb816cb1fc5894e2e3c5e144ff16b90b7cKatherine Kuan * Copyright (C) 2011 The Android Open Source Project
3fd8cdedb816cb1fc5894e2e3c5e144ff16b90b7cKatherine Kuan *
4fd8cdedb816cb1fc5894e2e3c5e144ff16b90b7cKatherine Kuan * Licensed under the Apache License, Version 2.0 (the "License");
5fd8cdedb816cb1fc5894e2e3c5e144ff16b90b7cKatherine Kuan * you may not use this file except in compliance with the License.
6fd8cdedb816cb1fc5894e2e3c5e144ff16b90b7cKatherine Kuan * You may obtain a copy of the License at
7fd8cdedb816cb1fc5894e2e3c5e144ff16b90b7cKatherine Kuan *
8fd8cdedb816cb1fc5894e2e3c5e144ff16b90b7cKatherine Kuan *      http://www.apache.org/licenses/LICENSE-2.0
9fd8cdedb816cb1fc5894e2e3c5e144ff16b90b7cKatherine Kuan *
10fd8cdedb816cb1fc5894e2e3c5e144ff16b90b7cKatherine Kuan * Unless required by applicable law or agreed to in writing, software
11fd8cdedb816cb1fc5894e2e3c5e144ff16b90b7cKatherine Kuan * distributed under the License is distributed on an "AS IS" BASIS,
12fd8cdedb816cb1fc5894e2e3c5e144ff16b90b7cKatherine Kuan * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13fd8cdedb816cb1fc5894e2e3c5e144ff16b90b7cKatherine Kuan * See the License for the specific language governing permissions and
14fd8cdedb816cb1fc5894e2e3c5e144ff16b90b7cKatherine Kuan * limitations under the License
15fd8cdedb816cb1fc5894e2e3c5e144ff16b90b7cKatherine Kuan */
16fd8cdedb816cb1fc5894e2e3c5e144ff16b90b7cKatherine Kuan
17fd8cdedb816cb1fc5894e2e3c5e144ff16b90b7cKatherine Kuanpackage com.android.contacts.group;
18fd8cdedb816cb1fc5894e2e3c5e144ff16b90b7cKatherine Kuan
19fd8cdedb816cb1fc5894e2e3c5e144ff16b90b7cKatherine Kuanimport com.android.contacts.ContactPhotoManager;
205f34b2e20ad4a41b6dd3fd0703d59e085bffeb1cFrank Sposaroimport com.android.contacts.GroupMemberLoader;
21be18de05d6f6a107c552e369bce58f51c946fde7Katherine Kuanimport com.android.contacts.GroupMetaDataLoader;
22fd8cdedb816cb1fc5894e2e3c5e144ff16b90b7cKatherine Kuanimport com.android.contacts.R;
238268bbe65440c70db46b4c505433fac1fdc36e58Katherine Kuanimport com.android.contacts.interactions.GroupDeletionDialogFragment;
245f34b2e20ad4a41b6dd3fd0703d59e085bffeb1cFrank Sposaroimport com.android.contacts.list.ContactTileAdapter;
255f34b2e20ad4a41b6dd3fd0703d59e085bffeb1cFrank Sposaroimport com.android.contacts.list.ContactTileAdapter.DisplayType;
262b431c0384a7638b91478eef521125cdf0b51b11Katherine Kuanimport com.android.contacts.model.AccountType;
272b431c0384a7638b91478eef521125cdf0b51b11Katherine Kuanimport com.android.contacts.model.AccountTypeManager;
28fd8cdedb816cb1fc5894e2e3c5e144ff16b90b7cKatherine Kuan
29fd8cdedb816cb1fc5894e2e3c5e144ff16b90b7cKatherine Kuanimport android.app.Activity;
30fd8cdedb816cb1fc5894e2e3c5e144ff16b90b7cKatherine Kuanimport android.app.Fragment;
31fd8cdedb816cb1fc5894e2e3c5e144ff16b90b7cKatherine Kuanimport android.app.LoaderManager;
32fd8cdedb816cb1fc5894e2e3c5e144ff16b90b7cKatherine Kuanimport android.app.LoaderManager.LoaderCallbacks;
33d78ee90c0d4d93b82ad440396e87ae4f47f53e93Daniel Lehmannimport android.content.ContentUris;
34fd8cdedb816cb1fc5894e2e3c5e144ff16b90b7cKatherine Kuanimport android.content.Context;
35fd8cdedb816cb1fc5894e2e3c5e144ff16b90b7cKatherine Kuanimport android.content.CursorLoader;
36703cda7119b710446f7abc38843043b7cbbf3a47Katherine Kuanimport android.content.Intent;
37fd8cdedb816cb1fc5894e2e3c5e144ff16b90b7cKatherine Kuanimport android.content.Loader;
38e5d06f534d58baa27fe6b1091b9724f81fd258c9Frank Sposaroimport android.content.res.Resources;
39fd8cdedb816cb1fc5894e2e3c5e144ff16b90b7cKatherine Kuanimport android.database.Cursor;
407a700cf798a19a8452b8671f643a05336f63f611Katherine Kuanimport android.graphics.Rect;
41be18de05d6f6a107c552e369bce58f51c946fde7Katherine Kuanimport android.net.Uri;
42fd8cdedb816cb1fc5894e2e3c5e144ff16b90b7cKatherine Kuanimport android.os.Bundle;
43d78ee90c0d4d93b82ad440396e87ae4f47f53e93Daniel Lehmannimport android.provider.ContactsContract.Groups;
44703cda7119b710446f7abc38843043b7cbbf3a47Katherine Kuanimport android.text.TextUtils;
45fd8cdedb816cb1fc5894e2e3c5e144ff16b90b7cKatherine Kuanimport android.view.LayoutInflater;
468268bbe65440c70db46b4c505433fac1fdc36e58Katherine Kuanimport android.view.Menu;
478268bbe65440c70db46b4c505433fac1fdc36e58Katherine Kuanimport android.view.MenuInflater;
488268bbe65440c70db46b4c505433fac1fdc36e58Katherine Kuanimport android.view.MenuItem;
49fd8cdedb816cb1fc5894e2e3c5e144ff16b90b7cKatherine Kuanimport android.view.View;
50703cda7119b710446f7abc38843043b7cbbf3a47Katherine Kuanimport android.view.View.OnClickListener;
51fd8cdedb816cb1fc5894e2e3c5e144ff16b90b7cKatherine Kuanimport android.view.ViewGroup;
52fd8cdedb816cb1fc5894e2e3c5e144ff16b90b7cKatherine Kuanimport android.widget.AbsListView;
53fd8cdedb816cb1fc5894e2e3c5e144ff16b90b7cKatherine Kuanimport android.widget.AbsListView.OnScrollListener;
54fd8cdedb816cb1fc5894e2e3c5e144ff16b90b7cKatherine Kuanimport android.widget.ListView;
55be18de05d6f6a107c552e369bce58f51c946fde7Katherine Kuanimport android.widget.TextView;
56fd8cdedb816cb1fc5894e2e3c5e144ff16b90b7cKatherine Kuan
57fd8cdedb816cb1fc5894e2e3c5e144ff16b90b7cKatherine Kuan/**
58fd8cdedb816cb1fc5894e2e3c5e144ff16b90b7cKatherine Kuan * Displays the details of a group and shows a list of actions possible for the group.
59fd8cdedb816cb1fc5894e2e3c5e144ff16b90b7cKatherine Kuan */
60fd8cdedb816cb1fc5894e2e3c5e144ff16b90b7cKatherine Kuanpublic class GroupDetailFragment extends Fragment implements OnScrollListener {
61fd8cdedb816cb1fc5894e2e3c5e144ff16b90b7cKatherine Kuan
62be18de05d6f6a107c552e369bce58f51c946fde7Katherine Kuan    public static interface Listener {
63be18de05d6f6a107c552e369bce58f51c946fde7Katherine Kuan        /**
64be18de05d6f6a107c552e369bce58f51c946fde7Katherine Kuan         * The group title has been loaded
65be18de05d6f6a107c552e369bce58f51c946fde7Katherine Kuan         */
66be18de05d6f6a107c552e369bce58f51c946fde7Katherine Kuan        public void onGroupTitleUpdated(String title);
67be18de05d6f6a107c552e369bce58f51c946fde7Katherine Kuan
68be18de05d6f6a107c552e369bce58f51c946fde7Katherine Kuan        /**
69be18de05d6f6a107c552e369bce58f51c946fde7Katherine Kuan         * The number of group members has been determined
70be18de05d6f6a107c552e369bce58f51c946fde7Katherine Kuan         */
71be18de05d6f6a107c552e369bce58f51c946fde7Katherine Kuan        public void onGroupSizeUpdated(String size);
72c6b8afe730255537978f2c938cca6986cae63c34Katherine Kuan
73c6b8afe730255537978f2c938cca6986cae63c34Katherine Kuan        /**
74d78ee90c0d4d93b82ad440396e87ae4f47f53e93Daniel Lehmann         * The account type and dataset have been determined.
75703cda7119b710446f7abc38843043b7cbbf3a47Katherine Kuan         */
76d78ee90c0d4d93b82ad440396e87ae4f47f53e93Daniel Lehmann        public void onAccountTypeUpdated(String accountTypeString, String dataSet);
77703cda7119b710446f7abc38843043b7cbbf3a47Katherine Kuan
78703cda7119b710446f7abc38843043b7cbbf3a47Katherine Kuan        /**
79c6b8afe730255537978f2c938cca6986cae63c34Katherine Kuan         * User decided to go to Edit-Mode
80c6b8afe730255537978f2c938cca6986cae63c34Katherine Kuan         */
81c6b8afe730255537978f2c938cca6986cae63c34Katherine Kuan        public void onEditRequested(Uri groupUri);
824e2bb32000f391ceb0de7309a159bee5d8e04fc5Frank Sposaro
834e2bb32000f391ceb0de7309a159bee5d8e04fc5Frank Sposaro        /**
844e2bb32000f391ceb0de7309a159bee5d8e04fc5Frank Sposaro         * Contact is selected and should launch details page
854e2bb32000f391ceb0de7309a159bee5d8e04fc5Frank Sposaro         */
864e2bb32000f391ceb0de7309a159bee5d8e04fc5Frank Sposaro        public void onContactSelected(Uri contactUri);
87be18de05d6f6a107c552e369bce58f51c946fde7Katherine Kuan    }
88be18de05d6f6a107c552e369bce58f51c946fde7Katherine Kuan
89fd8cdedb816cb1fc5894e2e3c5e144ff16b90b7cKatherine Kuan    private static final String TAG = "GroupDetailFragment";
90fd8cdedb816cb1fc5894e2e3c5e144ff16b90b7cKatherine Kuan
91be18de05d6f6a107c552e369bce58f51c946fde7Katherine Kuan    private static final int LOADER_METADATA = 0;
92be18de05d6f6a107c552e369bce58f51c946fde7Katherine Kuan    private static final int LOADER_MEMBERS = 1;
93fd8cdedb816cb1fc5894e2e3c5e144ff16b90b7cKatherine Kuan
94fd8cdedb816cb1fc5894e2e3c5e144ff16b90b7cKatherine Kuan    private Context mContext;
95fd8cdedb816cb1fc5894e2e3c5e144ff16b90b7cKatherine Kuan
96fd8cdedb816cb1fc5894e2e3c5e144ff16b90b7cKatherine Kuan    private View mRootView;
97703cda7119b710446f7abc38843043b7cbbf3a47Katherine Kuan    private ViewGroup mGroupSourceViewContainer;
98703cda7119b710446f7abc38843043b7cbbf3a47Katherine Kuan    private View mGroupSourceView;
99be18de05d6f6a107c552e369bce58f51c946fde7Katherine Kuan    private TextView mGroupTitle;
100be18de05d6f6a107c552e369bce58f51c946fde7Katherine Kuan    private TextView mGroupSize;
101fd8cdedb816cb1fc5894e2e3c5e144ff16b90b7cKatherine Kuan    private ListView mMemberListView;
1024270aa76bb02cd76f77170f93fcd6ed3db897bd4Katherine Kuan    private View mEmptyView;
103fd8cdedb816cb1fc5894e2e3c5e144ff16b90b7cKatherine Kuan
104be18de05d6f6a107c552e369bce58f51c946fde7Katherine Kuan    private Listener mListener;
105be18de05d6f6a107c552e369bce58f51c946fde7Katherine Kuan
1065f34b2e20ad4a41b6dd3fd0703d59e085bffeb1cFrank Sposaro    private ContactTileAdapter mAdapter;
107fd8cdedb816cb1fc5894e2e3c5e144ff16b90b7cKatherine Kuan    private ContactPhotoManager mPhotoManager;
1082b431c0384a7638b91478eef521125cdf0b51b11Katherine Kuan    private AccountTypeManager mAccountTypeManager;
109fd8cdedb816cb1fc5894e2e3c5e144ff16b90b7cKatherine Kuan
110be18de05d6f6a107c552e369bce58f51c946fde7Katherine Kuan    private Uri mGroupUri;
111be18de05d6f6a107c552e369bce58f51c946fde7Katherine Kuan    private long mGroupId;
1128268bbe65440c70db46b4c505433fac1fdc36e58Katherine Kuan    private String mGroupName;
1132b431c0384a7638b91478eef521125cdf0b51b11Katherine Kuan    private String mAccountTypeString;
1142b3f3c54d3beb017b2f59f19e9ce0ecc3e039dbcDave Santoro    private String mDataSet;
115e962aaf7c3d00baa27cd8f1965e00aaf7c13e557Isaac Katzenelson    private boolean mIsReadOnly;
1168268bbe65440c70db46b4c505433fac1fdc36e58Katherine Kuan
117703cda7119b710446f7abc38843043b7cbbf3a47Katherine Kuan    private boolean mShowGroupActionInActionBar;
11804e6b557e45cc645c4fca1578358b63945452975Katherine Kuan    private boolean mOptionsMenuGroupDeletable;
119e962aaf7c3d00baa27cd8f1965e00aaf7c13e557Isaac Katzenelson    private boolean mOptionsMenuGroupPresent;
120267073407439d7df012a2e0df577e39a1f89c4a8Isaac Katzenelson    private boolean mCloseActivityAfterDelete;
121be18de05d6f6a107c552e369bce58f51c946fde7Katherine Kuan
122fd8cdedb816cb1fc5894e2e3c5e144ff16b90b7cKatherine Kuan    public GroupDetailFragment() {
123fd8cdedb816cb1fc5894e2e3c5e144ff16b90b7cKatherine Kuan    }
124fd8cdedb816cb1fc5894e2e3c5e144ff16b90b7cKatherine Kuan
125fd8cdedb816cb1fc5894e2e3c5e144ff16b90b7cKatherine Kuan    @Override
126fd8cdedb816cb1fc5894e2e3c5e144ff16b90b7cKatherine Kuan    public void onAttach(Activity activity) {
127fd8cdedb816cb1fc5894e2e3c5e144ff16b90b7cKatherine Kuan        super.onAttach(activity);
128fd8cdedb816cb1fc5894e2e3c5e144ff16b90b7cKatherine Kuan        mContext = activity;
1292b431c0384a7638b91478eef521125cdf0b51b11Katherine Kuan        mAccountTypeManager = AccountTypeManager.getInstance(mContext);
130e5d06f534d58baa27fe6b1091b9724f81fd258c9Frank Sposaro
131e5d06f534d58baa27fe6b1091b9724f81fd258c9Frank Sposaro        Resources res = getResources();
132e5d06f534d58baa27fe6b1091b9724f81fd258c9Frank Sposaro        int columnCount = res.getInteger(R.integer.contact_tile_column_count);
133e5d06f534d58baa27fe6b1091b9724f81fd258c9Frank Sposaro
134e5d06f534d58baa27fe6b1091b9724f81fd258c9Frank Sposaro        mAdapter = new ContactTileAdapter(activity, mContactTileListener, columnCount,
1355f34b2e20ad4a41b6dd3fd0703d59e085bffeb1cFrank Sposaro                DisplayType.GROUP_MEMBERS);
1369e095d2ffc4a94d2fb925d19df6db12bc2b1e124Frank Sposaro
137fd8cdedb816cb1fc5894e2e3c5e144ff16b90b7cKatherine Kuan        configurePhotoLoader();
138fd8cdedb816cb1fc5894e2e3c5e144ff16b90b7cKatherine Kuan    }
139fd8cdedb816cb1fc5894e2e3c5e144ff16b90b7cKatherine Kuan
140fd8cdedb816cb1fc5894e2e3c5e144ff16b90b7cKatherine Kuan    @Override
141fd8cdedb816cb1fc5894e2e3c5e144ff16b90b7cKatherine Kuan    public void onDetach() {
142fd8cdedb816cb1fc5894e2e3c5e144ff16b90b7cKatherine Kuan        super.onDetach();
143fd8cdedb816cb1fc5894e2e3c5e144ff16b90b7cKatherine Kuan        mContext = null;
144fd8cdedb816cb1fc5894e2e3c5e144ff16b90b7cKatherine Kuan    }
145fd8cdedb816cb1fc5894e2e3c5e144ff16b90b7cKatherine Kuan
146fd8cdedb816cb1fc5894e2e3c5e144ff16b90b7cKatherine Kuan    @Override
147fd8cdedb816cb1fc5894e2e3c5e144ff16b90b7cKatherine Kuan    public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedState) {
1488268bbe65440c70db46b4c505433fac1fdc36e58Katherine Kuan        setHasOptionsMenu(true);
149fd8cdedb816cb1fc5894e2e3c5e144ff16b90b7cKatherine Kuan        mRootView = inflater.inflate(R.layout.group_detail_fragment, container, false);
150be18de05d6f6a107c552e369bce58f51c946fde7Katherine Kuan        mGroupTitle = (TextView) mRootView.findViewById(R.id.group_title);
151be18de05d6f6a107c552e369bce58f51c946fde7Katherine Kuan        mGroupSize = (TextView) mRootView.findViewById(R.id.group_size);
152703cda7119b710446f7abc38843043b7cbbf3a47Katherine Kuan        mGroupSourceViewContainer = (ViewGroup) mRootView.findViewById(
153703cda7119b710446f7abc38843043b7cbbf3a47Katherine Kuan                R.id.group_source_view_container);
1544270aa76bb02cd76f77170f93fcd6ed3db897bd4Katherine Kuan        mEmptyView = mRootView.findViewById(android.R.id.empty);
155be18de05d6f6a107c552e369bce58f51c946fde7Katherine Kuan        mMemberListView = (ListView) mRootView.findViewById(android.R.id.list);
1561fcb853d2cf6670db9b4eecc492f4676894d4becMakoto Onuki        mMemberListView.setAdapter(mAdapter);
1575f34b2e20ad4a41b6dd3fd0703d59e085bffeb1cFrank Sposaro
158fd8cdedb816cb1fc5894e2e3c5e144ff16b90b7cKatherine Kuan        return mRootView;
159fd8cdedb816cb1fc5894e2e3c5e144ff16b90b7cKatherine Kuan    }
160fd8cdedb816cb1fc5894e2e3c5e144ff16b90b7cKatherine Kuan
161be18de05d6f6a107c552e369bce58f51c946fde7Katherine Kuan    public void loadGroup(Uri groupUri) {
162be18de05d6f6a107c552e369bce58f51c946fde7Katherine Kuan        mGroupUri= groupUri;
163be18de05d6f6a107c552e369bce58f51c946fde7Katherine Kuan        startGroupMetadataLoader();
164fd8cdedb816cb1fc5894e2e3c5e144ff16b90b7cKatherine Kuan    }
165fd8cdedb816cb1fc5894e2e3c5e144ff16b90b7cKatherine Kuan
1669e095d2ffc4a94d2fb925d19df6db12bc2b1e124Frank Sposaro    public void setQuickContact(boolean enableQuickContact) {
1677979ea27c046dfc2d9305b3282233046acef6ec4Frank Sposaro        mAdapter.enableQuickContact(enableQuickContact);
1689e095d2ffc4a94d2fb925d19df6db12bc2b1e124Frank Sposaro    }
1699e095d2ffc4a94d2fb925d19df6db12bc2b1e124Frank Sposaro
170fd8cdedb816cb1fc5894e2e3c5e144ff16b90b7cKatherine Kuan    private void configurePhotoLoader() {
171fd8cdedb816cb1fc5894e2e3c5e144ff16b90b7cKatherine Kuan        if (mContext != null) {
172fd8cdedb816cb1fc5894e2e3c5e144ff16b90b7cKatherine Kuan            if (mPhotoManager == null) {
173fd8cdedb816cb1fc5894e2e3c5e144ff16b90b7cKatherine Kuan                mPhotoManager = ContactPhotoManager.getInstance(mContext);
174fd8cdedb816cb1fc5894e2e3c5e144ff16b90b7cKatherine Kuan            }
175fd8cdedb816cb1fc5894e2e3c5e144ff16b90b7cKatherine Kuan            if (mMemberListView != null) {
176fd8cdedb816cb1fc5894e2e3c5e144ff16b90b7cKatherine Kuan                mMemberListView.setOnScrollListener(this);
177fd8cdedb816cb1fc5894e2e3c5e144ff16b90b7cKatherine Kuan            }
178fd8cdedb816cb1fc5894e2e3c5e144ff16b90b7cKatherine Kuan            if (mAdapter != null) {
179fd8cdedb816cb1fc5894e2e3c5e144ff16b90b7cKatherine Kuan                mAdapter.setPhotoLoader(mPhotoManager);
180fd8cdedb816cb1fc5894e2e3c5e144ff16b90b7cKatherine Kuan            }
181fd8cdedb816cb1fc5894e2e3c5e144ff16b90b7cKatherine Kuan        }
182fd8cdedb816cb1fc5894e2e3c5e144ff16b90b7cKatherine Kuan    }
183fd8cdedb816cb1fc5894e2e3c5e144ff16b90b7cKatherine Kuan
184be18de05d6f6a107c552e369bce58f51c946fde7Katherine Kuan    public void setListener(Listener value) {
185be18de05d6f6a107c552e369bce58f51c946fde7Katherine Kuan        mListener = value;
186be18de05d6f6a107c552e369bce58f51c946fde7Katherine Kuan    }
187be18de05d6f6a107c552e369bce58f51c946fde7Katherine Kuan
188703cda7119b710446f7abc38843043b7cbbf3a47Katherine Kuan    public void setShowGroupSourceInActionBar(boolean show) {
189703cda7119b710446f7abc38843043b7cbbf3a47Katherine Kuan        mShowGroupActionInActionBar = show;
190703cda7119b710446f7abc38843043b7cbbf3a47Katherine Kuan    }
191703cda7119b710446f7abc38843043b7cbbf3a47Katherine Kuan
192be18de05d6f6a107c552e369bce58f51c946fde7Katherine Kuan    /**
193be18de05d6f6a107c552e369bce58f51c946fde7Katherine Kuan     * Start the loader to retrieve the metadata for this group.
194be18de05d6f6a107c552e369bce58f51c946fde7Katherine Kuan     */
195be18de05d6f6a107c552e369bce58f51c946fde7Katherine Kuan    private void startGroupMetadataLoader() {
196be18de05d6f6a107c552e369bce58f51c946fde7Katherine Kuan        getLoaderManager().restartLoader(LOADER_METADATA, null, mGroupMetadataLoaderListener);
197be18de05d6f6a107c552e369bce58f51c946fde7Katherine Kuan    }
198be18de05d6f6a107c552e369bce58f51c946fde7Katherine Kuan
199fd8cdedb816cb1fc5894e2e3c5e144ff16b90b7cKatherine Kuan    /**
200fd8cdedb816cb1fc5894e2e3c5e144ff16b90b7cKatherine Kuan     * Start the loader to retrieve the list of group members.
201fd8cdedb816cb1fc5894e2e3c5e144ff16b90b7cKatherine Kuan     */
202fd8cdedb816cb1fc5894e2e3c5e144ff16b90b7cKatherine Kuan    private void startGroupMembersLoader() {
203fd8cdedb816cb1fc5894e2e3c5e144ff16b90b7cKatherine Kuan        getLoaderManager().restartLoader(LOADER_MEMBERS, null, mGroupMemberListLoaderListener);
204fd8cdedb816cb1fc5894e2e3c5e144ff16b90b7cKatherine Kuan    }
205fd8cdedb816cb1fc5894e2e3c5e144ff16b90b7cKatherine Kuan
2065f34b2e20ad4a41b6dd3fd0703d59e085bffeb1cFrank Sposaro    private final ContactTileAdapter.Listener mContactTileListener =
2075f34b2e20ad4a41b6dd3fd0703d59e085bffeb1cFrank Sposaro            new ContactTileAdapter.Listener() {
2085f34b2e20ad4a41b6dd3fd0703d59e085bffeb1cFrank Sposaro
2095f34b2e20ad4a41b6dd3fd0703d59e085bffeb1cFrank Sposaro        @Override
2107a700cf798a19a8452b8671f643a05336f63f611Katherine Kuan        public void onContactSelected(Uri contactUri, Rect targetRect) {
2114e2bb32000f391ceb0de7309a159bee5d8e04fc5Frank Sposaro            mListener.onContactSelected(contactUri);
2125f34b2e20ad4a41b6dd3fd0703d59e085bffeb1cFrank Sposaro        }
2135f34b2e20ad4a41b6dd3fd0703d59e085bffeb1cFrank Sposaro    };
2145f34b2e20ad4a41b6dd3fd0703d59e085bffeb1cFrank Sposaro
215fd8cdedb816cb1fc5894e2e3c5e144ff16b90b7cKatherine Kuan    /**
216be18de05d6f6a107c552e369bce58f51c946fde7Katherine Kuan     * The listener for the group metadata loader.
217be18de05d6f6a107c552e369bce58f51c946fde7Katherine Kuan     */
218be18de05d6f6a107c552e369bce58f51c946fde7Katherine Kuan    private final LoaderManager.LoaderCallbacks<Cursor> mGroupMetadataLoaderListener =
219be18de05d6f6a107c552e369bce58f51c946fde7Katherine Kuan            new LoaderCallbacks<Cursor>() {
220be18de05d6f6a107c552e369bce58f51c946fde7Katherine Kuan
221be18de05d6f6a107c552e369bce58f51c946fde7Katherine Kuan        @Override
222be18de05d6f6a107c552e369bce58f51c946fde7Katherine Kuan        public CursorLoader onCreateLoader(int id, Bundle args) {
223be18de05d6f6a107c552e369bce58f51c946fde7Katherine Kuan            return new GroupMetaDataLoader(mContext, mGroupUri);
224be18de05d6f6a107c552e369bce58f51c946fde7Katherine Kuan        }
225be18de05d6f6a107c552e369bce58f51c946fde7Katherine Kuan
226be18de05d6f6a107c552e369bce58f51c946fde7Katherine Kuan        @Override
227be18de05d6f6a107c552e369bce58f51c946fde7Katherine Kuan        public void onLoadFinished(Loader<Cursor> loader, Cursor data) {
228267073407439d7df012a2e0df577e39a1f89c4a8Isaac Katzenelson            data.moveToPosition(-1);
229267073407439d7df012a2e0df577e39a1f89c4a8Isaac Katzenelson            if (data.moveToNext()) {
230267073407439d7df012a2e0df577e39a1f89c4a8Isaac Katzenelson                boolean deleted = data.getInt(GroupMetaDataLoader.DELETED) == 1;
231267073407439d7df012a2e0df577e39a1f89c4a8Isaac Katzenelson                if (!deleted) {
232267073407439d7df012a2e0df577e39a1f89c4a8Isaac Katzenelson                    bindGroupMetaData(data);
233267073407439d7df012a2e0df577e39a1f89c4a8Isaac Katzenelson
234267073407439d7df012a2e0df577e39a1f89c4a8Isaac Katzenelson                    // Retrieve the list of members
235267073407439d7df012a2e0df577e39a1f89c4a8Isaac Katzenelson                    startGroupMembersLoader();
236267073407439d7df012a2e0df577e39a1f89c4a8Isaac Katzenelson                    return;
237267073407439d7df012a2e0df577e39a1f89c4a8Isaac Katzenelson                }
238267073407439d7df012a2e0df577e39a1f89c4a8Isaac Katzenelson            }
2392b431c0384a7638b91478eef521125cdf0b51b11Katherine Kuan            updateSize(-1);
240267073407439d7df012a2e0df577e39a1f89c4a8Isaac Katzenelson            updateTitle(null);
241be18de05d6f6a107c552e369bce58f51c946fde7Katherine Kuan        }
242be18de05d6f6a107c552e369bce58f51c946fde7Katherine Kuan
243be18de05d6f6a107c552e369bce58f51c946fde7Katherine Kuan        @Override
244be18de05d6f6a107c552e369bce58f51c946fde7Katherine Kuan        public void onLoaderReset(Loader<Cursor> loader) {}
245be18de05d6f6a107c552e369bce58f51c946fde7Katherine Kuan    };
246be18de05d6f6a107c552e369bce58f51c946fde7Katherine Kuan
247be18de05d6f6a107c552e369bce58f51c946fde7Katherine Kuan    /**
248fd8cdedb816cb1fc5894e2e3c5e144ff16b90b7cKatherine Kuan     * The listener for the group members list loader
249fd8cdedb816cb1fc5894e2e3c5e144ff16b90b7cKatherine Kuan     */
250fd8cdedb816cb1fc5894e2e3c5e144ff16b90b7cKatherine Kuan    private final LoaderManager.LoaderCallbacks<Cursor> mGroupMemberListLoaderListener =
251fd8cdedb816cb1fc5894e2e3c5e144ff16b90b7cKatherine Kuan            new LoaderCallbacks<Cursor>() {
252fd8cdedb816cb1fc5894e2e3c5e144ff16b90b7cKatherine Kuan
253fd8cdedb816cb1fc5894e2e3c5e144ff16b90b7cKatherine Kuan        @Override
254fd8cdedb816cb1fc5894e2e3c5e144ff16b90b7cKatherine Kuan        public CursorLoader onCreateLoader(int id, Bundle args) {
255a939372643a86688ae196cce03cf4f6f70864d93Daisuke Miyakawa            return GroupMemberLoader.constructLoaderForGroupDetailQuery(mContext, mGroupId);
256fd8cdedb816cb1fc5894e2e3c5e144ff16b90b7cKatherine Kuan        }
257fd8cdedb816cb1fc5894e2e3c5e144ff16b90b7cKatherine Kuan
258fd8cdedb816cb1fc5894e2e3c5e144ff16b90b7cKatherine Kuan        @Override
259fd8cdedb816cb1fc5894e2e3c5e144ff16b90b7cKatherine Kuan        public void onLoadFinished(Loader<Cursor> loader, Cursor data) {
2602b431c0384a7638b91478eef521125cdf0b51b11Katherine Kuan            updateSize(data.getCount());
2617979ea27c046dfc2d9305b3282233046acef6ec4Frank Sposaro            mAdapter.setContactCursor(data);
2624270aa76bb02cd76f77170f93fcd6ed3db897bd4Katherine Kuan            mMemberListView.setEmptyView(mEmptyView);
263fd8cdedb816cb1fc5894e2e3c5e144ff16b90b7cKatherine Kuan        }
264fd8cdedb816cb1fc5894e2e3c5e144ff16b90b7cKatherine Kuan
265fd8cdedb816cb1fc5894e2e3c5e144ff16b90b7cKatherine Kuan        @Override
266fd8cdedb816cb1fc5894e2e3c5e144ff16b90b7cKatherine Kuan        public void onLoaderReset(Loader<Cursor> loader) {}
267fd8cdedb816cb1fc5894e2e3c5e144ff16b90b7cKatherine Kuan    };
268fd8cdedb816cb1fc5894e2e3c5e144ff16b90b7cKatherine Kuan
269be18de05d6f6a107c552e369bce58f51c946fde7Katherine Kuan    private void bindGroupMetaData(Cursor cursor) {
270be18de05d6f6a107c552e369bce58f51c946fde7Katherine Kuan        cursor.moveToPosition(-1);
271be18de05d6f6a107c552e369bce58f51c946fde7Katherine Kuan        if (cursor.moveToNext()) {
2722b431c0384a7638b91478eef521125cdf0b51b11Katherine Kuan            mAccountTypeString = cursor.getString(GroupMetaDataLoader.ACCOUNT_TYPE);
2732b3f3c54d3beb017b2f59f19e9ce0ecc3e039dbcDave Santoro            mDataSet = cursor.getString(GroupMetaDataLoader.DATA_SET);
274be18de05d6f6a107c552e369bce58f51c946fde7Katherine Kuan            mGroupId = cursor.getLong(GroupMetaDataLoader.GROUP_ID);
2758268bbe65440c70db46b4c505433fac1fdc36e58Katherine Kuan            mGroupName = cursor.getString(GroupMetaDataLoader.TITLE);
276e962aaf7c3d00baa27cd8f1965e00aaf7c13e557Isaac Katzenelson            mIsReadOnly = cursor.getInt(GroupMetaDataLoader.IS_READ_ONLY) == 1;
2778268bbe65440c70db46b4c505433fac1fdc36e58Katherine Kuan            updateTitle(mGroupName);
278e962aaf7c3d00baa27cd8f1965e00aaf7c13e557Isaac Katzenelson            // Must call invalidate so that the option menu will get updated
279e962aaf7c3d00baa27cd8f1965e00aaf7c13e557Isaac Katzenelson            getActivity().invalidateOptionsMenu ();
2807f61eba2cddfdd99f155c851eaa490f73358d031Daniel Lehmann
281703cda7119b710446f7abc38843043b7cbbf3a47Katherine Kuan            final String accountTypeString = cursor.getString(GroupMetaDataLoader.ACCOUNT_TYPE);
2822b3f3c54d3beb017b2f59f19e9ce0ecc3e039dbcDave Santoro            final String dataSet = cursor.getString(GroupMetaDataLoader.DATA_SET);
283d78ee90c0d4d93b82ad440396e87ae4f47f53e93Daniel Lehmann            updateAccountType(accountTypeString, dataSet);
284be18de05d6f6a107c552e369bce58f51c946fde7Katherine Kuan        }
285be18de05d6f6a107c552e369bce58f51c946fde7Katherine Kuan    }
286be18de05d6f6a107c552e369bce58f51c946fde7Katherine Kuan
287be18de05d6f6a107c552e369bce58f51c946fde7Katherine Kuan    private void updateTitle(String title) {
288be18de05d6f6a107c552e369bce58f51c946fde7Katherine Kuan        if (mGroupTitle != null) {
289be18de05d6f6a107c552e369bce58f51c946fde7Katherine Kuan            mGroupTitle.setText(title);
290be18de05d6f6a107c552e369bce58f51c946fde7Katherine Kuan        } else {
291be18de05d6f6a107c552e369bce58f51c946fde7Katherine Kuan            mListener.onGroupTitleUpdated(title);
292be18de05d6f6a107c552e369bce58f51c946fde7Katherine Kuan        }
293be18de05d6f6a107c552e369bce58f51c946fde7Katherine Kuan    }
294be18de05d6f6a107c552e369bce58f51c946fde7Katherine Kuan
2952b431c0384a7638b91478eef521125cdf0b51b11Katherine Kuan    /**
2962b431c0384a7638b91478eef521125cdf0b51b11Katherine Kuan     * Display the count of the number of group members.
2972b431c0384a7638b91478eef521125cdf0b51b11Katherine Kuan     * @param size of the group (can be -1 if no size could be determined)
2982b431c0384a7638b91478eef521125cdf0b51b11Katherine Kuan     */
2992b431c0384a7638b91478eef521125cdf0b51b11Katherine Kuan    private void updateSize(int size) {
3002b431c0384a7638b91478eef521125cdf0b51b11Katherine Kuan        String groupSizeString;
3012b431c0384a7638b91478eef521125cdf0b51b11Katherine Kuan        if (size == -1) {
3022b431c0384a7638b91478eef521125cdf0b51b11Katherine Kuan            groupSizeString = null;
3032b431c0384a7638b91478eef521125cdf0b51b11Katherine Kuan        } else {
3042b431c0384a7638b91478eef521125cdf0b51b11Katherine Kuan            String groupSizeTemplateString = getResources().getQuantityString(
3052b431c0384a7638b91478eef521125cdf0b51b11Katherine Kuan                    R.plurals.num_contacts_in_group, size);
3062b3f3c54d3beb017b2f59f19e9ce0ecc3e039dbcDave Santoro            AccountType accountType = mAccountTypeManager.getAccountType(mAccountTypeString,
3072b3f3c54d3beb017b2f59f19e9ce0ecc3e039dbcDave Santoro                    mDataSet);
3082b431c0384a7638b91478eef521125cdf0b51b11Katherine Kuan            groupSizeString = String.format(groupSizeTemplateString, size,
3092b431c0384a7638b91478eef521125cdf0b51b11Katherine Kuan                    accountType.getDisplayLabel(mContext));
3102b431c0384a7638b91478eef521125cdf0b51b11Katherine Kuan        }
3112b431c0384a7638b91478eef521125cdf0b51b11Katherine Kuan
312be18de05d6f6a107c552e369bce58f51c946fde7Katherine Kuan        if (mGroupSize != null) {
3132b431c0384a7638b91478eef521125cdf0b51b11Katherine Kuan            mGroupSize.setText(groupSizeString);
314be18de05d6f6a107c552e369bce58f51c946fde7Katherine Kuan        } else {
3152b431c0384a7638b91478eef521125cdf0b51b11Katherine Kuan            mListener.onGroupSizeUpdated(groupSizeString);
316be18de05d6f6a107c552e369bce58f51c946fde7Katherine Kuan        }
317be18de05d6f6a107c552e369bce58f51c946fde7Katherine Kuan    }
318be18de05d6f6a107c552e369bce58f51c946fde7Katherine Kuan
319703cda7119b710446f7abc38843043b7cbbf3a47Katherine Kuan    /**
320703cda7119b710446f7abc38843043b7cbbf3a47Katherine Kuan     * Once the account type, group source action, and group source URI have been determined
321703cda7119b710446f7abc38843043b7cbbf3a47Katherine Kuan     * (based on the result from the {@link Loader}), then we can display this to the user in 1 of
322f5f8430538efb5636bdd2385f742ec1b23d10b17Katherine Kuan     * 2 ways depending on screen size and orientation: either as a button in the action bar or as
323f5f8430538efb5636bdd2385f742ec1b23d10b17Katherine Kuan     * a button in a static header on the page.
324703cda7119b710446f7abc38843043b7cbbf3a47Katherine Kuan     */
325d78ee90c0d4d93b82ad440396e87ae4f47f53e93Daniel Lehmann    private void updateAccountType(final String accountTypeString, final String dataSet) {
326703cda7119b710446f7abc38843043b7cbbf3a47Katherine Kuan
327703cda7119b710446f7abc38843043b7cbbf3a47Katherine Kuan        // If the group action should be shown in the action bar, then pass the data to the
328703cda7119b710446f7abc38843043b7cbbf3a47Katherine Kuan        // listener who will take care of setting up the view and click listener. There is nothing
329703cda7119b710446f7abc38843043b7cbbf3a47Katherine Kuan        // else to be done by this {@link Fragment}.
330703cda7119b710446f7abc38843043b7cbbf3a47Katherine Kuan        if (mShowGroupActionInActionBar) {
331d78ee90c0d4d93b82ad440396e87ae4f47f53e93Daniel Lehmann            mListener.onAccountTypeUpdated(accountTypeString, dataSet);
332703cda7119b710446f7abc38843043b7cbbf3a47Katherine Kuan            return;
333703cda7119b710446f7abc38843043b7cbbf3a47Katherine Kuan        }
334703cda7119b710446f7abc38843043b7cbbf3a47Katherine Kuan
335d78ee90c0d4d93b82ad440396e87ae4f47f53e93Daniel Lehmann        final AccountTypeManager manager = AccountTypeManager.getInstance(getActivity());
336d78ee90c0d4d93b82ad440396e87ae4f47f53e93Daniel Lehmann        final AccountType accountType =
337d78ee90c0d4d93b82ad440396e87ae4f47f53e93Daniel Lehmann                manager.getAccountType(accountTypeString, dataSet);
338d78ee90c0d4d93b82ad440396e87ae4f47f53e93Daniel Lehmann
339703cda7119b710446f7abc38843043b7cbbf3a47Katherine Kuan        // Otherwise, if the {@link Fragment} needs to create and setup the button, then first
340703cda7119b710446f7abc38843043b7cbbf3a47Katherine Kuan        // verify that there is a valid action.
341d78ee90c0d4d93b82ad440396e87ae4f47f53e93Daniel Lehmann        if (!TextUtils.isEmpty(accountType.getViewGroupActivity())) {
342703cda7119b710446f7abc38843043b7cbbf3a47Katherine Kuan            if (mGroupSourceView == null) {
343703cda7119b710446f7abc38843043b7cbbf3a47Katherine Kuan                mGroupSourceView = GroupDetailDisplayUtils.getNewGroupSourceView(mContext);
344703cda7119b710446f7abc38843043b7cbbf3a47Katherine Kuan                // Figure out how to add the view to the fragment.
345703cda7119b710446f7abc38843043b7cbbf3a47Katherine Kuan                // If there is a static header with a container for the group source view, insert
346703cda7119b710446f7abc38843043b7cbbf3a47Katherine Kuan                // the view there.
347703cda7119b710446f7abc38843043b7cbbf3a47Katherine Kuan                if (mGroupSourceViewContainer != null) {
348703cda7119b710446f7abc38843043b7cbbf3a47Katherine Kuan                    mGroupSourceViewContainer.addView(mGroupSourceView);
349703cda7119b710446f7abc38843043b7cbbf3a47Katherine Kuan                }
350703cda7119b710446f7abc38843043b7cbbf3a47Katherine Kuan            }
351703cda7119b710446f7abc38843043b7cbbf3a47Katherine Kuan
352703cda7119b710446f7abc38843043b7cbbf3a47Katherine Kuan            // Rebind the data since this action can change if the loader returns updated data
353703cda7119b710446f7abc38843043b7cbbf3a47Katherine Kuan            mGroupSourceView.setVisibility(View.VISIBLE);
354703cda7119b710446f7abc38843043b7cbbf3a47Katherine Kuan            GroupDetailDisplayUtils.bindGroupSourceView(mContext, mGroupSourceView,
3552b3f3c54d3beb017b2f59f19e9ce0ecc3e039dbcDave Santoro                    accountTypeString, dataSet);
356703cda7119b710446f7abc38843043b7cbbf3a47Katherine Kuan            mGroupSourceView.setOnClickListener(new OnClickListener() {
357703cda7119b710446f7abc38843043b7cbbf3a47Katherine Kuan                @Override
358703cda7119b710446f7abc38843043b7cbbf3a47Katherine Kuan                public void onClick(View v) {
359d78ee90c0d4d93b82ad440396e87ae4f47f53e93Daniel Lehmann                    final Uri uri = ContentUris.withAppendedId(Groups.CONTENT_URI, mGroupId);
360d78ee90c0d4d93b82ad440396e87ae4f47f53e93Daniel Lehmann                    final Intent intent = new Intent(Intent.ACTION_VIEW, uri);
361d78ee90c0d4d93b82ad440396e87ae4f47f53e93Daniel Lehmann                    intent.setClassName(accountType.resPackageName,
362d78ee90c0d4d93b82ad440396e87ae4f47f53e93Daniel Lehmann                            accountType.getViewGroupActivity());
363d78ee90c0d4d93b82ad440396e87ae4f47f53e93Daniel Lehmann                    startActivity(intent);
364703cda7119b710446f7abc38843043b7cbbf3a47Katherine Kuan                }
365703cda7119b710446f7abc38843043b7cbbf3a47Katherine Kuan            });
366703cda7119b710446f7abc38843043b7cbbf3a47Katherine Kuan        } else if (mGroupSourceView != null) {
367703cda7119b710446f7abc38843043b7cbbf3a47Katherine Kuan            mGroupSourceView.setVisibility(View.GONE);
368703cda7119b710446f7abc38843043b7cbbf3a47Katherine Kuan        }
369703cda7119b710446f7abc38843043b7cbbf3a47Katherine Kuan    }
370703cda7119b710446f7abc38843043b7cbbf3a47Katherine Kuan
371fd8cdedb816cb1fc5894e2e3c5e144ff16b90b7cKatherine Kuan    @Override
372fd8cdedb816cb1fc5894e2e3c5e144ff16b90b7cKatherine Kuan    public void onScroll(AbsListView view, int firstVisibleItem, int visibleItemCount,
373fd8cdedb816cb1fc5894e2e3c5e144ff16b90b7cKatherine Kuan            int totalItemCount) {
374fd8cdedb816cb1fc5894e2e3c5e144ff16b90b7cKatherine Kuan    }
375fd8cdedb816cb1fc5894e2e3c5e144ff16b90b7cKatherine Kuan
376fd8cdedb816cb1fc5894e2e3c5e144ff16b90b7cKatherine Kuan    @Override
377fd8cdedb816cb1fc5894e2e3c5e144ff16b90b7cKatherine Kuan    public void onScrollStateChanged(AbsListView view, int scrollState) {
378fd8cdedb816cb1fc5894e2e3c5e144ff16b90b7cKatherine Kuan        if (scrollState == OnScrollListener.SCROLL_STATE_FLING) {
379fd8cdedb816cb1fc5894e2e3c5e144ff16b90b7cKatherine Kuan            mPhotoManager.pause();
380fd8cdedb816cb1fc5894e2e3c5e144ff16b90b7cKatherine Kuan        } else {
381fd8cdedb816cb1fc5894e2e3c5e144ff16b90b7cKatherine Kuan            mPhotoManager.resume();
382fd8cdedb816cb1fc5894e2e3c5e144ff16b90b7cKatherine Kuan        }
383fd8cdedb816cb1fc5894e2e3c5e144ff16b90b7cKatherine Kuan    }
3848268bbe65440c70db46b4c505433fac1fdc36e58Katherine Kuan
3858268bbe65440c70db46b4c505433fac1fdc36e58Katherine Kuan    @Override
3868268bbe65440c70db46b4c505433fac1fdc36e58Katherine Kuan    public void onCreateOptionsMenu(Menu menu, final MenuInflater inflater) {
3878268bbe65440c70db46b4c505433fac1fdc36e58Katherine Kuan        inflater.inflate(R.menu.view_group, menu);
3888268bbe65440c70db46b4c505433fac1fdc36e58Katherine Kuan    }
3898268bbe65440c70db46b4c505433fac1fdc36e58Katherine Kuan
3908268bbe65440c70db46b4c505433fac1fdc36e58Katherine Kuan    public boolean isOptionsMenuChanged() {
39104e6b557e45cc645c4fca1578358b63945452975Katherine Kuan        return mOptionsMenuGroupDeletable != isGroupDeletable() &&
392e962aaf7c3d00baa27cd8f1965e00aaf7c13e557Isaac Katzenelson                mOptionsMenuGroupPresent != isGroupPresent();
3938268bbe65440c70db46b4c505433fac1fdc36e58Katherine Kuan    }
3948268bbe65440c70db46b4c505433fac1fdc36e58Katherine Kuan
39504e6b557e45cc645c4fca1578358b63945452975Katherine Kuan    public boolean isGroupDeletable() {
396e962aaf7c3d00baa27cd8f1965e00aaf7c13e557Isaac Katzenelson        return mGroupUri != null && !mIsReadOnly;
397e962aaf7c3d00baa27cd8f1965e00aaf7c13e557Isaac Katzenelson    }
398e962aaf7c3d00baa27cd8f1965e00aaf7c13e557Isaac Katzenelson
399e962aaf7c3d00baa27cd8f1965e00aaf7c13e557Isaac Katzenelson    public boolean isGroupPresent() {
4008268bbe65440c70db46b4c505433fac1fdc36e58Katherine Kuan        return mGroupUri != null;
4018268bbe65440c70db46b4c505433fac1fdc36e58Katherine Kuan    }
4028268bbe65440c70db46b4c505433fac1fdc36e58Katherine Kuan
4038268bbe65440c70db46b4c505433fac1fdc36e58Katherine Kuan    @Override
4048268bbe65440c70db46b4c505433fac1fdc36e58Katherine Kuan    public void onPrepareOptionsMenu(Menu menu) {
40504e6b557e45cc645c4fca1578358b63945452975Katherine Kuan        mOptionsMenuGroupDeletable = isGroupDeletable() && isVisible();
40690f2996a01a1804b2a64d316c6550e6d322a5e92Isaac Katzenelson        mOptionsMenuGroupPresent = isGroupPresent() && isVisible();
4078268bbe65440c70db46b4c505433fac1fdc36e58Katherine Kuan
4088268bbe65440c70db46b4c505433fac1fdc36e58Katherine Kuan        final MenuItem editMenu = menu.findItem(R.id.menu_edit_group);
40904e6b557e45cc645c4fca1578358b63945452975Katherine Kuan        editMenu.setVisible(mOptionsMenuGroupPresent);
4108268bbe65440c70db46b4c505433fac1fdc36e58Katherine Kuan
4118268bbe65440c70db46b4c505433fac1fdc36e58Katherine Kuan        final MenuItem deleteMenu = menu.findItem(R.id.menu_delete_group);
41204e6b557e45cc645c4fca1578358b63945452975Katherine Kuan        deleteMenu.setVisible(mOptionsMenuGroupDeletable);
4138268bbe65440c70db46b4c505433fac1fdc36e58Katherine Kuan    }
4148268bbe65440c70db46b4c505433fac1fdc36e58Katherine Kuan
4158268bbe65440c70db46b4c505433fac1fdc36e58Katherine Kuan    @Override
4168268bbe65440c70db46b4c505433fac1fdc36e58Katherine Kuan    public boolean onOptionsItemSelected(MenuItem item) {
4178268bbe65440c70db46b4c505433fac1fdc36e58Katherine Kuan        switch (item.getItemId()) {
4188268bbe65440c70db46b4c505433fac1fdc36e58Katherine Kuan            case R.id.menu_edit_group: {
419c6b8afe730255537978f2c938cca6986cae63c34Katherine Kuan                if (mListener != null) mListener.onEditRequested(mGroupUri);
4208268bbe65440c70db46b4c505433fac1fdc36e58Katherine Kuan                break;
4218268bbe65440c70db46b4c505433fac1fdc36e58Katherine Kuan            }
4228268bbe65440c70db46b4c505433fac1fdc36e58Katherine Kuan            case R.id.menu_delete_group: {
423267073407439d7df012a2e0df577e39a1f89c4a8Isaac Katzenelson                GroupDeletionDialogFragment.show(getFragmentManager(), mGroupId, mGroupName,
424267073407439d7df012a2e0df577e39a1f89c4a8Isaac Katzenelson                        mCloseActivityAfterDelete);
4258268bbe65440c70db46b4c505433fac1fdc36e58Katherine Kuan                return true;
4268268bbe65440c70db46b4c505433fac1fdc36e58Katherine Kuan            }
4278268bbe65440c70db46b4c505433fac1fdc36e58Katherine Kuan        }
4288268bbe65440c70db46b4c505433fac1fdc36e58Katherine Kuan        return false;
4298268bbe65440c70db46b4c505433fac1fdc36e58Katherine Kuan    }
430267073407439d7df012a2e0df577e39a1f89c4a8Isaac Katzenelson
431267073407439d7df012a2e0df577e39a1f89c4a8Isaac Katzenelson    public void closeActivityAfterDelete(boolean closeActivity) {
432267073407439d7df012a2e0df577e39a1f89c4a8Isaac Katzenelson        mCloseActivityAfterDelete = closeActivity;
433267073407439d7df012a2e0df577e39a1f89c4a8Isaac Katzenelson    }
434d78ee90c0d4d93b82ad440396e87ae4f47f53e93Daniel Lehmann
435d78ee90c0d4d93b82ad440396e87ae4f47f53e93Daniel Lehmann    public long getGroupId() {
436d78ee90c0d4d93b82ad440396e87ae4f47f53e93Daniel Lehmann        return mGroupId;
437d78ee90c0d4d93b82ad440396e87ae4f47f53e93Daniel Lehmann    }
438fd8cdedb816cb1fc5894e2e3c5e144ff16b90b7cKatherine Kuan}
439