Loading presentation/src/main/java/com/moez/QKSMS/feature/conversations/ConversationsAdapter.kt +22 −13 Original line number Diff line number Diff line Loading @@ -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 Loading Loading @@ -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 { Loading presentation/src/main/res/layout/conversation_list_item.xml +2 −0 Original line number Diff line number Diff line Loading @@ -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 Loading presentation/src/main/res/values/strings.xml +1 −1 Original line number Diff line number Diff line Loading @@ -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> Loading Loading
presentation/src/main/java/com/moez/QKSMS/feature/conversations/ConversationsAdapter.kt +22 −13 Original line number Diff line number Diff line Loading @@ -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 Loading Loading @@ -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 { Loading
presentation/src/main/res/layout/conversation_list_item.xml +2 −0 Original line number Diff line number Diff line Loading @@ -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 Loading
presentation/src/main/res/values/strings.xml +1 −1 Original line number Diff line number Diff line Loading @@ -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> Loading