Welcome to mirror list, hosted at ThFree Co, Russian Federation.

github.com/nextcloud/talk-android.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAndy Scherzinger <info@andy-scherzinger.de>2022-04-07 18:47:43 +0300
committerMarcel Hibbe <dev@mhibbe.de>2022-04-08 10:21:13 +0300
commit6bda280d154088f29c4107bd732315d75cdcca71 (patch)
treeca1a6f1ae57adee3580c483de4dda5705dc0aff1 /app/src/main
parent357c67db838e068ffa038483f7d3f9be53c4a0ab (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.kt35
-rw-r--r--app/src/main/res/layout/item_reactions_tab.xml7
-rw-r--r--app/src/main/res/values/strings.xml2
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>