diff --git a/res/values/strings.xml b/res/values/strings.xml index 964017fbac..a69ad59adb 100644 --- a/res/values/strings.xml +++ b/res/values/strings.xml @@ -441,12 +441,14 @@ %d new messages Most recent from: %s Encrypted message... + Media message: %s (No subject) Message delivery failed. Failed to deliver message. Error delivering message. Mark all as read Mark as read + Media message Sorry, Quick Response is not yet supported by TextSecure! diff --git a/src/org/thoughtcrime/securesms/notifications/MessageNotifier.java b/src/org/thoughtcrime/securesms/notifications/MessageNotifier.java index f14a4b8078..27b4f083dd 100644 --- a/src/org/thoughtcrime/securesms/notifications/MessageNotifier.java +++ b/src/org/thoughtcrime/securesms/notifications/MessageNotifier.java @@ -51,6 +51,7 @@ import org.thoughtcrime.securesms.recipients.Recipient; import org.thoughtcrime.securesms.recipients.RecipientFactory; import org.thoughtcrime.securesms.recipients.Recipients; import org.thoughtcrime.securesms.service.KeyCachingService; +import org.thoughtcrime.securesms.util.SpanUtil; import org.thoughtcrime.securesms.util.TextSecurePreferences; import org.whispersystems.textsecure.api.messages.TextSecureEnvelope; @@ -339,7 +340,7 @@ public class MessageNotifier { Recipient recipient = record.getIndividualRecipient(); Recipients recipients = record.getRecipients(); long threadId = record.getThreadId(); - SpannableString body = record.getDisplayBody(); + CharSequence body = record.getDisplayBody(); Uri image = null; Recipients threadRecipients = null; @@ -348,8 +349,13 @@ public class MessageNotifier { } if (SmsDatabase.Types.isDecryptInProgressType(record.getType()) || !record.getBody().isPlaintext()) { - body = new SpannableString(context.getString(R.string.MessageNotifier_encrypted_message)); - body.setSpan(new StyleSpan(android.graphics.Typeface.ITALIC), 0, body.length(), Spannable.SPAN_EXCLUSIVE_EXCLUSIVE); + body = SpanUtil.italic(context.getString(R.string.MessageNotifier_encrypted_message)); + } else if (record.isMms() && TextUtils.isEmpty(body)) { + body = SpanUtil.italic(context.getString(R.string.MessageNotifier_media_message)); + } else if (record.isMms()) { + String message = context.getString(R.string.MessageNotifier_media_message_with_text, body); + int italicLength = message.length() - body.length(); + body = SpanUtil.italic(message, italicLength); } notificationState.addNotification(new NotificationItem(recipient, recipients, threadRecipients, threadId, body, image)); diff --git a/src/org/thoughtcrime/securesms/util/SpanUtil.java b/src/org/thoughtcrime/securesms/util/SpanUtil.java index cbe7080066..15a0b0c441 100644 --- a/src/org/thoughtcrime/securesms/util/SpanUtil.java +++ b/src/org/thoughtcrime/securesms/util/SpanUtil.java @@ -10,8 +10,12 @@ import android.text.style.StyleSpan; public class SpanUtil { public static CharSequence italic(CharSequence sequence) { + return italic(sequence, sequence.length()); + } + + public static CharSequence italic(CharSequence sequence, int length) { SpannableString spannable = new SpannableString(sequence); - spannable.setSpan(new StyleSpan(android.graphics.Typeface.ITALIC), 0, sequence.length(), Spannable.SPAN_EXCLUSIVE_EXCLUSIVE); + spannable.setSpan(new StyleSpan(android.graphics.Typeface.ITALIC), 0, length, Spannable.SPAN_EXCLUSIVE_EXCLUSIVE); return spannable; }