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