1
0
Fork 0

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
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)
) { ) {