blob: 8bae422a61f2fee435f1b276037a956ba0896505 [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;
Dmitri Plotnikov59fb48e2010-04-26 17:09:19 -070021import com.android.contacts.list.JoinContactListFragment;
Dmitri Plotnikove4d32d92010-05-10 19:06:22 -070022import com.android.contacts.list.OnContactPickerActionListener;
Dmitri Plotnikov807a0fe2010-04-20 12:03:10 -070023
Dmitri Plotnikove4d32d92010-05-10 19:06:22 -070024import android.app.Activity;
25import android.app.FragmentTransaction;
Dmitri Plotnikov501b7ea2010-04-07 17:20:49 -070026import android.content.Intent;
Dmitri Plotnikov501b7ea2010-04-07 17:20:49 -070027import android.net.Uri;
Dmitri Plotnikove4d32d92010-05-10 19:06:22 -070028import android.os.Bundle;
Dmitri Plotnikov501b7ea2010-04-07 17:20:49 -070029import android.provider.ContactsContract;
Dmitri Plotnikov501b7ea2010-04-07 17:20:49 -070030import android.util.Log;
Dmitri Plotnikove8a95172010-06-23 16:18:10 -070031import android.view.Menu;
32import android.view.MenuInflater;
33import android.view.MenuItem;
Dmitri Plotnikov501b7ea2010-04-07 17:20:49 -070034
35/**
36 * An activity that shows a list of contacts that can be joined with the target contact.
37 */
Dmitri Plotnikove4d32d92010-05-10 19:06:22 -070038public class JoinContactActivity extends Activity {
Dmitri Plotnikov501b7ea2010-04-07 17:20:49 -070039
40 private static final String TAG = "JoinContactActivity";
41
42 /**
43 * The action for the join contact activity.
44 * <p>
45 * Input: extra field {@link #EXTRA_TARGET_CONTACT_ID} is the aggregate ID.
46 * TODO: move to {@link ContactsContract}.
47 */
48 public static final String JOIN_CONTACT = "com.android.contacts.action.JOIN_CONTACT";
49
50 /**
51 * Used with {@link #JOIN_CONTACT} to give it the target for aggregation.
52 * <p>
53 * Type: LONG
54 */
55 public static final String EXTRA_TARGET_CONTACT_ID = "com.android.contacts.action.CONTACT_ID";
56
Dmitri Plotnikov501b7ea2010-04-07 17:20:49 -070057 private long mTargetContactId;
58
Dmitri Plotnikove8a95172010-06-23 16:18:10 -070059 private JoinContactListFragment mListFragment;
60
Dmitri Plotnikov501b7ea2010-04-07 17:20:49 -070061 @Override
Dmitri Plotnikove4d32d92010-05-10 19:06:22 -070062 protected void onCreate(Bundle savedInstanceState) {
63 super.onCreate(savedInstanceState);
64
65 Intent intent = getIntent();
Dmitri Plotnikov501b7ea2010-04-07 17:20:49 -070066 mTargetContactId = intent.getLongExtra(EXTRA_TARGET_CONTACT_ID, -1);
67 if (mTargetContactId == -1) {
68 Log.e(TAG, "Intent " + intent.getAction() + " is missing required extra: "
69 + EXTRA_TARGET_CONTACT_ID);
70 setResult(RESULT_CANCELED);
71 finish();
Dmitri Plotnikove4d32d92010-05-10 19:06:22 -070072 return;
Dmitri Plotnikov501b7ea2010-04-07 17:20:49 -070073 }
Dmitri Plotnikov59fb48e2010-04-26 17:09:19 -070074
Dmitri Plotnikove8a95172010-06-23 16:18:10 -070075 mListFragment = new JoinContactListFragment();
76 mListFragment.setTargetContactId(mTargetContactId);
77 mListFragment.setOnContactPickerActionListener(new OnContactPickerActionListener() {
Dmitri Plotnikove4d32d92010-05-10 19:06:22 -070078 public void onPickContactAction(Uri contactUri) {
79 Intent intent = new Intent(null, contactUri);
80 setResult(RESULT_OK, intent);
81 finish();
Dmitri Plotnikov501b7ea2010-04-07 17:20:49 -070082 }
83
Dmitri Plotnikove4d32d92010-05-10 19:06:22 -070084 public void onSearchAllContactsAction(String string) {
Dmitri Plotnikov501b7ea2010-04-07 17:20:49 -070085 }
86
Dmitri Plotnikove4d32d92010-05-10 19:06:22 -070087 public void onShortcutIntentCreated(Intent intent) {
88 }
Dmitri Plotnikov501b7ea2010-04-07 17:20:49 -070089
Dmitri Plotnikove4d32d92010-05-10 19:06:22 -070090 public void onCreateNewContactAction() {
91 }
92 });
93
94 FragmentTransaction transaction = openFragmentTransaction();
Dmitri Plotnikove8a95172010-06-23 16:18:10 -070095 transaction.add(android.R.id.content, mListFragment);
Dmitri Plotnikove4d32d92010-05-10 19:06:22 -070096 transaction.commit();
Dmitri Plotnikov501b7ea2010-04-07 17:20:49 -070097 }
Dmitri Plotnikove8a95172010-06-23 16:18:10 -070098
99 @Override
100 public boolean onCreateOptionsMenu(Menu menu) {
101 MenuInflater inflater = getMenuInflater();
102 inflater.inflate(R.menu.search, menu);
103 return true;
104 }
105
106 @Override
107 public boolean onOptionsItemSelected(MenuItem item) {
108 switch (item.getItemId()) {
109 case R.id.menu_search: {
110 onSearchRequested();
111 return true;
112 }
113 }
114 return false;
115 }
116
117 @Override
118 public void startSearch(String initialQuery, boolean selectInitialQuery, Bundle appSearchData,
119 boolean globalSearch) {
120 if (globalSearch) {
121 super.startSearch(initialQuery, selectInitialQuery, appSearchData, globalSearch);
122 } else {
123 mListFragment.startSearch(initialQuery);
124 }
125 }
126
127 @Override
128 protected void onActivityResult(int requestCode, int resultCode, Intent data) {
129 if (requestCode == ContactEntryListFragment.ACTIVITY_REQUEST_CODE_PICKER
130 && resultCode == RESULT_OK) {
131 mListFragment.onPickerResult(data);
132 }
133 }
Dmitri Plotnikov501b7ea2010-04-07 17:20:49 -0700134}