mirror of
https://github.com/nextcloud/talk-android
synced 2025-07-16 17:25:01 +01:00
open dialog when clicked on reactions (WIP)
Signed-off-by: Marcel Hibbe <dev@mhibbe.de>
This commit is contained in:
parent
382f17ca55
commit
d845422097
@ -42,10 +42,6 @@ import android.widget.TextView
|
|||||||
import androidx.core.content.ContextCompat
|
import androidx.core.content.ContextCompat
|
||||||
import androidx.core.content.res.ResourcesCompat
|
import androidx.core.content.res.ResourcesCompat
|
||||||
import androidx.core.view.ViewCompat
|
import androidx.core.view.ViewCompat
|
||||||
import androidx.core.view.children
|
|
||||||
import androidx.core.view.get
|
|
||||||
import androidx.core.view.marginEnd
|
|
||||||
import androidx.core.view.updateLayoutParams
|
|
||||||
import autodagger.AutoInjector
|
import autodagger.AutoInjector
|
||||||
import coil.load
|
import coil.load
|
||||||
import com.amulyakhare.textdrawable.TextDrawable
|
import com.amulyakhare.textdrawable.TextDrawable
|
||||||
@ -79,6 +75,8 @@ class MagicIncomingTextMessageViewHolder(itemView: View, payload: Any) : Message
|
|||||||
@Inject
|
@Inject
|
||||||
var appPreferences: AppPreferences? = null
|
var appPreferences: AppPreferences? = null
|
||||||
|
|
||||||
|
lateinit var reactionsInterface: ReactionsInterface
|
||||||
|
|
||||||
override fun onBind(message: ChatMessage) {
|
override fun onBind(message: ChatMessage) {
|
||||||
super.onBind(message)
|
super.onBind(message)
|
||||||
sharedApplication!!.componentApplication.inject(this)
|
sharedApplication!!.componentApplication.inject(this)
|
||||||
@ -158,6 +156,9 @@ class MagicIncomingTextMessageViewHolder(itemView: View, payload: Any) : Message
|
|||||||
break
|
break
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
binding.reactionsEmojiWrapper.setOnClickListener {
|
||||||
|
reactionsInterface.onClickReactions(message)
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -300,6 +301,10 @@ class MagicIncomingTextMessageViewHolder(itemView: View, payload: Any) : Message
|
|||||||
return messageStringInternal
|
return messageStringInternal
|
||||||
}
|
}
|
||||||
|
|
||||||
|
fun assignAdapter(reactionsInterface: ReactionsInterface) {
|
||||||
|
this.reactionsInterface = reactionsInterface
|
||||||
|
}
|
||||||
|
|
||||||
companion object {
|
companion object {
|
||||||
const val TEXT_SIZE_MULTIPLIER = 2.5
|
const val TEXT_SIZE_MULTIPLIER = 2.5
|
||||||
const val MAX_EMOJIS_TO_DISPLAY = 4
|
const val MAX_EMOJIS_TO_DISPLAY = 4
|
||||||
|
@ -0,0 +1,7 @@
|
|||||||
|
package com.nextcloud.talk.adapters.messages
|
||||||
|
|
||||||
|
import com.nextcloud.talk.models.json.chat.ChatMessage
|
||||||
|
|
||||||
|
interface ReactionsInterface {
|
||||||
|
fun onClickReactions(message: ChatMessage)
|
||||||
|
}
|
@ -54,5 +54,9 @@ public class TalkMessagesListAdapter<M extends IMessage> extends MessagesListAda
|
|||||||
} else if (holder instanceof OutcomingVoiceMessageViewHolder) {
|
} else if (holder instanceof OutcomingVoiceMessageViewHolder) {
|
||||||
((OutcomingVoiceMessageViewHolder) holder).assignAdapter(chatController);
|
((OutcomingVoiceMessageViewHolder) holder).assignAdapter(chatController);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (holder instanceof MagicIncomingTextMessageViewHolder) {
|
||||||
|
((MagicIncomingTextMessageViewHolder) holder).assignAdapter(chatController);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -110,6 +110,7 @@ import com.nextcloud.talk.adapters.messages.MagicUnreadNoticeMessageViewHolder
|
|||||||
import com.nextcloud.talk.adapters.messages.OutcomingLocationMessageViewHolder
|
import com.nextcloud.talk.adapters.messages.OutcomingLocationMessageViewHolder
|
||||||
import com.nextcloud.talk.adapters.messages.OutcomingPreviewMessageViewHolder
|
import com.nextcloud.talk.adapters.messages.OutcomingPreviewMessageViewHolder
|
||||||
import com.nextcloud.talk.adapters.messages.OutcomingVoiceMessageViewHolder
|
import com.nextcloud.talk.adapters.messages.OutcomingVoiceMessageViewHolder
|
||||||
|
import com.nextcloud.talk.adapters.messages.ReactionsInterface
|
||||||
import com.nextcloud.talk.adapters.messages.TalkMessagesListAdapter
|
import com.nextcloud.talk.adapters.messages.TalkMessagesListAdapter
|
||||||
import com.nextcloud.talk.adapters.messages.VoiceMessageInterface
|
import com.nextcloud.talk.adapters.messages.VoiceMessageInterface
|
||||||
import com.nextcloud.talk.api.NcApi
|
import com.nextcloud.talk.api.NcApi
|
||||||
@ -139,6 +140,7 @@ import com.nextcloud.talk.presenters.MentionAutocompletePresenter
|
|||||||
import com.nextcloud.talk.ui.bottom.sheet.ProfileBottomSheet
|
import com.nextcloud.talk.ui.bottom.sheet.ProfileBottomSheet
|
||||||
import com.nextcloud.talk.ui.dialog.AttachmentDialog
|
import com.nextcloud.talk.ui.dialog.AttachmentDialog
|
||||||
import com.nextcloud.talk.ui.dialog.MessageActionsDialog
|
import com.nextcloud.talk.ui.dialog.MessageActionsDialog
|
||||||
|
import com.nextcloud.talk.ui.dialog.ShowReactionsDialog
|
||||||
import com.nextcloud.talk.ui.recyclerview.MessageSwipeActions
|
import com.nextcloud.talk.ui.recyclerview.MessageSwipeActions
|
||||||
import com.nextcloud.talk.ui.recyclerview.MessageSwipeCallback
|
import com.nextcloud.talk.ui.recyclerview.MessageSwipeCallback
|
||||||
import com.nextcloud.talk.utils.ApiUtils
|
import com.nextcloud.talk.utils.ApiUtils
|
||||||
@ -203,7 +205,8 @@ class ChatController(args: Bundle) :
|
|||||||
MessagesListAdapter.Formatter<Date>,
|
MessagesListAdapter.Formatter<Date>,
|
||||||
MessagesListAdapter.OnMessageViewLongClickListener<IMessage>,
|
MessagesListAdapter.OnMessageViewLongClickListener<IMessage>,
|
||||||
ContentChecker<ChatMessage>,
|
ContentChecker<ChatMessage>,
|
||||||
VoiceMessageInterface {
|
VoiceMessageInterface,
|
||||||
|
ReactionsInterface {
|
||||||
|
|
||||||
private val binding: ControllerChatBinding by viewBinding(ControllerChatBinding::bind)
|
private val binding: ControllerChatBinding by viewBinding(ControllerChatBinding::bind)
|
||||||
|
|
||||||
@ -919,6 +922,16 @@ class ChatController(args: Bundle) :
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
override fun onClickReactions(chatMessage: ChatMessage) {
|
||||||
|
Log.d(TAG, "onClickReactions" + chatMessage)
|
||||||
|
|
||||||
|
activity?.let {
|
||||||
|
ShowReactionsDialog(
|
||||||
|
activity!!
|
||||||
|
).show()
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
@SuppressLint("LongLogTag")
|
@SuppressLint("LongLogTag")
|
||||||
private fun downloadFileToCache(message: ChatMessage) {
|
private fun downloadFileToCache(message: ChatMessage) {
|
||||||
message.isDownloadingVoiceMessage = true
|
message.isDownloadingVoiceMessage = true
|
||||||
|
@ -0,0 +1,23 @@
|
|||||||
|
package com.nextcloud.talk.ui.dialog
|
||||||
|
|
||||||
|
import android.app.Activity
|
||||||
|
import android.os.Bundle
|
||||||
|
import android.view.ViewGroup
|
||||||
|
import com.google.android.material.bottomsheet.BottomSheetDialog
|
||||||
|
import com.nextcloud.talk.databinding.DialogMessageActionsBinding
|
||||||
|
import com.nextcloud.talk.databinding.DialogMessageReactionsBinding
|
||||||
|
|
||||||
|
class ShowReactionsDialog(
|
||||||
|
val activity: Activity
|
||||||
|
) : BottomSheetDialog(activity) {
|
||||||
|
|
||||||
|
private lateinit var dialogMessageReactionsBinding: DialogMessageReactionsBinding
|
||||||
|
|
||||||
|
override fun onCreate(savedInstanceState: Bundle?) {
|
||||||
|
super.onCreate(savedInstanceState)
|
||||||
|
dialogMessageReactionsBinding = DialogMessageReactionsBinding.inflate(layoutInflater)
|
||||||
|
setContentView(dialogMessageReactionsBinding.root)
|
||||||
|
window?.setLayout(ViewGroup.LayoutParams.MATCH_PARENT, ViewGroup.LayoutParams.WRAP_CONTENT)
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
55
app/src/main/res/layout/dialog_message_reactions.xml
Normal file
55
app/src/main/res/layout/dialog_message_reactions.xml
Normal file
@ -0,0 +1,55 @@
|
|||||||
|
<?xml version="1.0" encoding="utf-8"?><!--
|
||||||
|
~ Nextcloud Talk application
|
||||||
|
~
|
||||||
|
~ @author Andy Scherzinger
|
||||||
|
~ Copyright (C) 2022 Andy Scherzinger <info@andy-scherzinger.de>
|
||||||
|
~
|
||||||
|
~ This program is free software: you can redistribute it and/or modify
|
||||||
|
~ it under the terms of the GNU General Public License as published by
|
||||||
|
~ the Free Software Foundation, either version 3 of the License, or
|
||||||
|
~ at your option) any later version.
|
||||||
|
~
|
||||||
|
~ This program is distributed in the hope that it will be useful,
|
||||||
|
~ but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
|
~ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||||
|
~ GNU General Public License for more details.
|
||||||
|
~
|
||||||
|
~ You should have received a copy of the GNU General Public License
|
||||||
|
~ along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||||
|
-->
|
||||||
|
|
||||||
|
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
|
||||||
|
xmlns:app="http://schemas.android.com/apk/res-auto"
|
||||||
|
xmlns:tools="http://schemas.android.com/tools"
|
||||||
|
android:layout_width="match_parent"
|
||||||
|
android:layout_height="wrap_content"
|
||||||
|
android:background="@color/bg_bottom_sheet"
|
||||||
|
android:orientation="vertical"
|
||||||
|
android:paddingStart="@dimen/standard_padding"
|
||||||
|
android:paddingEnd="@dimen/standard_padding"
|
||||||
|
android:paddingBottom="@dimen/standard_half_padding">
|
||||||
|
|
||||||
|
<LinearLayout
|
||||||
|
android:id="@+id/menu_copy_message"
|
||||||
|
android:layout_width="match_parent"
|
||||||
|
android:layout_height="@dimen/bottom_sheet_item_height"
|
||||||
|
android:background="?android:attr/selectableItemBackground"
|
||||||
|
android:gravity="center_vertical"
|
||||||
|
android:orientation="horizontal"
|
||||||
|
tools:ignore="UseCompoundDrawables">
|
||||||
|
|
||||||
|
<androidx.appcompat.widget.AppCompatTextView
|
||||||
|
android:id="@+id/test"
|
||||||
|
android:layout_width="match_parent"
|
||||||
|
android:layout_height="wrap_content"
|
||||||
|
android:layout_gravity="start|center_vertical"
|
||||||
|
android:paddingStart="@dimen/standard_double_padding"
|
||||||
|
android:paddingEnd="@dimen/zero"
|
||||||
|
android:text="just a test"
|
||||||
|
android:textAlignment="viewStart"
|
||||||
|
android:textColor="@color/high_emphasis_text"
|
||||||
|
android:textSize="@dimen/bottom_sheet_text_size" />
|
||||||
|
|
||||||
|
</LinearLayout>
|
||||||
|
|
||||||
|
</LinearLayout>
|
Loading…
Reference in New Issue
Block a user