From 22c915b5a4b17178f09e90644d7af7667c2bd446 Mon Sep 17 00:00:00 2001 From: Jeff Boek Date: Thu, 28 Feb 2019 15:12:25 -0800 Subject: [PATCH] For #673 - Trigger session overflow menu on session item menu --- .../org/mozilla/fenix/home/HomeFragment.kt | 2 ++ .../fenix/home/sessions/SessionItemMenu.kt | 31 ------------------- .../fenix/home/sessions/SessionsAdapter.kt | 15 +-------- .../fenix/home/sessions/SessionsComponent.kt | 1 + 4 files changed, 4 insertions(+), 45 deletions(-) delete mode 100644 app/src/main/java/org/mozilla/fenix/home/sessions/SessionItemMenu.kt diff --git a/app/src/main/java/org/mozilla/fenix/home/HomeFragment.kt b/app/src/main/java/org/mozilla/fenix/home/HomeFragment.kt index 6693792c9..16f3d8c63 100644 --- a/app/src/main/java/org/mozilla/fenix/home/HomeFragment.kt +++ b/app/src/main/java/org/mozilla/fenix/home/HomeFragment.kt @@ -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() } } } diff --git a/app/src/main/java/org/mozilla/fenix/home/sessions/SessionItemMenu.kt b/app/src/main/java/org/mozilla/fenix/home/sessions/SessionItemMenu.kt deleted file mode 100644 index 54704ef45..000000000 --- a/app/src/main/java/org/mozilla/fenix/home/sessions/SessionItemMenu.kt +++ /dev/null @@ -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) - } - ) - } -} diff --git a/app/src/main/java/org/mozilla/fenix/home/sessions/SessionsAdapter.kt b/app/src/main/java/org/mozilla/fenix/home/sessions/SessionsAdapter.kt index f2baeba85..b2b062534 100644 --- a/app/src/main/java/org/mozilla/fenix/home/sessions/SessionsAdapter.kt +++ b/app/src/main/java/org/mozilla/fenix/home/sessions/SessionsAdapter.kt @@ -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, diff --git a/app/src/main/java/org/mozilla/fenix/home/sessions/SessionsComponent.kt b/app/src/main/java/org/mozilla/fenix/home/sessions/SessionsComponent.kt index c02ae6a97..c80270010 100644 --- a/app/src/main/java/org/mozilla/fenix/home/sessions/SessionsComponent.kt +++ b/app/src/main/java/org/mozilla/fenix/home/sessions/SessionsComponent.kt @@ -115,6 +115,7 @@ data class SessionsState(val archivedSessions: List) : 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 {