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