mirror of
				https://github.com/mihonapp/mihon.git
				synced 2025-11-03 23:58:55 +01:00 
			
		
		
		
	Tweak how bottom action menu is configured
This commit is contained in:
		@@ -0,0 +1,8 @@
 | 
			
		||||
package eu.kanade.tachiyomi.ui.base.controller
 | 
			
		||||
 | 
			
		||||
import eu.kanade.tachiyomi.widget.BottomActionMenu
 | 
			
		||||
 | 
			
		||||
interface BottomActionMenuController {
 | 
			
		||||
 | 
			
		||||
    fun configureBottomActionMenu(bottomActionMenu: BottomActionMenu)
 | 
			
		||||
}
 | 
			
		||||
@@ -14,6 +14,7 @@ import eu.kanade.tachiyomi.Migrations
 | 
			
		||||
import eu.kanade.tachiyomi.R
 | 
			
		||||
import eu.kanade.tachiyomi.data.notification.NotificationReceiver
 | 
			
		||||
import eu.kanade.tachiyomi.ui.base.activity.BaseActivity
 | 
			
		||||
import eu.kanade.tachiyomi.ui.base.controller.BottomActionMenuController
 | 
			
		||||
import eu.kanade.tachiyomi.ui.base.controller.DialogController
 | 
			
		||||
import eu.kanade.tachiyomi.ui.base.controller.NoToolbarElevationController
 | 
			
		||||
import eu.kanade.tachiyomi.ui.base.controller.RootController
 | 
			
		||||
