1
0
Fork 0

For #673 - Trigger session overflow menu on session item menu

master
Jeff Boek 2019-02-28 15:12:25 -08:00 committed by Colin Lee
parent 1aa3d7e1ad
commit 22c915b5a4
4 changed files with 4 additions and 45 deletions

View File

@ -54,6 +54,7 @@ fun SessionBundleStorage.archive(sessionManager: SessionManager) {
new()
}
@SuppressWarnings("TooManyFunctions")
class HomeFragment : Fragment() {
private val bus = ActionBusFactory.get(this)
private var sessionObserver: SessionManager.Observer? = null
@ -210,6 +211,7 @@ class HomeFragment : Fragment() {
is SessionsAction.Delete -> {
requireComponents.core.sessionStorage.remove(it.archivedSession.bundle)
}
is SessionsAction.MenuTapped -> openSessionMenu()
}
}
}

View File

@ -1,31 +0,0 @@
/* This Source Code Form is subject to the terms of the Mozilla Public
License, v. 2.0. If a copy of the MPL was not distributed with this
file, You can obtain one at http://mozilla.org/MPL/2.0/. */
package org.mozilla.fenix.home.sessions
import android.content.Context
import mozilla.components.browser.menu.BrowserMenuBuilder
import mozilla.components.browser.menu.item.SimpleBrowserMenuItem
import org.mozilla.fenix.R
class SessionItemMenu(
private val context: Context,
private val onItemTapped: (Item) -> Unit = {}
) {
sealed class Item {
object Delete : Item()
}
val menuBuilder by lazy { BrowserMenuBuilder(menuItems) }
private val menuItems by lazy {
listOf(
SimpleBrowserMenuItem(
context.getString(R.string.session_item_delete)
) {
onItemTapped.invoke(Item.Delete)
}
)
}
}

View File

@ -94,17 +94,14 @@ class SessionsAdapter(
override val containerView: View? = view
) : RecyclerView.ViewHolder(view), LayoutContainer {
private var session: ArchivedSession? = null
private lateinit var sessionMenu: SessionItemMenu
init {
setupMenu()
session_item.setOnClickListener {
session?.apply { actionEmitter.onNext(SessionsAction.Select(this)) }
}
session_card_overflow_button.setOnClickListener {
sessionMenu.menuBuilder.build(itemView.context).show(it)
session?.apply { actionEmitter.onNext(SessionsAction.MenuTapped(this)) }
}
}
@ -122,16 +119,6 @@ class SessionsAdapter(
} else { "" }
}
private fun setupMenu() {
sessionMenu = SessionItemMenu(itemView.context) {
if (it is SessionItemMenu.Item.Delete) {
session?.apply {
actionEmitter.onNext(SessionsAction.Delete(this))
}
}
}
}
companion object {
private val availableColors = listOf(
R.color.photonBlue40, R.color.photonGreen50, R.color.photonYellow50, R.color.photonOrange50,

View File

@ -115,6 +115,7 @@ data class SessionsState(val archivedSessions: List<ArchivedSession>) : ViewStat
sealed class SessionsAction : Action {
data class Select(val archivedSession: ArchivedSession) : SessionsAction()
data class Delete(val archivedSession: ArchivedSession) : SessionsAction()
data class MenuTapped(val archivedSession: ArchivedSession) : SessionsAction()
}
sealed class SessionsChange : Change {