summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorTyler Gunn <tgunn@google.com>2015-08-07 01:55:12 +0000
committerAndroid Git Automerger <android-git-automerger@android.com>2015-08-07 01:55:12 +0000
commit91a5575b83403959a0caec42478bc4a033e55ebc (patch)
treec6eb1854fe99a8bacba3c5333ca07bc09ddc1a59
parent4c487773bcf74913a47fedebb1103a361f56be9e (diff)
parent5f87e923b0300173ad68f73a47b0dca7348d6a1f (diff)
downloadpackages_apps_Contacts-91a5575b83403959a0caec42478bc4a033e55ebc.tar.gz
packages_apps_Contacts-91a5575b83403959a0caec42478bc4a033e55ebc.tar.bz2
packages_apps_Contacts-91a5575b83403959a0caec42478bc4a033e55ebc.zip
am 5f87e923: Add support for "call with note" in quick contacts.
* commit '5f87e923b0300173ad68f73a47b0dca7348d6a1f': Add support for "call with note" in quick contacts.
-rw-r--r--AndroidManifest.xml7
-rw-r--r--src/com/android/contacts/quickcontact/ExpandingEntryCardView.java48
-rw-r--r--src/com/android/contacts/quickcontact/QuickContactActivity.java51
3 files changed, 96 insertions, 10 deletions
diff --git a/AndroidManifest.xml b/AndroidManifest.xml
index d86d69bcf..5ed0acddc 100644
--- a/AndroidManifest.xml
+++ b/AndroidManifest.xml
@@ -490,6 +490,13 @@
</intent-filter>
</activity>
+ <activity android:name="com.android.contacts.common.dialog.CallSubjectHistory"
+ android:theme="@style/Theme.CallSubjectSelector">
+ <intent-filter>
+ <action android:name="android.intent.action.VIEW"/>
+ </intent-filter>
+ </activity>
+
<!-- Service that is exclusively for the Phone application that sends out a view
notification. This service might be removed in future versions of the app.
diff --git a/src/com/android/contacts/quickcontact/ExpandingEntryCardView.java b/src/com/android/contacts/quickcontact/ExpandingEntryCardView.java
index 10b289873..10887cb57 100644
--- a/src/com/android/contacts/quickcontact/ExpandingEntryCardView.java
+++ b/src/com/android/contacts/quickcontact/ExpandingEntryCardView.java
@@ -19,12 +19,14 @@ import android.animation.Animator;
import android.animation.Animator.AnimatorListener;
import android.animation.AnimatorSet;
import android.animation.ObjectAnimator;
+import android.app.Activity;
import android.content.Context;
import android.content.Intent;
import android.content.res.Resources;
import android.graphics.ColorFilter;
import android.graphics.Rect;
import android.graphics.drawable.Drawable;
+import android.os.Bundle;
import android.support.v7.widget.CardView;
import android.text.Spannable;
import android.text.TextUtils;
@@ -50,6 +52,7 @@ import android.widget.RelativeLayout;
import android.widget.TextView;
import com.android.contacts.R;
+import com.android.contacts.common.dialog.CallSubjectDialog;
import java.util.ArrayList;
import java.util.List;
@@ -87,6 +90,12 @@ public class ExpandingEntryCardView extends CardView {
* Entry data.
*/
public static final class Entry {
+ // No action when clicking a button is specified.
+ public static final int ACTION_NONE = 1;
+ // Button action is an intent.
+ public static final int ACTION_INTENT = 2;
+ // Button action will open the call with subject dialog.
+ public static final int ACTION_CALL_WITH_SUBJECT = 3;
private final int mId;
private final Drawable mIcon;
@@ -107,6 +116,8 @@ public class ExpandingEntryCardView extends CardView {
private final Intent mThirdIntent;
private final String mThirdContentDescription;
private final int mIconResourceId;
+ private final int mThirdAction;
+ private final Bundle mThirdExtras;
public Entry(int id, Drawable mainIcon, String header, String subHeader,
Drawable subHeaderIcon, String text, Drawable textIcon,
@@ -114,7 +125,8 @@ public class ExpandingEntryCardView extends CardView {
Drawable alternateIcon, Intent alternateIntent, String alternateContentDescription,
boolean shouldApplyColor, boolean isEditable,
EntryContextMenuInfo entryContextMenuInfo, Drawable thirdIcon, Intent thirdIntent,
- String thirdContentDescription, int iconResourceId) {
+ String thirdContentDescription, int thirdAction, Bundle thirdExtras,
+ int iconResourceId) {
mId = id;
mIcon = mainIcon;
mHeader = header;
@@ -133,6 +145,8 @@ public class ExpandingEntryCardView extends CardView {
mThirdIcon = thirdIcon;
mThirdIntent = thirdIntent;
mThirdContentDescription = thirdContentDescription;
+ mThirdAction = thirdAction;
+ mThirdExtras = thirdExtras;
mIconResourceId = iconResourceId;
}
@@ -211,6 +225,14 @@ public class ExpandingEntryCardView extends CardView {
int getIconResourceId() {
return mIconResourceId;
}
+
+ public int getThirdAction() {
+ return mThirdAction;
+ }
+
+ public Bundle getThirdExtras() {
+ return mThirdExtras;
+ }
}
public interface ExpandingEntryCardViewListener {
@@ -761,10 +783,28 @@ public class ExpandingEntryCardView extends CardView {
alternateIcon.setContentDescription(entry.getAlternateContentDescription());
}
- if (entry.getThirdIcon() != null && entry.getThirdIntent() != null) {
+ if (entry.getThirdIcon() != null && entry.getThirdAction() != Entry.ACTION_NONE) {
thirdIcon.setImageDrawable(entry.getThirdIcon());
- thirdIcon.setOnClickListener(mOnClickListener);
- thirdIcon.setTag(new EntryTag(entry.getId(), entry.getThirdIntent()));
+ if (entry.getThirdAction() == Entry.ACTION_INTENT) {
+ thirdIcon.setOnClickListener(mOnClickListener);
+ thirdIcon.setTag(new EntryTag(entry.getId(), entry.getThirdIntent()));
+ } else if (entry.getThirdAction() == Entry.ACTION_CALL_WITH_SUBJECT) {
+ thirdIcon.setOnClickListener(new View.OnClickListener() {
+ @Override
+ public void onClick(View v) {
+ Object tag = v.getTag();
+ if (!(tag instanceof Bundle)) {
+ return;
+ }
+
+ Context context = getContext();
+ if (context instanceof Activity) {
+ CallSubjectDialog.start((Activity) context, entry.getThirdExtras());
+ }
+ }
+ });
+ thirdIcon.setTag(entry.getThirdExtras());
+ }
thirdIcon.setVisibility(View.VISIBLE);
thirdIcon.setContentDescription(entry.getThirdContentDescription());
}
diff --git a/src/com/android/contacts/quickcontact/QuickContactActivity.java b/src/com/android/contacts/quickcontact/QuickContactActivity.java
index 60d6a62ef..26f84a850 100644
--- a/src/com/android/contacts/quickcontact/QuickContactActivity.java
+++ b/src/com/android/contacts/quickcontact/QuickContactActivity.java
@@ -96,6 +96,7 @@ import com.android.contacts.common.ClipboardUtils;
import com.android.contacts.common.Collapser;
import com.android.contacts.common.ContactsUtils;
import com.android.contacts.common.activity.RequestPermissionsActivity;
+import com.android.contacts.common.dialog.CallSubjectDialog;
import com.android.contacts.common.editor.SelectAccountDialogFragment;
import com.android.contacts.common.interactions.TouchPointManager;
import com.android.contacts.common.lettertiles.LetterTileDrawable;
@@ -125,6 +126,7 @@ import com.android.contacts.common.util.ImplicitIntentsUtil;
import com.android.contacts.common.util.DateUtils;
import com.android.contacts.common.util.MaterialColorMapUtils;
import com.android.contacts.common.util.MaterialColorMapUtils.MaterialPalette;
+import com.android.contacts.common.util.UriUtils;
import com.android.contacts.common.util.ViewUtil;
import com.android.contacts.detail.ContactDisplayUtils;
import com.android.contacts.editor.ContactEditorFragment;
@@ -1135,7 +1137,9 @@ public class QuickContactActivity extends ContactsActivity {
/* thirdIcon = */ null,
/* thirdIntent = */ null,
/* thirdContentDescription = */ null,
- /* iconResourceId = */ 0);
+ /* thirdAction = */ Entry.ACTION_NONE,
+ /* thirdExtras = */ null,
+ /* iconResourceId = */ 0);
List<Entry> phoneticList = new ArrayList<>();
phoneticList.add(phoneticEntry);
// Phonetic name comes after nickname. Check to see if the first entry type is nickname
@@ -1187,7 +1191,10 @@ public class QuickContactActivity extends ContactsActivity {
/* alternateContentDescription = */ null, /* shouldApplyColor = */ true,
/* isEditable = */ false, /* EntryContextMenuInfo = */ null,
/* thirdIcon = */ null, /* thirdIntent = */ null,
- /* thirdContentDescription = */ null, R.drawable.ic_phone_24dp);
+ /* thirdContentDescription = */ null,
+ /* thirdAction = */ Entry.ACTION_NONE,
+ /* thirdExtras = */ null,
+ R.drawable.ic_phone_24dp);
final Drawable emailIcon = getResources().getDrawable(
R.drawable.ic_email_24dp).mutate();
@@ -1200,6 +1207,7 @@ public class QuickContactActivity extends ContactsActivity {
/* shouldApplyColor = */ true, /* isEditable = */ false,
/* EntryContextMenuInfo = */ null, /* thirdIcon = */ null,
/* thirdIntent = */ null, /* thirdContentDescription = */ null,
+ /* thirdAction = */ Entry.ACTION_NONE, /* thirdExtras = */ null,
R.drawable.ic_email_24dp);
final List<List<Entry>> promptEntries = new ArrayList<>();
@@ -1366,7 +1374,9 @@ public class QuickContactActivity extends ContactsActivity {
EntryContextMenuInfo entryContextMenuInfo = null;
Drawable thirdIcon = null;
Intent thirdIntent = null;
+ int thirdAction = Entry.ACTION_NONE;
String thirdContentDescription = null;
+ Bundle thirdExtras = null;
int iconResourceId = 0;
context = context.getApplicationContext();
@@ -1479,6 +1489,7 @@ public class QuickContactActivity extends ContactsActivity {
}
} else if (dataItem instanceof PhoneDataItem) {
final PhoneDataItem phone = (PhoneDataItem) dataItem;
+ String phoneLabel = null;
if (!TextUtils.isEmpty(phone.getNumber())) {
primaryContentDescription.append(res.getString(R.string.call_other)).append(" ");
header = sBidiFormatter.unicodeWrap(phone.buildDataStringForDisplay(context, kind),
@@ -1489,10 +1500,12 @@ public class QuickContactActivity extends ContactsActivity {
if (phone.hasKindTypeColumn(kind)) {
final int kindTypeColumn = phone.getKindTypeColumn(kind);
final String label = phone.getLabel();
+ phoneLabel = label;
if (kindTypeColumn == Phone.TYPE_CUSTOM && TextUtils.isEmpty(label)) {
text = "";
} else {
text = Phone.getTypeLabel(res, kindTypeColumn, label).toString();
+ phoneLabel= text;
primaryContentDescription.append(text).append(" ");
}
}
@@ -1508,9 +1521,33 @@ public class QuickContactActivity extends ContactsActivity {
alternateIcon = res.getDrawable(R.drawable.ic_message_24dp);
alternateContentDescription.append(res.getString(R.string.sms_custom, header));
- // Add video call button if supported
- if (CallUtil.isVideoEnabled(context)) {
+ if (CallUtil.isCallWithSubjectSupported(context)) {
+ thirdIcon = res.getDrawable(R.drawable.ic_call_note_white_24dp);
+ thirdAction = Entry.ACTION_CALL_WITH_SUBJECT;
+ thirdContentDescription =
+ res.getString(R.string.call_with_a_note);
+
+ // Create a bundle containing the data the call subject dialog requires.
+ thirdExtras = new Bundle();
+ thirdExtras.putLong(CallSubjectDialog.ARG_PHOTO_ID,
+ contactData.getPhotoId());
+ thirdExtras.putParcelable(CallSubjectDialog.ARG_PHOTO_URI,
+ UriUtils.parseUriOrNull(contactData.getPhotoUri()));
+ thirdExtras.putParcelable(CallSubjectDialog.ARG_CONTACT_URI,
+ contactData.getLookupUri());
+ thirdExtras.putString(CallSubjectDialog.ARG_NAME_OR_NUMBER,
+ contactData.getDisplayName());
+ thirdExtras.putBoolean(CallSubjectDialog.ARG_IS_BUSINESS, false);
+ thirdExtras.putString(CallSubjectDialog.ARG_NUMBER,
+ phone.getNumber());
+ thirdExtras.putString(CallSubjectDialog.ARG_DISPLAY_NUMBER,
+ phone.getFormattedPhoneNumber());
+ thirdExtras.putString(CallSubjectDialog.ARG_NUMBER_LABEL,
+ phoneLabel);
+ } else if (CallUtil.isVideoEnabled(context)) {
+ // Add video call button if supported
thirdIcon = res.getDrawable(R.drawable.ic_videocam);
+ thirdAction = Entry.ACTION_INTENT;
thirdIntent = CallUtil.getVideoCallIntent(phone.getNumber(),
CALL_ORIGIN_QUICK_CONTACTS_ACTIVITY);
thirdContentDescription =
@@ -1707,8 +1744,8 @@ public class QuickContactActivity extends ContactsActivity {
new SpannableString(primaryContentDescription.toString()),
intent, alternateIcon, alternateIntent,
alternateContentDescription.toString(), shouldApplyColor, isEditable,
- entryContextMenuInfo, thirdIcon, thirdIntent, thirdContentDescription,
- iconResourceId);
+ entryContextMenuInfo, thirdIcon, thirdIntent, thirdContentDescription, thirdAction,
+ thirdExtras, iconResourceId);
}
private List<Entry> dataItemsToEntries(List<DataItem> dataItems,
@@ -1979,6 +2016,8 @@ public class QuickContactActivity extends ContactsActivity {
/* thirdIcon = */ null,
/* thirdIntent = */ null,
/* thirdContentDescription = */ null,
+ /* thirdAction = */ Entry.ACTION_NONE,
+ /* thirdActionExtras = */ null,
interaction.getIconResourceId()));
}
return entries;