@@ -76,7 +77,7 @@ class MainActivity : BaseActivity() {
 | 
			
		||||
            if (currentRoot?.tag()?.toIntOrNull() != id) {
 | 
			
		||||
                when (id) {
 | 
			
		||||
                    R.id.nav_library -> setRoot(LibraryController(), id)
 | 
			
		||||
                    R.id.nav_updates -> setRoot(UpdatesController(bottom_action_menu), id)
 | 
			
		||||
                    R.id.nav_updates -> setRoot(UpdatesController(), id)
 | 
			
		||||
                    R.id.nav_history -> setRoot(HistoryController(), id)
 | 
			
		||||
                    R.id.nav_catalogues -> setRoot(CatalogueController(), id)
 | 
			
		||||
                    R.id.nav_more -> setRoot(MoreController(), id)
 | 
			
		||||
@@ -258,6 +259,13 @@ class MainActivity : BaseActivity() {
 | 
			
		||||
        } else {
 | 
			
		||||
            appbar.enableElevation()
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        if (from is BottomActionMenuController) {
 | 
			
		||||
            bottom_action_menu.cleanup()
 | 
			
		||||
        }
 | 
			
		||||
        if (to is BottomActionMenuController) {
 | 
			
		||||
            to.configureBottomActionMenu(bottom_action_menu)
 | 
			
		||||
        }
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    companion object {
 | 
			
		||||
 
 | 
			
		||||
@@ -7,7 +7,6 @@ import android.view.View
 | 
			
		||||
import android.view.ViewGroup
 | 
			
		||||
import androidx.appcompat.app.AppCompatActivity
 | 
			
		||||
import androidx.appcompat.view.ActionMode
 | 
			
		||||
import androidx.appcompat.widget.ActionMenuView
 | 
			
		||||
import androidx.recyclerview.widget.DividerItemDecoration
 | 
			
		||||
import androidx.recyclerview.widget.LinearLayoutManager
 | 
			
		||||
import com.jakewharton.rxbinding.support.v4.widget.refreshes
 | 
			
		||||
@@ -19,6 +18,7 @@ import eu.kanade.tachiyomi.R
 | 
			
		||||
import eu.kanade.tachiyomi.data.download.model.Download
 | 
			
		||||
import eu.kanade.tachiyomi.data.library.LibraryUpdateService
 | 
			
		||||
import eu.kanade.tachiyomi.data.notification.Notifications
 | 
			
		||||
import eu.kanade.tachiyomi.ui.base.controller.BottomActionMenuController
 | 
			
		||||
import eu.kanade.tachiyomi.ui.base.controller.NoToolbarElevationController
 | 
			
		||||
import eu.kanade.tachiyomi.ui.base.controller.NucleusController
 | 
			
		||||
import eu.kanade.tachiyomi.ui.base.controller.RootController
 | 
			
		||||
@@ -39,9 +39,10 @@ import timber.log.Timber
 | 
			
		||||
 * Uses [R.layout.updates_controller].
 | 
			
		||||
 * UI related actions should be called from here.
 | 
			
		||||
 */
 | 
			
		||||
class UpdatesController() : NucleusController<UpdatesPresenter>(),
 | 
			
		||||
class UpdatesController : NucleusController<UpdatesPresenter>(),
 | 
			
		||||
        RootController,
 | 
			
		||||
        NoToolbarElevationController,
 | 
			
		||||
        BottomActionMenuController,
 | 
			
		||||
        ActionMode.Callback,
 | 
			
		||||
        FlexibleAdapter.OnItemClickListener,
 | 
			
		||||
        FlexibleAdapter.OnItemLongClickListener,
 | 
			
		||||
@@ -49,10 +50,6 @@ class UpdatesController() : NucleusController<UpdatesPresenter>(),
 | 
			
		||||
        ConfirmDeleteChaptersDialog.Listener,
 | 
			
		||||
        UpdatesAdapter.OnCoverClickListener {
 | 
			
		||||
 | 
			
		||||
    constructor(bottomActionMenu: BottomActionMenu) : this() {
 | 
			
		||||
        this.bottomActionMenu = bottomActionMenu
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    /**
 | 
			
		||||
     * Action mode for multiple selection.
 | 
			
		||||
     */
 | 
			
		||||
@@ -299,11 +296,7 @@ class UpdatesController() : NucleusController<UpdatesPresenter>(),
 | 
			
		||||
        } else {
 | 
			
		||||
            mode.title = count.toString()
 | 
			
		||||
 | 
			
		||||
            bottomActionMenu?.show(
 | 
			
		||||
                    mode.menuInflater,
 | 
			
		||||
                    R.menu.updates_chapter_selection,
 | 
			
		||||
                    ActionMenuView.OnMenuItemClickListener { onActionItemClicked(actionMode!!, it) }
 | 
			
		||||
            )
 | 
			
		||||
            bottomActionMenu?.show(mode.menuInflater)
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        return false
 | 
			
		||||
@@ -343,4 +336,11 @@ class UpdatesController() : NucleusController<UpdatesPresenter>(),
 | 
			
		||||
        adapter.selectAll()
 | 
			
		||||
        actionMode?.invalidate()
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    override fun configureBottomActionMenu(bottomActionMenu: BottomActionMenu) {
 | 
			
		||||
        this.bottomActionMenu = bottomActionMenu
 | 
			
		||||
        bottomActionMenu.configure(
 | 
			
		||||
                R.menu.updates_chapter_selection
 | 
			
		||||
        ) { onActionItemClicked(actionMode!!, it!!) }
 | 
			
		||||
    }
 | 
			
		||||
}
 | 
			
		||||
 
 | 
			
		||||
@@ -3,10 +3,10 @@ package eu.kanade.tachiyomi.widget
 | 
			
		||||
import android.content.Context
 | 
			
		||||
import android.util.AttributeSet
 | 
			
		||||
import android.view.MenuInflater
 | 
			
		||||
import android.view.MenuItem
 | 
			
		||||
import android.view.View
 | 
			
		||||
import android.widget.FrameLayout
 | 
			
		||||
import androidx.annotation.MenuRes
 | 
			
		||||
import androidx.appcompat.widget.ActionMenuView
 | 
			
		||||
import eu.kanade.tachiyomi.R
 | 
			
		||||
import kotlinx.android.synthetic.main.common_bottom_action_menu.view.bottom_menu
 | 
			
		||||
import kotlinx.android.synthetic.main.common_bottom_action_menu.view.bottom_menu_bar
 | 
			
		||||
@@ -14,15 +14,27 @@ import kotlinx.android.synthetic.main.common_bottom_action_menu.view.bottom_menu
 | 
			
		||||
class BottomActionMenu @JvmOverloads constructor(context: Context, attrs: AttributeSet? = null) :
 | 
			
		||||
        FrameLayout(context, attrs) {
 | 
			
		||||
 | 
			
		||||
    @MenuRes
 | 
			
		||||
    private var menuRes: Int = 0
 | 
			
		||||
 | 
			
		||||
    init {
 | 
			
		||||
        inflate(context, R.layout.common_bottom_action_menu, this)
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    fun show(menuInflater: MenuInflater, @MenuRes menuRes: Int, listener: ActionMenuView.OnMenuItemClickListener) {
 | 
			
		||||
    fun configure(@MenuRes menuRes: Int, listener: (item: MenuItem?) -> Boolean) {
 | 
			
		||||
        this.menuRes = menuRes
 | 
			
		||||
        bottom_menu.setOnMenuItemClickListener { listener(it) }
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    fun cleanup() {
 | 
			
		||||
        bottom_menu.menu.clear()
 | 
			
		||||
        bottom_menu.setOnMenuItemClickListener(null)
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    fun show(menuInflater: MenuInflater) {
 | 
			
		||||
        // Avoid re-inflating the menu
 | 
			
		||||
        if (bottom_menu.menu.size() == 0) {
 | 
			
		||||
            menuInflater.inflate(menuRes, bottom_menu.menu)
 | 
			
		||||
            bottom_menu.setOnMenuItemClickListener(listener)
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        bottom_menu_bar.visibility = View.VISIBLE
 | 
			
		||||
@@ -30,8 +42,5 @@ class BottomActionMenu @JvmOverloads constructor(context: Context, attrs: Attrib
 | 
			
		||||
 | 
			
		||||
    fun hide() {
 | 
			
		||||
        bottom_menu_bar.visibility = View.GONE
 | 
			
		||||
 | 
			
		||||
        bottom_menu.setOnMenuItemClickListener(null)
 | 
			
		||||
        bottom_menu.menu.clear()
 | 
			
		||||
    }
 | 
			
		||||
}
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user