98 lines
3.4 KiB
Java
98 lines
3.4 KiB
Java
/**
|
|
* Copyright (C) 2012 Moxie Marlinspike
|
|
*
|
|
* This program is free software: you can redistribute it and/or modify
|
|
* it under the terms of the GNU General Public License as published by
|
|
* the Free Software Foundation, either version 3 of the License, or
|
|
* (at your option) any later version.
|
|
*
|
|
* This program is distributed in the hope that it will be useful,
|
|
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
|
* GNU General Public License for more details.
|
|
*
|
|
* You should have received a copy of the GNU General Public License
|
|
* along with this program. If not, see <http://www.gnu.org/licenses/>.
|
|
*/
|
|
package org.thoughtcrime.securesms.database.model;
|
|
|
|
import android.content.Context;
|
|
import android.text.Spannable;
|
|
import android.text.SpannableString;
|
|
import android.text.style.StyleSpan;
|
|
|
|
import org.thoughtcrime.securesms.R;
|
|
import org.thoughtcrime.securesms.database.SmsDatabase;
|
|
import org.thoughtcrime.securesms.recipients.Recipients;
|
|
import org.thoughtcrime.securesms.util.Util;
|
|
|
|
/**
|
|
* The message record model which represents thread heading messages.
|
|
*
|
|
* @author Moxie Marlinspike
|
|
*
|
|
*/
|
|
public class ThreadRecord extends DisplayRecord {
|
|
|
|
private final Context context;
|
|
private final long count;
|
|
private final boolean read;
|
|
private final int distributionType;
|
|
|
|
public ThreadRecord(Context context, Body body, Recipients recipients, long date,
|
|
long count, boolean read, long threadId, long snippetType,
|
|
int distributionType)
|
|
{
|
|
super(context, body, recipients, date, date, threadId, snippetType);
|
|
this.context = context.getApplicationContext();
|
|
this.count = count;
|
|
this.read = read;
|
|
this.distributionType = distributionType;
|
|
}
|
|
|
|
@Override
|
|
public SpannableString getDisplayBody() {
|
|
if (SmsDatabase.Types.isDecryptInProgressType(type)) {
|
|
return emphasisAdded(context.getString(R.string.MessageDisplayHelper_decrypting_please_wait));
|
|
} else if (isKeyExchange()) {
|
|
return emphasisAdded(context.getString(R.string.ConversationListItem_key_exchange_message));
|
|
} else if (SmsDatabase.Types.isFailedDecryptType(type)) {
|
|
return emphasisAdded(context.getString(R.string.MessageDisplayHelper_bad_encrypted_message));
|
|
} else if (SmsDatabase.Types.isNoRemoteSessionType(type)) {
|
|
return emphasisAdded(context.getString(R.string.MessageDisplayHelper_message_encrypted_for_non_existing_session));
|
|
} else if (!getBody().isPlaintext()) {
|
|
return emphasisAdded(context.getString(R.string.MessageNotifier_encrypted_message));
|
|
} else {
|
|
if (Util.isEmpty(getBody().getBody())) {
|
|
return new SpannableString(context.getString(R.string.MessageNotifier_no_subject));
|
|
} else {
|
|
return new SpannableString(getBody().getBody());
|
|
}
|
|
}
|
|
}
|
|
|
|
private SpannableString emphasisAdded(String sequence) {
|
|
SpannableString spannable = new SpannableString(sequence);
|
|
spannable.setSpan(new StyleSpan(android.graphics.Typeface.ITALIC), 0,
|
|
sequence.length(),
|
|
Spannable.SPAN_EXCLUSIVE_EXCLUSIVE);
|
|
return spannable;
|
|
}
|
|
|
|
public long getCount() {
|
|
return count;
|
|
}
|
|
|
|
public boolean isRead() {
|
|
return read;
|
|
}
|
|
|
|
public long getDate() {
|
|
return getDateReceived();
|
|
}
|
|
|
|
public int getDistributionType() {
|
|
return distributionType;
|
|
}
|
|
}
|