Skip to content
This repository has been archived by the owner on Feb 20, 2023. It is now read-only.

Commit

Permalink
Adds ItsNotBrokenSnacks
Browse files Browse the repository at this point in the history
  • Loading branch information
sblatz committed May 2, 2019
1 parent d84454c commit 0660a09
Show file tree
Hide file tree
Showing 7 changed files with 64 additions and 14 deletions.
20 changes: 19 additions & 1 deletion app/src/main/java/org/mozilla/fenix/home/HomeFragment.kt
Original file line number Diff line number Diff line change
Expand Up @@ -279,11 +279,29 @@ class HomeFragment : Fragment(), CoroutineScope {
storedCollections.find { it.id == action.collection.id }?.apply { expanded = false }
emitCollectionChange()
}
is CollectionAction.Delete -> {
ItsNotBrokenSnack(context!!).showSnackbar(issueNumber = "1578")
}
is CollectionAction.AddTab -> {
ItsNotBrokenSnack(context!!).showSnackbar(issueNumber = "1575")
}
is CollectionAction.Rename -> {
ItsNotBrokenSnack(context!!).showSnackbar(issueNumber = "1575")
}
is CollectionAction.OpenTabs -> {
ItsNotBrokenSnack(context!!).showSnackbar(issueNumber = "2205")
}
is CollectionAction.ShareTabs -> {
ItsNotBrokenSnack(context!!).showSnackbar(issueNumber = "1585")
}
is CollectionAction.RemoveTab -> {
ItsNotBrokenSnack(context!!).showSnackbar(issueNumber = "1578")
}
}
}

