blob: 708da8a6994f481d064e7861658767163e5c10cc [file] [log] [blame]
Dmitri Plotnikov501b7ea2010-04-07 17:20:49 -07001/*
Dmitri Plotnikove4d32d92010-05-10 19:06:22 -07002 * Copyright (C) 2009 The Android Open Source Project
Dmitri Plotnikov501b7ea2010-04-07 17:20:49 -07003 *
4 * Licensed under the Apache License, Version 2.0 (the "License");
5 * you may not use this file except in compliance with the License.
6 * You may obtain a copy of the License at
7 *
8 * http://www.apache.org/licenses/LICENSE-2.0
9 *
10 * Unless required by applicable law or agreed to in writing, software
11 * distributed under the License is distributed on an "AS IS" BASIS,
12 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 * See the License for the specific language governing permissions and
14 * limitations under the License.
15 */
16
17package com.android.contacts;
18
Dmitri Plotnikov6e2009d2010-04-22 16:03:53 -070019
Dmitri Plotnikove8a95172010-06-23 16:18:10 -070020import com.android.contacts.list.ContactEntryListFragment;
21import com.android.contacts.list.ContactsRequest;
Dmitri Plotnikov59fb48e2010-04-26 17:09:19 -070022import com.android.contacts.list.JoinContactListFragment;
Dmitri Plotnikove4d32d92010-05-10 19:06:22 -070023import com.android.contacts.list.OnContactPickerActionListener;
Dmitri Plotnikove8a95172010-06-23 16:18:10 -070024import com.android.contacts.ui.ContactsPreferencesActivity;
Dmitri Plotnikov807a0fe2010-04-20 12:03:10 -070025
Dmitri Plotnikove4d32d92010-05-10 19:06:22 -070026import android.app.Activity;
27import android.app.FragmentTransaction;
Dmitri Plotnikov501b7ea2010-04-07 17:20:49 -070028import android.content.Intent;
Dmitri Plotnikov501b7ea2010-04-07 17:20:49 -070029import android.net.Uri;
Dmitri Plotnikove4d32d92010-05-10 19:06:22 -070030import android.os.Bundle;
Dmitri Plotnikov501b7ea2010-04-07 17:20:49 -070031import android.provider.ContactsContract;
Dmitri Plotnikove8a95172010-06-23 16:18:10 -070032import android.provider.Settings;
33import android.provider.ContactsContract.Contacts;
Dmitri Plotnikov501b7ea2010-04-07 17:20:49 -070034import android.util.Log;
Dmitri Plotnikove8a95172010-06-23 16:18:10 -070035import android.view.Menu;
36import android.view.MenuInflater;
37import android.view.MenuItem;
Dmitri Plotnikov501b7ea2010-04-07 17:20:49 -070038
39/**
40 * An activity that shows a list of contacts that can be joined with the target contact.
41 */
Dmitri Plotnikove4d32d92010-05-10 19:06:22 -070042public class JoinContactActivity extends Activity {
Dmitri Plotnikov501b7ea2010-04-07 17:20:49 -070043
44 private static final String TAG = "JoinContactActivity";
45
46 /**
47 * The action for the join contact activity.
48 * <p>
49 * Input: extra field {@link #EXTRA_TARGET_CONTACT_ID} is the aggregate ID.
50 * TODO: move to {@link ContactsContract}.
51 */
52 public static final String JOIN_CONTACT = "com.android.contacts.action.JOIN_CONTACT";
53
54 /**
55 * Used with {@link #JOIN_CONTACT} to give it the target for aggregation.
56 * <p>
57 * Type: LONG
58 */
59 public static final String EXTRA_TARGET_CONTACT_ID = "com.android.contacts.action.CONTACT_ID";
60
Dmitri Plotnikov501b7ea2010-04-07 17:20:49 -070061 private long mTargetContactId;
62
Dmitri Plotnikove8a95172010-06-23 16:18:10 -070063 private JoinContactListFragment mListFragment;
64
Dmitri Plotnikov501b7ea2010-04-07 17:20:49 -070065 @Override
Dmitri Plotnikove4d32d92010-05-10 19:06:22 -070066 protected void onCreate(Bundle savedInstanceState) {
67 super.onCreate(savedInstanceState);
68
69 Intent intent = getIntent();
Dmitri Plotnikov501b7ea2010-04-07 17:20:49 -070070 mTargetContactId = intent.getLongExtra(EXTRA_TARGET_CONTACT_ID, -1);
71 if (mTargetContactId == -1) {
72 Log.e(TAG, "Intent " + intent.getAction() + " is missing required extra: "
73 + EXTRA_TARGET_CONTACT_ID);
74 setResult(RESULT_CANCELED);
75 finish();
Dmitri Plotnikove4d32d92010-05-10 19:06:22 -070076 return;
Dmitri Plotnikov501b7ea2010-04-07 17:20:49 -070077 }
Dmitri Plotnikov59fb48e2010-04-26 17:09:19 -070078
Dmitri Plotnikove8a95172010-06-23 16:18:10 -070079 mListFragment = new JoinContactListFragment();
80 mListFragment.setTargetContactId(mTargetContactId);
81 mListFragment.setOnContactPickerActionListener(new OnContactPickerActionListener() {
Dmitri Plotnikove4d32d92010-05-10 19:06:22 -070082 public void onPickContactAction(Uri contactUri) {
83 Intent intent = new Intent(null, contactUri);
84 setResult(RESULT_OK, intent);
85 finish();
Dmitri Plotnikov501b7ea2010-04-07 17:20:49 -070086 }
87
Dmitri Plotnikove4d32d92010-05-10 19:06:22 -070088 public void onSearchAllContactsAction(String string) {
Dmitri Plotnikov501b7ea2010-04-07 17:20:49 -070089 }
90
Dmitri Plotnikove4d32d92010-05-10 19:06:22 -070091 public void onShortcutIntentCreated(Intent intent) {
92 }
Dmitri Plotnikov501b7ea2010-04-07 17:20:49 -070093
Dmitri Plotnikove4d32d92010-05-10 19:06:22 -070094 public void onCreateNewContactAction() {
95 }
96 });
97
98 FragmentTransaction transaction = openFragmentTransaction();
Dmitri Plotnikove8a95172010-06-23 16:18:10 -070099 transaction.add(android.R.id.content, mListFragment);
Dmitri Plotnikove4d32d92010-05-10 19:06:22 -0700100 transaction.commit();
Dmitri Plotnikov501b7ea2010-04-07 17:20:49 -0700101 }
Dmitri Plotnikove8a95172010-06-23 16:18:10 -0700102
103 @Override
104 public boolean onCreateOptionsMenu(Menu menu) {
105 MenuInflater inflater = getMenuInflater();
106 inflater.inflate(R.menu.search, menu);
107 return true;
108 }
109
110 @Override
111 public boolean onOptionsItemSelected(MenuItem item) {
112 switch (item.getItemId()) {
113 case R.id.menu_search: {
114 onSearchRequested();
115 return true;
116 }
117 }
118 return false;
119 }
120
121 @Override
122 public void startSearch(String initialQuery, boolean selectInitialQuery, Bundle appSearchData,
123 boolean globalSearch) {
124 if (globalSearch) {
125 super.startSearch(initialQuery, selectInitialQuery, appSearchData, globalSearch);
126 } else {
127 mListFragment.startSearch(initialQuery);
128 }
129 }
130
131 @Override
132 protected void onActivityResult(int requestCode, int resultCode, Intent data) {
133 if (requestCode == ContactEntryListFragment.ACTIVITY_REQUEST_CODE_PICKER
134 && resultCode == RESULT_OK) {
135 mListFragment.onPickerResult(data);
136 }
137 }
Dmitri Plotnikov501b7ea2010-04-07 17:20:49 -0700138}