diff --git a/app/src/main/java/org/mozilla/fenix/collections/CollectionCreationComponent.kt b/app/src/main/java/org/mozilla/fenix/collections/CollectionCreationComponent.kt index 363d683ed..5418e7ee7 100644 --- a/app/src/main/java/org/mozilla/fenix/collections/CollectionCreationComponent.kt +++ b/app/src/main/java/org/mozilla/fenix/collections/CollectionCreationComponent.kt @@ -36,6 +36,7 @@ data class CollectionCreationState( sealed class CollectionCreationChange : Change { data class TabListChange(val tabs: List) : CollectionCreationChange() object AddAllTabs : CollectionCreationChange() + object RemoveAllTabs : CollectionCreationChange() data class TabAdded(val tab: Tab) : CollectionCreationChange() data class TabRemoved(val tab: Tab) : CollectionCreationChange() data class StepChanged(val saveCollectionStep: SaveCollectionStep) : CollectionCreationChange() @@ -45,6 +46,7 @@ sealed class CollectionCreationChange : Change { sealed class CollectionCreationAction : Action { object Close : CollectionCreationAction() object SelectAllTapped : CollectionCreationAction() + object DeselectAllTapped : CollectionCreationAction() object AddNewCollection : CollectionCreationAction() data class AddTabToSelection(val tab: Tab) : CollectionCreationAction() data class RemoveTabFromSelection(val tab: Tab) : CollectionCreationAction() @@ -95,6 +97,7 @@ class CollectionCreationViewModel( { state, change -> when (change) { is CollectionCreationChange.AddAllTabs -> state.copy(selectedTabs = state.tabs.toSet()) + is CollectionCreationChange.RemoveAllTabs -> state.copy(selectedTabs = setOf()) is CollectionCreationChange.TabListChange -> state.copy(tabs = change.tabs) is CollectionCreationChange.TabAdded -> { val selectedTabs = state.selectedTabs + setOf(change.tab) diff --git a/app/src/main/java/org/mozilla/fenix/collections/CollectionCreationUIView.kt b/app/src/main/java/org/mozilla/fenix/collections/CollectionCreationUIView.kt index 265f8b2a1..ff532c59f 100644 --- a/app/src/main/java/org/mozilla/fenix/collections/CollectionCreationUIView.kt +++ b/app/src/main/java/org/mozilla/fenix/collections/CollectionCreationUIView.kt @@ -67,10 +67,6 @@ class CollectionCreationUIView( R.layout.component_collection_creation_name_collection ) - view.select_all_button.setOnClickListener { - actionEmitter.onNext(CollectionCreationAction.SelectAllTapped) - } - view.close_icon.apply { increaseTapArea(increaseButtonByDps) setOnClickListener { @@ -128,6 +124,19 @@ class CollectionCreationUIView( back_button.setOnClickListener { actionEmitter.onNext(CollectionCreationAction.BackPressed(SaveCollectionStep.SelectTabs)) } + val allSelected = it.selectedTabs.size == it.tabs.size + select_all_button.text = + if (allSelected) + view.context.getString(R.string.create_collection_deselect_all) else + view.context.getString(R.string.create_collection_select_all) + + view.select_all_button.setOnClickListener { + if (allSelected) { + actionEmitter.onNext(CollectionCreationAction.DeselectAllTapped) + } else { + actionEmitter.onNext(CollectionCreationAction.SelectAllTapped) + } + } TransitionManager.beginDelayedTransition( view.collection_constraint_layout, transition diff --git a/app/src/main/java/org/mozilla/fenix/collections/CreateCollectionFragment.kt b/app/src/main/java/org/mozilla/fenix/collections/CreateCollectionFragment.kt index cd3054130..c5febffef 100644 --- a/app/src/main/java/org/mozilla/fenix/collections/CreateCollectionFragment.kt +++ b/app/src/main/java/org/mozilla/fenix/collections/CreateCollectionFragment.kt @@ -114,6 +114,10 @@ class CreateCollectionFragment : DialogFragment(), CoroutineScope { getManagedEmitter() .onNext(CollectionCreationChange.AddAllTabs) } + is CollectionCreationAction.DeselectAllTapped -> { + getManagedEmitter() + .onNext(CollectionCreationChange.RemoveAllTabs) + } is CollectionCreationAction.AddNewCollection -> getManagedEmitter().onNext( CollectionCreationChange.StepChanged(SaveCollectionStep.NameCollection) ) diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml index 2cb78fbb3..305e6c2cc 100644 --- a/app/src/main/res/values/strings.xml +++ b/app/src/main/res/values/strings.xml @@ -489,6 +489,8 @@ Add new collection Select All + + Deselect All Select tabs to save