Merge "Revert "Revert "Load the raw contact's photo in picker dialog""" into ub-contactsdialer-h-dev
diff --git a/src/com/android/contacts/group/GroupMembersFragment.java b/src/com/android/contacts/group/GroupMembersFragment.java
index be3b127..44bda74 100644
--- a/src/com/android/contacts/group/GroupMembersFragment.java
+++ b/src/com/android/contacts/group/GroupMembersFragment.java
@@ -50,7 +50,6 @@
import com.android.contacts.R;
import com.android.contacts.activities.ActionBarAdapter;
import com.android.contacts.common.ContactsUtils;
-import com.android.contacts.common.Experiments;
import com.android.contacts.common.list.ContactsSectionIndexer;
import com.android.contacts.common.list.MultiSelectEntryContactListAdapter.DeleteContactListener;
import com.android.contacts.common.logging.ListEvent;
@@ -65,7 +64,6 @@
import com.android.contacts.list.MultiSelectContactsListFragment;
import com.android.contacts.list.UiIntentActions;
import com.android.contactsbind.FeedbackHelper;
-import com.android.contactsbind.experiments.Flags;
import com.google.common.primitives.Longs;
import java.util.ArrayList;
@@ -91,7 +89,6 @@
private static final int LOADER_GROUP_METADATA = 0;
private static final int MSG_FAIL_TO_LOAD = 1;
private static final int RESULT_GROUP_ADD_MEMBER = 100;
- private static final int RESULT_SEND_TO_SELECTION = 200;
/** Filters out duplicate contacts. */
private class FilterCursorWrapper extends CursorWrapper {
@@ -294,7 +291,7 @@
/**
* Helper class for cp2 query used to look up all contact's emails and phone numbers.
*/
- private static abstract class Query {
+ public static abstract class Query {
public static final String EMAIL_SELECTION =
ContactsContract.Data.MIMETYPE + "='"
+ ContactsContract.CommonDataKinds.Email.CONTENT_ITEM_TYPE + "'";
@@ -358,41 +355,6 @@
}
}
- private List<String> getSendToDataForIds(long[] ids, String scheme) {
- final List<String> items = new ArrayList<>();
- final String sIds = GroupUtil.convertArrayToString(ids);
- final String select = (ContactsUtils.SCHEME_MAILTO.equals(scheme)
- ? Query.EMAIL_SELECTION
- + " AND " + ContactsContract.CommonDataKinds.Email._ID + " IN (" + sIds + ")"
- : Query.PHONE_SELECTION
- + " AND " + ContactsContract.CommonDataKinds.Phone._ID + " IN (" + sIds + ")");
- final ContentResolver contentResolver = getContext().getContentResolver();
- final Cursor cursor = contentResolver.query(ContactsContract.Data.CONTENT_URI,
- ContactsUtils.SCHEME_MAILTO.equals(scheme)
- ? Query.EMAIL_PROJECTION
- : Query.PHONE_PROJECTION,
- select, null, null);
-
- if (cursor == null) {
- return items;
- }
-
- try {
- cursor.moveToPosition(-1);
- while (cursor.moveToNext()) {
- final String data = cursor.getString(Query.DATA1);
-
- if (!TextUtils.isEmpty(data)) {
- items.add(data);
- }
- }
- } finally {
- cursor.close();
- }
-
- return items;
- }
-
private void sendToGroup(long[] ids, String sendScheme, String title) {
if (ids == null || ids.length == 0) return;
@@ -471,17 +433,13 @@
}
final String itemsString = TextUtils.join(",", itemList);
- startSendToSelectionActivity(itemsString, sendScheme, title);
- }
-
- private void startSendToSelectionActivity(String listItems, String sendScheme, String title) {
- startActivity(GroupUtil.createSendToSelectionIntent(listItems, sendScheme, title));
+ GroupUtil.startSendToSelectionActivity(this, itemsString, sendScheme, title);
}
private void startSendToSelectionPickerActivity(long[] ids, long[] defaultSelection,
String sendScheme, String title) {
- startActivityForResult(GroupUtil.createSendToSelectionPickerIntent(getContext(), ids,
- defaultSelection, sendScheme, title), RESULT_SEND_TO_SELECTION);
+ startActivity(GroupUtil.createSendToSelectionPickerIntent(getContext(), ids,
+ defaultSelection, sendScheme, title));
}
private void startGroupAddMemberActivity() {
@@ -555,38 +513,25 @@
@Override
public void onActivityResult(int requestCode, int resultCode, Intent data) {
- if (resultCode != Activity.RESULT_OK || data == null) {
+ if (resultCode != Activity.RESULT_OK || data == null
+ || requestCode != RESULT_GROUP_ADD_MEMBER) {
return;
}
- switch(requestCode) {
- case RESULT_GROUP_ADD_MEMBER: {
- long[] contactIds = data.getLongArrayExtra(
- UiIntentActions.TARGET_CONTACT_IDS_EXTRA_KEY);
- if (contactIds == null) {
- final long contactId = data.getLongExtra(
- UiIntentActions.TARGET_CONTACT_ID_EXTRA_KEY, -1);
- if (contactId > -1) {
- contactIds = new long[1];
- contactIds[0] = contactId;
- }
- }
- new UpdateGroupMembersAsyncTask(
- UpdateGroupMembersAsyncTask.TYPE_ADD,
- getContext(), contactIds, mGroupMetaData.groupId, mGroupMetaData.accountName,
- mGroupMetaData.accountType, mGroupMetaData.dataSet).execute();
- break;
- }
- case RESULT_SEND_TO_SELECTION: {
- final long[] ids = data.getLongArrayExtra(
- UiIntentActions.TARGET_CONTACT_IDS_EXTRA_KEY);
- final String sendScheme = data.getStringExtra(UiIntentActions.SELECTION_SEND_SCHEME);
- final String sendTitle = data.getStringExtra(UiIntentActions.SELECTION_SEND_TITLE);
- final List<String> items = getSendToDataForIds(ids, sendScheme);
- final String list = TextUtils.join(",", items);
- startSendToSelectionActivity(list, sendScheme, sendTitle);
- break;
+
+ long[] contactIds = data.getLongArrayExtra(
+ UiIntentActions.TARGET_CONTACT_IDS_EXTRA_KEY);
+ if (contactIds == null) {
+ final long contactId = data.getLongExtra(
+ UiIntentActions.TARGET_CONTACT_ID_EXTRA_KEY, -1);
+ if (contactId > -1) {
+ contactIds = new long[1];
+ contactIds[0] = contactId;
}
}
+ new UpdateGroupMembersAsyncTask(
+ UpdateGroupMembersAsyncTask.TYPE_ADD,
+ getContext(), contactIds, mGroupMetaData.groupId, mGroupMetaData.accountName,
+ mGroupMetaData.accountType, mGroupMetaData.dataSet).execute();
}
private final ActionBarAdapter.Listener mActionBarListener = new ActionBarAdapter.Listener() {
diff --git a/src/com/android/contacts/group/GroupUtil.java b/src/com/android/contacts/group/GroupUtil.java
index dc85152..3b79546 100644
--- a/src/com/android/contacts/group/GroupUtil.java
+++ b/src/com/android/contacts/group/GroupUtil.java
@@ -16,6 +16,8 @@
package com.android.contacts.group;
+import android.app.Fragment;
+import android.content.ContentResolver;
import android.content.Context;
import android.content.Intent;
import android.database.Cursor;
@@ -58,6 +60,8 @@
public static final String ACTION_SWITCH_GROUP = "switchGroup";
public static final String ACTION_UPDATE_GROUP = "updateGroup";
+ public static final int RESULT_SEND_TO_SELECTION = 100;
+
// System IDs of FFC groups in Google accounts
private static final Set<String> FFC_GROUPS =
new HashSet(Arrays.asList("Friends", "Family", "Coworkers"));
@@ -100,12 +104,48 @@
isFirstGroupInAccount, memberCount, isReadOnly, systemId);
}
+ public static List<String> getSendToDataForIds(Context context, long[] ids, String scheme) {
+ final List<String> items = new ArrayList<>();
+ final String sIds = GroupUtil.convertArrayToString(ids);
+ final String select = (ContactsUtils.SCHEME_MAILTO.equals(scheme)
+ ? GroupMembersFragment.Query.EMAIL_SELECTION
+ + " AND " + ContactsContract.CommonDataKinds.Email._ID + " IN (" + sIds + ")"
+ : GroupMembersFragment.Query.PHONE_SELECTION
+ + " AND " + ContactsContract.CommonDataKinds.Phone._ID + " IN (" + sIds + ")");
+ final ContentResolver contentResolver = context.getContentResolver();
+ final Cursor cursor = contentResolver.query(ContactsContract.Data.CONTENT_URI,
+ ContactsUtils.SCHEME_MAILTO.equals(scheme)
+ ? GroupMembersFragment.Query.EMAIL_PROJECTION
+ : GroupMembersFragment.Query.PHONE_PROJECTION,
+ select, null, null);
+
+ if (cursor == null) {
+ return items;
+ }
+
+ try {
+ cursor.moveToPosition(-1);
+ while (cursor.moveToNext()) {
+ final String data = cursor.getString(GroupMembersFragment.Query.DATA1);
+
+ if (!TextUtils.isEmpty(data)) {
+ items.add(data);
+ }
+ }
+ } finally {
+ cursor.close();
+ }
+
+ return items;
+ }
+
/** Returns an Intent to send emails/phones to some activity/app */
- public static Intent createSendToSelectionIntent(
- String itemsList, String sendScheme, String title) {
+ public static void startSendToSelectionActivity(
+ Fragment fragment, String itemsList, String sendScheme, String title) {
final Intent intent = new Intent(Intent.ACTION_SENDTO,
Uri.fromParts(sendScheme, itemsList, null));
- return Intent.createChooser(intent, title);
+ fragment.startActivityForResult(
+ Intent.createChooser(intent, title), RESULT_SEND_TO_SELECTION);
}
/** Returns an Intent to pick emails/phones to send to selection (or group) */
diff --git a/src/com/android/contacts/list/MultiSelectEmailAddressesListFragment.java b/src/com/android/contacts/list/MultiSelectEmailAddressesListFragment.java
index d3aa5ca..d14488a 100644
--- a/src/com/android/contacts/list/MultiSelectEmailAddressesListFragment.java
+++ b/src/com/android/contacts/list/MultiSelectEmailAddressesListFragment.java
@@ -15,9 +15,9 @@
*/
package com.android.contacts.list;
-import android.app.Activity;
import android.content.Intent;
import android.os.Bundle;
+import android.text.TextUtils;
import android.view.LayoutInflater;
import android.view.Menu;
import android.view.MenuInflater;
@@ -27,7 +27,9 @@
import com.android.contacts.R;
import com.android.contacts.common.logging.ListEvent;
+import com.android.contacts.group.GroupUtil;
+import java.util.List;
import java.util.TreeSet;
/** Displays a list of emails with check boxes. */
@@ -74,6 +76,11 @@
}
@Override
+ public void onActivityResult(int requestCode, int resultCode, Intent data) {
+ getActivity().finish();
+ }
+
+ @Override
public boolean onOptionsItemSelected(MenuItem item) {
switch(item.getItemId()) {
case R.id.menu_send: {
@@ -81,13 +88,10 @@
UiIntentActions.SELECTION_SEND_SCHEME);
final String title= getActivity().getIntent().getStringExtra(
UiIntentActions.SELECTION_SEND_TITLE);
- final Intent intent = new Intent();
- intent.putExtra(UiIntentActions.TARGET_CONTACT_IDS_EXTRA_KEY,
- getAdapter().getSelectedContactIdsArray());
- intent.putExtra(UiIntentActions.SELECTION_SEND_SCHEME, scheme);
- intent.putExtra(UiIntentActions.SELECTION_SEND_TITLE, title);
- getActivity().setResult(Activity.RESULT_OK, intent);
- getActivity().finish();
+ final List<String> items = GroupUtil.getSendToDataForIds(
+ getActivity(), getAdapter().getSelectedContactIdsArray(), scheme);
+ final String list = TextUtils.join(",", items);
+ GroupUtil.startSendToSelectionActivity(this, list, scheme, title);
return true;
}
}
diff --git a/src/com/android/contacts/list/MultiSelectPhoneNumbersListFragment.java b/src/com/android/contacts/list/MultiSelectPhoneNumbersListFragment.java
index aea89e4..5a1a761 100644
--- a/src/com/android/contacts/list/MultiSelectPhoneNumbersListFragment.java
+++ b/src/com/android/contacts/list/MultiSelectPhoneNumbersListFragment.java
@@ -15,9 +15,9 @@
*/
package com.android.contacts.list;
-import android.app.Activity;
import android.content.Intent;
import android.os.Bundle;
+import android.text.TextUtils;
import android.view.LayoutInflater;
import android.view.Menu;
import android.view.MenuInflater;
@@ -27,7 +27,9 @@
import com.android.contacts.R;
import com.android.contacts.common.logging.ListEvent;
+import com.android.contacts.group.GroupUtil;
+import java.util.List;
import java.util.TreeSet;
/** Displays a list of phone numbers with check boxes. */
@@ -74,6 +76,11 @@
}
@Override
+ public void onActivityResult(int requestCode, int resultCode, Intent data) {
+ getActivity().finish();
+ }
+
+ @Override
public boolean onOptionsItemSelected(MenuItem item) {
switch(item.getItemId()) {
case R.id.menu_send: {
@@ -81,13 +88,10 @@
UiIntentActions.SELECTION_SEND_SCHEME);
final String title= getActivity().getIntent().getStringExtra(
UiIntentActions.SELECTION_SEND_TITLE);
- final Intent intent = new Intent();
- intent.putExtra(UiIntentActions.TARGET_CONTACT_IDS_EXTRA_KEY,
- getAdapter().getSelectedContactIdsArray());
- intent.putExtra(UiIntentActions.SELECTION_SEND_SCHEME, scheme);
- intent.putExtra(UiIntentActions.SELECTION_SEND_TITLE, title);
- getActivity().setResult(Activity.RESULT_OK, intent);
- getActivity().finish();
+ final List<String> items = GroupUtil.getSendToDataForIds(
+ getActivity(), getAdapter().getSelectedContactIdsArray(), scheme);
+ final String list = TextUtils.join(",", items);
+ GroupUtil.startSendToSelectionActivity(this, list, scheme, title);
return true;
}
}