mirror of
				https://github.com/mihonapp/mihon.git
				synced 2025-10-30 22:07:57 +01:00 
			
		
		
		
	Long click to manage categories (#2045)
This commit is contained in:
		| @@ -88,6 +88,9 @@ class MangaInfoController : NucleusController<MangaInfoPresenter>(), | ||||
|         // Set onclickListener to toggle favorite when FAB clicked. | ||||
|         fab_favorite.clicks().subscribeUntilDestroy { onFabClick() } | ||||
|  | ||||
|         // Set onLongClickListener to manage categories when FAB is clicked. | ||||
|         fab_favorite.longClicks().subscribeUntilDestroy{ onFabLongClick() } | ||||
|  | ||||
|         // Set SwipeRefresh to refresh manga data. | ||||
|         swipe_refresh.refreshes().subscribeUntilDestroy { fetchMangaFromSource() } | ||||
|  | ||||
| @@ -400,6 +403,33 @@ class MangaInfoController : NucleusController<MangaInfoPresenter>(), | ||||
|         } | ||||
|     } | ||||
|  | ||||
|     /** | ||||
|      * Called when the fab is long clicked. | ||||
|      */ | ||||
|     private fun onFabLongClick() { | ||||
|         val manga = presenter.manga | ||||
|         if (!manga.favorite) { | ||||
|             toggleFavorite() | ||||
|             activity?.toast(activity?.getString(R.string.manga_added_library)) | ||||
|         } | ||||
|         val categories = presenter.getCategories() | ||||
|         val defaultCategory = categories.find { it.id == preferences.defaultCategory() } | ||||
|         when { | ||||
|             defaultCategory != null -> presenter.moveMangaToCategory(manga, defaultCategory) | ||||
|             categories.size <= 1 -> // default or the one from the user | ||||
|                 presenter.moveMangaToCategory(manga, categories.firstOrNull()) | ||||
|             else -> { | ||||
|                 val ids = presenter.getMangaCategoryIds(manga) | ||||
|                 val preselected = ids.mapNotNull { id -> | ||||
|                     categories.indexOfFirst { it.id == id }.takeIf { it != -1 } | ||||
|                 }.toTypedArray() | ||||
|  | ||||
|                 ChangeMangaCategoriesDialog(this, listOf(manga), categories, preselected) | ||||
|                         .showDialog(router) | ||||
|             } | ||||
|         } | ||||
|     } | ||||
|  | ||||
|     override fun updateCategoriesForMangas(mangas: List<Manga>, categories: List<Category>) { | ||||
|         val manga = mangas.firstOrNull() ?: return | ||||
|         presenter.moveMangaToCategories(manga, categories) | ||||
|   | ||||
		Reference in New Issue
	
	Block a user