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