diff --git a/app/src/main/java/com/nextcloud/talk/ui/dialog/ShowReactionsDialog.kt b/app/src/main/java/com/nextcloud/talk/ui/dialog/ShowReactionsDialog.kt index a04f71e29..bdb6098cd 100644 --- a/app/src/main/java/com/nextcloud/talk/ui/dialog/ShowReactionsDialog.kt +++ b/app/src/main/java/com/nextcloud/talk/ui/dialog/ShowReactionsDialog.kt @@ -29,27 +29,26 @@ package com.nextcloud.talk.ui.dialog import android.app.Activity import android.os.Bundle import android.util.Log -import android.view.Gravity import android.view.ViewGroup -import android.widget.LinearLayout import androidx.annotation.NonNull import androidx.recyclerview.widget.LinearLayoutManager import autodagger.AutoInjector import com.google.android.material.bottomsheet.BottomSheetDialog +import com.google.android.material.tabs.TabLayout +import com.google.android.material.tabs.TabLayout.OnTabSelectedListener import com.nextcloud.talk.adapters.ReactionItem import com.nextcloud.talk.adapters.ReactionItemClickListener import com.nextcloud.talk.adapters.ReactionsAdapter import com.nextcloud.talk.api.NcApi import com.nextcloud.talk.application.NextcloudTalkApplication import com.nextcloud.talk.databinding.DialogMessageReactionsBinding +import com.nextcloud.talk.databinding.ItemReactionsTabBinding import com.nextcloud.talk.models.database.UserEntity import com.nextcloud.talk.models.json.chat.ChatMessage import com.nextcloud.talk.models.json.conversations.Conversation import com.nextcloud.talk.models.json.generic.GenericOverall import com.nextcloud.talk.models.json.reactions.ReactionsOverall import com.nextcloud.talk.utils.ApiUtils -import com.nextcloud.talk.utils.DisplayUtils -import com.vanniktech.emoji.EmojiTextView import io.reactivex.Observer import io.reactivex.android.schedulers.AndroidSchedulers import io.reactivex.disposables.Disposable @@ -57,7 +56,7 @@ import io.reactivex.schedulers.Schedulers @AutoInjector(NextcloudTalkApplication::class) class ShowReactionsDialog( - private val activity: Activity, + activity: Activity, private val currentConversation: Conversation?, private val chatMessage: ChatMessage, private val userEntity: UserEntity?, @@ -89,31 +88,34 @@ class ShowReactionsDialog( firstEmoji = emoji } - val emojiView = EmojiTextView(activity) - emojiView.setEmojiSize(DisplayUtils.convertDpToPixel(EMOJI_SIZE, context).toInt()) - emojiView.text = emoji + val tab: TabLayout.Tab = binding.emojiReactionsTabs.newTab() // Create a new Tab names "First Tab" - val params = LinearLayout.LayoutParams( - ViewGroup.LayoutParams.WRAP_CONTENT, - ViewGroup.LayoutParams.WRAP_CONTENT - ) - params.setMargins( - DisplayUtils.convertDpToPixel(EMOJI_MARGIN, context).toInt(), - 0, - DisplayUtils.convertDpToPixel(EMOJI_MARGIN, context).toInt(), - 0 - ) - params.gravity = Gravity.CENTER - emojiView.layoutParams = params + val itemBinding = ItemReactionsTabBinding.inflate(layoutInflater) + itemBinding.reactionTab.tag = emoji + itemBinding.reactionIcon.text = emoji + itemBinding.reactionCount.text = amount.toString() + tab.customView = itemBinding.root - binding.emojiReactionsWrapper.addView(emojiView) - - emojiView.setOnClickListener { - updateParticipantsForEmoji(chatMessage, emoji) - // emojiView.setBackgroundColor(context.resources.getColor(R.color.colorPrimary)) - } + binding.emojiReactionsTabs.addTab(tab) } updateParticipantsForEmoji(chatMessage, firstEmoji) + + binding.emojiReactionsTabs.getTabAt(0)?.select() + + binding.emojiReactionsTabs.addOnTabSelectedListener(object : OnTabSelectedListener { + override fun onTabSelected(tab: TabLayout.Tab) { + // called when a tab is reselected + updateParticipantsForEmoji(chatMessage, tab.customView?.tag as String?) + } + + override fun onTabUnselected(tab: TabLayout.Tab) { + // called when a tab is reselected + } + + override fun onTabReselected(tab: TabLayout.Tab) { + // called when a tab is reselected + } + }) } adapter?.notifyDataSetChanged() } @@ -162,9 +164,7 @@ class ShowReactionsDialog( } override fun onClick(reactionItem: ReactionItem) { - Log.d(TAG, "onClick(reactionItem: ReactionItem): " + reactionItem.reaction) - - if (reactionItem.reactionVoter.actorId.equals(userEntity!!.userId)){ + if (reactionItem.reactionVoter.actorId?.equals(userEntity?.userId) == true) { deleteReaction(chatMessage, reactionItem.reaction!!) } @@ -205,7 +205,5 @@ class ShowReactionsDialog( companion object { const val TAG = "ShowReactionsDialog" - const val EMOJI_MARGIN: Float = 8F - const val EMOJI_SIZE: Float = 30F } } diff --git a/app/src/main/res/layout/dialog_message_reactions.xml b/app/src/main/res/layout/dialog_message_reactions.xml index 16c893a5b..ba9bfa84c 100644 --- a/app/src/main/res/layout/dialog_message_reactions.xml +++ b/app/src/main/res/layout/dialog_message_reactions.xml @@ -21,11 +21,11 @@ --> + android:orientation="vertical"> - - - - - + diff --git a/app/src/main/res/layout/item_reactions_tab.xml b/app/src/main/res/layout/item_reactions_tab.xml new file mode 100644 index 000000000..0de7d96c6 --- /dev/null +++ b/app/src/main/res/layout/item_reactions_tab.xml @@ -0,0 +1,45 @@ + + + + + + + + +