private fun emitCollectionChange() {
// Pass in a _copy_ of the tabs
// Pass in a *copy* of stored collections so an change is detected
storedCollections.map { it.copy() }.let { getManagedEmitter<SessionControlChange>().onNext(SessionControlChange.CollectionsChange(it)) }
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -31,7 +31,7 @@ sealed class AdapterItem {
object CollectionHeader : AdapterItem()
object NoCollectionMessage : AdapterItem()
data class CollectionItem(val collection: TabCollection) : AdapterItem()
data class TabInCollectionItem(val tab: Tab, val isLastTab: Boolean) : AdapterItem()
data class TabInCollectionItem(val collection: TabCollection, val tab: Tab, val isLastTab: Boolean) : AdapterItem()

val viewType: Int
get() = when (this) {
Expand Down Expand Up @@ -108,7 +108,7 @@ class SessionControlAdapter(
)
is TabInCollectionViewHolder -> {
val item = (items[position] as AdapterItem.TabInCollectionItem)
holder.bindSession(item.tab, item.isLastTab)
holder.bindSession(item.collection, item.tab, item.isLastTab)
}
}
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -82,6 +82,12 @@ sealed class TabAction : Action {
sealed class CollectionAction: Action {
data class Expand(val collection: TabCollection) : CollectionAction()
data class Collapse(val collection: TabCollection) : CollectionAction()
data class Delete(val collection: TabCollection) : CollectionAction()
data class AddTab(val collection: TabCollection) : CollectionAction()
data class Rename(val collection: TabCollection) : CollectionAction()
data class OpenTabs(val collection: TabCollection) : CollectionAction()
data class ShareTabs(val collection: TabCollection) : CollectionAction()
data class RemoveTab(val collection: TabCollection, val tab: Tab) : CollectionAction()
}

sealed class SessionControlAction : Action {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -49,7 +49,7 @@ private fun SessionControlState.toAdapterList(): List<AdapterItem> {
items.add(it)
for (tabIndex in 0 until it.collection.tabs.size) {
items.add(AdapterItem.TabInCollectionItem
(it.collection.tabs[tabIndex], tabIndex == it.collection.tabs.size - 1))
(it.collection, it.collection.tabs[tabIndex], tabIndex == it.collection.tabs.size - 1))
}
} else {
items.add(it)
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -18,6 +18,7 @@ import kotlinx.android.synthetic.main.collection_home_list_row.view.*
import kotlinx.coroutines.CoroutineScope
import kotlinx.coroutines.Dispatchers
import kotlinx.coroutines.Job
import mozilla.appservices.fxaclient.exhaustive
import mozilla.components.browser.menu.BrowserMenu
import mozilla.components.browser.menu.BrowserMenuBuilder
import mozilla.components.browser.menu.item.SimpleBrowserMenuItem
Expand Down Expand Up @@ -46,7 +47,10 @@ class CollectionViewHolder(
init {
collectionMenu = CollectionItemMenu(view.context) {
when (it) {
// Handle action emitting
is CollectionItemMenu.Item.DeleteCollection -> actionEmitter.onNext(CollectionAction.Delete(collection))
is CollectionItemMenu.Item.AddTab -> actionEmitter.onNext(CollectionAction.AddTab(collection))
is CollectionItemMenu.Item.RenameCollection -> actionEmitter.onNext(CollectionAction.Rename(collection))
is CollectionItemMenu.Item.OpenTabs -> actionEmitter.onNext(CollectionAction.OpenTabs(collection))
}
}

Expand All @@ -59,6 +63,13 @@ class CollectionViewHolder(
}
}

collection_share_button.run {
increaseTapArea(buttonIncreaseDps)
setOnClickListener {
actionEmitter.onNext(CollectionAction.ShareTabs(collection))
}
}

view.setOnClickListener {
updateState()
}
Expand Down Expand Up @@ -134,7 +145,7 @@ class CollectionViewHolder(
companion object {
const val LAYOUT_ID = R.layout.collection_home_list_row
const val maxTitleLength = 20
const val buttonIncreaseDps = 12
const val buttonIncreaseDps = 24
}

enum class CollectionState {
Expand All @@ -148,7 +159,7 @@ class CollectionItemMenu(
private val onItemTapped: (Item) -> Unit = {}
) {
sealed class Item {
object DeleteCollction : Item()
object DeleteCollection : Item()
object AddTab : Item()
object RenameCollection : Item()
object OpenTabs : Item()
Expand All @@ -162,7 +173,7 @@ class CollectionItemMenu(
context.getString(R.string.collection_delete),
textColorResource = DefaultThemeManager.resolveAttribute(R.attr.destructive, context)
) {
onItemTapped.invoke(Item.DeleteCollction)
onItemTapped.invoke(Item.DeleteCollection)
},
SimpleBrowserMenuItem(
context.getString(R.string.add_tab)
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -4,15 +4,13 @@

package org.mozilla.fenix.home.sessioncontrol.viewholders

import android.content.Context
import android.graphics.Outline
import android.view.View
import android.view.ViewOutlineProvider
import androidx.core.content.ContextCompat
import androidx.recyclerview.widget.RecyclerView
import io.reactivex.Observer
import kotlinx.android.extensions.LayoutContainer
import kotlinx.android.synthetic.main.collections_list_item.*
import kotlinx.android.synthetic.main.tab_in_collection.*
import kotlinx.coroutines.CoroutineScope
import kotlinx.coroutines.Dispatchers
Expand All @@ -24,8 +22,7 @@ import org.jetbrains.anko.backgroundColor
import org.mozilla.fenix.R
import org.mozilla.fenix.ext.components
import org.mozilla.fenix.ext.getColorFromAttr
import org.mozilla.fenix.home.sessioncontrol.SessionControlAction
import org.mozilla.fenix.home.sessioncontrol.Tab
import org.mozilla.fenix.home.sessioncontrol.*
import kotlin.coroutines.CoroutineContext

class TabInCollectionViewHolder(
Expand All @@ -38,6 +35,7 @@ class TabInCollectionViewHolder(
override val coroutineContext: CoroutineContext
get() = Dispatchers.IO + job

private lateinit var collection: TabCollection
private lateinit var tab: Tab
private var isLastTab = false

Expand All @@ -54,9 +52,14 @@ class TabInCollectionViewHolder(
)
}
}

collection_tab_close_button.setOnClickListener {
actionEmitter.onNext(CollectionAction.RemoveTab(collection, tab))
}
}

fun bindSession(tab: Tab, isLastTab: Boolean) {
fun bindSession(collection: TabCollection, tab: Tab, isLastTab: Boolean) {
this.collection = collection
this.tab = tab
this.isLastTab = isLastTab
updateTabUI()
Expand Down
14 changes: 13 additions & 1 deletion app/src/main/res/layout/collection_header.xml
Original file line number Diff line number Diff line change
Expand Up @@ -6,16 +6,28 @@
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
android:id="@+id/collections_header"
android:layout_marginTop="5dp"
android:layout_width="match_parent"
android:layout_height="wrap_content">

<View
android:id="@+id/divider_line"
android:layout_width="fill_parent"
android:layout_height="1dp"
android:background="?neutralFaded"
android:layout_marginStart="35dp"
android:layout_marginEnd="35dp"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent"/>

<TextView
android:id="@+id/collections_header_text"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="@string/collections_header"
android:textAppearance="@style/HeaderTextStyle"
android:layout_marginTop="15dp"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent" />
app:layout_constraintTop_toBottomOf="@id/divider_line" />
</androidx.constraintlayout.widget.ConstraintLayout>

0 comments on commit 0660a09

Please sign in to comment.