From d20908370028a3975a85f622b0c6af2e734e0670 Mon Sep 17 00:00:00 2001 From: rapterjet2004 Date: Mon, 12 Jun 2023 15:36:59 -0500 Subject: [PATCH 01/11] WIP filter conversations feature, UI finished Signed-off-by: Julius Linus julius.linus@nextcloud.com Signed-off-by: Andy Scherzinger --- .../ConversationsListActivity.kt | 6 + .../ui/dialog/FilterConversationFragment.kt | 119 ++++++++++++++++++ .../drawable/ic_baseline_filter_list_24.xml | 5 + .../layout/controller_conversations_rv.xml | 19 ++- .../res/layout/dialog_filter_conversation.xml | 73 +++++++++++ app/src/main/res/values/strings.xml | 5 + 6 files changed, 226 insertions(+), 1 deletion(-) create mode 100644 app/src/main/java/com/nextcloud/talk/ui/dialog/FilterConversationFragment.kt create mode 100644 app/src/main/res/drawable/ic_baseline_filter_list_24.xml create mode 100644 app/src/main/res/layout/dialog_filter_conversation.xml diff --git a/app/src/main/java/com/nextcloud/talk/conversationlist/ConversationsListActivity.kt b/app/src/main/java/com/nextcloud/talk/conversationlist/ConversationsListActivity.kt index abd41f837..313bc4306 100644 --- a/app/src/main/java/com/nextcloud/talk/conversationlist/ConversationsListActivity.kt +++ b/app/src/main/java/com/nextcloud/talk/conversationlist/ConversationsListActivity.kt @@ -97,6 +97,7 @@ import com.nextcloud.talk.settings.SettingsActivity import com.nextcloud.talk.ui.dialog.ChooseAccountDialogFragment import com.nextcloud.talk.ui.dialog.ChooseAccountShareToDialogFragment import com.nextcloud.talk.ui.dialog.ConversationsListBottomDialog +import com.nextcloud.talk.ui.dialog.FilterConversationFragment import com.nextcloud.talk.users.UserManager import com.nextcloud.talk.utils.ApiUtils import com.nextcloud.talk.utils.ClosedInterfaceImpl @@ -758,6 +759,11 @@ class ConversationsListActivity : } } + binding.filterConversationsButton.setOnClickListener { + val newFragment: DialogFragment = FilterConversationFragment.newInstance(adapter!!) + newFragment.show(supportFragmentManager, FilterConversationFragment.TAG) + } + binding?.newMentionPopupBubble?.hide() binding?.newMentionPopupBubble?.setPopupBubbleListener { binding?.recyclerView?.smoothScrollToPosition( diff --git a/app/src/main/java/com/nextcloud/talk/ui/dialog/FilterConversationFragment.kt b/app/src/main/java/com/nextcloud/talk/ui/dialog/FilterConversationFragment.kt new file mode 100644 index 000000000..a28fd757d --- /dev/null +++ b/app/src/main/java/com/nextcloud/talk/ui/dialog/FilterConversationFragment.kt @@ -0,0 +1,119 @@ +package com.nextcloud.talk.ui.dialog + +import android.app.Dialog +import android.os.Bundle +import android.util.Log +import android.view.LayoutInflater +import android.view.View +import android.view.ViewGroup +import androidx.fragment.app.DialogFragment +import autodagger.AutoInjector +import com.google.android.material.dialog.MaterialAlertDialogBuilder +import com.nextcloud.talk.R +import com.nextcloud.talk.api.NcApi +import com.nextcloud.talk.application.NextcloudTalkApplication +import com.nextcloud.talk.databinding.DialogFilterConversationBinding +import com.nextcloud.talk.ui.theme.ViewThemeUtils +import com.nextcloud.talk.users.UserManager +import eu.davidea.flexibleadapter.FlexibleAdapter +import eu.davidea.flexibleadapter.items.AbstractFlexibleItem +import javax.inject.Inject + +@AutoInjector(NextcloudTalkApplication::class) +class FilterConversationFragment(adapter: FlexibleAdapter>) : DialogFragment() { + lateinit var binding: DialogFilterConversationBinding + private var dialogView: View? = null + private var currentAdapter: FlexibleAdapter> = adapter + private var filterState = mutableMapOf(NONE to true, MENTION to false, UNREAD to false) + + @Inject + lateinit var ncApi: NcApi + + @Inject + lateinit var userManager: UserManager + + @Inject + lateinit var viewThemeUtils: ViewThemeUtils + override fun onCreateDialog(savedInstanceState: Bundle?): Dialog { + binding = DialogFilterConversationBinding.inflate(LayoutInflater.from(context)) + dialogView = binding.root + + return MaterialAlertDialogBuilder(requireContext()).setView(dialogView).create() + } + + override fun onCreateView( + inflater: LayoutInflater, + container: ViewGroup?, + savedInstanceState: Bundle? + ): View? { + NextcloudTalkApplication.sharedApplication!!.componentApplication.inject(this) + setUpColors() + setUpListeners() + return inflater.inflate(R.layout.dialog_filter_conversation, container, false) + } + + private fun setUpColors() { + binding.run { + listOf( + binding.root, + ) + }.forEach(viewThemeUtils.platform::colorViewBackground) + } + + private fun setUpListeners() { + binding.noFilterButton.setOnClickListener { + Log.i(TAG, "no filter clicked") + filterState[NONE] = !filterState[NONE]!! + if (filterState[NONE]!!) { + binding.noFilterButton.setBackgroundColor(resources.getColor(R.color.colorPrimary)) + } else + binding.noFilterButton.setBackgroundColor(resources.getColor(R.color.grey_200)) + + filterState[UNREAD] = false + binding.unreadFilterButton.setBackgroundColor(resources.getColor(R.color.grey_200)) + filterState[MENTION] = false + binding.mentionedFilterButton.setBackgroundColor(resources.getColor(R.color.grey_200)) + } + + binding.unreadFilterButton.setOnClickListener { + Log.i(TAG, "unread filter clicked") + filterState[UNREAD] = !filterState[UNREAD]!! + if (filterState[UNREAD]!!) { + binding.unreadFilterButton.setBackgroundColor( + resources.getColor( + R.color + .colorPrimary + ) + ) + } else binding.unreadFilterButton.setBackgroundColor(resources.getColor(R.color.grey_200)) + filterState[NONE] = false + binding.noFilterButton.setBackgroundColor(resources.getColor(R.color.grey_200)) + } + + binding.mentionedFilterButton.setOnClickListener { + Log.i(TAG, "mentioned filter clicked") + filterState[MENTION] = !filterState[MENTION]!! + if (filterState[MENTION]!!) { + binding.mentionedFilterButton.setBackgroundColor(resources.getColor(R.color.colorPrimary)) + } else + binding.mentionedFilterButton.setBackgroundColor(resources.getColor(R.color.grey_200)) + + filterState[NONE] = false + binding.noFilterButton.setBackgroundColor(resources.getColor(R.color.grey_200)) + } + + binding.filterButton.setOnClickListener { + Log.i(TAG, "submit clicked") + dismiss() + } + } + + companion object { + @JvmStatic + fun newInstance(adapter: FlexibleAdapter>) = FilterConversationFragment(adapter) + val TAG: String = FilterConversationFragment::class.java.simpleName + const val NONE: String = "none" + const val MENTION: String = "mention" + const val UNREAD: String = "unread" + } +} diff --git a/app/src/main/res/drawable/ic_baseline_filter_list_24.xml b/app/src/main/res/drawable/ic_baseline_filter_list_24.xml new file mode 100644 index 000000000..b8090430e --- /dev/null +++ b/app/src/main/res/drawable/ic_baseline_filter_list_24.xml @@ -0,0 +1,5 @@ + + + diff --git a/app/src/main/res/layout/controller_conversations_rv.xml b/app/src/main/res/layout/controller_conversations_rv.xml index c4de69564..7d383783e 100644 --- a/app/src/main/res/layout/controller_conversations_rv.xml +++ b/app/src/main/res/layout/controller_conversations_rv.xml @@ -83,10 +83,27 @@ android:textSize="16sp" app:layout_constraintBottom_toBottomOf="parent" app:layout_constraintStart_toEndOf="@id/menu_button" - app:layout_constraintEnd_toStartOf="@id/rightContainer" + app:layout_constraintEnd_toStartOf="@id/filter_conversations_button" app:layout_constraintTop_toTopOf="parent" tools:text="Search in Nextcloud" /> + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml index 46a285c05..4685c1b96 100644 --- a/app/src/main/res/values/strings.xml +++ b/app/src/main/res/values/strings.xml @@ -680,5 +680,10 @@ How to translate with transifex: Translation failed Could not detect language Copy translated text + Filter Conversations + Filter + Mentioned + Unread + No Filter From b4719bcad3b28d0ca3dadc2834fb0d332ae88672 Mon Sep 17 00:00:00 2001 From: rapterjet2004 Date: Tue, 13 Jun 2023 15:41:04 -0500 Subject: [PATCH 02/11] WIP filter conversations feature, functionality finished Signed-off-by: Julius Linus julius.linus@nextcloud.com Signed-off-by: Andy Scherzinger --- .../ConversationsListActivity.kt | 22 +++- .../ui/dialog/FilterConversationFragment.kt | 117 +++++++++++++----- .../res/layout/dialog_filter_conversation.xml | 2 - 3 files changed, 108 insertions(+), 33 deletions(-) diff --git a/app/src/main/java/com/nextcloud/talk/conversationlist/ConversationsListActivity.kt b/app/src/main/java/com/nextcloud/talk/conversationlist/ConversationsListActivity.kt index 313bc4306..175048e68 100644 --- a/app/src/main/java/com/nextcloud/talk/conversationlist/ConversationsListActivity.kt +++ b/app/src/main/java/com/nextcloud/talk/conversationlist/ConversationsListActivity.kt @@ -190,6 +190,12 @@ class ConversationsListActivity : private var conversationsListBottomDialog: ConversationsListBottomDialog? = null private var searchHelper: MessageSearchHelper? = null private var searchViewDisposable: Disposable? = null + private var filterState = + mutableMapOf( + NONE to true, + MENTION to false, + UNREAD to false + ) private val onBackPressedCallback = object : OnBackPressedCallback(true) { override fun handleOnBackPressed() { @@ -760,7 +766,12 @@ class ConversationsListActivity : } binding.filterConversationsButton.setOnClickListener { - val newFragment: DialogFragment = FilterConversationFragment.newInstance(adapter!!) + val newFragment: DialogFragment = FilterConversationFragment.newInstance( + adapter!!, + conversationItems, + filterState, + this + ) newFragment.show(supportFragmentManager, FilterConversationFragment.TAG) } @@ -1462,6 +1473,12 @@ class ConversationsListActivity : showErrorDialog() } + fun updateFilterState(none: Boolean, mention: Boolean, unread: Boolean) { + filterState[NONE] = none + filterState[MENTION] = mention + filterState[UNREAD] = unread + } + companion object { const val TAG = "ConvListController" const val UNREAD_BUBBLE_DELAY = 2500 @@ -1475,5 +1492,8 @@ class ConversationsListActivity : const val CLIENT_UPGRADE_GPLAY_LINK = "https://play.google.com/store/apps/details?id=" const val HTTP_SERVICE_UNAVAILABLE = 503 const val MAINTENANCE_MODE_HEADER_KEY = "X-Nextcloud-Maintenance-Mode" + const val NONE: String = "none" + const val MENTION: String = "mention" + const val UNREAD: String = "unread" } } diff --git a/app/src/main/java/com/nextcloud/talk/ui/dialog/FilterConversationFragment.kt b/app/src/main/java/com/nextcloud/talk/ui/dialog/FilterConversationFragment.kt index a28fd757d..940edcb89 100644 --- a/app/src/main/java/com/nextcloud/talk/ui/dialog/FilterConversationFragment.kt +++ b/app/src/main/java/com/nextcloud/talk/ui/dialog/FilterConversationFragment.kt @@ -2,7 +2,6 @@ package com.nextcloud.talk.ui.dialog import android.app.Dialog import android.os.Bundle -import android.util.Log import android.view.LayoutInflater import android.view.View import android.view.ViewGroup @@ -10,9 +9,12 @@ import androidx.fragment.app.DialogFragment import autodagger.AutoInjector import com.google.android.material.dialog.MaterialAlertDialogBuilder import com.nextcloud.talk.R +import com.nextcloud.talk.adapters.items.ConversationItem import com.nextcloud.talk.api.NcApi import com.nextcloud.talk.application.NextcloudTalkApplication +import com.nextcloud.talk.conversationlist.ConversationsListActivity import com.nextcloud.talk.databinding.DialogFilterConversationBinding +import com.nextcloud.talk.models.json.conversations.Conversation import com.nextcloud.talk.ui.theme.ViewThemeUtils import com.nextcloud.talk.users.UserManager import eu.davidea.flexibleadapter.FlexibleAdapter @@ -20,11 +22,18 @@ import eu.davidea.flexibleadapter.items.AbstractFlexibleItem import javax.inject.Inject @AutoInjector(NextcloudTalkApplication::class) -class FilterConversationFragment(adapter: FlexibleAdapter>) : DialogFragment() { +class FilterConversationFragment( + adapter: FlexibleAdapter>, + currentConversations: MutableList>, + savedFilterState: MutableMap, + conversationsListActivity: ConversationsListActivity +) : DialogFragment() { lateinit var binding: DialogFilterConversationBinding private var dialogView: View? = null private var currentAdapter: FlexibleAdapter> = adapter - private var filterState = mutableMapOf(NONE to true, MENTION to false, UNREAD to false) + private var currentItems = currentConversations + private var filterState = savedFilterState + private var conversationsList = conversationsListActivity @Inject lateinit var ncApi: NcApi @@ -58,59 +67,107 @@ class FilterConversationFragment(adapter: FlexibleAdapter> = ArrayList() + if (filterState[NONE]!!) { + currentAdapter.updateDataSet(currentItems, true) + } else { + val items = currentItems + for (i in items) { + val conversation = (i as ConversationItem).model + if (filter(conversation)) { + newItems.add(i) + } + } + currentAdapter.updateDataSet(newItems, true) + } + conversationsList.updateFilterState( + filterState[NONE]!!, + filterState[MENTION]!!, + filterState[UNREAD]!! + ) + } + private fun filter(conversation: Conversation): Boolean { + var result = true + for ((k, v) in filterState) { + if (k != NONE && v) { + when (k) { + MENTION -> result = result && conversation.unreadMention + UNREAD -> result = result && (conversation.unreadMessages > 0) + } + } + } + + return result + } + companion object { @JvmStatic - fun newInstance(adapter: FlexibleAdapter>) = FilterConversationFragment(adapter) + fun newInstance( + adapter: FlexibleAdapter>, + currentConversations: MutableList>, + savedFilterState: MutableMap, + conversationsListActivity: ConversationsListActivity + ) = FilterConversationFragment(adapter, currentConversations, savedFilterState, conversationsListActivity) val TAG: String = FilterConversationFragment::class.java.simpleName const val NONE: String = "none" const val MENTION: String = "mention" diff --git a/app/src/main/res/layout/dialog_filter_conversation.xml b/app/src/main/res/layout/dialog_filter_conversation.xml index e26e38090..d227b495c 100644 --- a/app/src/main/res/layout/dialog_filter_conversation.xml +++ b/app/src/main/res/layout/dialog_filter_conversation.xml @@ -39,7 +39,6 @@ android:layout_height="wrap_content" android:layout_margin="@dimen/standard_half_margin" android:padding="@dimen/standard_half_padding" - app:backgroundTint="@color/grey_200" android:text="@string/unread"/> From cc0fd41c90f1f58e5ae552dfacf971420f3c5fab Mon Sep 17 00:00:00 2001 From: rapterjet2004 Date: Tue, 13 Jun 2023 16:47:27 -0500 Subject: [PATCH 03/11] WIP filter conversations feature, last minute ui changes Signed-off-by: Julius Linus julius.linus@nextcloud.com Signed-off-by: Andy Scherzinger --- .../ConversationsListActivity.kt | 14 +++++++++++ .../ui/dialog/FilterConversationFragment.kt | 24 ++++++++----------- 2 files changed, 24 insertions(+), 14 deletions(-) diff --git a/app/src/main/java/com/nextcloud/talk/conversationlist/ConversationsListActivity.kt b/app/src/main/java/com/nextcloud/talk/conversationlist/ConversationsListActivity.kt index 175048e68..667bd5cb5 100644 --- a/app/src/main/java/com/nextcloud/talk/conversationlist/ConversationsListActivity.kt +++ b/app/src/main/java/com/nextcloud/talk/conversationlist/ConversationsListActivity.kt @@ -34,6 +34,7 @@ import android.content.ActivityNotFoundException import android.content.Context import android.content.Intent import android.content.pm.PackageManager +import android.content.res.ColorStateList import android.graphics.drawable.ColorDrawable import android.graphics.drawable.Drawable import android.net.Uri @@ -765,6 +766,8 @@ class ConversationsListActivity : } } + updateFilterConversationButtonColor() + binding.filterConversationsButton.setOnClickListener { val newFragment: DialogFragment = FilterConversationFragment.newInstance( adapter!!, @@ -784,6 +787,17 @@ class ConversationsListActivity : binding?.newMentionPopupBubble?.let { viewThemeUtils.material.colorMaterialButtonPrimaryFilled(it) } } + fun updateFilterConversationButtonColor() { + val colorInt: Int = if (filterState[NONE]!!) { + context.getColor(R.color.grey_200) + } else { + context.getColor(R.color.colorPrimary) + } + + val csl = ColorStateList.valueOf(colorInt) + binding.filterConversationsButton.iconTint = csl + } + @Suppress("Detekt.TooGenericExceptionCaught") private fun checkToShowUnreadBubble() { try { diff --git a/app/src/main/java/com/nextcloud/talk/ui/dialog/FilterConversationFragment.kt b/app/src/main/java/com/nextcloud/talk/ui/dialog/FilterConversationFragment.kt index 940edcb89..e5c874e96 100644 --- a/app/src/main/java/com/nextcloud/talk/ui/dialog/FilterConversationFragment.kt +++ b/app/src/main/java/com/nextcloud/talk/ui/dialog/FilterConversationFragment.kt @@ -5,6 +5,7 @@ import android.os.Bundle import android.view.LayoutInflater import android.view.View import android.view.ViewGroup +import androidx.core.content.ContextCompat import androidx.fragment.app.DialogFragment import autodagger.AutoInjector import com.google.android.material.dialog.MaterialAlertDialogBuilder @@ -105,29 +106,22 @@ class FilterConversationFragment( } private fun changeMentionFilter() { - if (filterState[MENTION]!!) { - binding.mentionedFilterButton.setBackgroundColor(resources.getColor(R.color.colorPrimary)) - } else - binding.mentionedFilterButton.setBackgroundColor(resources.getColor(R.color.grey_200)) + val colorInt = if (filterState[MENTION]!!) R.color.colorPrimary else R.color.grey_200 + binding.mentionedFilterButton.setBackgroundColor(ContextCompat.getColor(requireContext(), colorInt)) } private fun changeUnreadFilter() { - if (filterState[UNREAD]!!) { - binding.unreadFilterButton.setBackgroundColor( - resources.getColor(R.color.colorPrimary) - ) - } else binding.unreadFilterButton.setBackgroundColor(resources.getColor(R.color.grey_200)) + val colorInt = if (filterState[UNREAD]!!) R.color.colorPrimary else R.color.grey_200 + binding.unreadFilterButton.setBackgroundColor(ContextCompat.getColor(requireContext(), colorInt)) } private fun changeNoneFilter() { - if (filterState[NONE]!!) { - binding.noFilterButton.setBackgroundColor(resources.getColor(R.color.colorPrimary)) - } else - binding.noFilterButton.setBackgroundColor(resources.getColor(R.color.grey_200)) + val colorInt = if (filterState[NONE]!!) R.color.colorPrimary else R.color.grey_200 + binding.noFilterButton.setBackgroundColor(ContextCompat.getColor(requireContext(), colorInt)) } private fun processSubmit() { - var newItems: MutableList> = ArrayList() + val newItems: MutableList> = ArrayList() if (filterState[NONE]!!) { currentAdapter.updateDataSet(currentItems, true) } else { @@ -145,6 +139,8 @@ class FilterConversationFragment( filterState[MENTION]!!, filterState[UNREAD]!! ) + + conversationsList.updateFilterConversationButtonColor() } private fun filter(conversation: Conversation): Boolean { var result = true From a60fce05cdac1e6ee390c44d845ba11323c942c9 Mon Sep 17 00:00:00 2001 From: rapterjet2004 Date: Wed, 14 Jun 2023 10:05:59 -0500 Subject: [PATCH 04/11] WIP filter conversations feature, UI more responsive Signed-off-by: Julius Linus julius.linus@nextcloud.com Signed-off-by: Andy Scherzinger --- .../ConversationsListActivity.kt | 11 +-- .../ui/dialog/FilterConversationFragment.kt | 75 ++++++------------- .../res/layout/dialog_filter_conversation.xml | 62 +++++---------- 3 files changed, 44 insertions(+), 104 deletions(-) diff --git a/app/src/main/java/com/nextcloud/talk/conversationlist/ConversationsListActivity.kt b/app/src/main/java/com/nextcloud/talk/conversationlist/ConversationsListActivity.kt index 667bd5cb5..cf48826ad 100644 --- a/app/src/main/java/com/nextcloud/talk/conversationlist/ConversationsListActivity.kt +++ b/app/src/main/java/com/nextcloud/talk/conversationlist/ConversationsListActivity.kt @@ -193,7 +193,6 @@ class ConversationsListActivity : private var searchViewDisposable: Disposable? = null private var filterState = mutableMapOf( - NONE to true, MENTION to false, UNREAD to false ) @@ -788,10 +787,10 @@ class ConversationsListActivity : } fun updateFilterConversationButtonColor() { - val colorInt: Int = if (filterState[NONE]!!) { - context.getColor(R.color.grey_200) - } else { + val colorInt: Int = if (filterState.containsValue(true)) { context.getColor(R.color.colorPrimary) + } else { + context.getColor(R.color.grey_200) } val csl = ColorStateList.valueOf(colorInt) @@ -1487,8 +1486,7 @@ class ConversationsListActivity : showErrorDialog() } - fun updateFilterState(none: Boolean, mention: Boolean, unread: Boolean) { - filterState[NONE] = none + fun updateFilterState(mention: Boolean, unread: Boolean) { filterState[MENTION] = mention filterState[UNREAD] = unread } @@ -1506,7 +1504,6 @@ class ConversationsListActivity : const val CLIENT_UPGRADE_GPLAY_LINK = "https://play.google.com/store/apps/details?id=" const val HTTP_SERVICE_UNAVAILABLE = 503 const val MAINTENANCE_MODE_HEADER_KEY = "X-Nextcloud-Maintenance-Mode" - const val NONE: String = "none" const val MENTION: String = "mention" const val UNREAD: String = "unread" } diff --git a/app/src/main/java/com/nextcloud/talk/ui/dialog/FilterConversationFragment.kt b/app/src/main/java/com/nextcloud/talk/ui/dialog/FilterConversationFragment.kt index e5c874e96..03a7a027d 100644 --- a/app/src/main/java/com/nextcloud/talk/ui/dialog/FilterConversationFragment.kt +++ b/app/src/main/java/com/nextcloud/talk/ui/dialog/FilterConversationFragment.kt @@ -5,13 +5,11 @@ import android.os.Bundle import android.view.LayoutInflater import android.view.View import android.view.ViewGroup -import androidx.core.content.ContextCompat import androidx.fragment.app.DialogFragment import autodagger.AutoInjector import com.google.android.material.dialog.MaterialAlertDialogBuilder import com.nextcloud.talk.R import com.nextcloud.talk.adapters.items.ConversationItem -import com.nextcloud.talk.api.NcApi import com.nextcloud.talk.application.NextcloudTalkApplication import com.nextcloud.talk.conversationlist.ConversationsListActivity import com.nextcloud.talk.databinding.DialogFilterConversationBinding @@ -36,9 +34,6 @@ class FilterConversationFragment( private var filterState = savedFilterState private var conversationsList = conversationsListActivity - @Inject - lateinit var ncApi: NcApi - @Inject lateinit var userManager: UserManager @@ -68,61 +63,39 @@ class FilterConversationFragment( binding.root, ) }.forEach(viewThemeUtils.platform::colorViewBackground) - updateFilters() + + binding.run { + listOf( + unreadFilterChip, + mentionedFilterChip + ) + }.forEach(viewThemeUtils.material::colorChipBackground) + + setUpChips() } private fun setUpListeners() { - binding.noFilterButton.setOnClickListener { - filterState[NONE] = !filterState[NONE]!! - filterState[UNREAD] = false - filterState[MENTION] = false - updateFilters() - } - - binding.unreadFilterButton.setOnClickListener { - filterState[UNREAD] = !filterState[UNREAD]!! - changeUnreadFilter() - filterState[NONE] = false - changeNoneFilter() - } - - binding.mentionedFilterButton.setOnClickListener { - filterState[MENTION] = !filterState[MENTION]!! - changeMentionFilter() - filterState[NONE] = false - changeNoneFilter() - } - - binding.filterButton.setOnClickListener { + binding.unreadFilterChip.setOnCheckedChangeListener { _, isChecked -> + filterState[UNREAD] = isChecked + binding.unreadFilterChip.isChecked = isChecked + processSubmit() + } + + binding.mentionedFilterChip.setOnCheckedChangeListener { _, isChecked -> + filterState[MENTION] = isChecked + binding.mentionedFilterChip.isChecked = isChecked processSubmit() - dismiss() } } - private fun updateFilters() { - changeNoneFilter() - changeUnreadFilter() - changeMentionFilter() - } - - private fun changeMentionFilter() { - val colorInt = if (filterState[MENTION]!!) R.color.colorPrimary else R.color.grey_200 - binding.mentionedFilterButton.setBackgroundColor(ContextCompat.getColor(requireContext(), colorInt)) - } - - private fun changeUnreadFilter() { - val colorInt = if (filterState[UNREAD]!!) R.color.colorPrimary else R.color.grey_200 - binding.unreadFilterButton.setBackgroundColor(ContextCompat.getColor(requireContext(), colorInt)) - } - - private fun changeNoneFilter() { - val colorInt = if (filterState[NONE]!!) R.color.colorPrimary else R.color.grey_200 - binding.noFilterButton.setBackgroundColor(ContextCompat.getColor(requireContext(), colorInt)) + private fun setUpChips() { + binding.unreadFilterChip.isChecked = filterState[UNREAD]!! + binding.mentionedFilterChip.isChecked = filterState[MENTION]!! } private fun processSubmit() { val newItems: MutableList> = ArrayList() - if (filterState[NONE]!!) { + if (!filterState.containsValue(true)) { currentAdapter.updateDataSet(currentItems, true) } else { val items = currentItems @@ -135,7 +108,6 @@ class FilterConversationFragment( currentAdapter.updateDataSet(newItems, true) } conversationsList.updateFilterState( - filterState[NONE]!!, filterState[MENTION]!!, filterState[UNREAD]!! ) @@ -145,7 +117,7 @@ class FilterConversationFragment( private fun filter(conversation: Conversation): Boolean { var result = true for ((k, v) in filterState) { - if (k != NONE && v) { + if (v) { when (k) { MENTION -> result = result && conversation.unreadMention UNREAD -> result = result && (conversation.unreadMessages > 0) @@ -165,7 +137,6 @@ class FilterConversationFragment( conversationsListActivity: ConversationsListActivity ) = FilterConversationFragment(adapter, currentConversations, savedFilterState, conversationsListActivity) val TAG: String = FilterConversationFragment::class.java.simpleName - const val NONE: String = "none" const val MENTION: String = "mention" const val UNREAD: String = "unread" } diff --git a/app/src/main/res/layout/dialog_filter_conversation.xml b/app/src/main/res/layout/dialog_filter_conversation.xml index d227b495c..5a6bbaa46 100644 --- a/app/src/main/res/layout/dialog_filter_conversation.xml +++ b/app/src/main/res/layout/dialog_filter_conversation.xml @@ -2,70 +2,42 @@ + android:layout_height="match_parent" + android:orientation="vertical" + tools:background="@color/white" + tools:visibility="visible"> + android:layout_height="wrap_content" /> - + android:layout_margin="@dimen/standard_margin"> - + android:text="@string/unread" /> - - - - - - - - - - - + android:text="@string/mentioned" /> + \ No newline at end of file From ffdae1552d6893968ef2bc5d8cae0ee6c0437050 Mon Sep 17 00:00:00 2001 From: rapterjet2004 Date: Wed, 14 Jun 2023 11:35:51 -0500 Subject: [PATCH 05/11] WIP filter conversations feature, can now search through filter Signed-off-by: Julius Linus julius.linus@nextcloud.com Signed-off-by: Andy Scherzinger --- .../talk/conversationlist/ConversationsListActivity.kt | 9 +++++++-- .../talk/ui/dialog/FilterConversationFragment.kt | 1 + 2 files changed, 8 insertions(+), 2 deletions(-) diff --git a/app/src/main/java/com/nextcloud/talk/conversationlist/ConversationsListActivity.kt b/app/src/main/java/com/nextcloud/talk/conversationlist/ConversationsListActivity.kt index cf48826ad..88eea0e7a 100644 --- a/app/src/main/java/com/nextcloud/talk/conversationlist/ConversationsListActivity.kt +++ b/app/src/main/java/com/nextcloud/talk/conversationlist/ConversationsListActivity.kt @@ -171,6 +171,7 @@ class ConversationsListActivity : private var conversationItems: MutableList> = ArrayList() private var conversationItemsWithHeader: MutableList> = ArrayList() private val searchableConversationItems: MutableList> = ArrayList() + private var filterableConversationItems: MutableList> = ArrayList() private var searchItem: MenuItem? = null private var chooseAccountItem: MenuItem? = null private var searchView: SearchView? = null @@ -420,7 +421,8 @@ class ConversationsListActivity : searchItem!!.setOnActionExpandListener(object : MenuItem.OnActionExpandListener { override fun onMenuItemActionExpand(item: MenuItem): Boolean { adapter!!.setHeadersShown(true) - adapter!!.updateDataSet(searchableConversationItems, false) + if (!filterState.containsValue(true)) filterableConversationItems = searchableConversationItems + adapter!!.updateDataSet(filterableConversationItems, false) adapter!!.showAllHeaders() binding?.swipeRefreshLayoutView?.isEnabled = false return true @@ -428,7 +430,8 @@ class ConversationsListActivity : override fun onMenuItemActionCollapse(item: MenuItem): Boolean { adapter!!.setHeadersShown(false) - adapter!!.updateDataSet(conversationItems, false) + if (!filterState.containsValue(true)) filterableConversationItems = searchableConversationItems + adapter!!.updateDataSet(filterableConversationItems, false) adapter!!.hideAllHeaders() if (searchHelper != null) { // cancel any pending searches @@ -1491,6 +1494,8 @@ class ConversationsListActivity : filterState[UNREAD] = unread } + fun setFilterableItems(items: MutableList>) { filterableConversationItems = items } + companion object { const val TAG = "ConvListController" const val UNREAD_BUBBLE_DELAY = 2500 diff --git a/app/src/main/java/com/nextcloud/talk/ui/dialog/FilterConversationFragment.kt b/app/src/main/java/com/nextcloud/talk/ui/dialog/FilterConversationFragment.kt index 03a7a027d..b758c84e6 100644 --- a/app/src/main/java/com/nextcloud/talk/ui/dialog/FilterConversationFragment.kt +++ b/app/src/main/java/com/nextcloud/talk/ui/dialog/FilterConversationFragment.kt @@ -106,6 +106,7 @@ class FilterConversationFragment( } } currentAdapter.updateDataSet(newItems, true) + conversationsList.setFilterableItems(newItems) } conversationsList.updateFilterState( filterState[MENTION]!!, From 715cbedcfea8375e01fc510c3cd5ba4268ee2c37 Mon Sep 17 00:00:00 2001 From: rapterjet2004 Date: Wed, 14 Jun 2023 13:51:17 -0500 Subject: [PATCH 06/11] WIP filter conversations feature, implemented small fixes + license Signed-off-by: Julius Linus julius.linus@nextcloud.com Signed-off-by: Andy Scherzinger --- .../ConversationsListActivity.kt | 34 +++++++++---------- .../ui/dialog/FilterConversationFragment.kt | 19 +++++++++++ .../drawable/ic_baseline_filter_list_24.xml | 16 +++++++++ .../layout/controller_conversations_rv.xml | 20 ++++------- .../res/layout/dialog_filter_conversation.xml | 22 ++++++++++-- 5 files changed, 78 insertions(+), 33 deletions(-) diff --git a/app/src/main/java/com/nextcloud/talk/conversationlist/ConversationsListActivity.kt b/app/src/main/java/com/nextcloud/talk/conversationlist/ConversationsListActivity.kt index 88eea0e7a..d7db17988 100644 --- a/app/src/main/java/com/nextcloud/talk/conversationlist/ConversationsListActivity.kt +++ b/app/src/main/java/com/nextcloud/talk/conversationlist/ConversationsListActivity.kt @@ -34,7 +34,6 @@ import android.content.ActivityNotFoundException import android.content.Context import android.content.Intent import android.content.pm.PackageManager -import android.content.res.ColorStateList import android.graphics.drawable.ColorDrawable import android.graphics.drawable.Drawable import android.net.Uri @@ -68,6 +67,7 @@ import coil.transform.CircleCropTransformation import com.google.android.material.appbar.AppBarLayout import com.google.android.material.button.MaterialButton import com.google.android.material.dialog.MaterialAlertDialogBuilder +import com.nextcloud.android.common.ui.theme.utils.ColorRole import com.nextcloud.talk.R import com.nextcloud.talk.activities.BaseActivity import com.nextcloud.talk.activities.CallActivity @@ -194,8 +194,8 @@ class ConversationsListActivity : private var searchViewDisposable: Disposable? = null private var filterState = mutableMapOf( - MENTION to false, - UNREAD to false + FilterConversationFragment.MENTION to false, + FilterConversationFragment.UNREAD to false ) private val onBackPressedCallback = object : OnBackPressedCallback(true) { @@ -789,17 +789,6 @@ class ConversationsListActivity : binding?.newMentionPopupBubble?.let { viewThemeUtils.material.colorMaterialButtonPrimaryFilled(it) } } - fun updateFilterConversationButtonColor() { - val colorInt: Int = if (filterState.containsValue(true)) { - context.getColor(R.color.colorPrimary) - } else { - context.getColor(R.color.grey_200) - } - - val csl = ColorStateList.valueOf(colorInt) - binding.filterConversationsButton.iconTint = csl - } - @Suppress("Detekt.TooGenericExceptionCaught") private fun checkToShowUnreadBubble() { try { @@ -1490,12 +1479,23 @@ class ConversationsListActivity : } fun updateFilterState(mention: Boolean, unread: Boolean) { - filterState[MENTION] = mention - filterState[UNREAD] = unread + filterState[FilterConversationFragment.MENTION] = mention + filterState[FilterConversationFragment.UNREAD] = unread } fun setFilterableItems(items: MutableList>) { filterableConversationItems = items } + fun updateFilterConversationButtonColor() { + if (filterState.containsValue(true)) { + binding.filterConversationsButton.let { viewThemeUtils.platform.colorImageView(it, ColorRole.PRIMARY) } + } else { + binding.filterConversationsButton.let { viewThemeUtils.platform.colorImageView( + it, + ColorRole.ON_SURFACE_VARIANT + ) } + } + } + companion object { const val TAG = "ConvListController" const val UNREAD_BUBBLE_DELAY = 2500 @@ -1509,7 +1509,5 @@ class ConversationsListActivity : const val CLIENT_UPGRADE_GPLAY_LINK = "https://play.google.com/store/apps/details?id=" const val HTTP_SERVICE_UNAVAILABLE = 503 const val MAINTENANCE_MODE_HEADER_KEY = "X-Nextcloud-Maintenance-Mode" - const val MENTION: String = "mention" - const val UNREAD: String = "unread" } } diff --git a/app/src/main/java/com/nextcloud/talk/ui/dialog/FilterConversationFragment.kt b/app/src/main/java/com/nextcloud/talk/ui/dialog/FilterConversationFragment.kt index b758c84e6..162d37c07 100644 --- a/app/src/main/java/com/nextcloud/talk/ui/dialog/FilterConversationFragment.kt +++ b/app/src/main/java/com/nextcloud/talk/ui/dialog/FilterConversationFragment.kt @@ -1,3 +1,22 @@ +/* + * Nextcloud Talk application + * + * @author Julius Linus + * Copyright (C) 2023 Julius Linus + * + * 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 . + */ package com.nextcloud.talk.ui.dialog import android.app.Dialog diff --git a/app/src/main/res/drawable/ic_baseline_filter_list_24.xml b/app/src/main/res/drawable/ic_baseline_filter_list_24.xml index b8090430e..40f366824 100644 --- a/app/src/main/res/drawable/ic_baseline_filter_list_24.xml +++ b/app/src/main/res/drawable/ic_baseline_filter_list_24.xml @@ -1,3 +1,19 @@ + diff --git a/app/src/main/res/layout/controller_conversations_rv.xml b/app/src/main/res/layout/controller_conversations_rv.xml index 7d383783e..a5d0684ae 100644 --- a/app/src/main/res/layout/controller_conversations_rv.xml +++ b/app/src/main/res/layout/controller_conversations_rv.xml @@ -87,22 +87,16 @@ app:layout_constraintTop_toTopOf="parent" tools:text="Search in Nextcloud" /> - + app:layout_constraintEnd_toStartOf="@+id/rightContainer" + app:layout_constraintTop_toTopOf="parent" /> + - \ No newline at end of file + From 73dce166b921d8632c8db26dce3e3b8e6e34665d Mon Sep 17 00:00:00 2001 From: rapterjet2004 Date: Wed, 14 Jun 2023 15:03:24 -0500 Subject: [PATCH 07/11] WIP filter conversations feature, added close button + detekt issues Signed-off-by: Julius Linus julius.linus@nextcloud.com Signed-off-by: Andy Scherzinger --- .../ConversationsListActivity.kt | 10 ++++--- .../ui/dialog/FilterConversationFragment.kt | 6 +++- .../res/layout/dialog_filter_conversation.xml | 28 +++++++++++++++---- 3 files changed, 33 insertions(+), 11 deletions(-) diff --git a/app/src/main/java/com/nextcloud/talk/conversationlist/ConversationsListActivity.kt b/app/src/main/java/com/nextcloud/talk/conversationlist/ConversationsListActivity.kt index d7db17988..acfb77237 100644 --- a/app/src/main/java/com/nextcloud/talk/conversationlist/ConversationsListActivity.kt +++ b/app/src/main/java/com/nextcloud/talk/conversationlist/ConversationsListActivity.kt @@ -1489,10 +1489,12 @@ class ConversationsListActivity : if (filterState.containsValue(true)) { binding.filterConversationsButton.let { viewThemeUtils.platform.colorImageView(it, ColorRole.PRIMARY) } } else { - binding.filterConversationsButton.let { viewThemeUtils.platform.colorImageView( - it, - ColorRole.ON_SURFACE_VARIANT - ) } + binding.filterConversationsButton.let { + viewThemeUtils.platform.colorImageView( + it, + ColorRole.ON_SURFACE_VARIANT + ) + } } } diff --git a/app/src/main/java/com/nextcloud/talk/ui/dialog/FilterConversationFragment.kt b/app/src/main/java/com/nextcloud/talk/ui/dialog/FilterConversationFragment.kt index 162d37c07..543bdd9b9 100644 --- a/app/src/main/java/com/nextcloud/talk/ui/dialog/FilterConversationFragment.kt +++ b/app/src/main/java/com/nextcloud/talk/ui/dialog/FilterConversationFragment.kt @@ -79,7 +79,7 @@ class FilterConversationFragment( private fun setUpColors() { binding.run { listOf( - binding.root, + binding.root ) }.forEach(viewThemeUtils.platform::colorViewBackground) @@ -105,6 +105,10 @@ class FilterConversationFragment( binding.mentionedFilterChip.isChecked = isChecked processSubmit() } + + binding.closeButton.setOnClickListener { + dismiss() + } } private fun setUpChips() { diff --git a/app/src/main/res/layout/dialog_filter_conversation.xml b/app/src/main/res/layout/dialog_filter_conversation.xml index 3d7e025d6..60b270b2d 100644 --- a/app/src/main/res/layout/dialog_filter_conversation.xml +++ b/app/src/main/res/layout/dialog_filter_conversation.xml @@ -26,13 +26,29 @@ tools:background="@color/white" tools:visibility="visible"> - + android:orientation="horizontal"> + + + + + + Date: Thu, 15 Jun 2023 13:01:31 +0200 Subject: [PATCH 08/11] Optimize themeing/layout for filtering Signed-off-by: Andy Scherzinger --- app/build.gradle | 2 +- .../ui/dialog/FilterConversationFragment.kt | 6 +- .../ui/theme/TalkSpecificViewThemeUtils.kt | 36 ++++++++++++ .../drawable/ic_baseline_filter_list_24.xml | 13 +++-- .../layout/controller_conversations_rv.xml | 5 +- .../res/layout/dialog_filter_conversation.xml | 57 ++++++++++++------- 6 files changed, 88 insertions(+), 31 deletions(-) diff --git a/app/build.gradle b/app/build.gradle index 766669860..d03d4d459 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -303,7 +303,7 @@ dependencies { implementation 'androidx.activity:activity-ktx:1.7.2' - implementation 'com.github.nextcloud.android-common:ui:0.10.0' + implementation 'com.github.nextcloud.android-common:ui:0.11.0' implementation 'com.github.nextcloud-deps:android-talk-webrtc:110.5481.0' } diff --git a/app/src/main/java/com/nextcloud/talk/ui/dialog/FilterConversationFragment.kt b/app/src/main/java/com/nextcloud/talk/ui/dialog/FilterConversationFragment.kt index 543bdd9b9..d1ed838bf 100644 --- a/app/src/main/java/com/nextcloud/talk/ui/dialog/FilterConversationFragment.kt +++ b/app/src/main/java/com/nextcloud/talk/ui/dialog/FilterConversationFragment.kt @@ -77,6 +77,8 @@ class FilterConversationFragment( } private fun setUpColors() { + viewThemeUtils.material.colorMaterialButtonPrimaryBorderless(binding.buttonClose) + binding.run { listOf( binding.root @@ -88,7 +90,7 @@ class FilterConversationFragment( unreadFilterChip, mentionedFilterChip ) - }.forEach(viewThemeUtils.material::colorChipBackground) + }.forEach(viewThemeUtils.talk::themeChipFilter) setUpChips() } @@ -106,7 +108,7 @@ class FilterConversationFragment( processSubmit() } - binding.closeButton.setOnClickListener { + binding.buttonClose.setOnClickListener { dismiss() } } diff --git a/app/src/main/java/com/nextcloud/talk/ui/theme/TalkSpecificViewThemeUtils.kt b/app/src/main/java/com/nextcloud/talk/ui/theme/TalkSpecificViewThemeUtils.kt index 30bc3fc43..6acced7d6 100644 --- a/app/src/main/java/com/nextcloud/talk/ui/theme/TalkSpecificViewThemeUtils.kt +++ b/app/src/main/java/com/nextcloud/talk/ui/theme/TalkSpecificViewThemeUtils.kt @@ -24,6 +24,7 @@ package com.nextcloud.talk.ui.theme import android.annotation.TargetApi import android.content.Context import android.content.res.ColorStateList +import android.graphics.Color import android.graphics.drawable.Drawable import android.graphics.drawable.LayerDrawable import android.os.Build @@ -42,9 +43,11 @@ import androidx.core.graphics.drawable.DrawableCompat import androidx.core.view.ViewCompat import androidx.core.view.children import com.google.android.material.card.MaterialCardView +import com.google.android.material.chip.Chip import com.nextcloud.android.common.ui.theme.MaterialSchemes import com.nextcloud.android.common.ui.theme.ViewThemeUtilsBase import com.nextcloud.android.common.ui.theme.utils.AndroidXViewThemeUtils +import com.nextcloud.android.common.ui.util.buildColorStateList import com.nextcloud.talk.R import com.nextcloud.talk.utils.DisplayUtils import com.nextcloud.talk.utils.DrawableUtils @@ -87,6 +90,39 @@ class TalkSpecificViewThemeUtils @Inject constructor( ViewCompat.setBackground(bubble, bubbleDrawable) } + fun themeChipFilter(chip: Chip) { + withScheme(chip.context) { scheme -> + val backgroundColors = buildColorStateList( + android.R.attr.state_checked to scheme.secondaryContainer, + -android.R.attr.state_checked to scheme.surface, + android.R.attr.state_focused to scheme.secondaryContainer, + android.R.attr.state_hovered to scheme.secondaryContainer, + android.R.attr.state_pressed to scheme.secondaryContainer + ) + + val iconColors = buildColorStateList( + android.R.attr.state_checked to scheme.onSecondaryContainer, + -android.R.attr.state_checked to scheme.onSurfaceVariant, + android.R.attr.state_focused to scheme.onSecondaryContainer, + android.R.attr.state_hovered to scheme.onSecondaryContainer, + android.R.attr.state_pressed to scheme.onSecondaryContainer + ) + + val textColors = buildColorStateList( + android.R.attr.state_checked to scheme.onSecondaryContainer, + -android.R.attr.state_checked to scheme.onSurfaceVariant, + android.R.attr.state_hovered to scheme.onSecondaryContainer, + android.R.attr.state_focused to scheme.onSecondaryContainer, + android.R.attr.state_pressed to scheme.onSecondaryContainer + ) + + chip.chipBackgroundColor = backgroundColors + //chip.chipStrokeColor = chipOutlineFilterColorList(scheme) + chip.setTextColor(textColors) + chip.checkedIconTint = iconColors + } + } + fun themeOutgoingMessageBubble(bubble: View, grouped: Boolean, deleted: Boolean) { withScheme(bubble) { scheme -> val bgBubbleColor = if (deleted) { diff --git a/app/src/main/res/drawable/ic_baseline_filter_list_24.xml b/app/src/main/res/drawable/ic_baseline_filter_list_24.xml index 40f366824..ec05deb71 100644 --- a/app/src/main/res/drawable/ic_baseline_filter_list_24.xml +++ b/app/src/main/res/drawable/ic_baseline_filter_list_24.xml @@ -14,8 +14,13 @@ See the License for the specific language governing permissions and limitations under the License. --> - - + + diff --git a/app/src/main/res/layout/controller_conversations_rv.xml b/app/src/main/res/layout/controller_conversations_rv.xml index a5d0684ae..8afc03313 100644 --- a/app/src/main/res/layout/controller_conversations_rv.xml +++ b/app/src/main/res/layout/controller_conversations_rv.xml @@ -89,8 +89,9 @@ . --> - - - - - - - + android:layout_margin="@dimen/standard_margin" + android:text="@string/nc_filter" + android:textSize="@dimen/md_title_textsize" /> + android:layout_marginStart="@dimen/standard_margin" + android:layout_marginTop="@dimen/standard_half_margin" + android:layout_marginEnd="@dimen/standard_margin" + android:layout_marginBottom="@dimen/standard_half_margin" + app:chipSpacingHorizontal="@dimen/standard_margin"> + + + + + + + + + From ac84df556dbfc4b5fd1c02cd96abb748a891c8f2 Mon Sep 17 00:00:00 2001 From: Andy Scherzinger Date: Thu, 15 Jun 2023 13:07:18 +0200 Subject: [PATCH 09/11] remove unused strings and colors Signed-off-by: Andy Scherzinger --- app/src/main/res/values/colors.xml | 1 - app/src/main/res/values/strings.xml | 2 -- 2 files changed, 3 deletions(-) diff --git a/app/src/main/res/values/colors.xml b/app/src/main/res/values/colors.xml index 741d89889..ce3dbf019 100644 --- a/app/src/main/res/values/colors.xml +++ b/app/src/main/res/values/colors.xml @@ -63,7 +63,6 @@ #006400 #E8E8E8 #757575 - #212121 #D5D5D5 #E9FFFFFF #111111 diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml index 4685c1b96..5ca7542fc 100644 --- a/app/src/main/res/values/strings.xml +++ b/app/src/main/res/values/strings.xml @@ -681,9 +681,7 @@ How to translate with transifex: Could not detect language Copy translated text Filter Conversations - Filter Mentioned Unread - No Filter From c8b772935baa3e3ee6904058bdcd9e0f756168b8 Mon Sep 17 00:00:00 2001 From: github-actions Date: Thu, 15 Jun 2023 11:19:10 +0000 Subject: [PATCH 10/11] Analysis: update lint results to reflect reduced error/warning count Signed-off-by: github-actions Signed-off-by: Andy Scherzinger --- scripts/analysis/lint-results.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/scripts/analysis/lint-results.txt b/scripts/analysis/lint-results.txt index 3694e6bcc..76c3174da 100644 --- a/scripts/analysis/lint-results.txt +++ b/scripts/analysis/lint-results.txt @@ -1,2 +1,2 @@ DO NOT TOUCH; GENERATED BY DRONE - Lint Report: 108 warnings + Lint Report: 107 warnings From 5a25aa1450c2da5c67167bf5e993186e2defbf0f Mon Sep 17 00:00:00 2001 From: Andy Scherzinger Date: Thu, 15 Jun 2023 13:36:40 +0200 Subject: [PATCH 11/11] remove unused code Signed-off-by: Andy Scherzinger --- .../ui/dialog/FilterConversationFragment.kt | 2 +- .../ui/theme/TalkSpecificViewThemeUtils.kt | 36 ------------------- 2 files changed, 1 insertion(+), 37 deletions(-) diff --git a/app/src/main/java/com/nextcloud/talk/ui/dialog/FilterConversationFragment.kt b/app/src/main/java/com/nextcloud/talk/ui/dialog/FilterConversationFragment.kt index d1ed838bf..b1e934288 100644 --- a/app/src/main/java/com/nextcloud/talk/ui/dialog/FilterConversationFragment.kt +++ b/app/src/main/java/com/nextcloud/talk/ui/dialog/FilterConversationFragment.kt @@ -90,7 +90,7 @@ class FilterConversationFragment( unreadFilterChip, mentionedFilterChip ) - }.forEach(viewThemeUtils.talk::themeChipFilter) + }.forEach(viewThemeUtils.material::themeChipFilter) setUpChips() } diff --git a/app/src/main/java/com/nextcloud/talk/ui/theme/TalkSpecificViewThemeUtils.kt b/app/src/main/java/com/nextcloud/talk/ui/theme/TalkSpecificViewThemeUtils.kt index 6acced7d6..30bc3fc43 100644 --- a/app/src/main/java/com/nextcloud/talk/ui/theme/TalkSpecificViewThemeUtils.kt +++ b/app/src/main/java/com/nextcloud/talk/ui/theme/TalkSpecificViewThemeUtils.kt @@ -24,7 +24,6 @@ package com.nextcloud.talk.ui.theme import android.annotation.TargetApi import android.content.Context import android.content.res.ColorStateList -import android.graphics.Color import android.graphics.drawable.Drawable import android.graphics.drawable.LayerDrawable import android.os.Build @@ -43,11 +42,9 @@ import androidx.core.graphics.drawable.DrawableCompat import androidx.core.view.ViewCompat import androidx.core.view.children import com.google.android.material.card.MaterialCardView -import com.google.android.material.chip.Chip import com.nextcloud.android.common.ui.theme.MaterialSchemes import com.nextcloud.android.common.ui.theme.ViewThemeUtilsBase import com.nextcloud.android.common.ui.theme.utils.AndroidXViewThemeUtils -import com.nextcloud.android.common.ui.util.buildColorStateList import com.nextcloud.talk.R import com.nextcloud.talk.utils.DisplayUtils import com.nextcloud.talk.utils.DrawableUtils @@ -90,39 +87,6 @@ class TalkSpecificViewThemeUtils @Inject constructor( ViewCompat.setBackground(bubble, bubbleDrawable) } - fun themeChipFilter(chip: Chip) { - withScheme(chip.context) { scheme -> - val backgroundColors = buildColorStateList( - android.R.attr.state_checked to scheme.secondaryContainer, - -android.R.attr.state_checked to scheme.surface, - android.R.attr.state_focused to scheme.secondaryContainer, - android.R.attr.state_hovered to scheme.secondaryContainer, - android.R.attr.state_pressed to scheme.secondaryContainer - ) - - val iconColors = buildColorStateList( - android.R.attr.state_checked to scheme.onSecondaryContainer, - -android.R.attr.state_checked to scheme.onSurfaceVariant, - android.R.attr.state_focused to scheme.onSecondaryContainer, - android.R.attr.state_hovered to scheme.onSecondaryContainer, - android.R.attr.state_pressed to scheme.onSecondaryContainer - ) - - val textColors = buildColorStateList( - android.R.attr.state_checked to scheme.onSecondaryContainer, - -android.R.attr.state_checked to scheme.onSurfaceVariant, - android.R.attr.state_hovered to scheme.onSecondaryContainer, - android.R.attr.state_focused to scheme.onSecondaryContainer, - android.R.attr.state_pressed to scheme.onSecondaryContainer - ) - - chip.chipBackgroundColor = backgroundColors - //chip.chipStrokeColor = chipOutlineFilterColorList(scheme) - chip.setTextColor(textColors) - chip.checkedIconTint = iconColors - } - } - fun themeOutgoingMessageBubble(bubble: View, grouped: Boolean, deleted: Boolean) { withScheme(bubble) { scheme -> val bgBubbleColor = if (deleted) {