浏览代码

open reactions menu when long click on emojis in message

Signed-off-by: Marcel Hibbe <dev@mhibbe.de>
Marcel Hibbe 3 年之前
父节点
当前提交
3d4f3eeb54

+ 5 - 2
app/src/main/java/com/nextcloud/talk/adapters/messages/IncomingLocationMessageViewHolder.kt

@@ -102,11 +102,14 @@ class IncomingLocationMessageViewHolder(incomingView: View, payload: Any) : Mess
         // geo-location
         setLocationDataOnMessageItem(message)
 
-        Reaction().showReactions(message, binding.reactions, context!!, false)
-
+        Reaction().showReactions(message, binding.reactions, context!!, true)
         binding.reactions.reactionsEmojiWrapper.setOnClickListener {
             reactionsInterface.onClickReactions(message)
         }
+        binding.reactions.reactionsEmojiWrapper.setOnLongClickListener { l: View? ->
+            reactionsInterface.onLongClickReactions(message)
+            true
+        }
     }
 
     private fun setAvatarAndAuthorOnMessageItem(message: ChatMessage) {

+ 5 - 2
app/src/main/java/com/nextcloud/talk/adapters/messages/IncomingVoiceMessageViewHolder.kt

@@ -142,11 +142,14 @@ class IncomingVoiceMessageViewHolder(incomingView: View, payload: Any) : Message
             }
         })
 
-        Reaction().showReactions(message, binding.reactions, context!!, false)
-
+        Reaction().showReactions(message, binding.reactions, context!!, true)
         binding.reactions.reactionsEmojiWrapper.setOnClickListener {
             reactionsInterface.onClickReactions(message)
         }
+        binding.reactions.reactionsEmojiWrapper.setOnLongClickListener { l: View? ->
+            reactionsInterface.onLongClickReactions(message)
+            true
+        }
     }
 
     private fun updateDownloadState(message: ChatMessage) {

+ 5 - 2
app/src/main/java/com/nextcloud/talk/adapters/messages/MagicIncomingTextMessageViewHolder.kt

@@ -122,11 +122,14 @@ class MagicIncomingTextMessageViewHolder(itemView: View, payload: Any) : Message
 
         itemView.setTag(MessageSwipeCallback.REPLYABLE_VIEW_TAG, message.isReplyable)
 
-        Reaction().showReactions(message, binding.reactions, context!!, false)
-
+        Reaction().showReactions(message, binding.reactions, context!!, true)
         binding.reactions.reactionsEmojiWrapper.setOnClickListener {
             reactionsInterface.onClickReactions(message)
         }
+        binding.reactions.reactionsEmojiWrapper.setOnLongClickListener { l: View? ->
+            reactionsInterface.onLongClickReactions(message)
+            true
+        }
     }
 
     private fun processAuthor(message: ChatMessage) {

+ 4 - 1
app/src/main/java/com/nextcloud/talk/adapters/messages/MagicOutcomingTextMessageViewHolder.kt

@@ -122,10 +122,13 @@ class MagicOutcomingTextMessageViewHolder(itemView: View) : OutcomingTextMessage
         itemView.setTag(MessageSwipeCallback.REPLYABLE_VIEW_TAG, message.isReplyable)
 
         Reaction().showReactions(message, binding.reactions, context!!, true)
-
         binding.reactions.reactionsEmojiWrapper.setOnClickListener {
             reactionsInterface.onClickReactions(message)
         }
+        binding.reactions.reactionsEmojiWrapper.setOnLongClickListener { l: View? ->
+            reactionsInterface.onLongClickReactions(message)
+            true
+        }
     }
 
     private fun processParentMessage(message: ChatMessage) {

+ 4 - 1
app/src/main/java/com/nextcloud/talk/adapters/messages/MagicPreviewMessageViewHolder.java

@@ -260,10 +260,13 @@ public abstract class MagicPreviewMessageViewHolder extends MessageHolders.Incom
 
         reactionsBinding = getReactionsBinding();
         new Reaction().showReactions(message, reactionsBinding, context, false);
-
         reactionsBinding.reactionsEmojiWrapper.setOnClickListener(l -> {
             reactionsInterface.onClickReactions(message);
         });
+        reactionsBinding.reactionsEmojiWrapper.setOnLongClickListener(l -> {
+            reactionsInterface.onLongClickReactions(message);
+            return true;
+        });
     }
 
     private Drawable getDrawableFromContactDetails(Context context, String base64) {

+ 4 - 1
app/src/main/java/com/nextcloud/talk/adapters/messages/OutcomingLocationMessageViewHolder.kt

@@ -115,10 +115,13 @@ class OutcomingLocationMessageViewHolder(incomingView: View) : MessageHolders
         setLocationDataOnMessageItem(message)
 
         Reaction().showReactions(message, binding.reactions, context!!, true)
-
         binding.reactions.reactionsEmojiWrapper.setOnClickListener {
             reactionsInterface.onClickReactions(message)
         }
+        binding.reactions.reactionsEmojiWrapper.setOnLongClickListener { l: View? ->
+            reactionsInterface.onLongClickReactions(message)
+            true
+        }
     }
 
     @SuppressLint("SetJavaScriptEnabled", "ClickableViewAccessibility")

