summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorYorke Lee <yorkelee@google.com>2015-06-30 17:23:36 +0000
committerAndroid Git Automerger <android-git-automerger@android.com>2015-06-30 17:23:36 +0000
commitca5863cb4ed470cab97f44d4417ffd0791c1288e (patch)
tree1db6ef6ed2b401a3da67944059afd04a2a506357 /src
parent68421ad0c283e5fdae8d11137c83299fc5b6822c (diff)
parentf6599985e3d4b2743e0c05295db4ecb257c3fad0 (diff)
am f6599985: am 5cccff3a: am 82d30284: Add long press actions to call log
* commit 'f6599985e3d4b2743e0c05295db4ecb257c3fad0': Add long press actions to call log
Diffstat (limited to 'src')
-rw-r--r--src/com/android/dialer/calllog/CallLogAdapter.java73
1 files changed, 72 insertions, 1 deletions
diff --git a/src/com/android/dialer/calllog/CallLogAdapter.java b/src/com/android/dialer/calllog/CallLogAdapter.java
index bb776d29e..83e55944f 100644
--- a/src/com/android/dialer/calllog/CallLogAdapter.java
+++ b/src/com/android/dialer/calllog/CallLogAdapter.java
@@ -33,18 +33,27 @@ import android.telecom.PhoneAccountHandle;
import android.telephony.PhoneNumberUtils;
import android.telephony.TelephonyManager;
import android.text.TextUtils;
+import android.util.Log;
+import android.view.ContextMenu;
import android.view.LayoutInflater;
+import android.view.MenuItem;
+import android.view.MenuItem.OnMenuItemClickListener;
import android.view.View;
import android.view.View.AccessibilityDelegate;
import android.view.ViewGroup;
import android.view.ViewTreeObserver;
+import android.view.ContextMenu.ContextMenuInfo;
import android.view.accessibility.AccessibilityEvent;
+import com.android.contacts.common.CallUtil;
+import com.android.contacts.common.ClipboardUtils;
import com.android.contacts.common.util.PermissionsUtil;
+import com.android.dialer.DialtactsActivity;
import com.android.dialer.PhoneCallDetails;
import com.android.dialer.R;
import com.android.dialer.contactinfo.ContactInfoCache;
import com.android.dialer.contactinfo.ContactInfoCache.OnContactInfoChangedListener;
+import com.android.dialer.util.DialerUtils;
import com.android.dialer.util.PhoneNumberUtil;
import com.android.dialer.voicemail.VoicemailPlaybackPresenter;
@@ -138,7 +147,6 @@ public class CallLogAdapter extends GroupingListAdapter
@Override
public void onClick(View v) {
CallLogListItemViewHolder viewHolder = (CallLogListItemViewHolder) v.getTag();
-
if (viewHolder == null) {
return;
}
@@ -185,6 +193,68 @@ public class CallLogAdapter extends GroupingListAdapter
}
};
+ /**
+ * Listener that is triggered to populate the context menu with actions to perform on the call's
+ * number, when the call log entry is long pressed.
+ */
+ private final View.OnCreateContextMenuListener mOnCreateContextMenuListener =
+ new View.OnCreateContextMenuListener() {
+ @Override
+ public void onCreateContextMenu(ContextMenu menu, View v,
+ ContextMenuInfo menuInfo) {
+ final CallLogListItemViewHolder vh =
+ (CallLogListItemViewHolder) v.getTag();
+ if (TextUtils.isEmpty(vh.number)) {
+ return;
+ }
+
+ menu.setHeaderTitle(vh.number);
+
+ final MenuItem copyItem = menu.add(
+ ContextMenu.NONE,
+ R.id.context_menu_copy_to_clipboard,
+ ContextMenu.NONE,
+ R.string.copy_text);
+
+ copyItem.setOnMenuItemClickListener(new OnMenuItemClickListener() {
+ @Override
+ public boolean onMenuItemClick(MenuItem item) {
+ ClipboardUtils.copyText(CallLogAdapter.this.mContext, null,
+ vh.number, true);
+ return true;
+ }
+ });
+
+ // The edit number before call does not show up if any of the conditions apply:
+ // 1) Number cannot be called
+ // 2) Number is the voicemail number
+ // 3) Number is a SIP address
+
+ if (!PhoneNumberUtil.canPlaceCallsTo(vh.number, vh.numberPresentation)
+ || mTelecomCallLogCache.isVoicemailNumber(vh.accountHandle, vh.number)
+ || PhoneNumberUtil.isSipNumber(vh.number)) {
+ return;
+ }
+
+ final MenuItem editItem = menu.add(
+ ContextMenu.NONE,
+ R.id.context_menu_edit_before_call,
+ ContextMenu.NONE,
+ R.string.recentCalls_editNumberBeforeCall);
+
+ editItem.setOnMenuItemClickListener(new OnMenuItemClickListener() {
+ @Override
+ public boolean onMenuItemClick(MenuItem item) {
+ final Intent intent = new Intent(Intent.ACTION_DIAL,
+ CallUtil.getCallUri(vh.number));
+ intent.setClass(mContext, DialtactsActivity.class);
+ DialerUtils.startActivityWithErrorToast(mContext, intent);
+ return true;
+ }
+ });
+ }
+ };
+
private void expandViewHolderActions(CallLogListItemViewHolder viewHolder) {
// If another item is expanded, notify it that it has changed. Its actions will be
// hidden when it is re-binded because we change mCurrentlyExpandedPosition below.
@@ -369,6 +439,7 @@ public class CallLogAdapter extends GroupingListAdapter
viewHolder.callLogEntryView.setTag(viewHolder);
viewHolder.callLogEntryView.setAccessibilityDelegate(mAccessibilityDelegate);
+ viewHolder.primaryActionView.setOnCreateContextMenuListener(mOnCreateContextMenuListener);
viewHolder.primaryActionView.setTag(viewHolder);
return viewHolder;