summaryrefslogtreecommitdiffstats
path: root/src/com/android/messaging
diff options
context:
space:
mode:
authorRicardo Cerqueira <ricardo@cyngn.com>2016-03-31 19:05:37 +0100
committerRicardo Cerqueira <ricardo@cyngn.com>2016-03-31 19:13:18 +0100
commitbc9e66182540dcecb4024f171c4320e746c9a184 (patch)
treed8184d4b1a57760b9dde163a08acee30bcddb696 /src/com/android/messaging
parent0132f00d5e5bbc2d7e65ee2641cdda8e44720770 (diff)
downloadandroid_packages_apps_Messaging-bc9e66182540dcecb4024f171c4320e746c9a184.tar.gz
android_packages_apps_Messaging-bc9e66182540dcecb4024f171c4320e746c9a184.tar.bz2
android_packages_apps_Messaging-bc9e66182540dcecb4024f171c4320e746c9a184.zip
msim: Fix broken assumptions around the meaning of subId/slotId/selfId
Make MSIM, "Always ask", and system choices actually apply unless locally overriden in the thread Ref CYNGNOS-2185 Change-Id: I01e03f5c1e312f53a65e9c39a3d283f652fbde7d
Diffstat (limited to 'src/com/android/messaging')
-rw-r--r--src/com/android/messaging/datamodel/data/ConversationData.java29
-rw-r--r--src/com/android/messaging/ui/conversation/ComposeMessageView.java17
2 files changed, 16 insertions, 30 deletions
diff --git a/src/com/android/messaging/datamodel/data/ConversationData.java b/src/com/android/messaging/datamodel/data/ConversationData.java
index e313cd8..71bd167 100644
--- a/src/com/android/messaging/datamodel/data/ConversationData.java
+++ b/src/com/android/messaging/datamodel/data/ConversationData.java
@@ -69,6 +69,8 @@ public class ConversationData extends BindableData {
private static final long LAST_MESSAGE_TIMESTAMP_NaN = -1;
private static final int MESSAGE_COUNT_NaN = -1;
+ private static int mOverrideSubId = -1;
+
/**
* Takes a conversation id and a list of message ids and computes the positions
* for each message.
@@ -590,6 +592,10 @@ public class ConversationData extends BindableData {
return mParticipantData.isLoaded();
}
+ public void setOverrideSendingSubId(int subId) {
+ mOverrideSubId = subId;
+ }
+
public void sendMessage(final BindingBase<ConversationData> binding,
final MessageData message) {
Assert.isTrue(TextUtils.equals(mConversationId, message.getConversationId()));
@@ -599,8 +605,10 @@ public class ConversationData extends BindableData {
InsertNewMessageAction.insertNewMessage(message);
} else {
final int systemDefaultSubId = PhoneUtils.getDefault().getDefaultSmsSubscriptionId();
- if (systemDefaultSubId != ParticipantData.DEFAULT_SELF_SUB_ID &&
- mSelfParticipantsData.isDefaultSelf(message.getSelfId())) {
+ if (mOverrideSubId != ParticipantData.DEFAULT_SELF_SUB_ID) {
+ InsertNewMessageAction.insertNewMessage(message, mOverrideSubId);
+ } else if (systemDefaultSubId != ParticipantData.DEFAULT_SELF_SUB_ID &&
+ mSelfParticipantsData.isDefaultSelf(message.getSelfId())) {
// Lock the sub selection to the system default SIM as soon as the user clicks on
// the send button to avoid races between this and when InsertNewMessageAction is
// actually executed on the data model thread, during which the user can potentially
@@ -775,23 +783,6 @@ 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 018452c..9bf3635 100644
--- a/src/com/android/messaging/ui/conversation/ComposeMessageView.java
+++ b/src/com/android/messaging/ui/conversation/ComposeMessageView.java
@@ -339,21 +339,15 @@ public class ComposeMessageView extends LinearLayout
@Override
public void onClick(final View clickView) {
+ mConversationDataModel.getData().setOverrideSendingSubId(
+ ParticipantData.DEFAULT_SELF_SUB_ID);
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 */);
+ sendMessageWithSubId(subId);
}
});
-
} else {
sendMessageInternal(true /* checkMessageSize */);
}
@@ -718,8 +712,9 @@ public class ComposeMessageView extends LinearLayout
mBinding.getData().getSelfId(), false /* excludeDefault */);
}
- private SubscriptionListEntry getSubscriptionListEntry(int subId) {
- return mConversationDataModel.getData().getSubscriptionEntry(subId);
+ private void sendMessageWithSubId(int subId) {
+ mConversationDataModel.getData().setOverrideSendingSubId(subId);
+ sendMessageInternal(true /* checkMessageSize */);
}
private boolean isDataLoadedForMessageSend() {