/* This Source Code Form is subject to the terms of the Mozilla Public * License, v. 2.0. If a copy of the MPL was not distributed with this * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ package org.mozilla.fenix.collections import android.view.View import android.view.ViewGroup import android.widget.Button import android.widget.ImageButton import android.widget.TextView import androidx.core.content.ContextCompat import androidx.core.view.isVisible import mozilla.components.support.ktx.android.content.getDrawableWithTint import org.mozilla.fenix.R /** * Updates views in [R.id.bottom_button_bar_layout] for collection creation. */ class CollectionCreationBottomBarView( private val interactor: CollectionCreationInteractor, private val layout: ViewGroup, private val iconButton: ImageButton, private val textView: TextView, private val saveButton: Button ) { fun update(step: SaveCollectionStep, state: CollectionCreationState) { when (step) { SaveCollectionStep.SelectTabs -> updateForSelectTabs(state) SaveCollectionStep.SelectCollection -> updateForSelectCollection() else -> { /* noop */ } } } private fun updateForSelectTabs(state: CollectionCreationState) { layout.setOnClickListener(null) layout.isClickable = false iconButton.apply { val drawable = context.getDrawableWithTint( R.drawable.ic_close, ContextCompat.getColor(context, R.color.photonWhite) ) setImageDrawable(drawable) contentDescription = context.getString(R.string.create_collection_close) importantForAccessibility = View.IMPORTANT_FOR_ACCESSIBILITY_YES setOnClickListener { interactor.close() } } textView.apply { text = if (state.selectedTabs.isEmpty()) { context.getString(R.string.create_collection_save_to_collection_empty) } else { context.getString( if (state.selectedTabs.size == 1) { R.string.create_collection_save_to_collection_tab_selected } else { R.string.create_collection_save_to_collection_tabs_selected }, state.selectedTabs.size ) } } saveButton.apply { setOnClickListener { if (state.selectedTabCollection != null) { interactor.selectCollection( collection = state.selectedTabCollection, tabs = state.selectedTabs.toList() ) } else { interactor.saveTabsToCollection(tabs = state.selectedTabs.toList()) } } isVisible = state.selectedTabs.isNotEmpty() } } private fun updateForSelectCollection() { saveButton.visibility = View.GONE textView.text = textView.context.getString(R.string.create_collection_add_new_collection) iconButton.apply { val drawable = context.getDrawableWithTint( R.drawable.ic_new, ContextCompat.getColor(context, R.color.photonWhite) ) setImageDrawable(drawable) contentDescription = null importantForAccessibility = View.IMPORTANT_FOR_ACCESSIBILITY_NO setOnClickListener { interactor.addNewCollection() } } layout.setOnClickListener { interactor.addNewCollection() } } }