From 25d1954e8abd8f8e79c00d5ccff339338f6047a9 Mon Sep 17 00:00:00 2001 From: Ahmad Ansori Palembani Date: Wed, 22 May 2024 08:53:39 +0700 Subject: [PATCH] fix: Colour profile selector --- CHANGELOG.md | 4 ++++ .../java/eu/kanade/tachiyomi/ui/main/MainActivity.kt | 10 ++++++---- .../tachiyomi/ui/setting/SettingsAdvancedController.kt | 8 +++++++- 3 files changed, 17 insertions(+), 5 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index a75ad98677..9755b17dc6 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -9,6 +9,10 @@ --> ## Additions - Added cutout support for some pre-Android P devices +- Added option to add custom colour profile + +## Changes +- Permanently enable 32-bit colour mode ## Fixes - Fixed cutout behaviour for Android P diff --git a/app/src/main/java/eu/kanade/tachiyomi/ui/main/MainActivity.kt b/app/src/main/java/eu/kanade/tachiyomi/ui/main/MainActivity.kt index 9cc3e9a457..bb83425fa7 100644 --- a/app/src/main/java/eu/kanade/tachiyomi/ui/main/MainActivity.kt +++ b/app/src/main/java/eu/kanade/tachiyomi/ui/main/MainActivity.kt @@ -208,14 +208,16 @@ open class MainActivity : BaseActivity() { } } + private val basePreferences: BasePreferences by injectLazy() + // Ideally we want this to be inside the controller itself, but Conductor doesn't support the new ActivityResult API // Should be fine once we moved completely to Compose..... someday.... // REF: https://github.com/bluelinelabs/Conductor/issues/612 - private fun requestColourProfile(context: Context, basePreferences: BasePreferences) = + private val requestColourProfile = registerForActivityResult(ActivityResultContracts.OpenDocument()) { uri -> uri?.let { val flags = Intent.FLAG_GRANT_READ_URI_PERMISSION - context.contentResolver.takePersistableUriPermission(uri, flags) + applicationContext.contentResolver.takePersistableUriPermission(uri, flags) basePreferences.displayProfile().set(uri.toString()) } } @@ -1009,9 +1011,9 @@ open class MainActivity : BaseActivity() { } } - fun showColourProfilePicker(context: Context, basePreferences: BasePreferences) { + fun showColourProfilePicker() { if (Build.VERSION.SDK_INT < Build.VERSION_CODES.O) return - requestColourProfile(context, basePreferences).launch(arrayOf("*/*")) + requestColourProfile.launch(arrayOf("*/*")) } override fun onNewIntent(intent: Intent) { diff --git a/app/src/main/java/eu/kanade/tachiyomi/ui/setting/SettingsAdvancedController.kt b/app/src/main/java/eu/kanade/tachiyomi/ui/setting/SettingsAdvancedController.kt index a5b54e0585..197b2173e6 100644 --- a/app/src/main/java/eu/kanade/tachiyomi/ui/setting/SettingsAdvancedController.kt +++ b/app/src/main/java/eu/kanade/tachiyomi/ui/setting/SettingsAdvancedController.kt @@ -16,6 +16,7 @@ import androidx.lifecycle.lifecycleScope import androidx.preference.PreferenceScreen import com.google.firebase.crashlytics.ktx.crashlytics import com.google.firebase.ktx.Firebase +import com.hippo.unifile.UniFile import dev.yokai.domain.base.BasePreferences.ExtensionInstaller import dev.yokai.domain.extension.TrustExtension import eu.kanade.tachiyomi.BuildConfig @@ -407,7 +408,12 @@ class SettingsAdvancedController : SettingsController() { key = "pref_display_profile" titleRes = R.string.pref_display_profile onClick { - (activity as? MainActivity)?.showColourProfilePicker(context, basePreferences) + (activity as? MainActivity)?.showColourProfilePicker() + } + + basePreferences.displayProfile().changesIn(viewScope) { path -> + val actualPath = UniFile.fromUri(context, path.toUri()).filePath ?: path + if (actualPath.isNotEmpty()) summary = actualPath } } }