diff options
author | Ricardo Cerqueira <ricardo@cyngn.com> | 2016-03-31 19:05:37 +0100 |
---|---|---|
committer | Ricardo Cerqueira <ricardo@cyngn.com> | 2016-03-31 19:13:18 +0100 |
commit | bc9e66182540dcecb4024f171c4320e746c9a184 (patch) | |
tree | d8184d4b1a57760b9dde163a08acee30bcddb696 /src/com/android/messaging | |
parent | 0132f00d5e5bbc2d7e65ee2641cdda8e44720770 (diff) | |
download | android_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.java | 29 | ||||
-rw-r--r-- | src/com/android/messaging/ui/conversation/ComposeMessageView.java | 17 |
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() { |