summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorgkipnis <gkipnis@cyngn.com>2016-02-25 14:35:32 -0800
committerMartin Brabham <optedoblivion@cyngn.com>2016-03-01 11:06:12 -0800
commitfec6c6a0f223bfb6999fc48841c58fcec492b159 (patch)
treeac8cd66171121166961aed1d9eb78b9a2e07555e
parent58c9b30ce164b362bdc27a7692664a036244db45 (diff)
downloadpackages_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.xml2
-rw-r--r--src/com/android/messaging/datamodel/data/ConversationData.java17
-rw-r--r--src/com/android/messaging/ui/conversation/ComposeMessageView.java74
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(