Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 7fd7b2ce authored by Moez Bhatti's avatar Moez Bhatti
Browse files

Better legibility for drafts

Closes #1576
parent edbc99a0
Loading
Loading
Loading
Loading
+22 −13
Original line number Diff line number Diff line
@@ -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,29 +90,34 @@ class ConversationsAdapter @Inject constructor(
    override fun onBindViewHolder(holder: QkViewHolder<ConversationListItemBinding>, position: Int) {
        val conversation = getItem(position) ?: return

        // If the last message wasn't incoming, then the colour doesn't really matter anyway
        val lastMessage = conversation.lastMessage
        val recipient = when {
            conversation.recipients.size == 1 || lastMessage == null -> conversation.recipients.firstOrNull()
            else -> conversation.recipients.find { recipient ->
                phoneNumberUtils.compare(recipient.address, lastMessage.address)
            }
        }
        val theme = 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 = conversation.getTitle()
        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() -> context.getString(R.string.main_draft, conversation.draft)
            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

        // If the last message wasn't incoming, then the colour doesn't really matter anyway
        val lastMessage = conversation.lastMessage
        val recipient = when {
            conversation.recipients.size == 1 || lastMessage == null -> conversation.recipients.firstOrNull()
            else -> conversation.recipients.find { recipient ->
                phoneNumberUtils.compare(recipient.address, lastMessage.address)
            }
        }

        holder.binding.unread.setTint(colors.theme(recipient).theme)
        holder.binding.unread.setTint(theme)
    }

    override fun getItemId(position: Int): Long {
+2 −0
Original line number Diff line number Diff line
@@ -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
Original line number Diff line number Diff line
@@ -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>