summaryrefslogtreecommitdiffstats
path: root/src/com/android/dialer/CallDetailActivity.java
diff options
context:
space:
mode:
Diffstat (limited to 'src/com/android/dialer/CallDetailActivity.java')
-rw-r--r--src/com/android/dialer/CallDetailActivity.java64
1 files changed, 64 insertions, 0 deletions
diff --git a/src/com/android/dialer/CallDetailActivity.java b/src/com/android/dialer/CallDetailActivity.java
index f7c0d6695..9491bb8be 100644
--- a/src/com/android/dialer/CallDetailActivity.java
+++ b/src/com/android/dialer/CallDetailActivity.java
@@ -31,6 +31,7 @@ import android.provider.CallLog.Calls;
import android.provider.ContactsContract.CommonDataKinds.Phone;
import android.provider.VoicemailContract.Voicemails;
import android.telecom.PhoneAccount;
+import android.telecom.PhoneAccountHandle;
import android.telephony.TelephonyManager;
import android.text.BidiFormatter;
import android.text.TextDirectionHeuristics;
@@ -51,6 +52,7 @@ import com.android.contacts.common.ContactPhotoManager;
import com.android.contacts.common.CallUtil;
import com.android.contacts.common.ContactPhotoManager.DefaultImageRequest;
import com.android.contacts.common.GeoUtil;
+import com.android.contacts.common.MoreContactUtils;
import com.android.dialer.calllog.CallDetailHistoryAdapter;
import com.android.dialer.calllog.CallTypeHelper;
import com.android.dialer.calllog.ContactInfo;
@@ -66,6 +68,7 @@ import com.android.dialer.voicemail.VoicemailStatusHelper;
import com.android.dialer.voicemail.VoicemailStatusHelper.StatusMessage;
import com.android.dialer.voicemail.VoicemailStatusHelperImpl;
import com.android.dialerbind.analytics.AnalyticsActivity;
+import com.android.internal.telephony.PhoneConstants;
import java.util.List;
@@ -144,6 +147,10 @@ public class CallDetailActivity extends AnalyticsActivity implements ProximitySe
private boolean mHasTrashOption;
/** Whether we should show "remove from call log" in the options menu. */
private boolean mHasRemoveFromCallLogOption;
+ /** Whether we should show "Ip Call by SIM1" in the options menu. */
+ private boolean mHasSub1IpCallOption;
+ /** Whether we should show "Ip Call by SIM2" in the options menu. */
+ private boolean mHasSub2IpCallOption;
private ProximitySensorManager mProximitySensorManager;
private final ProximitySensorListener mProximitySensorListener = new ProximitySensorListener();
@@ -460,6 +467,16 @@ public class CallDetailActivity extends AnalyticsActivity implements ProximitySe
canPlaceCallsTo && !isSipNumber && !isVoicemailNumber;
mHasTrashOption = hasVoicemail();
mHasRemoveFromCallLogOption = !hasVoicemail();
+ mHasSub1IpCallOption = canPlaceCallsTo
+ && !isSipNumber
+ && !isVoicemailNumber
+ && MoreContactUtils
+ .isMultiSimEnable(CallDetailActivity.this, PhoneConstants.SUB1);
+ mHasSub2IpCallOption = canPlaceCallsTo
+ && !isSipNumber
+ && !isVoicemailNumber
+ && MoreContactUtils
+ .isMultiSimEnable(CallDetailActivity.this, PhoneConstants.SUB2);
invalidateOptionsMenu();
ListView historyList = (ListView) findViewById(R.id.history);
@@ -693,9 +710,56 @@ public class CallDetailActivity extends AnalyticsActivity implements ProximitySe
menu.findItem(R.id.menu_remove_from_call_log).setVisible(mHasRemoveFromCallLogOption);
menu.findItem(R.id.menu_edit_number_before_call).setVisible(mHasEditNumberBeforeCallOption);
menu.findItem(R.id.menu_trash).setVisible(mHasTrashOption);
+
+ menu.findItem(R.id.menu_ip_call_by_slot1).setVisible(mHasSub1IpCallOption);
+ menu.findItem(R.id.menu_ip_call_by_slot2).setVisible(mHasSub2IpCallOption);
+
+ if (mHasSub1IpCallOption) {
+ String sub1Name = MoreContactUtils.getMultiSimAliasesName(this, PhoneConstants.SUB1);
+ menu.findItem(R.id.menu_ip_call_by_slot1).setTitle(getString(
+ com.android.contacts.common.R.string.ip_call_by_slot, sub1Name));
+ }
+ if (mHasSub2IpCallOption) {
+ String sub2Name = MoreContactUtils.getMultiSimAliasesName(this, PhoneConstants.SUB2);
+ menu.findItem(R.id.menu_ip_call_by_slot2).setTitle(getString(
+ com.android.contacts.common.R.string.ip_call_by_slot, sub2Name));
+ }
+
return super.onPrepareOptionsMenu(menu);
}
+ public void onMenuIpCallBySlot1(MenuItem menuItem) {
+ String prefix = MoreContactUtils.getIPCallPrefix(this, PhoneConstants.SUB1);
+ if (!TextUtils.isEmpty(prefix)) {
+ ComponentName serviceName =
+ new ComponentName("com.android.phone",
+ "com.android.services.telephony.TelephonyConnectionService");
+ PhoneAccountHandle account = new PhoneAccountHandle(serviceName,
+ String.valueOf(PhoneConstants.SUB1));
+ Intent callIntent = new Intent(CallUtil.getCallIntent(
+ prefix + "" + mNumber, account));
+ startActivity(callIntent);
+ } else {
+ MoreContactUtils.showNoIPNumberDialog(this, PhoneConstants.SUB1);
+ }
+ }
+
+ public void onMenuIpCallBySlot2(MenuItem menuItem) {
+ String prefix = MoreContactUtils.getIPCallPrefix(this, PhoneConstants.SUB2);
+ if (!TextUtils.isEmpty(prefix)) {
+ ComponentName serviceName =
+ new ComponentName("com.android.phone",
+ "com.android.services.telephony.TelephonyConnectionService");
+ PhoneAccountHandle account = new PhoneAccountHandle(serviceName,
+ String.valueOf(PhoneConstants.SUB2));
+ Intent callIntent = new Intent(CallUtil.getCallIntent(
+ prefix + "" + mNumber, account));
+ startActivity(callIntent);
+ } else {
+ MoreContactUtils.showNoIPNumberDialog(this, PhoneConstants.SUB2);
+ }
+ }
+
public void onMenuRemoveFromCallLog(MenuItem menuItem) {
final StringBuilder callIds = new StringBuilder();
for (Uri callUri : getCallLogEntryUris()) {