diff options
author | Andy Scherzinger <info@andy-scherzinger.de> | 2022-04-07 18:47:43 +0300 |
---|---|---|
committer | Marcel Hibbe <dev@mhibbe.de> | 2022-04-08 10:21:13 +0300 |
commit | 6bda280d154088f29c4107bd732315d75cdcca71 (patch) | |
tree | ca1a6f1ae57adee3580c483de4dda5705dc0aff1 /app/src/main | |
parent | 357c67db838e068ffa038483f7d3f9be53c4a0ab (diff) |
Add "all" tab for reactions
Signed-off-by: Andy Scherzinger <info@andy-scherzinger.de>
Diffstat (limited to 'app/src/main')
-rw-r--r-- | app/src/main/java/com/nextcloud/talk/ui/dialog/ShowReactionsDialog.kt | 35 | ||||
-rw-r--r-- | app/src/main/res/layout/item_reactions_tab.xml | 7 | ||||
-rw-r--r-- | app/src/main/res/values/strings.xml | 2 |
3 files changed, 32 insertions, 12 deletions
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 5b8000c2c..356693e72 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,6 +29,7 @@ package com.nextcloud.talk.ui.dialog import android.app.Activity import android.os.Bundle import android.util.Log +import android.view.View import android.view.ViewGroup import androidx.annotation.NonNull import androidx.recyclerview.widget.LinearLayoutManager @@ -36,6 +37,7 @@ 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.R import com.nextcloud.talk.adapters.ReactionItem import com.nextcloud.talk.adapters.ReactionItemClickListener import com.nextcloud.talk.adapters.ReactionsAdapter @@ -47,12 +49,14 @@ 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.ReactionVoter import com.nextcloud.talk.models.json.reactions.ReactionsOverall import com.nextcloud.talk.utils.ApiUtils import io.reactivex.Observer import io.reactivex.android.schedulers.AndroidSchedulers import io.reactivex.disposables.Disposable import io.reactivex.schedulers.Schedulers +import java.util.HashMap @AutoInjector(NextcloudTalkApplication::class) class ShowReactionsDialog( @@ -67,6 +71,8 @@ class ShowReactionsDialog( private var adapter: ReactionsAdapter? = null + private val TAG_ALL: String? = null + override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) binding = DialogMessageReactionsBinding.inflate(layoutInflater) @@ -81,13 +87,9 @@ class ShowReactionsDialog( private fun initEmojiReactions() { adapter?.list?.clear() if (chatMessage.reactions != null && chatMessage.reactions.isNotEmpty()) { - - var firstEmoji = "" + var reactionsTotal = 0 for ((emoji, amount) in chatMessage.reactions) { - if (firstEmoji.isEmpty()) { - firstEmoji = emoji - } - + reactionsTotal = reactionsTotal.plus(amount as Int) val tab: TabLayout.Tab = binding.emojiReactionsTabs.newTab() // Create a new Tab names "First Tab" val itemBinding = ItemReactionsTabBinding.inflate(layoutInflater) @@ -98,7 +100,6 @@ class ShowReactionsDialog( binding.emojiReactionsTabs.addTab(tab) } - updateParticipantsForEmoji(chatMessage, firstEmoji) binding.emojiReactionsTabs.getTabAt(0)?.select() @@ -116,6 +117,18 @@ class ShowReactionsDialog( // called when a tab is reselected } }) + + val tab: TabLayout.Tab = binding.emojiReactionsTabs.newTab() // Create a new Tab names "First Tab" + + val itemBinding = ItemReactionsTabBinding.inflate(layoutInflater) + itemBinding.reactionTab.tag = TAG_ALL + itemBinding.reactionIcon.text = context.getString(R.string.reactions_tab_all) + itemBinding.reactionCount.text = reactionsTotal.toString() + tab.customView = itemBinding.root + + binding.emojiReactionsTabs.addTab(tab, 0) + + updateParticipantsForEmoji(chatMessage, TAG_ALL) } adapter?.notifyDataSetChanged() } @@ -144,9 +157,13 @@ class ShowReactionsDialog( override fun onNext(@NonNull reactionsOverall: ReactionsOverall) { val reactionVoters: ArrayList<ReactionItem> = ArrayList() if (reactionsOverall.ocs?.data != null) { - for (reactionVoter in reactionsOverall.ocs?.data!![emoji]!!) { - reactionVoters.add(ReactionItem(reactionVoter, emoji)) + val map = reactionsOverall.ocs?.data + for (key in map!!.keys) { + for (reactionVoter in reactionsOverall.ocs?.data!![key]!!) { + reactionVoters.add(ReactionItem(reactionVoter, key)) + } } + adapter?.list?.addAll(reactionVoters) adapter?.notifyDataSetChanged() } else { diff --git a/app/src/main/res/layout/item_reactions_tab.xml b/app/src/main/res/layout/item_reactions_tab.xml index 0de7d96c6..1e813ed3c 100644 --- a/app/src/main/res/layout/item_reactions_tab.xml +++ b/app/src/main/res/layout/item_reactions_tab.xml @@ -21,17 +21,18 @@ <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:id="@+id/reaction_tab" - android:layout_width="wrap_content" - android:layout_height="wrap_content"> + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:gravity="center"> <androidx.emoji.widget.EmojiTextView android:id="@+id/reaction_icon" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_marginEnd="8dp" - android:textColor="@color/textColorMaxContrast" android:textIsSelectable="false" android:textSize="14sp" + android:textStyle="bold" tools:text="@string/default_emoji" /> <TextView diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml index 873a95839..493855699 100644 --- a/app/src/main/res/values/strings.xml +++ b/app/src/main/res/values/strings.xml @@ -513,4 +513,6 @@ <string name="audio_output_dialog_headline">Audio output</string> <string name="audio_output_wired_headset">Wired headset</string> + <string name="reactions_tab_all">All</string> + </resources> |