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)
data class CollectionItem(
val collection: TabCollection,
val expanded: Boolean
val expanded: Boolean,
val sessionHasOpenTabs: Boolean
) : AdapterItem(CollectionViewHolder.LAYOUT_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)
}
is CollectionViewHolder -> {
val (collection, expanded) = item as AdapterItem.CollectionItem
holder.bindSession(collection, expanded)
val (collection, expanded, sessionHasOpenTabs) = item as AdapterItem.CollectionItem
holder.bindSession(collection, expanded, sessionHasOpenTabs)
}
is TabInCollectionViewHolder -> {
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
collections.map {
AdapterItem.CollectionItem(it, expandedCollections.contains(it.id))
AdapterItem.CollectionItem(it, expandedCollections.contains(it.id), tabs.isNotEmpty())
}.forEach {
items.add(it)
if (it.expanded) {

View File

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