Fixes #4410: Modified visibility of 'Add Tab' button.

I changed the visibility of 'Add Tab' button according to the number of
opened tabs. If there is at least one tab open, the button is displayed.
This commit is contained in:
ValentinTimisica 2019-08-01 14:29:08 +03:00 committed by Emily Kager
parent 91bdc22566
commit da59e36c1b
3 changed files with 12 additions and 7 deletions

View File

@ -50,7 +50,8 @@ sealed class AdapterItem(@LayoutRes val viewType: Int) {
object CollectionHeader : AdapterItem(CollectionHeaderViewHolder.LAYOUT_ID) object CollectionHeader : AdapterItem(CollectionHeaderViewHolder.LAYOUT_ID)
data class CollectionItem( data class CollectionItem(
val collection: TabCollection, val collection: TabCollection,
val expanded: Boolean val expanded: Boolean,
val sessionHasOpenTabs: Boolean
) : AdapterItem(CollectionViewHolder.LAYOUT_ID) { ) : AdapterItem(CollectionViewHolder.LAYOUT_ID) {
override fun sameAs(other: AdapterItem) = other is CollectionItem && collection.id == other.collection.id override fun sameAs(other: AdapterItem) = other is CollectionItem && collection.id == other.collection.id
} }
@ -140,8 +141,8 @@ class SessionControlAdapter(
holder.bind(icon, header, description) holder.bind(icon, header, description)
} }
is CollectionViewHolder -> { is CollectionViewHolder -> {
val (collection, expanded) = item as AdapterItem.CollectionItem val (collection, expanded, sessionHasOpenTabs) = item as AdapterItem.CollectionItem
holder.bindSession(collection, expanded) holder.bindSession(collection, expanded, sessionHasOpenTabs)
} }
is TabInCollectionViewHolder -> { is TabInCollectionViewHolder -> {
val (collection, tab, isLastTab) = item as AdapterItem.TabInCollectionItem val (collection, tab, isLastTab) = item as AdapterItem.TabInCollectionItem

View File

@ -47,7 +47,7 @@ private fun normalModeAdapterItems(
// If the collection is expanded, we want to add all of its tabs beneath it in the adapter // If the collection is expanded, we want to add all of its tabs beneath it in the adapter
collections.map { collections.map {
AdapterItem.CollectionItem(it, expandedCollections.contains(it.id)) AdapterItem.CollectionItem(it, expandedCollections.contains(it.id), tabs.isNotEmpty())
}.forEach { }.forEach {
items.add(it) items.add(it)
if (it.expanded) { if (it.expanded) {

View File

@ -34,10 +34,11 @@ class CollectionViewHolder(
private lateinit var collection: TabCollection private lateinit var collection: TabCollection
private var expanded = false private var expanded = false
private var sessionHasOpenTabs = false
private var collectionMenu: CollectionItemMenu private var collectionMenu: CollectionItemMenu
init { init {
collectionMenu = CollectionItemMenu(view.context) { collectionMenu = CollectionItemMenu(view.context, sessionHasOpenTabs) {
when (it) { when (it) {
is CollectionItemMenu.Item.DeleteCollection -> actionEmitter.onNext(CollectionAction.Delete(collection)) is CollectionItemMenu.Item.DeleteCollection -> actionEmitter.onNext(CollectionAction.Delete(collection))
is CollectionItemMenu.Item.AddTab -> actionEmitter.onNext(CollectionAction.AddTab(collection)) is CollectionItemMenu.Item.AddTab -> actionEmitter.onNext(CollectionAction.AddTab(collection))
@ -68,9 +69,11 @@ class CollectionViewHolder(
} }
} }
fun bindSession(collection: TabCollection, expanded: Boolean) { fun bindSession(collection: TabCollection, expanded: Boolean, sessionHasOpenTabs: Boolean) {
this.collection = collection this.collection = collection
this.expanded = expanded this.expanded = expanded
this.sessionHasOpenTabs = sessionHasOpenTabs
collectionMenu.sessionHasOpenTabs = sessionHasOpenTabs
updateCollectionUI() updateCollectionUI()
} }
@ -114,6 +117,7 @@ class CollectionViewHolder(
class CollectionItemMenu( class CollectionItemMenu(
private val context: Context, private val context: Context,
var sessionHasOpenTabs: Boolean,
private val onItemTapped: (Item) -> Unit = {} private val onItemTapped: (Item) -> Unit = {}
) { ) {
sealed class Item { sealed class Item {
@ -137,7 +141,7 @@ class CollectionItemMenu(
context.getString(R.string.add_tab) context.getString(R.string.add_tab)
) { ) {
onItemTapped.invoke(Item.AddTab) onItemTapped.invoke(Item.AddTab)
}, }.apply { visible = { sessionHasOpenTabs } },
SimpleBrowserMenuItem( SimpleBrowserMenuItem(
context.getString(R.string.collection_rename) context.getString(R.string.collection_rename)
) { ) {