mirror of
				https://github.com/mihonapp/mihon.git
				synced 2025-10-31 14:27:57 +01:00 
			
		
		
		
	Bottom action menu for updates
This commit is contained in:
		| @@ -27,6 +27,8 @@ import eu.kanade.tachiyomi.ui.manga.MangaController | ||||
| import eu.kanade.tachiyomi.ui.reader.ReaderActivity | ||||
| import eu.kanade.tachiyomi.util.system.notificationManager | ||||
| import eu.kanade.tachiyomi.util.system.toast | ||||
| import kotlinx.android.synthetic.main.updates_controller.bottom_menu | ||||
| import kotlinx.android.synthetic.main.updates_controller.bottom_menu_bar | ||||
| import kotlinx.android.synthetic.main.updates_controller.empty_view | ||||
| import kotlinx.android.synthetic.main.updates_controller.recycler | ||||
| import kotlinx.android.synthetic.main.updates_controller.swipe_refresh | ||||
| @@ -100,11 +102,14 @@ class UpdatesController : NucleusController<UpdatesPresenter>(), | ||||
|             // It can be a very long operation, so we disable swipe refresh and show a toast. | ||||
|             swipe_refresh.isRefreshing = false | ||||
|         } | ||||
|  | ||||
|         bottom_menu.setOnMenuItemClickListener { onActionItemClicked(actionMode!!, it) } | ||||
|     } | ||||
|  | ||||
|     override fun onDestroyView(view: View) { | ||||
|         adapter = null | ||||
|         actionMode = null | ||||
|         bottom_menu.setOnMenuItemClickListener(null) | ||||
|         super.onDestroyView(view) | ||||
|     } | ||||
|  | ||||
| @@ -171,7 +176,6 @@ class UpdatesController : NucleusController<UpdatesPresenter>(), | ||||
|      * @param chapters list of selected [UpdatesItem]s | ||||
|      */ | ||||
|     fun downloadChapters(chapters: List<UpdatesItem>) { | ||||
|         destroyActionModeIfNeeded() | ||||
|         presenter.downloadChapters(chapters) | ||||
|     } | ||||
|  | ||||
| @@ -220,7 +224,6 @@ class UpdatesController : NucleusController<UpdatesPresenter>(), | ||||
|     } | ||||
|  | ||||
|     override fun deleteChapters(chaptersToDelete: List<UpdatesItem>) { | ||||
|         destroyActionModeIfNeeded() | ||||
|         DeletingChaptersDialog().showDialog(router) | ||||
|         presenter.deleteChapters(chaptersToDelete) | ||||
|     } | ||||
| @@ -228,7 +231,7 @@ class UpdatesController : NucleusController<UpdatesPresenter>(), | ||||
|     /** | ||||
|      * Destory [ActionMode] if it's shown | ||||
|      */ | ||||
|     fun destroyActionModeIfNeeded() { | ||||
|     private fun destroyActionModeIfNeeded() { | ||||
|         actionMode?.finish() | ||||
|     } | ||||
|  | ||||
| @@ -240,23 +243,6 @@ class UpdatesController : NucleusController<UpdatesPresenter>(), | ||||
|         presenter.markChapterRead(chapters, false) | ||||
|     } | ||||
|  | ||||
|     /** | ||||
|      * Start downloading chapter | ||||
|      * @param chapter selected chapter with manga | ||||
|      */ | ||||
|     fun downloadChapter(chapter: UpdatesItem) { | ||||
|         presenter.downloadChapters(listOf(chapter)) | ||||
|     } | ||||
|  | ||||
|     /** | ||||
|      * Start deleting chapter | ||||
|      * @param chapter selected chapter with manga | ||||
|      */ | ||||
|     fun deleteChapter(chapter: UpdatesItem) { | ||||
|         DeletingChaptersDialog().showDialog(router) | ||||
|         presenter.deleteChapters(listOf(chapter)) | ||||
|     } | ||||
|  | ||||
|     override fun onCoverClick(position: Int) { | ||||
|         val chapterClicked = adapter?.getItem(position) as? UpdatesItem ?: return | ||||
|         openManga(chapterClicked) | ||||
| @@ -296,8 +282,14 @@ class UpdatesController : NucleusController<UpdatesPresenter>(), | ||||
|      * @param menu menu object of ActionMode | ||||
|      */ | ||||
|     override fun onCreateActionMode(mode: ActionMode, menu: Menu): Boolean { | ||||
|         mode.menuInflater.inflate(R.menu.updates_chapter_selection, menu) | ||||
|         mode.menuInflater.inflate(R.menu.generic_selection, menu) | ||||
|         adapter?.mode = SelectableAdapter.Mode.MULTI | ||||
|  | ||||
|         // Avoid reinflating the menu multiple times | ||||
|         if (bottom_menu.menu.size() == 0) { | ||||
|             mode.menuInflater.inflate(R.menu.updates_chapter_selection, bottom_menu.menu) | ||||
|         } | ||||
|  | ||||
|         return true | ||||
|     } | ||||
|  | ||||
| @@ -309,11 +301,7 @@ class UpdatesController : NucleusController<UpdatesPresenter>(), | ||||
|         } else { | ||||
|             mode.title = count.toString() | ||||
|  | ||||
|             val chapters = getSelectedChapters() | ||||
|             menu.findItem(R.id.action_download).isVisible = chapters.any { !it.isDownloaded } | ||||
|             menu.findItem(R.id.action_delete).isVisible = chapters.any { it.isDownloaded } | ||||
|             menu.findItem(R.id.action_mark_as_read).isVisible = chapters.any { !it.chapter.read } | ||||
|             menu.findItem(R.id.action_mark_as_unread).isVisible = chapters.any { it.chapter.read } | ||||
|             bottom_menu_bar.visibility = View.VISIBLE | ||||
|         } | ||||
|  | ||||
|         return false | ||||
| @@ -326,6 +314,7 @@ class UpdatesController : NucleusController<UpdatesPresenter>(), | ||||
|      */ | ||||
|     override fun onActionItemClicked(mode: ActionMode, item: MenuItem): Boolean { | ||||
|         when (item.itemId) { | ||||
|             R.id.action_select_all -> selectAll() | ||||
|             R.id.action_download -> downloadChapters(getSelectedChapters()) | ||||
|             R.id.action_delete -> ConfirmDeleteChaptersDialog(this, getSelectedChapters()) | ||||
|                     .showDialog(router) | ||||
| @@ -341,8 +330,15 @@ class UpdatesController : NucleusController<UpdatesPresenter>(), | ||||
|      * @param mode the ActionMode object | ||||
|      */ | ||||
|     override fun onDestroyActionMode(mode: ActionMode?) { | ||||
|         bottom_menu_bar.visibility = View.GONE | ||||
|         adapter?.mode = SelectableAdapter.Mode.IDLE | ||||
|         adapter?.clearSelection() | ||||
|         actionMode = null | ||||
|     } | ||||
|  | ||||
|     private fun selectAll() { | ||||
|         val adapter = adapter ?: return | ||||
|         adapter.selectAll() | ||||
|         actionMode?.invalidate() | ||||
|     } | ||||
| } | ||||
|   | ||||
		Reference in New Issue
	
	Block a user