From 667a4a10c493d43e49c31acf7fcf7ea15bc00cef Mon Sep 17 00:00:00 2001 From: Janne Koschinski <janne@kuschku.de> Date: Sun, 14 Oct 2018 16:45:31 +0200 Subject: [PATCH] Autocomplete user names by clicking on sender avatars --- .../ui/chat/messages/MessageAdapter.kt | 14 ++++++++++++++ .../ui/chat/messages/MessageListFragment.kt | 7 +++++++ 2 files changed, 21 insertions(+) diff --git a/app/src/main/java/de/kuschku/quasseldroid/ui/chat/messages/MessageAdapter.kt b/app/src/main/java/de/kuschku/quasseldroid/ui/chat/messages/MessageAdapter.kt index c27834969..515df0a60 100644 --- a/app/src/main/java/de/kuschku/quasseldroid/ui/chat/messages/MessageAdapter.kt +++ b/app/src/main/java/de/kuschku/quasseldroid/ui/chat/messages/MessageAdapter.kt @@ -59,6 +59,7 @@ class MessageAdapter @Inject constructor( private var clickListener: ((FormattedMessage) -> Unit)? = null private var longClickListener: ((FormattedMessage) -> Unit)? = null private var doubleClickListener: ((QuasselDatabase.MessageData) -> Unit)? = null + private var senderIconClickListener: ((QuasselDatabase.MessageData) -> Unit)? = null private var expansionListener: ((QuasselDatabase.MessageData) -> Unit)? = null private var urlLongClickListener: ((TextView, String) -> Boolean)? = null @@ -74,6 +75,10 @@ class MessageAdapter @Inject constructor( this.doubleClickListener = listener } + fun setOnSenderIconClickListener(listener: ((QuasselDatabase.MessageData) -> Unit)?) { + this.senderIconClickListener = listener + } + fun setOnExpansionListener(listener: ((QuasselDatabase.MessageData) -> Unit)?) { this.expansionListener = listener } @@ -156,6 +161,7 @@ class MessageAdapter @Inject constructor( clickListener, longClickListener, doubleClickListener, + senderIconClickListener, expansionListener, movementMethod ) @@ -175,6 +181,7 @@ class MessageAdapter @Inject constructor( clickListener: ((FormattedMessage) -> Unit)? = null, longClickListener: ((FormattedMessage) -> Unit)? = null, doubleClickListener: ((QuasselDatabase.MessageData) -> Unit)? = null, + senderIconClickListener: ((QuasselDatabase.MessageData) -> Unit)? = null, expansionListener: ((QuasselDatabase.MessageData) -> Unit)? = null, movementMethod: BetterLinkMovementMethod ) : RecyclerView.ViewHolder(itemView) { @@ -240,6 +247,12 @@ class MessageAdapter @Inject constructor( } } + private val localSenderIconClickListener = View.OnClickListener { + original?.let { + senderIconClickListener?.invoke(it) + } + } + init { ButterKnife.bind(this, itemView) content?.movementMethod = movementMethod @@ -250,6 +263,7 @@ class MessageAdapter @Inject constructor( messageContainer?.setOnTouchListener(DoubleClickHelper(itemView).apply { this.doubleClickListener = localDoubleClickListener }) + avatar?.setOnClickListener(localSenderIconClickListener) } fun bind(message: FormattedMessage, original: QuasselDatabase.MessageData, diff --git a/app/src/main/java/de/kuschku/quasseldroid/ui/chat/messages/MessageListFragment.kt b/app/src/main/java/de/kuschku/quasseldroid/ui/chat/messages/MessageListFragment.kt index 5713c6140..4d397b6aa 100644 --- a/app/src/main/java/de/kuschku/quasseldroid/ui/chat/messages/MessageListFragment.kt +++ b/app/src/main/java/de/kuschku/quasseldroid/ui/chat/messages/MessageListFragment.kt @@ -244,6 +244,13 @@ class MessageListFragment : ServiceBoundFragment() { autoCompleteSuffix = ": " ) } + adapter.setOnSenderIconClickListener { msg -> + ChatActivity.launch( + requireContext(), + autoCompleteText = HostmaskHelper.nick(msg.sender), + autoCompleteSuffix = ": " + ) + } adapter.setOnUrlLongClickListener(LinkLongClickMenuHelper()) adapter.setOnExpansionListener { (messageId) -> -- GitLab