+ 4 - 1
app/src/main/java/com/nextcloud/talk/adapters/messages/OutcomingVoiceMessageViewHolder.kt

@@ -132,10 +132,13 @@ class OutcomingVoiceMessageViewHolder(outcomingView: View) : MessageHolders
         binding.checkMark.setContentDescription(readStatusContentDescriptionString)
 
         Reaction().showReactions(message, binding.reactions, context!!, true)
-
         binding.reactions.reactionsEmojiWrapper.setOnClickListener {
             reactionsInterface.onClickReactions(message)
         }
+        binding.reactions.reactionsEmojiWrapper.setOnLongClickListener { l: View? ->
+            reactionsInterface.onLongClickReactions(message)
+            true
+        }
     }
 
     private fun handleResetVoiceMessageState(message: ChatMessage) {

+ 1 - 1
app/src/main/java/com/nextcloud/talk/adapters/messages/PreviewMessageInterface.kt

@@ -4,4 +4,4 @@ import com.nextcloud.talk.models.json.chat.ChatMessage
 
 interface PreviewMessageInterface {
     fun onPreviewMessageLongClick(chatMessage: ChatMessage)
-}
+}

+ 0 - 1
app/src/main/java/com/nextcloud/talk/adapters/messages/Reaction.kt

@@ -73,7 +73,6 @@ class Reaction {
                 reactionAmount.layoutParams = params
                 binding.reactionsEmojiWrapper.addView(reactionAmount)
 
-
                 remainingEmojisToDisplay--
                 if (remainingEmojisToDisplay == 0 && showInfoAboutMoreEmojis) {
                     val infoAboutMoreEmojis = TextView(context)

+ 1 - 0
app/src/main/java/com/nextcloud/talk/adapters/messages/ReactionsInterface.kt

@@ -4,4 +4,5 @@ import com.nextcloud.talk.models.json.chat.ChatMessage
 
 interface ReactionsInterface {
     fun onClickReactions(chatMessage: ChatMessage)
+    fun onLongClickReactions(chatMessage: ChatMessage)
 }

+ 16 - 12
app/src/main/java/com/nextcloud/talk/controllers/ChatController.kt

@@ -924,18 +924,6 @@ class ChatController(args: Bundle) :
         }
     }
 
-    override fun onClickReactions(chatMessage: ChatMessage) {
-        activity?.let {
-            ShowReactionsDialog(
-                activity!!,
-                currentConversation,
-                chatMessage,
-                conversationUser,
-                ncApi!!
-            ).show()
-        }
-    }
-
     @SuppressLint("LongLogTag")
     private fun downloadFileToCache(message: ChatMessage) {
         message.isDownloadingVoiceMessage = true
@@ -2432,6 +2420,22 @@ class ChatController(args: Bundle) :
         }
     }
 
+    override fun onClickReactions(chatMessage: ChatMessage) {
+        activity?.let {
+            ShowReactionsDialog(
+                activity!!,
+                currentConversation,
+                chatMessage,
+                conversationUser,
+                ncApi!!
+            ).show()
+        }
+    }
+
+    override fun onLongClickReactions(chatMessage: ChatMessage) {
+        openMessageActionsDialog(chatMessage)
+    }
+
     override fun onMessageViewLongClick(view: View?, message: IMessage?) {
         openMessageActionsDialog(message)
     }