From ada8c5db3cc3b8e5a435b34535fe6747976973eb Mon Sep 17 00:00:00 2001 From: Sean Mac Gillicuddy Date: Tue, 17 Dec 2019 14:12:48 +0000 Subject: [PATCH] #1650 Library "Text Only" seems to be wrong - fix boolean logic --- .../kiwixmobile/core/zim_manager/TagsView.kt | 27 ++++++++++++------- 1 file changed, 17 insertions(+), 10 deletions(-) diff --git a/core/src/main/java/org/kiwix/kiwixmobile/core/zim_manager/TagsView.kt b/core/src/main/java/org/kiwix/kiwixmobile/core/zim_manager/TagsView.kt index 2ddd9cfa2..7509c6908 100644 --- a/core/src/main/java/org/kiwix/kiwixmobile/core/zim_manager/TagsView.kt +++ b/core/src/main/java/org/kiwix/kiwixmobile/core/zim_manager/TagsView.kt @@ -41,19 +41,26 @@ class TagsView(context: Context, attrs: AttributeSet) : ChipGroup(context, attrs } fun render(tags: List) { - val pictureTagIsSet = tags.isSet() - val videoTagIsSet = tags.isSet() - tag_picture.selectBy(pictureTagIsSet) - tag_video.selectBy(videoTagIsSet) - tag_text_only.selectBy(!pictureTagIsSet && !videoTagIsSet) - tag_short_text.selectBy(!tags.isSet()) + tag_picture.selectBy(tags.isYesOrNotDefined()) + tag_video.selectBy(tags.isYesOrNotDefined()) + tag_text_only.selectBy(tags.isDefinedAndNo() && tags.isDefinedAndNo()) + tag_short_text.selectBy(tags.isDefinedAndNo()) } - private inline fun List.isSet() = + private inline fun List.isYesOrNotDefined() = + isYes() || !isDefined() + + private inline fun List.isDefinedAndNo() = + !isDefined() && !isYes() + + private inline fun List.isYes() = filterIsInstance().getOrNull(0)?.value == YES - private fun Chip.selectBy(isTagSet: Boolean) { - isChecked = isTagSet - isEnabled = isTagSet + private inline fun List.isDefined() = + filterIsInstance().isNotEmpty() + + private fun Chip.selectBy(criteria: Boolean) { + isChecked = criteria + isEnabled = criteria } }