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.activities; 18fd8cdedb816cb1fc5894e2e3c5e144ff16b90b7cKatherine Kuan 194ec198790236ab4be6bc5d73441215b684832618Isaac Katzenelsonimport android.app.ActionBar; 20d78ee90c0d4d93b82ad440396e87ae4f47f53e93Daniel Lehmannimport android.content.ContentUris; 2172a8e70ef935935fdbb26c53f760be59bbdfe824Katherine Kuanimport android.content.Intent; 22c6b8afe730255537978f2c938cca6986cae63c34Katherine Kuanimport android.net.Uri; 23fd8cdedb816cb1fc5894e2e3c5e144ff16b90b7cKatherine Kuanimport android.os.Bundle; 24d78ee90c0d4d93b82ad440396e87ae4f47f53e93Daniel Lehmannimport android.provider.ContactsContract.Groups; 25703cda7119b710446f7abc38843043b7cbbf3a47Katherine Kuanimport android.text.TextUtils; 26703cda7119b710446f7abc38843043b7cbbf3a47Katherine Kuanimport android.view.Menu; 27703cda7119b710446f7abc38843043b7cbbf3a47Katherine Kuanimport android.view.MenuInflater; 284ec198790236ab4be6bc5d73441215b684832618Isaac Katzenelsonimport android.view.MenuItem; 29703cda7119b710446f7abc38843043b7cbbf3a47Katherine Kuanimport android.view.View; 30703cda7119b710446f7abc38843043b7cbbf3a47Katherine Kuanimport android.view.View.OnClickListener; 31fd8cdedb816cb1fc5894e2e3c5e144ff16b90b7cKatherine Kuan 32e0b2f1e2d01d1ac52ba207dc7ce76971d853298eChiao Chengimport com.android.contacts.ContactsActivity; 33e0b2f1e2d01d1ac52ba207dc7ce76971d853298eChiao Chengimport com.android.contacts.R; 34e0b2f1e2d01d1ac52ba207dc7ce76971d853298eChiao Chengimport com.android.contacts.group.GroupDetailDisplayUtils; 35e0b2f1e2d01d1ac52ba207dc7ce76971d853298eChiao Chengimport com.android.contacts.group.GroupDetailFragment; 36e0b2f1e2d01d1ac52ba207dc7ce76971d853298eChiao Chengimport com.android.contacts.model.AccountTypeManager; 37851222a96b5d68602fb361ea3527101e893f67e3Maurice Chuimport com.android.contacts.model.account.AccountType; 38e0b2f1e2d01d1ac52ba207dc7ce76971d853298eChiao Cheng 39fd8cdedb816cb1fc5894e2e3c5e144ff16b90b7cKatherine Kuanpublic class GroupDetailActivity extends ContactsActivity { 40fd8cdedb816cb1fc5894e2e3c5e144ff16b90b7cKatherine Kuan 41fd8cdedb816cb1fc5894e2e3c5e144ff16b90b7cKatherine Kuan private static final String TAG = "GroupDetailActivity"; 42fd8cdedb816cb1fc5894e2e3c5e144ff16b90b7cKatherine Kuan 43703cda7119b710446f7abc38843043b7cbbf3a47Katherine Kuan private boolean mShowGroupSourceInActionBar; 44703cda7119b710446f7abc38843043b7cbbf3a47Katherine Kuan 45703cda7119b710446f7abc38843043b7cbbf3a47Katherine Kuan private String mAccountTypeString; 462b3f3c54d3beb017b2f59f19e9ce0ecc3e039dbcDave Santoro private String mDataSet; 47d78ee90c0d4d93b82ad440396e87ae4f47f53e93Daniel Lehmann 48d78ee90c0d4d93b82ad440396e87ae4f47f53e93Daniel Lehmann private GroupDetailFragment mFragment; 49703cda7119b710446f7abc38843043b7cbbf3a47Katherine Kuan 50fd8cdedb816cb1fc5894e2e3c5e144ff16b90b7cKatherine Kuan @Override 51fd8cdedb816cb1fc5894e2e3c5e144ff16b90b7cKatherine Kuan public void onCreate(Bundle savedState) { 52fd8cdedb816cb1fc5894e2e3c5e144ff16b90b7cKatherine Kuan super.onCreate(savedState); 53fd8cdedb816cb1fc5894e2e3c5e144ff16b90b7cKatherine Kuan 54fd8cdedb816cb1fc5894e2e3c5e144ff16b90b7cKatherine Kuan // TODO: Create Intent Resolver to handle the different ways users can get to this list. 55fd8cdedb816cb1fc5894e2e3c5e144ff16b90b7cKatherine Kuan // TODO: Handle search or key down 56fd8cdedb816cb1fc5894e2e3c5e144ff16b90b7cKatherine Kuan 57fd8cdedb816cb1fc5894e2e3c5e144ff16b90b7cKatherine Kuan setContentView(R.layout.group_detail_activity); 58be18de05d6f6a107c552e369bce58f51c946fde7Katherine Kuan 59703cda7119b710446f7abc38843043b7cbbf3a47Katherine Kuan mShowGroupSourceInActionBar = getResources().getBoolean( 60703cda7119b710446f7abc38843043b7cbbf3a47Katherine Kuan R.bool.config_show_group_action_in_action_bar); 61703cda7119b710446f7abc38843043b7cbbf3a47Katherine Kuan 62d78ee90c0d4d93b82ad440396e87ae4f47f53e93Daniel Lehmann mFragment = (GroupDetailFragment) getFragmentManager().findFragmentById( 63be18de05d6f6a107c552e369bce58f51c946fde7Katherine Kuan R.id.group_detail_fragment); 64d78ee90c0d4d93b82ad440396e87ae4f47f53e93Daniel Lehmann mFragment.setListener(mFragmentListener); 65d78ee90c0d4d93b82ad440396e87ae4f47f53e93Daniel Lehmann mFragment.setShowGroupSourceInActionBar(mShowGroupSourceInActionBar); 66d78ee90c0d4d93b82ad440396e87ae4f47f53e93Daniel Lehmann mFragment.loadGroup(getIntent().getData()); 67d78ee90c0d4d93b82ad440396e87ae4f47f53e93Daniel Lehmann mFragment.closeActivityAfterDelete(true); 684ec198790236ab4be6bc5d73441215b684832618Isaac Katzenelson 691390f85d3776dd9ad9d38f611f3a0d4ed59f6249Katherine Kuan // We want the UP affordance but no app icon. 701390f85d3776dd9ad9d38f611f3a0d4ed59f6249Katherine Kuan ActionBar actionBar = getActionBar(); 714ec198790236ab4be6bc5d73441215b684832618Isaac Katzenelson if (actionBar != null) { 721390f85d3776dd9ad9d38f611f3a0d4ed59f6249Katherine Kuan actionBar.setDisplayOptions(ActionBar.DISPLAY_HOME_AS_UP | ActionBar.DISPLAY_SHOW_TITLE, 731390f85d3776dd9ad9d38f611f3a0d4ed59f6249Katherine Kuan ActionBar.DISPLAY_HOME_AS_UP | ActionBar.DISPLAY_SHOW_TITLE 741390f85d3776dd9ad9d38f611f3a0d4ed59f6249Katherine Kuan | ActionBar.DISPLAY_SHOW_HOME); 754ec198790236ab4be6bc5d73441215b684832618Isaac Katzenelson } 76fd8cdedb816cb1fc5894e2e3c5e144ff16b90b7cKatherine Kuan } 77be18de05d6f6a107c552e369bce58f51c946fde7Katherine Kuan 78be18de05d6f6a107c552e369bce58f51c946fde7Katherine Kuan private final GroupDetailFragment.Listener mFragmentListener = 79be18de05d6f6a107c552e369bce58f51c946fde7Katherine Kuan new GroupDetailFragment.Listener() { 80be18de05d6f6a107c552e369bce58f51c946fde7Katherine Kuan 81be18de05d6f6a107c552e369bce58f51c946fde7Katherine Kuan @Override 82be18de05d6f6a107c552e369bce58f51c946fde7Katherine Kuan public void onGroupSizeUpdated(String size) { 83be18de05d6f6a107c552e369bce58f51c946fde7Katherine Kuan getActionBar().setSubtitle(size); 84be18de05d6f6a107c552e369bce58f51c946fde7Katherine Kuan } 85be18de05d6f6a107c552e369bce58f51c946fde7Katherine Kuan 86be18de05d6f6a107c552e369bce58f51c946fde7Katherine Kuan @Override 87be18de05d6f6a107c552e369bce58f51c946fde7Katherine Kuan public void onGroupTitleUpdated(String title) { 88be18de05d6f6a107c552e369bce58f51c946fde7Katherine Kuan getActionBar().setTitle(title); 89be18de05d6f6a107c552e369bce58f51c946fde7Katherine Kuan } 90c6b8afe730255537978f2c938cca6986cae63c34Katherine Kuan 91c6b8afe730255537978f2c938cca6986cae63c34Katherine Kuan @Override 92d78ee90c0d4d93b82ad440396e87ae4f47f53e93Daniel Lehmann public void onAccountTypeUpdated(String accountTypeString, String dataSet) { 93703cda7119b710446f7abc38843043b7cbbf3a47Katherine Kuan mAccountTypeString = accountTypeString; 942b3f3c54d3beb017b2f59f19e9ce0ecc3e039dbcDave Santoro mDataSet = dataSet; 95703cda7119b710446f7abc38843043b7cbbf3a47Katherine Kuan invalidateOptionsMenu(); 96703cda7119b710446f7abc38843043b7cbbf3a47Katherine Kuan } 97703cda7119b710446f7abc38843043b7cbbf3a47Katherine Kuan 98703cda7119b710446f7abc38843043b7cbbf3a47Katherine Kuan @Override 99c6b8afe730255537978f2c938cca6986cae63c34Katherine Kuan public void onEditRequested(Uri groupUri) { 10072a8e70ef935935fdbb26c53f760be59bbdfe824Katherine Kuan final Intent intent = new Intent(GroupDetailActivity.this, GroupEditorActivity.class); 10172a8e70ef935935fdbb26c53f760be59bbdfe824Katherine Kuan intent.setData(groupUri); 10272a8e70ef935935fdbb26c53f760be59bbdfe824Katherine Kuan intent.setAction(Intent.ACTION_EDIT); 10372a8e70ef935935fdbb26c53f760be59bbdfe824Katherine Kuan startActivity(intent); 104c6b8afe730255537978f2c938cca6986cae63c34Katherine Kuan } 1054e2bb32000f391ceb0de7309a159bee5d8e04fc5Frank Sposaro 1064e2bb32000f391ceb0de7309a159bee5d8e04fc5Frank Sposaro @Override 1074e2bb32000f391ceb0de7309a159bee5d8e04fc5Frank Sposaro public void onContactSelected(Uri contactUri) { 10815586e733fe0500ffe336fcdc6eabdb35f996402Erik Intent intent = new Intent(Intent.ACTION_VIEW, contactUri); 10915586e733fe0500ffe336fcdc6eabdb35f996402Erik startActivity(intent); 1104e2bb32000f391ceb0de7309a159bee5d8e04fc5Frank Sposaro } 111703cda7119b710446f7abc38843043b7cbbf3a47Katherine Kuan 112be18de05d6f6a107c552e369bce58f51c946fde7Katherine Kuan }; 1134ec198790236ab4be6bc5d73441215b684832618Isaac Katzenelson 1144ec198790236ab4be6bc5d73441215b684832618Isaac Katzenelson @Override 115703cda7119b710446f7abc38843043b7cbbf3a47Katherine Kuan public boolean onCreateOptionsMenu(Menu menu) { 116703cda7119b710446f7abc38843043b7cbbf3a47Katherine Kuan super.onCreateOptionsMenu(menu); 117703cda7119b710446f7abc38843043b7cbbf3a47Katherine Kuan if (mShowGroupSourceInActionBar) { 118703cda7119b710446f7abc38843043b7cbbf3a47Katherine Kuan MenuInflater inflater = getMenuInflater(); 119703cda7119b710446f7abc38843043b7cbbf3a47Katherine Kuan inflater.inflate(R.menu.group_source, menu); 120703cda7119b710446f7abc38843043b7cbbf3a47Katherine Kuan } 121703cda7119b710446f7abc38843043b7cbbf3a47Katherine Kuan return true; 122703cda7119b710446f7abc38843043b7cbbf3a47Katherine Kuan } 1234ec198790236ab4be6bc5d73441215b684832618Isaac Katzenelson 124703cda7119b710446f7abc38843043b7cbbf3a47Katherine Kuan @Override 125703cda7119b710446f7abc38843043b7cbbf3a47Katherine Kuan public boolean onPrepareOptionsMenu(Menu menu) { 126703cda7119b710446f7abc38843043b7cbbf3a47Katherine Kuan if (!mShowGroupSourceInActionBar) { 127703cda7119b710446f7abc38843043b7cbbf3a47Katherine Kuan return false; 128703cda7119b710446f7abc38843043b7cbbf3a47Katherine Kuan } 129703cda7119b710446f7abc38843043b7cbbf3a47Katherine Kuan MenuItem groupSourceMenuItem = menu.findItem(R.id.menu_group_source); 130703cda7119b710446f7abc38843043b7cbbf3a47Katherine Kuan if (groupSourceMenuItem == null) { 131703cda7119b710446f7abc38843043b7cbbf3a47Katherine Kuan return false; 132703cda7119b710446f7abc38843043b7cbbf3a47Katherine Kuan } 133d78ee90c0d4d93b82ad440396e87ae4f47f53e93Daniel Lehmann final AccountTypeManager manager = AccountTypeManager.getInstance(this); 134d78ee90c0d4d93b82ad440396e87ae4f47f53e93Daniel Lehmann final AccountType accountType = 135d78ee90c0d4d93b82ad440396e87ae4f47f53e93Daniel Lehmann manager.getAccountType(mAccountTypeString, mDataSet); 136d78ee90c0d4d93b82ad440396e87ae4f47f53e93Daniel Lehmann if (TextUtils.isEmpty(mAccountTypeString) 137d78ee90c0d4d93b82ad440396e87ae4f47f53e93Daniel Lehmann || TextUtils.isEmpty(accountType.getViewGroupActivity())) { 138703cda7119b710446f7abc38843043b7cbbf3a47Katherine Kuan groupSourceMenuItem.setVisible(false); 139703cda7119b710446f7abc38843043b7cbbf3a47Katherine Kuan return false; 140703cda7119b710446f7abc38843043b7cbbf3a47Katherine Kuan } 141703cda7119b710446f7abc38843043b7cbbf3a47Katherine Kuan View groupSourceView = GroupDetailDisplayUtils.getNewGroupSourceView(this); 142703cda7119b710446f7abc38843043b7cbbf3a47Katherine Kuan GroupDetailDisplayUtils.bindGroupSourceView(this, groupSourceView, 1432b3f3c54d3beb017b2f59f19e9ce0ecc3e039dbcDave Santoro mAccountTypeString, mDataSet); 144703cda7119b710446f7abc38843043b7cbbf3a47Katherine Kuan groupSourceView.setOnClickListener(new OnClickListener() { 145703cda7119b710446f7abc38843043b7cbbf3a47Katherine Kuan @Override 146703cda7119b710446f7abc38843043b7cbbf3a47Katherine Kuan public void onClick(View v) { 147d78ee90c0d4d93b82ad440396e87ae4f47f53e93Daniel Lehmann final Uri uri = ContentUris.withAppendedId(Groups.CONTENT_URI, 148d78ee90c0d4d93b82ad440396e87ae4f47f53e93Daniel Lehmann mFragment.getGroupId()); 149d78ee90c0d4d93b82ad440396e87ae4f47f53e93Daniel Lehmann final Intent intent = new Intent(Intent.ACTION_VIEW, uri); 15082a4f4408b74e193b43a12dc8e16c946a93bae4aMakoto Onuki intent.setClassName(accountType.syncAdapterPackageName, 15182a4f4408b74e193b43a12dc8e16c946a93bae4aMakoto Onuki accountType.getViewGroupActivity()); 152d78ee90c0d4d93b82ad440396e87ae4f47f53e93Daniel Lehmann startActivity(intent); 153703cda7119b710446f7abc38843043b7cbbf3a47Katherine Kuan } 154703cda7119b710446f7abc38843043b7cbbf3a47Katherine Kuan }); 155703cda7119b710446f7abc38843043b7cbbf3a47Katherine Kuan groupSourceMenuItem.setActionView(groupSourceView); 156703cda7119b710446f7abc38843043b7cbbf3a47Katherine Kuan groupSourceMenuItem.setVisible(true); 157703cda7119b710446f7abc38843043b7cbbf3a47Katherine Kuan return true; 158703cda7119b710446f7abc38843043b7cbbf3a47Katherine Kuan } 159703cda7119b710446f7abc38843043b7cbbf3a47Katherine Kuan 160703cda7119b710446f7abc38843043b7cbbf3a47Katherine Kuan @Override 161703cda7119b710446f7abc38843043b7cbbf3a47Katherine Kuan public boolean onOptionsItemSelected(MenuItem item) { 1624ec198790236ab4be6bc5d73441215b684832618Isaac Katzenelson switch (item.getItemId()) { 1634ec198790236ab4be6bc5d73441215b684832618Isaac Katzenelson case android.R.id.home: 164b7ae952816e330e4e1f7e148df1b6dbb52f28f5aKatherine Kuan Intent intent = new Intent(this, PeopleActivity.class); 165b7ae952816e330e4e1f7e148df1b6dbb52f28f5aKatherine Kuan intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP); 166b7ae952816e330e4e1f7e148df1b6dbb52f28f5aKatherine Kuan startActivity(intent); 1674ec198790236ab4be6bc5d73441215b684832618Isaac Katzenelson finish(); 1684ec198790236ab4be6bc5d73441215b684832618Isaac Katzenelson return true; 1694ec198790236ab4be6bc5d73441215b684832618Isaac Katzenelson default: 1704ec198790236ab4be6bc5d73441215b684832618Isaac Katzenelson break; 1714ec198790236ab4be6bc5d73441215b684832618Isaac Katzenelson } 1724ec198790236ab4be6bc5d73441215b684832618Isaac Katzenelson return super.onOptionsItemSelected(item); 1734ec198790236ab4be6bc5d73441215b684832618Isaac Katzenelson } 174fd8cdedb816cb1fc5894e2e3c5e144ff16b90b7cKatherine Kuan} 175