Notifications: Show 'reply to' status text
This commit is contained in:
parent
fe83987f90
commit
4bddbb0d50
|
@ -95,6 +95,8 @@ interface NotificationActionListener {
|
|||
* @param position The position of the status in the list.
|
||||
*/
|
||||
fun onNotificationContentCollapsedChange(isCollapsed: Boolean, position: Int)
|
||||
|
||||
fun onViewReplyTo(position: Int)
|
||||
}
|
||||
|
||||
class NotificationsPagingAdapter(
|
||||
|
|
|
@ -18,6 +18,7 @@
|
|||
package com.keylesspalace.tusky.components.notifications
|
||||
|
||||
import android.content.Context
|
||||
import android.graphics.Paint
|
||||
import android.graphics.PorterDuff
|
||||
import android.graphics.Typeface
|
||||
import android.graphics.drawable.Drawable
|
||||
|
@ -147,6 +148,7 @@ internal class StatusNotificationViewHolder(
|
|||
binding.notificationContent.visibility = if (show) View.VISIBLE else View.GONE
|
||||
binding.notificationStatusAvatar.visibility = if (show) View.VISIBLE else View.GONE
|
||||
binding.notificationNotificationAvatar.visibility = if (show) View.VISIBLE else View.GONE
|
||||
binding.notificationReplyInfo.visibility = if (show) View.VISIBLE else View.GONE
|
||||
}
|
||||
|
||||
private fun setDisplayName(name: String, emojis: List<Emoji>?, animateEmojis: Boolean) {
|
||||
|
@ -324,6 +326,7 @@ internal class StatusNotificationViewHolder(
|
|||
if (statusViewData.isExpanded) View.GONE else View.VISIBLE
|
||||
}
|
||||
setupContentAndSpoiler(listener, statusViewData, animateEmojis)
|
||||
setupReplyInfo(statusViewData)
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -388,6 +391,26 @@ internal class StatusNotificationViewHolder(
|
|||
binding.notificationContentWarningDescription.text = emojifiedContentWarning
|
||||
}
|
||||
|
||||
private fun setupReplyInfo(statusViewData: StatusViewData.Concrete) {
|
||||
val replyToAccountAcct = statusViewData.inReplyToAccountAcct
|
||||
if (replyToAccountAcct == null) {
|
||||
binding.notificationReplyInfo.visibility = View.GONE
|
||||
return
|
||||
}
|
||||
val context = binding.notificationReplyInfo.context
|
||||
if (!statusViewData.parentVisible)
|
||||
binding.notificationReplyInfo.paintFlags = binding.notificationReplyInfo.paintFlags or Paint.STRIKE_THRU_TEXT_FLAG
|
||||
else
|
||||
binding.notificationReplyInfo.paintFlags = binding.notificationReplyInfo.paintFlags and Paint.STRIKE_THRU_TEXT_FLAG.inv()
|
||||
binding.notificationReplyInfo.text = context.getString(R.string.status_replied_to_format, replyToAccountAcct)
|
||||
binding.notificationReplyInfo.setOnClickListener {
|
||||
if (bindingAdapterPosition != RecyclerView.NO_POSITION) {
|
||||
notificationActionListener.onViewReplyTo(bindingAdapterPosition)
|
||||
}
|
||||
}
|
||||
binding.notificationReplyInfo.visibility = View.VISIBLE
|
||||
}
|
||||
|
||||
companion object {
|
||||
private val COLLAPSE_INPUT_FILTER = arrayOf<InputFilter>(SmartLengthInputFilter)
|
||||
private val NO_INPUT_FILTER = arrayOfNulls<InputFilter>(0)
|
||||
|
|
|
@ -92,6 +92,23 @@
|
|||
app:layout_constraintTop_toTopOf="@+id/status_username"
|
||||
tools:text="13:37" />
|
||||
|
||||
<TextView
|
||||
android:id="@+id/notification_reply_info"
|
||||
android:layout_width="0dp"
|
||||
android:layout_height="wrap_content"
|
||||
android:drawablePadding="6dp"
|
||||
android:layout_marginTop="2dp"
|
||||
android:layout_marginStart="14dp"
|
||||
android:ellipsize="end"
|
||||
android:maxLines="1"
|
||||
android:textColor="?android:textColorTertiary"
|
||||
android:textSize="?attr/status_text_medium"
|
||||
app:layout_constraintEnd_toEndOf="parent"
|
||||
app:layout_constraintStart_toEndOf="@id/notification_status_avatar"
|
||||
app:layout_constraintTop_toBottomOf="@id/status_display_name"
|
||||
app:drawableStartCompat="@drawable/ic_reply_18dp"
|
||||
tools:text="Reply to a1batross" />
|
||||
|
||||
<com.keylesspalace.tusky.view.ClickableSpanTextView
|
||||
android:id="@+id/notification_content_warning_description"
|
||||
android:layout_width="0dp"
|
||||
|
@ -103,7 +120,7 @@
|
|||
android:textSize="?attr/status_text_medium"
|
||||
app:layout_constraintEnd_toEndOf="parent"
|
||||
app:layout_constraintStart_toEndOf="@id/notification_status_avatar"
|
||||
app:layout_constraintTop_toBottomOf="@id/status_display_name"
|
||||
app:layout_constraintTop_toBottomOf="@id/notification_reply_info"
|
||||
tools:text="Example CW text" />
|
||||
|
||||
<Button
|
||||
|
|
Loading…
Reference in New Issue