Better legibility for drafts

Closes #1576
This commit is contained in:
Moez Bhatti
2020-05-10 13:58:30 -04:00
parent edbc99a0a3
commit 7fd7b2ce13
3 changed files with 26 additions and 15 deletions
@@ -22,6 +22,10 @@ import android.content.Context
import android.graphics.Typeface
import android.view.LayoutInflater
import android.view.ViewGroup
import androidx.core.text.bold
import androidx.core.text.buildSpannedString
import androidx.core.text.color
import androidx.core.view.isInvisible
import androidx.core.view.isVisible
import com.moez.QKSMS.R
import com.moez.QKSMS.common.Navigator
@@ -86,19 +90,6 @@ class ConversationsAdapter @Inject constructor(
override fun onBindViewHolder(holder: QkViewHolder<ConversationListItemBinding>, position: Int) {
val conversation = getItem(position) ?: return
holder.binding.root.isActivated = isSelected(conversation.id)
holder.binding.avatars.recipients = conversation.recipients
holder.binding.title.collapseEnabled = conversation.recipients.size > 1
holder.binding.title.text = conversation.getTitle()
holder.binding.date.text = conversation.date.takeIf { it > 0 }?.let(dateFormatter::getConversationTimestamp)
holder.binding.snippet.text = when {
conversation.draft.isNotEmpty() -> context.getString(R.string.main_draft, conversation.draft)
conversation.me -> context.getString(R.string.main_sender_you, conversation.snippet)
else -> conversation.snippet
}
holder.binding.pinned.isVisible = conversation.pinned
// If the last message wasn't incoming, then the colour doesn't really matter anyway
val lastMessage = conversation.lastMessage
val recipient = when {
@@ -107,8 +98,26 @@ class ConversationsAdapter @Inject constructor(
phoneNumberUtils.compare(recipient.address, lastMessage.address)
}
}
val theme = colors.theme(recipient).theme
holder.binding.unread.setTint(colors.theme(recipient).theme)
holder.binding.root.isActivated = isSelected(conversation.id)
holder.binding.avatars.recipients = conversation.recipients
holder.binding.title.collapseEnabled = conversation.recipients.size > 1
holder.binding.title.text = buildSpannedString {
append(conversation.getTitle())
if (conversation.draft.isNotEmpty()) {
color(theme) { append(" " + context.getString(R.string.main_draft)) }
}
}
holder.binding.date.text = conversation.date.takeIf { it > 0 }?.let(dateFormatter::getConversationTimestamp)
holder.binding.snippet.text = when {
conversation.draft.isNotEmpty() -> conversation.draft
conversation.me -> context.getString(R.string.main_sender_you, conversation.snippet)
else -> conversation.snippet
}
holder.binding.pinned.isVisible = conversation.pinned
holder.binding.unread.setTint(theme)
}
override fun getItemId(position: Int): Long {
@@ -51,9 +51,11 @@
android:lines="1"
app:layout_constraintBottom_toTopOf="@id/snippet"
app:layout_constraintEnd_toStartOf="@id/date"
app:layout_constraintHorizontal_bias="0"
app:layout_constraintStart_toEndOf="@id/avatars"
app:layout_constraintTop_toTopOf="parent"
app:layout_constraintVertical_chainStyle="packed"
app:layout_constraintWidth_default="wrap"
tools:text="@tools:sample/full_names" />
<com.moez.QKSMS.common.widget.QkTextView
+1 -1
View File
@@ -55,7 +55,7 @@
<string name="main_menu_block">Block</string>
<string name="main_syncing">Syncing messages…</string>
<string name="main_sender_you">You: %s</string>
<string name="main_draft">Draft: %s</string>
<string name="main_draft">Draft</string>
<string name="main_message_results_title">Results in messages</string>
<string name="main_message_results">%d messages</string>
<string name="inbox_empty_text">Your conversations will appear here</string>