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.master
parent
91bdc22566
commit
da59e36c1b
|
@ -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
|
||||||
|
|
|
@ -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) {
|
||||||
|
|
|
@ -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)
|
||||||
) {
|
) {
|
||||||
|
|
Loading…
Reference in New Issue