summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--res/menu/call_details_options.xml10
-rw-r--r--res/menu/dialpad_options.xml6
-rw-r--r--src/com/android/dialer/CallDetailActivity.java64
-rw-r--r--src/com/android/dialer/dialpad/DialpadFragment.java60
4 files changed, 140 insertions, 0 deletions
diff --git a/res/menu/call_details_options.xml b/res/menu/call_details_options.xml
index a48687e67..497d18968 100644
--- a/res/menu/call_details_options.xml
+++ b/res/menu/call_details_options.xml
@@ -15,6 +15,16 @@
-->
<menu xmlns:android="http://schemas.android.com/apk/res/android">
<item
+ android:id="@+id/menu_ip_call_by_slot1"
+ android:showAsAction="withText"
+ android:onClick="onMenuIpCallBySlot1"
+ />
+ <item
+ android:id="@+id/menu_ip_call_by_slot2"
+ android:showAsAction="withText"
+ android:onClick="onMenuIpCallBySlot2"
+ />
+ <item
android:id="@+id/menu_trash"
android:icon="@drawable/ic_calllog_delete"
android:showAsAction="ifRoom"
diff --git a/res/menu/dialpad_options.xml b/res/menu/dialpad_options.xml
index 49ee37d8f..f8618c0b6 100644
--- a/res/menu/dialpad_options.xml
+++ b/res/menu/dialpad_options.xml
@@ -15,6 +15,12 @@
-->
<menu xmlns:android="http://schemas.android.com/apk/res/android">
<item
+ android:id="@+id/menu_ip_call_by_slot1"
+ android:showAsAction="withText" />
+ <item
+ android:id="@+id/menu_ip_call_by_slot2"
+ android:showAsAction="withText" />
+ <item
android:id="@+id/menu_add_contact"
android:title="@string/add_contact"
android:showAsAction="withText" />
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()) {
diff --git a/src/com/android/dialer/dialpad/DialpadFragment.java b/src/com/android/dialer/dialpad/DialpadFragment.java
index cdc1c9f79..d3ffad4a1 100644
--- a/src/com/android/dialer/dialpad/DialpadFragment.java
+++ b/src/com/android/dialer/dialpad/DialpadFragment.java
@@ -70,6 +70,7 @@ import android.widget.TextView;
import com.android.contacts.common.CallUtil;
import com.android.contacts.common.ContactsUtils;
import com.android.contacts.common.GeoUtil;
+import com.android.contacts.common.MoreContactUtils;
import com.android.contacts.common.util.PhoneNumberFormatter;
import com.android.contacts.common.util.StopWatch;
import com.android.contacts.common.widget.FloatingActionButtonController;
@@ -81,6 +82,7 @@ import com.android.dialer.SpeedDialListActivity;
import com.android.dialer.SpeedDialUtils;
import com.android.dialer.util.DialerUtils;
import com.android.dialerbind.analytics.AnalyticsFragment;
+import com.android.internal.telephony.PhoneConstants;
import com.android.internal.telephony.TelephonyProperties;
import com.android.phone.common.CallLogAsync;
import com.android.phone.common.HapticFeedback;
@@ -103,6 +105,8 @@ public class DialpadFragment extends AnalyticsFragment
DialpadKeyButton.OnPressedListener {
private static final String TAG = DialpadFragment.class.getSimpleName();
+ private Context mContext;
+
/**
* This interface allows the DialpadFragment to tell its hosting Activity when and when not
* to display the "dial" button. While this is logically part of the DialpadFragment, the
@@ -903,6 +907,27 @@ public class DialpadFragment extends AnalyticsFragment
final MenuItem sendMessage = menu.findItem(R.id.menu_send_message);
sendMessage.setVisible(mSmsPackageComponentName != null);
+ final MenuItem ipCallBySlot1 = menu.findItem(R.id.menu_ip_call_by_slot1);
+ final MenuItem ipCallBySlot2 = menu.findItem(R.id.menu_ip_call_by_slot2);
+ if (MoreContactUtils.isMultiSimEnable(mContext, PhoneConstants.SUB1)) {
+ String sub1Name = MoreContactUtils.getMultiSimAliasesName(
+ mContext, PhoneConstants.SUB1);
+ ipCallBySlot1.setTitle(mContext.getString(
+ com.android.contacts.common.R.string.ip_call_by_slot, sub1Name));
+ ipCallBySlot1.setVisible(true);
+ } else {
+ ipCallBySlot1.setVisible(false);
+ }
+ if (MoreContactUtils.isMultiSimEnable(mContext, PhoneConstants.SUB2)) {
+ String sub2Name = MoreContactUtils.getMultiSimAliasesName(
+ mContext, PhoneConstants.SUB2);
+ ipCallBySlot2.setTitle(mContext.getString(
+ com.android.contacts.common.R.string.ip_call_by_slot, sub2Name));
+ ipCallBySlot2.setVisible(true);
+ } else {
+ ipCallBySlot2.setVisible(false);
+ }
+
boolean enable = !isDigitsEmpty();
for (int i = 0; i < menu.size(); i++) {
menu.getItem(i).setEnabled(enable);
@@ -1103,6 +1128,35 @@ public class DialpadFragment extends AnalyticsFragment
return false;
}
+ @Override
+ public void onAttach(Activity activity) {
+ super.onAttach(activity);
+ mContext = activity;
+ }
+
+ private void ipCallBySlot(int subscription) {
+ String prefix = MoreContactUtils.getIPCallPrefix(mContext, subscription);
+ if (!TextUtils.isEmpty(prefix)) {
+ ComponentName serviceName =
+ new ComponentName("com.android.phone",
+ "com.android.services.telephony.TelephonyConnectionService");
+ PhoneAccountHandle account = new PhoneAccountHandle(serviceName,
+ String.valueOf(subscription));
+ Intent callIntent = new Intent(CallUtil.getCallIntent(
+ prefix + "" + getValidDialNumber(), account));
+ startActivity(callIntent);
+ } else {
+ MoreContactUtils.showNoIPNumberDialog(mContext, subscription);
+ }
+ }
+
+ private String getValidDialNumber() {
+ if (mDigits != null)
+ return mDigits.getText().toString();
+ else
+ return "";
+ }
+
/**
* Remove the digit just before the current position. This can be used if we want to replace
* the previous digit or cancel previously entered character.
@@ -1597,6 +1651,12 @@ public class DialpadFragment extends AnalyticsFragment
DialerUtils.startActivityWithErrorToast(getActivity(), smsIntent);
return true;
}
+ case R.id.menu_ip_call_by_slot1:
+ ipCallBySlot(PhoneConstants.SUB1);
+ return true;
+ case R.id.menu_ip_call_by_slot2:
+ ipCallBySlot(PhoneConstants.SUB2);
+ return true;
default:
return false;
}