diff options
author | gkipnis <gkipnis@cyngn.com> | 2016-02-25 14:35:32 -0800 |
---|---|---|
committer | Martin Brabham <optedoblivion@cyngn.com> | 2016-03-01 11:06:12 -0800 |
commit | fec6c6a0f223bfb6999fc48841c58fcec492b159 (patch) | |
tree | ac8cd66171121166961aed1d9eb78b9a2e07555e | |
parent | 58c9b30ce164b362bdc27a7692664a036244db45 (diff) | |
download | packages_apps_Messaging-fec6c6a0f223bfb6999fc48841c58fcec492b159.tar.gz packages_apps_Messaging-fec6c6a0f223bfb6999fc48841c58fcec492b159.tar.bz2 packages_apps_Messaging-fec6c6a0f223bfb6999fc48841c58fcec492b159.zip |
Added 'Always Ask' for Multi SIM phones to decide which SIM to use for every text
When the framework is configured to always ask the user of a Multi SIM phone which
SIM to use, the App will now display a dialog allowing the user to select the
provider to use for the current text message.
Change-Id: Ibb2e4b007acce23acb2ab2e5fc71da6ae33943cc
Ticket-Id: CYNGNOS-1745
-rw-r--r-- | res/values/cm_strings.xml | 2 | ||||
-rw-r--r-- | src/com/android/messaging/datamodel/data/ConversationData.java | 17 | ||||
-rw-r--r-- | src/com/android/messaging/ui/conversation/ComposeMessageView.java | 74 |
3 files changed, 91 insertions, 2 deletions
diff --git a/res/values/cm_strings.xml b/res/values/cm_strings.xml index 55e7dba..5b749c5 100644 --- a/res/values/cm_strings.xml +++ b/res/values/cm_strings.xml @@ -58,4 +58,6 @@ <!-- Show emoticons --> <string name="show_emoticons_pref_title">Emoticons access</string> <string name="show_emoticons_pref_summary">Show the emoticons key on the keyboard</string> + + <string name="select_phone_account_title">Send with</string> </resources> diff --git a/src/com/android/messaging/datamodel/data/ConversationData.java b/src/com/android/messaging/datamodel/data/ConversationData.java index d504928..e313cd8 100644 --- a/src/com/android/messaging/datamodel/data/ConversationData.java +++ b/src/com/android/messaging/datamodel/data/ConversationData.java @@ -775,6 +775,23 @@ public class ConversationData extends BindableData { return null; } + /** + * + * @return {@link com.android.messaging.datamodel.data.SubscriptionListData + * for the specified subId + */ + public SubscriptionListEntry getSubscriptionEntry(int subId) { + List<SubscriptionListEntry> entries = mSubscriptionListData + .getActiveSubscriptionEntriesExcludingDefault(); + if (entries == null || entries.size() == 0) { + return null; + } else if (entries.size() > subId) { + return entries.get(subId); + } else { + return entries.get(0); + } + } + public SubscriptionListData getSubscriptionListData() { return mSubscriptionListData; } diff --git a/src/com/android/messaging/ui/conversation/ComposeMessageView.java b/src/com/android/messaging/ui/conversation/ComposeMessageView.java index bafcb9d..018452c 100644 --- a/src/com/android/messaging/ui/conversation/ComposeMessageView.java +++ b/src/com/android/messaging/ui/conversation/ComposeMessageView.java @@ -15,6 +15,8 @@ */ package com.android.messaging.ui.conversation; +import android.app.Activity; +import android.app.DialogFragment; import android.content.Context; import android.content.res.Resources; import android.content.SharedPreferences; @@ -23,6 +25,10 @@ import android.net.Uri; import android.os.Bundle; import android.preference.PreferenceManager; import android.support.v7.app.ActionBar; +import android.telecom.TelecomManager; +import android.telecom.PhoneAccountHandle; +import android.telephony.TelephonyManager; +import android.telephony.SmsManager; import android.text.Editable; import android.text.Html; import android.text.InputFilter; @@ -40,6 +46,8 @@ import android.widget.ImageButton; import android.widget.LinearLayout; import android.widget.TextView; +import com.android.contacts.common.widget.SelectPhoneAccountDialogFragment; + import com.android.messaging.Factory; import com.android.messaging.R; import com.android.messaging.datamodel.binding.Binding; @@ -203,6 +211,42 @@ public class ComposeMessageView extends LinearLayout mInputManager.onDetach(); } + public interface OnSimSelectedCallback { + void onSimSelected(int subId); + } + + /** + * display the sim select dialog for multi sim phones + */ + private void showSimSelector(Activity activity, final OnSimSelectedCallback cb) { + final TelecomManager telecomMgr = + (TelecomManager) activity.getSystemService(Context.TELECOM_SERVICE); + final List<PhoneAccountHandle> handles = telecomMgr.getCallCapablePhoneAccounts(); + + final SelectPhoneAccountDialogFragment.SelectPhoneAccountListener listener = + new SelectPhoneAccountDialogFragment.SelectPhoneAccountListener() { + @Override + public void onPhoneAccountSelected(PhoneAccountHandle selectedAccountHandle, + boolean setDefault) { + cb.onSimSelected(Integer.valueOf(selectedAccountHandle.getId())); + } + @Override + public void onDialogDismissed() { + } + }; + + DialogFragment dialogFragment = SelectPhoneAccountDialogFragment.newInstance( + R.string.select_phone_account_title, + false /* canSetDefault */, + handles, listener); + dialogFragment.show(activity.getFragmentManager(), "SELECT_PHONE_ACCOUNT_DIALOG_FRAGMENT"); + } + + private boolean isSMSPromptEnabled() { + return (TelephonyManager.getDefault().getPhoneCount() > 1) && + SmsManager.getDefault().isSMSPromptEnabled(); + } + @Override protected void onFinishInflate() { mComposeEditText = (PlainTextEditText) findViewById( @@ -263,6 +307,10 @@ public class ComposeMessageView extends LinearLayout } }); + if (isSMSPromptEnabled()) { + mSelfSendIcon.setVisibility(INVISIBLE); + } + mComposeSubjectText = (PlainTextEditText) findViewById( R.id.compose_subject_text); // We need the listener to change the avatar to the send button when the user starts @@ -290,7 +338,25 @@ public class ComposeMessageView extends LinearLayout mSendButton.setOnClickListener(new OnClickListener() { @Override public void onClick(final View clickView) { - sendMessageInternal(true /* checkMessageSize */); + + if (isSMSPromptEnabled()) { + showSimSelector((Activity)mOriginalContext, new OnSimSelectedCallback() { + @Override + public void onSimSelected(int subId) { + // subId is 1 based + SubscriptionListEntry entry = getSubscriptionListEntry(subId-1); + if (entry == null) { + // shouldn't happen, but if it does, just send the message using the + // old sim as opposed to crashing + selectSim(entry); + } + sendMessageInternal(true /* checkMessageSize */); + } + }); + + } else { + sendMessageInternal(true /* checkMessageSize */); + } } }); mSendButton.setOnLongClickListener(new OnLongClickListener() { @@ -652,6 +718,10 @@ public class ComposeMessageView extends LinearLayout mBinding.getData().getSelfId(), false /* excludeDefault */); } + private SubscriptionListEntry getSubscriptionListEntry(int subId) { + return mConversationDataModel.getData().getSubscriptionEntry(subId); + } + private boolean isDataLoadedForMessageSend() { // Check data loading prerequisites for sending a message. return mConversationDataModel != null && mConversationDataModel.isBound() && @@ -739,7 +809,7 @@ public class ComposeMessageView extends LinearLayout final SubscriptionListEntry subscriptionListEntry = mConversationDataModel.getData().getSubscriptionEntryForSelfParticipant( mBinding.getData().getSelfId(), false /* excludeDefault */); - if (subscriptionListEntry == null) { + if (subscriptionListEntry == null || isSMSPromptEnabled()) { mComposeEditText.setHint(R.string.compose_message_view_hint_text); } else { mComposeEditText.setHint(Html.fromHtml(getResources().getString( |