This reverts commit 0dabdec1f6f6f90b6a0cd45646bdbf5fa79cde74. --- AndroidManifest.xml | 5 - res/drawable-hdpi/ic_overflow_dark.png | Bin 2834 -> 0 bytes res/drawable-mdpi/ic_overflow_dark.png | Bin 2772 -> 0 bytes res/drawable-xhdpi/ic_overflow_dark.png | Bin 2905 -> 0 bytes res/drawable-xxhdpi/ic_overflow_dark.png | Bin 3057 -> 0 bytes res/layout/sim_list.xml | 41 -- res/menu/conversation_fragment_select_menu.xml | 10 - res/menu/sim_msg_multi_select_menu.xml | 38 -- res/values/cm_strings.xml | 49 --- res/xml-v21/preferences_application.xml | 10 - res/xml-v23/preferences_application.xml | 10 - res/xml/preferences_application.xml | 9 - .../datamodel/data/ConversationMessageData.java | 20 - .../messaging/datamodel/data/SimMessageData.java | 34 -- .../android/messaging/sms/SimMessagesUtils.java | 469 --------------------- .../android/messaging/ui/ManageSimMessages.java | 394 ----------------- .../appsettings/ApplicationSettingsActivity.java | 72 +--- .../ui/conversation/ConversationFragment.java | 63 --- .../conversation/ConversationMessageAdapter.java | 18 +- .../ConversationMessageBubbleView.java | 6 +- .../ui/conversation/ConversationMessageView.java | 19 - 21 files changed, 19 insertions(+), 1248 deletions(-) delete mode 100644 res/drawable-hdpi/ic_overflow_dark.png delete mode 100644 res/drawable-mdpi/ic_overflow_dark.png delete mode 100644 res/drawable-xhdpi/ic_overflow_dark.png delete mode 100644 res/drawable-xxhdpi/ic_overflow_dark.png delete mode 100644 res/layout/sim_list.xml delete mode 100644 res/menu/sim_msg_multi_select_menu.xml delete mode 100644 src/com/android/messaging/datamodel/data/SimMessageData.java delete mode 100644 src/com/android/messaging/sms/SimMessagesUtils.java delete mode 100644 src/com/android/messaging/ui/ManageSimMessages.java
diff --git a/AndroidManifest.xml b/AndroidManifest.xml index 7563f9c..0b90c39 100644 --- a/AndroidManifest.xml +++ b/AndroidManifest.xml @@ -545,11 +545,6 @@ <receiver android:name="com.cyanogenmod.messaging.lookup.LookupProviderManager" /> - <activity android:name=".ui.ManageSimMessages" - android:theme="@style/BugleTheme" - android:launchMode="singleTop" - android:configChanges="orientation|screenSize|keyboardHidden" - android:label="@string/sim_manage_messages_title" /> </application> </manifest> diff --git a/res/drawable-hdpi/ic_overflow_dark.png b/res/drawable-hdpi/ic_overflow_dark.png deleted file mode 100644 index e9224e593f7753e43c5a33617b3fffa731ca47ab..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2834 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 diff --git a/res/drawable-mdpi/ic_overflow_dark.png b/res/drawable-mdpi/ic_overflow_dark.png deleted file mode 100644 index 685b4eace4e1b871eeafea6527ba287fef9cbe94..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2772 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 a)c^p7A`>v5#)1?80000<MNUMnLSTaCP*<=3 diff --git a/res/drawable-xhdpi/ic_overflow_dark.png b/res/drawable-xhdpi/ic_overflow_dark.png deleted file mode 100644 index 74b258f4cc5acdcf379a53dedafe65289bd2ab4a..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2905 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 DlE9j4 diff --git a/res/drawable-xxhdpi/ic_overflow_dark.png b/res/drawable-xxhdpi/ic_overflow_dark.png deleted file mode 100644 index fff1b18601fa1f639de35234d2ef5c13feef5e44..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3057 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 diff --git a/res/layout/sim_list.xml b/res/layout/sim_list.xml deleted file mode 100644 index daf5209..0000000 --- a/res/layout/sim_list.xml +++ /dev/null @@ -1,41 +0,0 @@ -<?xml version="1.0" encoding="utf-8"?> -<!-- -/* - * Copyright (C) 2008 Esmertec AG. - * Copyright (C) 2008 The Android Open Source Project - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ ---> - -<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android" - android:layout_width="match_parent" - android:layout_height="match_parent" - android:paddingStart="16dp" - android:paddingEnd="16dp" - android:layout_gravity="center"> - - <android.support.v7.widget.RecyclerView - android:id="@android:id/list" - android:layout_width="match_parent" - android:layout_height="match_parent" - android:listSelector="@android:color/transparent" - android:clipToPadding="false" /> - <TextView - android:id="@+id/empty_message" - android:layout_width="wrap_content" - android:layout_height="wrap_content" - android:text="@string/sim_empty" - android:layout_gravity="center" - android:visibility="gone" /> -</FrameLayout> diff --git a/res/menu/conversation_fragment_select_menu.xml b/res/menu/conversation_fragment_select_menu.xml index f76deed..7ce0829 100644 --- a/res/menu/conversation_fragment_select_menu.xml +++ b/res/menu/conversation_fragment_select_menu.xml @@ -60,14 +60,4 @@ android:icon="@drawable/ic_delete_small_dark" android:title="@string/action_delete_message" appcompat:showAsAction="collapseActionView|always"/> - <item - android:icon="@drawable/ic_overflow_dark" - appcompat:showAsAction="collapseActionView|always"> - <menu> - <item - android:id="@+id/copy_to_sim" - appcompat:showAsAction="never" - android:title="@string/operation_to_card_memory"/> - </menu> - </item> </menu> diff --git a/res/menu/sim_msg_multi_select_menu.xml b/res/menu/sim_msg_multi_select_menu.xml deleted file mode 100644 index 057adc8..0000000 --- a/res/menu/sim_msg_multi_select_menu.xml +++ /dev/null @@ -1,38 +0,0 @@ -<?xml version="1.0" encoding="utf-8"?> -<!-- -Copyright (c) 2014, The Linux Foundation. All rights reserved. - -Redistribution and use in source and binary forms, with or without -modification, are permitted provided that the following conditions are -met: - - * Redistributions of source code must retain the above copyright - notice, this list of conditions and the following disclaimer. - * Redistributions in binary form must reproduce the above - copyright notice, this list of conditions and the following - disclaimer in the documentation and/or other materials provided - with the distribution. - * Neither the name of The Linux Foundation nor the names of its - contributors may be used to endorse or promote products derived - from this software without specific prior written permission. - -THIS SOFTWARE IS PROVIDED "AS IS" AND ANY EXPRESS OR IMPLIED -WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF -MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT -ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS -BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR -CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF -SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR -BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, -WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE -OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN -IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. ---> -<menu xmlns:android="http://schemas.android.com/apk/res/android" - xmlns:appcompat="http://schemas.android.com/apk/res-auto"> - <item - android:id="@+id/delete" - android:icon="@drawable/ic_delete_small_dark" - appcompat:showAsAction="always" - android:title="@string/delete"/> -</menu> diff --git a/res/values/cm_strings.xml b/res/values/cm_strings.xml index b4db481..4ad47e2 100644 --- a/res/values/cm_strings.xml +++ b/res/values/cm_strings.xml @@ -95,53 +95,4 @@ <string name="show_emoticons_pref_summary">Show the emoticons key on the keyboard</string> <string name="select_phone_account_title">Send with</string> - - <!-- Copy message to sim --> - <!-- Settings item for entering SIM card message screen --> - <string name="pref_title_manage_sim_messages">Manage SIM card messages</string> - <string name="pref_title_manage_sim_messages_slot1">Manage SIM 1 messages</string> - <string name="pref_title_manage_sim_messages_slot2">Manage SIM 2 messages</string> - <string name="copy_to_sim">Copy message to SIM card</string> - <string name="copy_to_sim_success"><xliff:g id="count">%1$d</xliff:g> of <xliff:g id="total">%2$d</xliff:g> messages saved to SIM card.</string> - <string name="copy_to_sim_fail">Unable to save message</string> - <string name="copy_to_phone_success">Message saved</string> - <string name="copy_to_phone_fail">Unable to save message</string> - <!-- Message that appears on the "SMS messges on SIM card" screen when there are no messages on the SIM card --> - <string name="sim_empty">No messages on SIM card.</string> - <!-- Context menu item on an individual message for emailing the sender --> - <string name="menu_send_email">Send email to <xliff:g id="name">%s</xliff:g></string> - <!-- Context menu item on an individual message for dialing the sender's phone number --> - <string name="menu_call_back">Call <xliff:g id="name">%s</xliff:g></string> - <!-- Menu shown in the context menu when long pressing on a message when the message contains - one or more phone numbers and/or email addresses and the number or email is new to - contacts. [CHAR LIMIT=50] --> - <string name="menu_add_address_to_contacts">Add <xliff:g id="contactEmailOrNumber">%s</xliff:g> to People</string> - <string name="sim_capacity_title">SIM capacity</string> - <string name="sim_capacity"><xliff:g id="used">%1$d</xliff:g> of <xliff:g id="total">%2$d</xliff:g> SIM card entries are used</string> - <!-- Confirm Delete --> - <!-- Delete confirmation dialog title --> - <string name="confirm_dialog_title">Delete?</string> - <!-- Title of screen displaying messages on SIM card --> - <string name="sim_manage_messages_title">Text messages on SIM card</string> - <!-- Message that appears on screen while SIM card messages are retrieved --> - <string name="refreshing">Refreshing\u2026</string> - <string name="confirm_delete_selected_messages">Selected message will be deleted.</string> - <!-- Delete button title --> - <string name="delete">Delete</string> - <!-- Context menu item on an individual message for forwarding it to another recipient --> - <string name="menu_forward">Forward</string> - <string name="menu_reply">Reply</string> - <!-- Menu title to copy a selected message from the SIM card to the phone. --> - <string name="sim_copy_to_phone_memory" product="tablet">Copy to tablet memory</string> - <!-- Menu title to copy a selected message from the SIM card to the phone. --> - <string name="sim_copy_to_phone_memory" product="default">Copy to phone memory</string> - <string name="selected_all">Select all</string> - <string name="deselected_all">Deselect all</string> - <string name="selected_count"><xliff:g id="COUNT">%d</xliff:g> selected</string> - <!-- Text to be used for affirmative response button in dialog boxes --> - <string name="yes">OK</string> - <!-- Copy message to sim --> - <string name="operation_to_card_memory">Copy message to SIM card</string> - <string name="slot1">SIM 1</string> - <string name="slot2">SIM 2</string> </resources> diff --git a/res/xml-v21/preferences_application.xml b/res/xml-v21/preferences_application.xml index 603ddb6..4d39999 100644 --- a/res/xml-v21/preferences_application.xml +++ b/res/xml-v21/preferences_application.xml @@ -145,16 +145,6 @@ android:title="@string/mms_delete_pref_title" /> </PreferenceCategory> - <Preference - android:key="pref_key_manage_sim_messages" - android:title="@string/pref_title_manage_sim_messages" /> - <Preference - android:key="pref_key_manage_sim_messages_slot1" - android:title="@string/pref_title_manage_sim_messages_slot1" /> - <Preference - android:key="pref_key_manage_sim_messages_slot2" - android:title="@string/pref_title_manage_sim_messages_slot2" /> - <!-- QuickMessage settings --> <PreferenceCategory android:title="@string/pref_quickmessage"> diff --git a/res/xml-v23/preferences_application.xml b/res/xml-v23/preferences_application.xml index e198038..95ba3c3 100644 --- a/res/xml-v23/preferences_application.xml +++ b/res/xml-v23/preferences_application.xml @@ -147,16 +147,6 @@ android:title="@string/mms_delete_pref_title" /> </PreferenceCategory> - <Preference - android:key="pref_key_manage_sim_messages" - android:title="@string/pref_title_manage_sim_messages" /> - <Preference - android:key="pref_key_manage_sim_messages_slot1" - android:title="@string/pref_title_manage_sim_messages_slot1" /> - <Preference - android:key="pref_key_manage_sim_messages_slot2" - android:title="@string/pref_title_manage_sim_messages_slot2" /> - <!-- QuickMessage settings --> <PreferenceCategory android:title="@string/pref_quickmessage"> diff --git a/res/xml/preferences_application.xml b/res/xml/preferences_application.xml index 279ee9a..64bc7e2 100644 --- a/res/xml/preferences_application.xml +++ b/res/xml/preferences_application.xml @@ -145,15 +145,6 @@ android:title="@string/mms_delete_pref_title" /> </PreferenceCategory> - <Preference - android:key="pref_key_manage_sim_messages" - android:title="@string/pref_title_manage_sim_messages" /> - <Preference - android:key="pref_key_manage_sim_messages_slot1" - android:title="@string/pref_title_manage_sim_messages_slot1" /> - <Preference - android:key="pref_key_manage_sim_messages_slot2" - android:title="@string/pref_title_manage_sim_messages_slot2" /> <!-- QuickMessage settings --> <PreferenceCategory android:title="@string/pref_quickmessage"> diff --git a/src/com/android/messaging/datamodel/data/ConversationMessageData.java b/src/com/android/messaging/datamodel/data/ConversationMessageData.java index 9a160e9..19e1b97 100644 --- a/src/com/android/messaging/datamodel/data/ConversationMessageData.java +++ b/src/com/android/messaging/datamodel/data/ConversationMessageData.java @@ -19,7 +19,6 @@ import android.database.Cursor; import android.net.Uri; import android.provider.BaseColumns; import android.provider.ContactsContract; -import android.telephony.SmsManager; import android.text.TextUtils; import android.text.format.DateUtils; @@ -135,25 +134,6 @@ public class ConversationMessageData { } } - public void bindToSimMessages(Cursor cursor) { - mMessageId = String.valueOf(cursor.getInt(SimMessageData.INDEX_INDEX_ON_ICC)); - int IccStatus = cursor.getInt(SimMessageData.INDEX_STATUS); - if (IccStatus == SmsManager.STATUS_ON_ICC_SENT) { - mStatus = MessageData.BUGLE_STATUS_OUTGOING_COMPLETE; - mSentTimestamp = cursor.getLong(SimMessageData.INDEX_DATE); - } else { - mStatus = MessageData.BUGLE_STATUS_INCOMING_COMPLETE; - mReceivedTimestamp = cursor.getLong(SimMessageData.INDEX_DATE); - } - mSenderDisplayDestination = cursor.getString(SimMessageData.INDEX_ADDRESS); - mPartsCount = 1; - mParts = new ArrayList<MessagePartData>(); - mParts.add(new MessagePartData(cursor.getString(SimMessageData.INDEX_BODY))); - mSeen = true; - mRead = true; - mProtocol = MessageData.PROTOCOL_SMS; - } - private boolean canClusterWithMessage(final Cursor cursor) { final String otherParticipantId = cursor.getString(INDEX_PARTICIPANT_ID); if (!TextUtils.equals(getParticipantId(), otherParticipantId)) { diff --git a/src/com/android/messaging/datamodel/data/SimMessageData.java b/src/com/android/messaging/datamodel/data/SimMessageData.java deleted file mode 100644 index 937b0e2..0000000 --- a/src/com/android/messaging/datamodel/data/SimMessageData.java +++ /dev/null @@ -1,34 +0,0 @@ -/* - * Copyright (C) 2016 The CyanogenMod Project - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -package com.android.messaging.datamodel.data; - -public class SimMessageData { - - public static final int INDEX_SERVICE_CENTER_ADDRESS = 0; - public static final int INDEX_ADDRESS = 1; - public static final int INDEX_MESSAGE_CLASS = 2; - public static final int INDEX_BODY = 3; - public static final int INDEX_DATE = 4; - public static final int INDEX_STATUS = 5; - public static final int INDEX_INDEX_ON_ICC = 6; - public static final int INDEX_IS_STATUS_REPORT = 7; - public static final int INDEX_TRANSPORT_TYPE = 8; - public static final int INDEX_TYPE = 9; - public static final int INDEX_LOCKED = 10; - public static final int INDEX_ERROR_CODE = 11; - public static final int INDEX_ID = 12; - public static final int INDEX_SUB_ID = 13; -} diff --git a/src/com/android/messaging/sms/SimMessagesUtils.java b/src/com/android/messaging/sms/SimMessagesUtils.java deleted file mode 100644 index f7be881..0000000 --- a/src/com/android/messaging/sms/SimMessagesUtils.java +++ /dev/null @@ -1,469 +0,0 @@ -/* - * Copyright (C) 2016 The CyanogenMod Project - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -package com.android.messaging.sms; - -import android.content.Context; -import android.net.Uri; -import android.telephony.PhoneNumberUtils; -import android.telephony.SmsManager; -import android.telephony.SmsMessage; -import android.telephony.TelephonyManager; -import android.text.TextUtils; -import android.util.Log; -import com.android.internal.telephony.EncodeException; -import com.android.internal.telephony.GsmAlphabet; -import com.android.internal.telephony.SmsHeader; -import com.android.internal.telephony.cdma.sms.BearerData; -import com.android.internal.telephony.cdma.sms.CdmaSmsAddress; -import com.android.internal.telephony.cdma.sms.UserData; -import com.android.messaging.datamodel.data.ConversationMessageData; -import com.android.messaging.datamodel.data.ConversationParticipantsData; -import com.android.messaging.R; - -import java.io.ByteArrayOutputStream; -import java.io.DataOutputStream; -import java.io.IOException; -import java.io.UnsupportedEncodingException; -import java.text.SimpleDateFormat; -import java.util.ArrayList; -import java.util.Locale; - -import static android.telephony.SmsMessage.ENCODING_16BIT; -import static android.telephony.SmsMessage.ENCODING_7BIT; -import static android.telephony.SmsMessage.ENCODING_UNKNOWN; -import static android.telephony.SmsMessage.MAX_USER_DATA_BYTES; -import static android.telephony.SmsMessage.MAX_USER_DATA_SEPTETS; - -public class SimMessagesUtils { - - private static final String TAG = SimMessagesUtils.class.getSimpleName(); - public static final int SUB_INVALID = -1; // for single card product - public static final int SUB1 = 0; // for DSDS product of slot one - public static final int SUB2 = 1; // for DSDS product of slot two - - public static final Uri ICC_URI = Uri.parse("content://sms/icc"); - public static final Uri ICC1_URI = Uri.parse("content://sms/icc1"); - public static final Uri ICC2_URI = Uri.parse("content://sms/icc2"); - private static final int TIMESTAMP_LENGTH = 7; // See TS 23.040 9.2.3.11 - public static String WAPPUSH = "Browser Information"; // Wap push key - - /** - * Return the icc uri according to subscription - */ - public static Uri getIccUriBySlot(int slot) { - switch (slot) { - case SUB1: - return ICC1_URI; - case SUB2: - return ICC2_URI; - default: - return ICC_URI; - } - } - - public static boolean isMultiSimEnabledMms() { - return TelephonyManager.getDefault().isMultiSimEnabled(); - } - - /** - * Return whether it has card no matter in DSDS or not - */ - public static boolean hasIccCard() { - return TelephonyManager.getDefault().hasIccCard(); - } - - /** - * Return whether the card in the given slot is activated - */ - public static boolean isIccCardActivated(int slot) { - TelephonyManager tm = TelephonyManager.getDefault(); - final int simState = tm.getSimState(slot); - return (simState != TelephonyManager.SIM_STATE_ABSENT) - && (simState != TelephonyManager.SIM_STATE_UNKNOWN); - } - - public static boolean copyToSim(ConversationMessageData messageData, - ConversationParticipantsData participants, int subId) { - String address; - address = (participants.getOtherParticipant() == null) ? - null : - participants.getOtherParticipant().getDisplayDestination(); - if(TextUtils.isEmpty(address)) { - return false; - } - if (SimMessagesUtils.isWapPushNumber(address)) { - String[] number = address.split(":"); - address = number[0]; - } - - String text = messageData.getText(); - if (TextUtils.isEmpty(text)) { - return false; - } - long timestamp = messageData.getReceivedTimeStamp() != 0 ? - messageData.getReceivedTimeStamp() : - System.currentTimeMillis(); - - SmsManager sm = SmsManager.getDefault(); - ArrayList<String> messages = sm.divideMessage(text); - - boolean ret = true; - for (String message : messages) { - byte pdu[] = null; - int status; - if (messageData.getIsIncoming()) { - pdu = SimMessagesUtils.getDeliveryPdu(null, address, - message, timestamp, subId); - status = SmsManager.STATUS_ON_ICC_READ; - } else { - pdu = SmsMessage.getSubmitPdu(null, address, message, - false, subId).encodedMessage; - status = SmsManager.STATUS_ON_ICC_SENT; - } - ret &= TelephonyManager.getDefault().isMultiSimEnabled() - ? SmsManager.getSmsManagerForSubscriptionId(subId) - .copyMessageToIcc(null, pdu, status) - : sm.copyMessageToIcc(null, pdu, status); - if (!ret) { - break; - } - } - return ret; - } - - private static boolean isCDMAPhone(int subscription) { - int activePhone = isMultiSimEnabledMms() - ? TelephonyManager.getDefault().getCurrentPhoneType(subscription) - : TelephonyManager.getDefault().getPhoneType(); - return activePhone == TelephonyManager.PHONE_TYPE_CDMA; - } - - public static byte[] getDeliveryPdu(String scAddress, String destinationAddress, String message, - long date, int subscription) { - if (isCDMAPhone(subscription)) { - return getCDMADeliveryPdu(scAddress, destinationAddress, message, date); - } else { - return getDeliveryPdu(scAddress, destinationAddress, message, date, null, - ENCODING_UNKNOWN); - } - } - - public static byte[] getCDMADeliveryPdu(String scAddress, String destinationAddress, - String message, long date) { - // Perform null parameter checks. - if (message == null || destinationAddress == null) { - Log.d(TAG, "getCDMADeliveryPdu,message =null"); - return null; - } - - // according to submit pdu encoding as written in privateGetSubmitPdu - - // MTI = SMS-DELIVERY, UDHI = header != null - byte[] header = null; - byte mtiByte = (byte) (0x00 | (header != null ? 0x40 : 0x00)); - ByteArrayOutputStream headerStream = getDeliveryPduHeader(destinationAddress, mtiByte); - - ByteArrayOutputStream byteStream = new ByteArrayOutputStream(MAX_USER_DATA_BYTES + 40); - - DataOutputStream dos = new DataOutputStream(byteStream); - // int status,Status of message. See TS 27.005 3.1, "<stat>" - - /* 0 = "REC UNREAD" */ - /* 1 = "REC READ" */ - /* 2 = "STO UNSENT" */ - /* 3 = "STO SENT" */ - - try { - // int uTeleserviceID; - int uTeleserviceID = 0; //.TELESERVICE_CT_WAP;// int - dos.writeInt(uTeleserviceID); - - // unsigned char bIsServicePresent - byte bIsServicePresent = 0;// byte - dos.writeInt(bIsServicePresent); - - // uServicecategory - int uServicecategory = 0;// int - dos.writeInt(uServicecategory); - - // RIL_CDMA_SMS_Address - // digit_mode - // number_mode - // number_type - // number_plan - // number_of_digits - // digits[] - CdmaSmsAddress destAddr = CdmaSmsAddress.parse(PhoneNumberUtils - .cdmaCheckAndProcessPlusCode(destinationAddress)); - if (destAddr == null) - return null; - dos.writeByte(destAddr.digitMode);// int - dos.writeByte(destAddr.numberMode);// int - dos.writeByte(destAddr.ton);// int - dos.writeByte(destAddr.numberPlan);// int - dos.writeByte(destAddr.numberOfDigits);// byte - dos.write(destAddr.origBytes, 0, destAddr.origBytes.length); // digits - - // RIL_CDMA_SMS_Subaddress - // Subaddress is not supported. - dos.writeByte(0); // subaddressType int - dos.writeByte(0); // subaddr_odd byte - dos.writeByte(0); // subaddr_nbr_of_digits byte - - SmsHeader smsHeader = new SmsHeader().fromByteArray(headerStream.toByteArray()); - UserData uData = new UserData(); - uData.payloadStr = message; - // uData.userDataHeader = smsHeader; - uData.msgEncodingSet = true; - uData.msgEncoding = UserData.ENCODING_UNICODE_16; - - BearerData bearerData = new BearerData(); - bearerData.messageType = BearerData.MESSAGE_TYPE_DELIVER; - - bearerData.deliveryAckReq = false; - bearerData.userAckReq = false; - bearerData.readAckReq = false; - bearerData.reportReq = false; - - bearerData.userData = uData; - - byte[] encodedBearerData = BearerData.encode(bearerData); - if (null != encodedBearerData) { - // bearer data len - dos.writeByte(encodedBearerData.length);// int - Log.d(TAG, "encodedBearerData length=" + encodedBearerData.length); - - // aBearerData - dos.write(encodedBearerData, 0, encodedBearerData.length); - } else { - dos.writeByte(0); - } - - } catch (IOException e) { - Log.e(TAG, "Error writing dos", e); - } finally { - try { - if (null != byteStream) { - byteStream.close(); - } - - if (null != dos) { - dos.close(); - } - - if (null != headerStream) { - headerStream.close(); - } - } catch (IOException e) { - Log.e(TAG, "Error close dos", e); - } - } - - return byteStream.toByteArray(); - } - - /** - * Generate a Delivery PDU byte array. see getSubmitPdu for reference. - */ - public static byte[] getDeliveryPdu(String scAddress, String destinationAddress, String message, - long date, byte[] header, int encoding) { - // Perform null parameter checks. - if (message == null || destinationAddress == null) { - return null; - } - - // MTI = SMS-DELIVERY, UDHI = header != null - byte mtiByte = (byte)(0x00 | (header != null ? 0x40 : 0x00)); - ByteArrayOutputStream bo = getDeliveryPduHeader(destinationAddress, mtiByte); - // User Data (and length) - byte[] userData; - if (encoding == ENCODING_UNKNOWN) { - // First, try encoding it with the GSM alphabet - encoding = ENCODING_7BIT; - } - try { - if (encoding == ENCODING_7BIT) { - userData = GsmAlphabet.stringToGsm7BitPackedWithHeader(message, header, 0, 0); - } else { //assume UCS-2 - try { - userData = encodeUCS2(message, header); - } catch (UnsupportedEncodingException uex) { - Log.e("GSM", "Implausible UnsupportedEncodingException ", - uex); - return null; - } - } - } catch (EncodeException ex) { - // Encoding to the 7-bit alphabet failed. Let's see if we can - // encode it as a UCS-2 encoded message - try { - userData = encodeUCS2(message, header); - encoding = ENCODING_16BIT; - } catch (UnsupportedEncodingException uex) { - Log.e("GSM", "Implausible UnsupportedEncodingException ", - uex); - return null; - } - } - - if (encoding == ENCODING_7BIT) { - if ((0xff & userData[0]) > MAX_USER_DATA_SEPTETS) { - // Message too long - return null; - } - bo.write(0x00); - } else { //assume UCS-2 - if ((0xff & userData[0]) > MAX_USER_DATA_BYTES) { - // Message too long - return null; - } - // TP-Data-Coding-Scheme - // Class 3, UCS-2 encoding, uncompressed - bo.write(0x0b); - } - byte[] timestamp = getTimestamp(date); - bo.write(timestamp, 0, timestamp.length); - - bo.write(userData, 0, userData.length); - return bo.toByteArray(); - } - - private static ByteArrayOutputStream getDeliveryPduHeader( - String destinationAddress, byte mtiByte) { - ByteArrayOutputStream bo = new ByteArrayOutputStream( - MAX_USER_DATA_BYTES + 40); - bo.write(mtiByte); - - byte[] daBytes; - daBytes = PhoneNumberUtils.networkPortionToCalledPartyBCD(destinationAddress); - - // destination address length in BCD digits, ignoring TON byte and pad - // TODO Should be better. - bo.write((daBytes.length - 1) * 2 - - ((daBytes[daBytes.length - 1] & 0xf0) == 0xf0 ? 1 : 0)); - - // destination address - bo.write(daBytes, 0, daBytes.length); - - // TP-Protocol-Identifier - bo.write(0); - return bo; - } - - private static byte[] getTimestamp(long time) { - // See TS 23.040 9.2.3.11 - byte[] timestamp = new byte[TIMESTAMP_LENGTH]; - SimpleDateFormat sdf = new SimpleDateFormat("yyMMddkkmmss:Z", Locale.US); - String[] date = sdf.format(time).split(":"); - // generate timezone value - String timezone = date[date.length - 1]; - String signMark = timezone.substring(0, 1); - int hour = Integer.parseInt(timezone.substring(1, 3)); - int min = Integer.parseInt(timezone.substring(3)); - int timezoneValue = hour * 4 + min / 15; - // append timezone value to date[0] (time string) - String timestampStr = date[0] + timezoneValue; - - int digitCount = 0; - for (int i = 0; i < timestampStr.length(); i++) { - char c = timestampStr.charAt(i); - int shift = ((digitCount & 0x01) == 1) ? 4 : 0; - timestamp[(digitCount >> 1)] |= (byte)((charToBCD(c) & 0x0F) << shift); - digitCount++; - } - - if (signMark.equals("-")) { - timestamp[timestamp.length - 1] = (byte) (timestamp[timestamp.length - 1] | 0x08); - } - - return timestamp; - } - - private static byte[] encodeUCS2(String message, byte[] header) - throws UnsupportedEncodingException { - byte[] userData, textPart; - textPart = message.getBytes("utf-16be"); - - if (header != null) { - // Need 1 byte for UDHL - userData = new byte[header.length + textPart.length + 1]; - - userData[0] = (byte)header.length; - System.arraycopy(header, 0, userData, 1, header.length); - System.arraycopy(textPart, 0, userData, header.length + 1, textPart.length); - } - else { - userData = textPart; - } - byte[] ret = new byte[userData.length+1]; - ret[0] = (byte) (userData.length & 0xff ); - System.arraycopy(userData, 0, ret, 1, userData.length); - return ret; - } - - private static int charToBCD(char c) { - if (c >= '0' && c <= '9') { - return c - '0'; - } else { - throw new RuntimeException ("invalid char for BCD " + c); - } - } - - /** - * Returns true if the address passed in is a Browser wap push MMS address. - */ - public static boolean isWapPushNumber(String address) { - if (TextUtils.isEmpty(address)) { - return false; - } else { - return address.contains(WAPPUSH); - } - } - - /** - * Return the sim name of subscription. - */ - public static String getMultiSimName(Context context, int slot) { - if (slot >= TelephonyManager.getDefault().getPhoneCount() || slot < 0) { - return null; - } - //String multiSimName = Settings.System.getString(context.getContentResolver(), - // MULTI_SIM_NAME + (subscription + 1)); - //if (multiSimName == null) { - if (slot == SUB1) { - return context.getString(R.string.slot1); - } else if (slot == SUB2) { - return context.getString(R.string.slot2); - } - //} - return context.getString(R.string.slot1); - } - - /** - * Return the activated card number - */ - public static int getActivatedIccCardCount() { - TelephonyManager tm = TelephonyManager.getDefault(); - int phoneCount = tm.getPhoneCount(); - int count = 0; - for (int i = 0; i < phoneCount; i++) { - if (isIccCardActivated(i)) { - count++; - } - } - return count; - } -} diff --git a/src/com/android/messaging/ui/ManageSimMessages.java b/src/com/android/messaging/ui/ManageSimMessages.java deleted file mode 100644 index f658300..0000000 --- a/src/com/android/messaging/ui/ManageSimMessages.java +++ /dev/null @@ -1,394 +0,0 @@ -/* - * Copyright (C) 2008 Esmertec AG. - * Copyright (C) 2008 The Android Open Source Project - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package com.android.messaging.ui; - -import android.app.AlertDialog; -import android.content.AsyncQueryHandler; -import android.content.BroadcastReceiver; -import android.content.ContentResolver; -import android.content.Context; -import android.content.DialogInterface; -import android.content.Intent; -import android.content.IntentFilter; -import android.database.ContentObserver; -import android.database.Cursor; -import android.database.sqlite.SQLiteException; -import android.database.sqlite.SqliteWrapper; -import android.graphics.Rect; -import android.graphics.drawable.ColorDrawable; -import android.net.Uri; -import android.os.Bundle; -import android.os.Handler; -import android.support.v7.app.ActionBar; -import android.support.v7.widget.LinearLayoutManager; -import android.support.v7.widget.RecyclerView; -import android.telephony.SubscriptionManager; -import android.text.TextUtils; -import android.util.Log; -import android.view.ActionMode; -import android.view.Menu; -import android.view.MenuInflater; -import android.view.MenuItem; -import android.view.View; -import android.widget.TextView; -import com.android.internal.telephony.PhoneConstants; -import com.android.internal.telephony.TelephonyIntents; - -import com.android.messaging.R; -import com.android.messaging.datamodel.data.MessagePartData; -import com.android.messaging.datamodel.data.SubscriptionListData; -import com.android.messaging.sms.SimMessagesUtils; -import com.android.messaging.ui.conversation.ConversationMessageAdapter; -import com.android.messaging.ui.conversation.ConversationMessageView; -import com.android.messaging.util.UiUtils; - -/** - * Displays a list of the SMS messages stored on the ICC. - */ -public class ManageSimMessages extends BugleActionBarActivity - implements ConversationMessageView.ConversationMessageViewHost, - View.OnCreateContextMenuListener { - private static final String TAG = ManageSimMessages.class.getSimpleName(); - - private static final int SHOW_LIST = 0; - private static final int SHOW_EMPTY = 1; - private static final int SHOW_BUSY = 2; - private int mState; - private int mSlot; - private int mSubscription; - - private Uri mIccUri; - private ContentResolver mContentResolver; - private Cursor mCursor = null; - private RecyclerView mSimList; - private TextView mMessage; - private ConversationMessageAdapter mListAdapter = null; - private AsyncQueryHandler mQueryHandler = null; - private boolean mIsQuery = false; - private ConversationMessageView mSelectedMessage = null; - public static final int TYPE_INBOX = 1; - - private final ContentObserver simChangeObserver = - new ContentObserver(new Handler()) { - @Override - public void onChange(boolean selfUpdate) { - refreshMessageList(); - } - }; - - private final BroadcastReceiver mReceiver = new BroadcastReceiver() { - @Override - public void onReceive(Context context, Intent intent) { - String action = intent.getAction(); - if (TelephonyIntents.ACTION_SIM_STATE_CHANGED.equals(action)) { - refreshMessageList(); - } - } - }; - - @Override - protected void onCreate(Bundle icicle) { - super.onCreate(icicle); - - mContentResolver = getContentResolver(); - mQueryHandler = new QueryHandler(mContentResolver, this); - setContentView(R.layout.sim_list); - mSimList = (RecyclerView) findViewById(android.R.id.list); - final LinearLayoutManager manager = new LinearLayoutManager(this); - manager.setStackFromEnd(false); - manager.setReverseLayout(false); - mSimList.setHasFixedSize(true); - mSimList.setLayoutManager(manager); - mMessage = (TextView) findViewById(R.id.empty_message); - IntentFilter filter = new IntentFilter(); - filter.addAction(TelephonyIntents.ACTION_SIM_STATE_CHANGED); - registerReceiver(mReceiver, filter); - getSupportActionBar().setDisplayHomeAsUpEnabled(true); - init(); - } - - @Override - protected void onNewIntent(Intent intent) { - setIntent(intent); - - init(); - } - - private void init() { - mSlot = getIntent().getIntExtra(PhoneConstants.PHONE_KEY, SimMessagesUtils.SUB_INVALID); - - mSubscription = SimMessagesUtils.SUB_INVALID; - int[] subIds = SubscriptionManager.getSubId(mSlot); - if (subIds != null && subIds.length > 0) { - mSubscription = subIds[0]; - } - - mIccUri = SimMessagesUtils.getIccUriBySlot(mSlot); - updateState(SHOW_BUSY); - startQuery(); - } - - @Override - public boolean onAttachmentClick(ConversationMessageView view, MessagePartData attachment, - Rect imageBounds, boolean longPress) { - return false; - } - - @Override - public SubscriptionListData.SubscriptionListEntry getSubscriptionEntryForSelfParticipant( - String selfParticipantId, boolean excludeDefault) { - return null; - } - - private class QueryHandler extends AsyncQueryHandler { - - public QueryHandler( - ContentResolver contentResolver, ManageSimMessages parent) { - super(contentResolver); - } - - @Override - protected void onQueryComplete( - int token, Object cookie, Cursor cursor) { - if (mCursor != null) { - stopManagingCursor(mCursor); - } - mCursor = cursor; - if (mCursor != null) { - if (!mCursor.moveToFirst()) { - // Let user know the SIM is empty - updateState(SHOW_EMPTY); - } else if (mListAdapter == null) { - mListAdapter = new ConversationMessageAdapter( - ManageSimMessages.this, mCursor, ManageSimMessages.this, null, - onMessageListItemClick, onMessageListItemLongClick, true); - mSimList.setAdapter(mListAdapter); - updateState(SHOW_LIST); - } else { - mListAdapter.changeCursor(mCursor); - updateState(SHOW_LIST); - } - startManagingCursor(mCursor); - } else { - // Let user know the SIM is empty - updateState(SHOW_EMPTY); - } - mIsQuery = false; - } - } - - private void startQuery() { - try { - if (mIsQuery) { - return; - } - mIsQuery = true; - mQueryHandler.startQuery(0, null, mIccUri, null, null, null, null); - } catch (SQLiteException e) { - SqliteWrapper.checkSQLiteException(this, e); - } - } - - private void refreshMessageList() { - updateState(SHOW_BUSY); - startQuery(); - } - - - @Override - public void onResume() { - super.onResume(); - registerSimChangeObserver(); - } - - @Override - public void onPause() { - super.onPause(); - mContentResolver.unregisterContentObserver(simChangeObserver); - } - - @Override - public boolean onOptionsItemSelected(final MenuItem item) { - switch (item.getItemId()) { - case android.R.id.home: - if (mSelectedMessage == null) { - finish(); - } else { - dismissActionMode(); - } - return true; - } - return super.onOptionsItemSelected(item); - } - - @Override - public void onDestroy() { - unregisterReceiver(mReceiver); - super.onDestroy(); - } - - @Override - protected void updateActionBar(ActionBar actionBar) { - super.updateActionBar(actionBar); - //The Action Mode menu changes the action bar completely. Need to reset it! - updateActionAndStatusBarColor(getSupportActionBar()); - actionBar.setDisplayHomeAsUpEnabled(true); - actionBar.setHomeAsUpIndicator(0); - actionBar.setDisplayShowTitleEnabled(true); - } - - private void updateActionAndStatusBarColor(final ActionBar actionBar) { - final int themeColor = ConversationDrawables.get().getConversationThemeColor(); - actionBar.setBackgroundDrawable(new ColorDrawable(themeColor)); - UiUtils.setStatusBarColor(this, themeColor); - } - - private void registerSimChangeObserver() { - mContentResolver.registerContentObserver( - mIccUri, true, simChangeObserver); - } - - private void updateState(int state) { - if (mState == state) { - return; - } - - mState = state; - switch (state) { - case SHOW_LIST: - mSimList.setVisibility(View.VISIBLE); - mMessage.setVisibility(View.GONE); - setTitle(getString(R.string.sim_manage_messages_title)); - setProgressBarIndeterminateVisibility(false); - mSimList.requestFocus(); - break; - case SHOW_EMPTY: - mSimList.setVisibility(View.GONE); - mMessage.setVisibility(View.VISIBLE); - setTitle(getString(R.string.sim_manage_messages_title)); - setProgressBarIndeterminateVisibility(false); - break; - case SHOW_BUSY: - mSimList.setVisibility(View.GONE); - mMessage.setVisibility(View.GONE); - setTitle(getString(R.string.refreshing)); - setProgressBarIndeterminateVisibility(true); - break; - default: - Log.e(TAG, "Invalid State"); - } - } - - public Context getContext() { - return ManageSimMessages.this; - } - - private void selectMessage(final ConversationMessageView messageView) { - mSelectedMessage = messageView; - if (mSelectedMessage == null) { - mListAdapter.setSelectedMessage(null); - dismissActionMode(); - return; - } - mListAdapter.setSelectedMessage(messageView.getData().getMessageId()); - startActionMode(mActionModeCallback); - } - - private void confirmDeleteDialog(DialogInterface.OnClickListener listener) { - AlertDialog.Builder builder = new AlertDialog.Builder(getContext()); - builder.setTitle(R.string.confirm_dialog_title); - builder.setIconAttribute(android.R.attr.alertDialogIcon); - builder.setCancelable(true); - builder.setPositiveButton(R.string.yes, listener); - builder.setNegativeButton(R.string.no, listener); - builder.setMessage(R.string.confirm_delete_selected_messages); - builder.show(); - } - - private void deleteMessageFromSim() { - if (mSelectedMessage == null) { - return; - } - String messageIndexString = - mSelectedMessage.getData().getMessageId(); - if (TextUtils.isEmpty(messageIndexString)) { - return; - } - Uri simUri = mIccUri.buildUpon().appendPath(messageIndexString).build(); - SqliteWrapper.delete(this, mContentResolver, simUri, null, null); - } - - View.OnClickListener onMessageListItemClick = new View.OnClickListener() { - @Override - public void onClick(View view) { - //Do Nothing - } - }; - - View.OnLongClickListener onMessageListItemLongClick = new View.OnLongClickListener() { - @Override - public boolean onLongClick(View view) { - selectMessage((ConversationMessageView) view); - return true; - } - }; - - private class DeleteConfirmListener implements DialogInterface.OnClickListener { - public void onClick(DialogInterface dialog, int whichButton) { - switch (whichButton) { - case DialogInterface.BUTTON_POSITIVE: - deleteMessageFromSim(); - break; - } - dismissActionMode(); - } - } - - private final ActionMode.Callback mActionModeCallback = new ActionMode.Callback() { - - @Override - public boolean onCreateActionMode(ActionMode mode, Menu menu) { - if (mSelectedMessage != null) { - MenuInflater inflater = getMenuInflater(); - inflater.inflate(R.menu.sim_msg_multi_select_menu, menu); - return true; - } - return false; - } - - @Override - public boolean onPrepareActionMode(ActionMode mode, Menu menu) { - return true; - } - - @Override - public boolean onActionItemClicked(ActionMode mode, MenuItem item) { - switch (item.getItemId()) { - case R.id.delete: - confirmDeleteDialog(new DeleteConfirmListener()); - return true; - } - return false; - } - - @Override - public void onDestroyActionMode(ActionMode mode) { - selectMessage(null); - } - }; -} diff --git a/src/com/android/messaging/ui/appsettings/ApplicationSettingsActivity.java b/src/com/android/messaging/ui/appsettings/ApplicationSettingsActivity.java index ae5bbf3..b91cc6c 100644 --- a/src/com/android/messaging/ui/appsettings/ApplicationSettingsActivity.java +++ b/src/com/android/messaging/ui/appsettings/ApplicationSettingsActivity.java @@ -37,13 +37,10 @@ import android.text.TextUtils; import android.view.Menu; import android.view.MenuItem; -import com.android.internal.telephony.PhoneConstants; import com.android.messaging.R; import com.android.messaging.sms.MmsConfig; -import com.android.messaging.sms.SimMessagesUtils; import com.android.messaging.ui.BugleActionBarActivity; import com.android.messaging.ui.LicenseActivity; -import com.android.messaging.ui.ManageSimMessages; import com.android.messaging.ui.NumberPickerDialog; import com.android.messaging.ui.UIIntents; import com.android.messaging.util.BuglePrefs; @@ -112,9 +109,6 @@ public class ApplicationSettingsActivity extends BugleActionBarActivity { private ListPreference mSmsValidityCard2Pref; private Preference mSmsLimitPref; private Preference mMmsLimitPref; - private Preference mManageSimPref; - private Preference mManageSim1Pref; - private Preference mManageSim2Pref; public ApplicationSettingsFragment() { @@ -145,9 +139,6 @@ public class ApplicationSettingsActivity extends BugleActionBarActivity { mSmsValidityCard2Pref = (ListPreference) findPreference("pref_key_sms_validity_period_slot2"); mSmsLimitPref = findPreference("sms_delete_limit_pref_key"); mMmsLimitPref = findPreference("mms_delete_limit_pref_key"); - mManageSimPref = findPreference("pref_key_manage_sim_messages"); - mManageSim1Pref = findPreference("pref_key_manage_sim_messages_slot1"); - mManageSim2Pref = findPreference("pref_key_manage_sim_messages_slot2"); if (getResources().getBoolean(R.bool.config_sms_validity)) { if (PhoneUtils.getDefault().isMultiSimEnabledMms()) { @@ -190,7 +181,6 @@ public class ApplicationSettingsActivity extends BugleActionBarActivity { } setSmsDisplayLimit(); setMmsDisplayLimit(); - updateSIMSMSPref(); } @Override @@ -199,38 +189,28 @@ public class ApplicationSettingsActivity extends BugleActionBarActivity { if (preference.getKey() == mSmsDisabledPrefKey || preference.getKey() == mSmsEnabledPrefKey) { mIsSmsPreferenceClicked = true; - } else if (getActivity() != null) { - if (preference.getKey().equals(mSmsLimitPref.getKey())) { + } else if (getActivity() != null && + preference.getKey().equals(mSmsLimitPref.getKey())) { new NumberPickerDialog(getActivity(), - mSmsLimitListener, - PrefsUtils.getSMSMessagesPerThreadLimit(), - MmsConfig.getMinMessageCountPerThread(), - MmsConfig.getMaxMessageCountPerThread(), - R.string.sms_delete_pref_title, - R.string.pref_messages_to_save).show(); + mSmsLimitListener, + PrefsUtils.getSMSMessagesPerThreadLimit(), + MmsConfig.getMinMessageCountPerThread(), + MmsConfig.getMaxMessageCountPerThread(), + R.string.sms_delete_pref_title, + R.string.pref_messages_to_save).show(); - } else if (preference.getKey().equals(mMmsLimitPref.getKey())) { + } else if(getActivity() != null && + preference.getKey().equals(mMmsLimitPref.getKey())) { new NumberPickerDialog(getActivity(), - mMmsLimitListener, - PrefsUtils.getMMSMessagesPerThreadLimit(), - MmsConfig.getMinMessageCountPerThread(), - MmsConfig.getMaxMessageCountPerThread(), - R.string.mms_delete_pref_title, - R.string.pref_messages_to_save).show(); - - } else if (preference.getKey().equals(mManageSimPref.getKey())) { - startActivity(new Intent(getActivity(), ManageSimMessages.class)); - } else if (preference.getKey().equals(mManageSim1Pref.getKey())) { - Intent intent = new Intent(getActivity(), ManageSimMessages.class); - intent.putExtra(PhoneConstants.PHONE_KEY, SimMessagesUtils.SUB1); - startActivity(intent); - } else if (preference.getKey().equals(mManageSim2Pref.getKey())) { - Intent intent = new Intent(getActivity(), ManageSimMessages.class); - intent.putExtra(PhoneConstants.PHONE_KEY, SimMessagesUtils.SUB2); - startActivity(intent); - } + mMmsLimitListener, + PrefsUtils.getMMSMessagesPerThreadLimit(), + MmsConfig.getMinMessageCountPerThread(), + MmsConfig.getMaxMessageCountPerThread(), + R.string.mms_delete_pref_title, + R.string.pref_messages_to_save).show(); + } return super.onPreferenceTreeClick(preferenceScreen, preference); } @@ -350,24 +330,6 @@ public class ApplicationSettingsActivity extends BugleActionBarActivity { PrefsUtils.getMMSMessagesPerThreadLimit())); } - private void updateSIMSMSPref() { - if (SimMessagesUtils.isMultiSimEnabledMms()) { - if (!SimMessagesUtils.isIccCardActivated(SimMessagesUtils.SUB1)) { - mManageSim1Pref.setEnabled(false); - } - if (!SimMessagesUtils.isIccCardActivated(SimMessagesUtils.SUB2)) { - mManageSim2Pref.setEnabled(false); - } - getPreferenceScreen().removePreference(mManageSimPref); - } else { - if (!SimMessagesUtils.hasIccCard()) { - mManageSimPref.setEnabled(false); - } - getPreferenceScreen().removePreference(mManageSim1Pref); - getPreferenceScreen().removePreference(mManageSim2Pref); - } - } - NumberPickerDialog.OnNumberSetListener mSmsLimitListener = new NumberPickerDialog.OnNumberSetListener() { public void onNumberSet(int limit) { diff --git a/src/com/android/messaging/ui/conversation/ConversationFragment.java b/src/com/android/messaging/ui/conversation/ConversationFragment.java index 0bfd644..4020eed 100644 --- a/src/com/android/messaging/ui/conversation/ConversationFragment.java +++ b/src/com/android/messaging/ui/conversation/ConversationFragment.java @@ -43,7 +43,6 @@ import android.os.Bundle; import android.os.Environment; import android.os.Handler; import android.os.Parcelable; -import android.provider.Telephony; import android.support.v4.content.LocalBroadcastManager; import android.support.v4.text.BidiFormatter; import android.support.v4.text.TextDirectionHeuristicsCompat; @@ -52,12 +51,7 @@ import android.support.v7.widget.DefaultItemAnimator; import android.support.v7.widget.LinearLayoutManager; import android.support.v7.widget.RecyclerView; import android.support.v7.widget.RecyclerView.ViewHolder; -import android.telephony.SmsManager; -import android.telephony.SmsMessage; -import android.telephony.SubscriptionManager; -import android.telephony.TelephonyManager; import android.text.TextUtils; -import android.util.Log; import android.view.ActionMode; import android.view.Display; import android.view.LayoutInflater; @@ -69,7 +63,6 @@ import android.view.ViewConfiguration; import android.view.ViewGroup; import android.widget.TextView; -import android.widget.Toast; import com.android.messaging.BugleApplication; import com.android.messaging.R; import com.android.messaging.datamodel.DataModel; @@ -88,7 +81,6 @@ import com.android.messaging.datamodel.data.MessageData; import com.android.messaging.datamodel.data.MessagePartData; import com.android.messaging.datamodel.data.ParticipantData; import com.android.messaging.datamodel.data.SubscriptionListData.SubscriptionListEntry; -import com.android.messaging.sms.SimMessagesUtils; import com.android.messaging.ui.AttachmentPreview; import com.android.messaging.ui.BugleActionBarActivity; import com.android.messaging.ui.ConversationDrawables; @@ -381,16 +373,6 @@ public class ConversationFragment extends Fragment implements ConversationDataLi UIIntents.get().launchForwardMessageActivity(getActivity(), message); mHost.dismissActionMode(); return true; - case R.id.copy_to_sim: - if (data != null && mBinding.getData().getParticipants() != null ) { - if(SimMessagesUtils.getActivatedIccCardCount() > 1) { - showSimSelectDialog(data); - } else { - copyToSim(data, SubscriptionManager.getDefaultSmsSubId()); - } - } - mHost.dismissActionMode(); - return true; } return false; } @@ -1452,51 +1434,6 @@ public class ConversationFragment extends Fragment implements ConversationDataLi ((BugleActionBarActivity) activity).supportInvalidateOptionsMenu(); } - private void copyToSim(ConversationMessageData data, int subId) { - boolean success = SimMessagesUtils - .copyToSim(data, mBinding.getData().getParticipants(), subId); - CharSequence copyToSimStatus = success ? - getResources().getText(R.string.copy_to_phone_success) : - getResources().getText(R.string.copy_to_sim_fail); - Toast.makeText(getActivity(), copyToSimStatus.toString(), - Toast.LENGTH_SHORT).show(); - } - - private void showSimSelectDialog(ConversationMessageData data) { - String[] items = new String[TelephonyManager.getDefault() - .getPhoneCount()]; - for (int i = 0; i < items.length; i++) { - items[i] = SimMessagesUtils.getMultiSimName( - getActivity(), i); - } - CopyToSimSelectListener listener = new CopyToSimSelectListener( - data); - new AlertDialog.Builder(getActivity()) - .setTitle(R.string.copy_to_sim) - .setPositiveButton(android.R.string.ok, listener) - .setSingleChoiceItems(items, 0, listener) - .setCancelable(true).show(); - } - - private class CopyToSimSelectListener implements DialogInterface.OnClickListener { - private ConversationMessageData messageData; - private int slot; - - public CopyToSimSelectListener(ConversationMessageData messageData) { - super(); - this.messageData = messageData; - } - - public void onClick(DialogInterface dialog, int which) { - if (which >= 0) { - slot = which; - } else if (which == DialogInterface.BUTTON_POSITIVE) { - int[] subId = SubscriptionManager.getSubId(slot); - copyToSim(messageData, subId[0]); - } - } - } - @Override public void setOptionsMenuVisibility(final boolean visible) { setHasOptionsMenu(visible); diff --git a/src/com/android/messaging/ui/conversation/ConversationMessageAdapter.java b/src/com/android/messaging/ui/conversation/ConversationMessageAdapter.java index 3d50252..2748fff 100644 --- a/src/com/android/messaging/ui/conversation/ConversationMessageAdapter.java +++ b/src/com/android/messaging/ui/conversation/ConversationMessageAdapter.java @@ -45,7 +45,6 @@ public class ConversationMessageAdapter extends private final View.OnLongClickListener mViewLongClickListener; private boolean mOneOnOne; private String mSelectedMessageId; - private boolean isSmsMessage; public ConversationMessageAdapter(final Context context, final Cursor cursor, final ConversationMessageViewHost host, @@ -60,28 +59,13 @@ public class ConversationMessageAdapter extends setHasStableIds(true); } - public ConversationMessageAdapter(final Context context, final Cursor cursor, - final ConversationMessageViewHost host, - final AsyncImageViewDelayLoader imageViewDelayLoader, - final View.OnClickListener viewClickListener, - final View.OnLongClickListener longClickListener, boolean isSmsMessage) { - this(context, cursor, host, imageViewDelayLoader, viewClickListener, longClickListener); - this.isSmsMessage = isSmsMessage; - } - - - @Override public void bindViewHolder(final ConversationMessageViewHolder holder, final Context context, final Cursor cursor) { Assert.isTrue(holder.mView instanceof ConversationMessageView); final ConversationMessageView conversationMessageView = (ConversationMessageView) holder.mView; - if(isSmsMessage) { - conversationMessageView.bindToSimMessages(cursor, mSelectedMessageId); - } else { - conversationMessageView.bind(cursor, mOneOnOne, mSelectedMessageId); - } + conversationMessageView.bind(cursor, mOneOnOne, mSelectedMessageId); } @Override diff --git a/src/com/android/messaging/ui/conversation/ConversationMessageBubbleView.java b/src/com/android/messaging/ui/conversation/ConversationMessageBubbleView.java index 395936d..d68cbde 100644 --- a/src/com/android/messaging/ui/conversation/ConversationMessageBubbleView.java +++ b/src/com/android/messaging/ui/conversation/ConversationMessageBubbleView.java @@ -95,15 +95,11 @@ public class ConversationMessageBubbleView extends LinearLayout { } } - public void bind() { + public void bind(QuickMessage quickMessage) { mShouldAnimateWidthChange = false; mMorphedWidth = 0; } - public void bind(QuickMessage quickMessage) { - bind(); - } - public void kickOffMorphAnimation(final int oldWidth, final int newWidth) { if (mAnimator != null) { mAnimator.setIntValues(mRunningStartWidth, newWidth); diff --git a/src/com/android/messaging/ui/conversation/ConversationMessageView.java b/src/com/android/messaging/ui/conversation/ConversationMessageView.java index de50184..4b61cdc 100644 --- a/src/com/android/messaging/ui/conversation/ConversationMessageView.java +++ b/src/com/android/messaging/ui/conversation/ConversationMessageView.java @@ -232,25 +232,6 @@ public class ConversationMessageView extends FrameLayout implements View.OnClick contentTop + contentHeight); } - public void bindToSimMessages(final Cursor cursor, final String selectedMessageId) { - mData.bindToSimMessages(cursor); - setSelected(TextUtils.equals(mData.getMessageId(), selectedMessageId)); - // Update text and image content for the view. - updateViewContent(); - - // Update colors and layout parameters for the view. - updateViewAppearance(); - - updateContentDescription(); - - //Necessary to remove bubble width animation - mMessageBubble.bind(); - //SIM Messages don't save timestamp for outgoing messages - if(!mData.getIsIncoming()) { - mStatusTextView.setVisibility(View.GONE); - } - } - /** * Fills in the data associated with this view. * -- 2.11.0 _______________________________________________ Replicant mailing list Replicant@osuosl.org https://lists.osuosl.org/mailman/listinfo/replicant