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