Remove "Add to circles" action from QuickContact for G+ profile
bug 30281870
Change-Id: I32a2b1de880b64dec8aecbf2342abf4034aa0d95
diff --git a/res/drawable-hdpi/ic_add_to_circles_black_24.png b/res/drawable-hdpi/ic_add_to_circles_black_24.png
deleted file mode 100644
index 6eb1fcc..0000000
--- a/res/drawable-hdpi/ic_add_to_circles_black_24.png
+++ /dev/null
Binary files differ
diff --git a/res/drawable-mdpi/ic_add_to_circles_black_24.png b/res/drawable-mdpi/ic_add_to_circles_black_24.png
deleted file mode 100644
index fbffc97..0000000
--- a/res/drawable-mdpi/ic_add_to_circles_black_24.png
+++ /dev/null
Binary files differ
diff --git a/res/drawable-xhdpi/ic_add_to_circles_black_24.png b/res/drawable-xhdpi/ic_add_to_circles_black_24.png
deleted file mode 100644
index 79116b5..0000000
--- a/res/drawable-xhdpi/ic_add_to_circles_black_24.png
+++ /dev/null
Binary files differ
diff --git a/res/drawable-xxhdpi/ic_add_to_circles_black_24.png b/res/drawable-xxhdpi/ic_add_to_circles_black_24.png
deleted file mode 100644
index 23a2084..0000000
--- a/res/drawable-xxhdpi/ic_add_to_circles_black_24.png
+++ /dev/null
Binary files differ
diff --git a/src/com/android/contacts/quickcontact/QuickContactActivity.java b/src/com/android/contacts/quickcontact/QuickContactActivity.java
index e918233..c595f23 100644
--- a/src/com/android/contacts/quickcontact/QuickContactActivity.java
+++ b/src/com/android/contacts/quickcontact/QuickContactActivity.java
@@ -239,7 +239,6 @@
private static final String MIMETYPE_GPLUS_PROFILE =
"vnd.android.cursor.item/vnd.googleplus.profile";
- private static final String GPLUS_PROFILE_DATA_5_ADD_TO_CIRCLE = "addtocircle";
private static final String GPLUS_PROFILE_DATA_5_VIEW_PROFILE = "view";
private static final String MIMETYPE_HANGOUTS =
"vnd.android.cursor.item/vnd.googleplus.profile.comm";
@@ -2108,30 +2107,7 @@
// Build advanced entry for known 3p types. Otherwise default to ResolveCache icon.
switch (mimetype) {
case MIMETYPE_GPLUS_PROFILE:
- // If a secondDataItem is available, use it to build an entry with
- // alternate actions
- if (secondDataItem != null) {
- icon = res.getDrawable(R.drawable.ic_google_plus_black_24dp);
- alternateIcon = res.getDrawable(R.drawable.ic_add_to_circles_black_24);
- final GPlusOrHangoutsDataItemModel itemModel =
- new GPlusOrHangoutsDataItemModel(intent, alternateIntent,
- dataItem, secondDataItem, alternateContentDescription,
- header, text, context);
-
- populateGPlusOrHangoutsDataItemModel(itemModel);
- intent = itemModel.intent;
- alternateIntent = itemModel.alternateIntent;
- alternateContentDescription = itemModel.alternateContentDescription;
- header = itemModel.header;
- text = itemModel.text;
- } else {
- if (GPLUS_PROFILE_DATA_5_ADD_TO_CIRCLE.equals(
- intent.getDataString())) {
- icon = res.getDrawable(R.drawable.ic_add_to_circles_black_24);
- } else {
- icon = res.getDrawable(R.drawable.ic_google_plus_black_24dp);
- }
- }
+ icon = res.getDrawable(R.drawable.ic_google_plus_black_24dp);
break;
case MIMETYPE_HANGOUTS:
// If a secondDataItem is available, use it to build an entry with
@@ -2139,12 +2115,12 @@
if (secondDataItem != null) {
icon = res.getDrawable(R.drawable.ic_hangout_24dp);
alternateIcon = res.getDrawable(R.drawable.ic_hangout_video_24dp);
- final GPlusOrHangoutsDataItemModel itemModel =
- new GPlusOrHangoutsDataItemModel(intent, alternateIntent,
+ final HangoutsDataItemModel itemModel =
+ new HangoutsDataItemModel(intent, alternateIntent,
dataItem, secondDataItem, alternateContentDescription,
header, text, context);
- populateGPlusOrHangoutsDataItemModel(itemModel);
+ populateHangoutsDataItemModel(itemModel);
intent = itemModel.intent;
alternateIntent = itemModel.alternateIntent;
alternateContentDescription = itemModel.alternateContentDescription;
@@ -2216,9 +2192,10 @@
private List<Entry> dataItemsToEntries(List<DataItem> dataItems,
MutableString aboutCardTitleOut) {
// Hangouts and G+ use two data items to create one entry.
- if (dataItems.get(0).getMimeType().equals(MIMETYPE_GPLUS_PROFILE) ||
- dataItems.get(0).getMimeType().equals(MIMETYPE_HANGOUTS)) {
- return gPlusOrHangoutsDataItemsToEntries(dataItems);
+ if (dataItems.get(0).getMimeType().equals(MIMETYPE_GPLUS_PROFILE)) {
+ return gPlusDataItemsToEntries(dataItems);
+ } else if (dataItems.get(0).getMimeType().equals(MIMETYPE_HANGOUTS)) {
+ return hangoutsDataItemsToEntries(dataItems);
} else {
final List<Entry> entries = new ArrayList<>();
for (DataItem dataItem : dataItems) {
@@ -2233,15 +2210,10 @@
}
/**
- * G+ and Hangout entries are unique in that a single ExpandingEntryCardView.Entry consists
- * of two data items. This method attempts to build each entry using the two data items if
- * they are available. If there are more or less than two data items, a fall back is used
- * and each data item gets its own entry.
+ * Put the data items into buckets based on the raw contact id
*/
- private List<Entry> gPlusOrHangoutsDataItemsToEntries(List<DataItem> dataItems) {
- final List<Entry> entries = new ArrayList<>();
+ private Map<Long, List<DataItem>> dataItemsToBucket(List<DataItem> dataItems) {
final Map<Long, List<DataItem>> buckets = new HashMap<>();
- // Put the data items into buckets based on the raw contact id
for (DataItem dataItem : dataItems) {
List<DataItem> bucket = buckets.get(dataItem.getRawContactId());
if (bucket == null) {
@@ -2250,10 +2222,43 @@
}
bucket.add(dataItem);
}
+ return buckets;
+ }
+
+ /**
+ * For G+ entries, a single ExpandingEntryCardView.Entry consists of two data items. This
+ * method use only the View profile to build entry.
+ */
+ private List<Entry> gPlusDataItemsToEntries(List<DataItem> dataItems) {
+ final List<Entry> entries = new ArrayList<>();
+
+ for (List<DataItem> bucket : dataItemsToBucket(dataItems).values()) {
+ for (DataItem dataItem : bucket) {
+ if (GPLUS_PROFILE_DATA_5_VIEW_PROFILE.equals(
+ dataItem.getContentValues().getAsString(Data.DATA5))) {
+ final Entry entry = dataItemToEntry(dataItem, /* secondDataItem = */ null,
+ this, mContactData, /* aboutCardName = */ null);
+ if (entry != null) {
+ entries.add(entry);
+ }
+ }
+ }
+ }
+ return entries;
+ }
+
+ /**
+ * For Hangouts entries, a single ExpandingEntryCardView.Entry consists of two data items. This
+ * method attempts to build each entry using the two data items if they are available. If there
+ * are more or less than two data items, a fall back is used and each data item gets its own
+ * entry.
+ */
+ private List<Entry> hangoutsDataItemsToEntries(List<DataItem> dataItems) {
+ final List<Entry> entries = new ArrayList<>();
// Use the buckets to build entries. If a bucket contains two data items, build the special
// entry, otherwise fall back to the normal entry.
- for (List<DataItem> bucket : buckets.values()) {
+ for (List<DataItem> bucket : dataItemsToBucket(dataItems).values()) {
if (bucket.size() == 2) {
// Use the pair to build an entry
final Entry entry = dataItemToEntry(bucket.get(0),
@@ -2276,10 +2281,10 @@
}
/**
- * Used for statically passing around G+ or Hangouts data items and entry fields to
- * populateGPlusOrHangoutsDataItemModel.
+ * Used for statically passing around Hangouts data items and entry fields to
+ * populateHangoutsDataItemModel.
*/
- private static final class GPlusOrHangoutsDataItemModel {
+ private static final class HangoutsDataItemModel {
public Intent intent;
public Intent alternateIntent;
public DataItem dataItem;
@@ -2289,7 +2294,7 @@
public String text;
public Context context;
- public GPlusOrHangoutsDataItemModel(Intent intent, Intent alternateIntent, DataItem dataItem,
+ public HangoutsDataItemModel(Intent intent, Intent alternateIntent, DataItem dataItem,
DataItem secondDataItem, StringBuilder alternateContentDescription, String header,
String text, Context context) {
this.intent = intent;
@@ -2303,18 +2308,16 @@
}
}
- private static void populateGPlusOrHangoutsDataItemModel(
- GPlusOrHangoutsDataItemModel dataModel) {
+ private static void populateHangoutsDataItemModel(
+ HangoutsDataItemModel dataModel) {
final Intent secondIntent = new Intent(Intent.ACTION_VIEW);
secondIntent.setDataAndType(ContentUris.withAppendedId(Data.CONTENT_URI,
dataModel.secondDataItem.getId()), dataModel.secondDataItem.getMimeType());
// There is no guarantee the order the data items come in. Second
// data item does not necessarily mean it's the alternate.
- // Hangouts video and Add to circles should be alternate. Swap if needed
+ // Hangouts video should be alternate. Swap if needed
if (HANGOUTS_DATA_5_VIDEO.equals(
- dataModel.dataItem.getContentValues().getAsString(Data.DATA5)) ||
- GPLUS_PROFILE_DATA_5_ADD_TO_CIRCLE.equals(
- dataModel.dataItem.getContentValues().getAsString(Data.DATA5))) {
+ dataModel.dataItem.getContentValues().getAsString(Data.DATA5))) {
dataModel.alternateIntent = dataModel.intent;
dataModel.alternateContentDescription = new StringBuilder(dataModel.header);
@@ -2323,9 +2326,7 @@
dataModel.secondDataItem.getDataKind());
dataModel.text = dataModel.secondDataItem.getDataKind().typeColumn;
} else if (HANGOUTS_DATA_5_MESSAGE.equals(
- dataModel.dataItem.getContentValues().getAsString(Data.DATA5)) ||
- GPLUS_PROFILE_DATA_5_VIEW_PROFILE.equals(
- dataModel.dataItem.getContentValues().getAsString(Data.DATA5))) {
+ dataModel.dataItem.getContentValues().getAsString(Data.DATA5))) {
dataModel.alternateIntent = secondIntent;
dataModel.alternateContentDescription = new StringBuilder(
dataModel.secondDataItem.buildDataStringForDisplay(dataModel.context,