diff --git a/app/src/main/java/eu/kanade/tachiyomi/data/preference/PreferenceKeys.kt b/app/src/main/java/eu/kanade/tachiyomi/data/preference/PreferenceKeys.kt index 36289fb30..c257b4cd9 100755 --- a/app/src/main/java/eu/kanade/tachiyomi/data/preference/PreferenceKeys.kt +++ b/app/src/main/java/eu/kanade/tachiyomi/data/preference/PreferenceKeys.kt @@ -169,6 +169,8 @@ object PreferenceKeys { const val eh_expandFilters = "eh_expand_filters" + const val eh_askCategoryOnLongPress = "eh_ask_category_on_long_press" + const val eh_readerThreads = "eh_reader_threads" const val eh_readerInstantRetry = "eh_reader_instant_retry" diff --git a/app/src/main/java/eu/kanade/tachiyomi/data/preference/PreferencesHelper.kt b/app/src/main/java/eu/kanade/tachiyomi/data/preference/PreferencesHelper.kt index 75fc92e0c..bfe8399f0 100755 --- a/app/src/main/java/eu/kanade/tachiyomi/data/preference/PreferencesHelper.kt +++ b/app/src/main/java/eu/kanade/tachiyomi/data/preference/PreferencesHelper.kt @@ -251,4 +251,6 @@ class PreferencesHelper(val context: Context) { fun eh_preserveReadingPosition() = rxPrefs.getBoolean(Keys.eh_preserveReadingPosition, false) fun eh_incogWebview() = rxPrefs.getBoolean(Keys.eh_incogWebview, false) + + fun eh_askCategoryOnLongPress() = rxPrefs.getBoolean(Keys.eh_askCategoryOnLongPress, false) } diff --git a/app/src/main/java/eu/kanade/tachiyomi/ui/manga/info/MangaInfoController.kt b/app/src/main/java/eu/kanade/tachiyomi/ui/manga/info/MangaInfoController.kt index 3c32bcb28..850cdb7be 100644 --- a/app/src/main/java/eu/kanade/tachiyomi/ui/manga/info/MangaInfoController.kt +++ b/app/src/main/java/eu/kanade/tachiyomi/ui/manga/info/MangaInfoController.kt @@ -93,6 +93,7 @@ class MangaInfoController : NucleusController(), // Set onclickListener to toggle favorite when FAB clicked. fab_favorite.clicks().subscribeUntilDestroy { onFabClick() } + fab_favorite.longClicks().subscribeUntilDestroy { onFabLongClick() } // Set SwipeRefresh to refresh manga data. swipe_refresh.refreshes().subscribeUntilDestroy { fetchMangaFromSource() } @@ -408,15 +409,7 @@ class MangaInfoController : NucleusController(), 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) - } + else -> askCategories(manga, categories) } activity?.toast(activity?.getString(R.string.manga_added_library)) } else { @@ -424,6 +417,27 @@ class MangaInfoController : NucleusController(), } } + private fun onFabLongClick() { + if(preferences.eh_askCategoryOnLongPress().getOrDefault()) { + val manga = presenter.manga + if(!manga.favorite) toggleFavorite() + val categories = presenter.getCategories() + if(categories.size > 1) { + askCategories(manga, categories) + } + } + } + + private fun askCategories(manga: Manga, categories: List) { + 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, categories: List) { val manga = mangas.firstOrNull() ?: return presenter.moveMangaToCategories(manga, categories) diff --git a/app/src/main/java/eu/kanade/tachiyomi/ui/setting/SettingsGeneralController.kt b/app/src/main/java/eu/kanade/tachiyomi/ui/setting/SettingsGeneralController.kt index 8e4057bf8..690327c8c 100644 --- a/app/src/main/java/eu/kanade/tachiyomi/ui/setting/SettingsGeneralController.kt +++ b/app/src/main/java/eu/kanade/tachiyomi/ui/setting/SettingsGeneralController.kt @@ -180,6 +180,12 @@ class SettingsGeneralController : SettingsController() { } // --> EH + switchPreference { + key = Keys.eh_askCategoryOnLongPress + title = "Long-press favorite button to specify category" + defaultValue = false + } + switchPreference { key = Keys.eh_expandFilters title = "Expand all search filters by default" @@ -189,7 +195,7 @@ class SettingsGeneralController : SettingsController() { switchPreference { key = Keys.eh_incogWebview title = "Incognito 'Open in browser'" - summary = "Prevent pages viewed from the 'Open in browser' menu option from being placed into Chrome's browsing history. Some browser features will be unavailable." + summary = "Prevent pages viewed from the 'Open in browser' menu option from being placed into Chrome's browsing history. May be buggy, some browser features will be unavailable." defaultValue = false } diff --git a/build.gradle b/build.gradle index de8b9bc19..35811581f 100755 --- a/build.gradle +++ b/build.gradle @@ -18,7 +18,7 @@ buildscript { // in the individual module build.gradle files // Realm (EH) - classpath "io.realm:realm-gradle-plugin:5.3.1" + classpath "io.realm:realm-gradle-plugin:5.4.1" // Firebase (EH) classpath 'com.google.firebase:firebase-plugins:1.1.5'