From 95019f9eb6a781f9894ae1552e8e1cda96b97fca Mon Sep 17 00:00:00 2001 From: Koitharu Date: Sun, 22 Jun 2025 11:30:14 +0300 Subject: [PATCH] Option to open reader in a separated task --- .../kotlin/org/koitharu/kotatsu/core/nav/AppRouter.kt | 8 ++++++-- .../kotlin/org/koitharu/kotatsu/core/nav/ReaderIntent.kt | 2 ++ .../kotlin/org/koitharu/kotatsu/core/prefs/AppSettings.kt | 4 ++++ app/src/main/res/values/strings.xml | 2 ++ app/src/main/res/xml/pref_reader.xml | 6 ++++++ 5 files changed, 20 insertions(+), 2 deletions(-) diff --git a/app/src/main/kotlin/org/koitharu/kotatsu/core/nav/AppRouter.kt b/app/src/main/kotlin/org/koitharu/kotatsu/core/nav/AppRouter.kt index 614634b87..0bd665d7d 100644 --- a/app/src/main/kotlin/org/koitharu/kotatsu/core/nav/AppRouter.kt +++ b/app/src/main/kotlin/org/koitharu/kotatsu/core/nav/AppRouter.kt @@ -165,7 +165,11 @@ class AppRouter private constructor( } fun openReader(intent: ReaderIntent, anchor: View? = null) { - startActivity(intent.intent, anchor?.let { view -> scaleUpActivityOptionsOf(view) }) + val activityIntent = intent.intent + if (settings.isReaderMultiTaskEnabled && activityIntent.data != null) { + activityIntent.addFlags(Intent.FLAG_ACTIVITY_NEW_DOCUMENT) + } + startActivity(activityIntent, anchor?.let { view -> scaleUpActivityOptionsOf(view) }) } fun openAlternatives(manga: Manga) { @@ -779,7 +783,7 @@ class AppRouter private constructor( else -> true } - private fun shortMangaUrl(mangaId: Long) = Uri.Builder() + fun shortMangaUrl(mangaId: Long) = Uri.Builder() .scheme("kotatsu") .path("manga") .appendQueryParameter("id", mangaId.toString()) diff --git a/app/src/main/kotlin/org/koitharu/kotatsu/core/nav/ReaderIntent.kt b/app/src/main/kotlin/org/koitharu/kotatsu/core/nav/ReaderIntent.kt index 407e293c7..dbd299be7 100644 --- a/app/src/main/kotlin/org/koitharu/kotatsu/core/nav/ReaderIntent.kt +++ b/app/src/main/kotlin/org/koitharu/kotatsu/core/nav/ReaderIntent.kt @@ -21,10 +21,12 @@ value class ReaderIntent private constructor( fun manga(manga: Manga) = apply { intent.putExtra(AppRouter.KEY_MANGA, ParcelableManga(manga)) + intent.setData(AppRouter.shortMangaUrl(manga.id)) } fun mangaId(mangaId: Long) = apply { intent.putExtra(AppRouter.KEY_ID, mangaId) + intent.setData(AppRouter.shortMangaUrl(mangaId)) } fun incognito() = apply { diff --git a/app/src/main/kotlin/org/koitharu/kotatsu/core/prefs/AppSettings.kt b/app/src/main/kotlin/org/koitharu/kotatsu/core/prefs/AppSettings.kt index ca06f5e6f..c5849d34a 100644 --- a/app/src/main/kotlin/org/koitharu/kotatsu/core/prefs/AppSettings.kt +++ b/app/src/main/kotlin/org/koitharu/kotatsu/core/prefs/AppSettings.kt @@ -225,6 +225,9 @@ class AppSettings @Inject constructor(@ApplicationContext context: Context) { get() = prefs.getBoolean(KEY_INCOGNITO_MODE, false) set(value) = prefs.edit { putBoolean(KEY_INCOGNITO_MODE, value) } + val isReaderMultiTaskEnabled: Boolean + get() = prefs.getBoolean(KEY_READER_MULTITASK, false) + var isChaptersReverse: Boolean get() = prefs.getBoolean(KEY_REVERSE_CHAPTERS, false) set(value) = prefs.edit { putBoolean(KEY_REVERSE_CHAPTERS, value) } @@ -688,6 +691,7 @@ class AppSettings @Inject constructor(@ApplicationContext context: Context) { const val KEY_DOH = "doh" const val KEY_EXIT_CONFIRM = "exit_confirm" const val KEY_INCOGNITO_MODE = "incognito" + const val KEY_READER_MULTITASK = "reader_multitask" const val KEY_SYNC = "sync" const val KEY_SYNC_SETTINGS = "sync_settings" const val KEY_READER_BAR = "reader_bar" diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml index 7b4409002..794456768 100644 --- a/app/src/main/res/values/strings.xml +++ b/app/src/main/res/values/strings.xml @@ -847,4 +847,6 @@ Collapse long description Creating backup Share backup + Open reader in a separate task + Allows you to keep multiple readers with different manga open at the same time diff --git a/app/src/main/res/xml/pref_reader.xml b/app/src/main/res/xml/pref_reader.xml index b341c9217..894bed8f3 100644 --- a/app/src/main/res/xml/pref_reader.xml +++ b/app/src/main/res/xml/pref_reader.xml @@ -119,6 +119,12 @@ android:summary="@string/keep_screen_on_summary" android:title="@string/keep_screen_on" /> + +