diff options
Diffstat (limited to 'src/com/android/dialer/dialpad/DialpadFragment.java')
-rw-r--r-- | src/com/android/dialer/dialpad/DialpadFragment.java | 60 |
1 files changed, 60 insertions, 0 deletions
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; } |