From 9587cb439c0a22a26cbebd0b21470f61bd428452 Mon Sep 17 00:00:00 2001 From: Koitharu Date: Tue, 6 Jun 2023 10:10:24 +0300 Subject: [PATCH] Android 5 fixes --- .../koitharu/kotatsu/core/ui/BaseFullscreenActivity.kt | 8 +++++++- .../org/koitharu/kotatsu/details/ui/DetailsActivity.kt | 2 +- .../kotatsu/download/ui/list/DownloadsMenuProvider.kt | 5 +++++ .../kotlin/org/koitharu/kotatsu/local/data/PagesCache.kt | 8 ++++---- .../org/koitharu/kotatsu/settings/SettingsActivity.kt | 8 +++++++- app/src/main/res/menu/opt_downloads.xml | 5 +++++ 6 files changed, 29 insertions(+), 7 deletions(-) diff --git a/app/src/main/kotlin/org/koitharu/kotatsu/core/ui/BaseFullscreenActivity.kt b/app/src/main/kotlin/org/koitharu/kotatsu/core/ui/BaseFullscreenActivity.kt index 9a7ccbd2e..e5faecd51 100644 --- a/app/src/main/kotlin/org/koitharu/kotatsu/core/ui/BaseFullscreenActivity.kt +++ b/app/src/main/kotlin/org/koitharu/kotatsu/core/ui/BaseFullscreenActivity.kt @@ -4,9 +4,11 @@ import android.graphics.Color import android.os.Build import android.os.Bundle import android.view.WindowManager +import androidx.core.content.ContextCompat import androidx.core.view.WindowInsetsCompat import androidx.core.view.WindowInsetsControllerCompat import androidx.viewbinding.ViewBinding +import org.koitharu.kotatsu.R abstract class BaseFullscreenActivity : BaseActivity() { @@ -18,7 +20,11 @@ abstract class BaseFullscreenActivity : with(window) { insetsControllerCompat = WindowInsetsControllerCompat(this, decorView) statusBarColor = Color.TRANSPARENT - navigationBarColor = Color.TRANSPARENT + navigationBarColor = if (Build.VERSION.SDK_INT < Build.VERSION_CODES.M) { + ContextCompat.getColor(this@BaseFullscreenActivity, R.color.dim) + } else { + Color.TRANSPARENT + } if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.P) { attributes.layoutInDisplayCutoutMode = WindowManager.LayoutParams.LAYOUT_IN_DISPLAY_CUTOUT_MODE_SHORT_EDGES diff --git a/app/src/main/kotlin/org/koitharu/kotatsu/details/ui/DetailsActivity.kt b/app/src/main/kotlin/org/koitharu/kotatsu/details/ui/DetailsActivity.kt index 038348767..f8d2b146e 100644 --- a/app/src/main/kotlin/org/koitharu/kotatsu/details/ui/DetailsActivity.kt +++ b/app/src/main/kotlin/org/koitharu/kotatsu/details/ui/DetailsActivity.kt @@ -244,7 +244,7 @@ class DetailsActivity : bottomMargin = insets.bottom + marginEnd } viewBinding.dragHandle?.updateLayoutParams { - bottomMargin = insets.bottom + bottomMargin = insets.top } } diff --git a/app/src/main/kotlin/org/koitharu/kotatsu/download/ui/list/DownloadsMenuProvider.kt b/app/src/main/kotlin/org/koitharu/kotatsu/download/ui/list/DownloadsMenuProvider.kt index 89428502e..3429ee2c9 100644 --- a/app/src/main/kotlin/org/koitharu/kotatsu/download/ui/list/DownloadsMenuProvider.kt +++ b/app/src/main/kotlin/org/koitharu/kotatsu/download/ui/list/DownloadsMenuProvider.kt @@ -7,6 +7,7 @@ import android.view.MenuItem import androidx.core.view.MenuProvider import com.google.android.material.dialog.MaterialAlertDialogBuilder import org.koitharu.kotatsu.R +import org.koitharu.kotatsu.settings.SettingsActivity class DownloadsMenuProvider( private val context: Context, @@ -23,6 +24,10 @@ class DownloadsMenuProvider( R.id.action_resume -> viewModel.resumeAll() R.id.action_cancel_all -> confirmCancelAll() R.id.action_remove_completed -> confirmRemoveCompleted() + R.id.action_settings -> { + context.startActivity(SettingsActivity.newDownloadsSettingsIntent(context)) + } + else -> return false } return true diff --git a/app/src/main/kotlin/org/koitharu/kotatsu/local/data/PagesCache.kt b/app/src/main/kotlin/org/koitharu/kotatsu/local/data/PagesCache.kt index a39f01262..0e53a89e8 100644 --- a/app/src/main/kotlin/org/koitharu/kotatsu/local/data/PagesCache.kt +++ b/app/src/main/kotlin/org/koitharu/kotatsu/local/data/PagesCache.kt @@ -34,8 +34,8 @@ class PagesCache @Inject constructor(@ApplicationContext context: Context) { } private val lruCache = SuspendLazy { val dir = cacheDir.get() - val availableSize = getAvailableSizeMb() - val size = SIZE_DEFAULT.coerceIn(SIZE_MIN, availableSize) + val availableSize = (getAvailableSize() * 0.8).toLong() + val size = SIZE_DEFAULT.coerceAtMost(availableSize).coerceAtLeast(SIZE_MIN) runCatchingCancellable { DiskLruCache.create(dir, size) }.recoverCatching { error -> @@ -66,9 +66,9 @@ class PagesCache @Inject constructor(@ApplicationContext context: Context) { } } - private suspend fun getAvailableSizeMb(): Long = runCatchingCancellable { + private suspend fun getAvailableSize(): Long = runCatchingCancellable { val statFs = StatFs(cacheDir.get().absolutePath) - FileSize.BYTES.convert(statFs.availableBytes, FileSize.MEGABYTES) + statFs.availableBytes }.onFailure { it.printStackTraceDebug() }.getOrDefault(SIZE_DEFAULT) diff --git a/app/src/main/kotlin/org/koitharu/kotatsu/settings/SettingsActivity.kt b/app/src/main/kotlin/org/koitharu/kotatsu/settings/SettingsActivity.kt index ce3731f83..9e7ed1538 100644 --- a/app/src/main/kotlin/org/koitharu/kotatsu/settings/SettingsActivity.kt +++ b/app/src/main/kotlin/org/koitharu/kotatsu/settings/SettingsActivity.kt @@ -134,7 +134,7 @@ class SettingsActivity : supportFragmentManager.commit { setReorderingAllowed(true) replace(R.id.container, fragment) - setTransition(FragmentTransaction.TRANSIT_FRAGMENT_OPEN) + setTransition(FragmentTransaction.TRANSIT_FRAGMENT_MATCH_ACTIVITY_OPEN) if (!isMasterDetail || (hasFragment && !isFromRoot)) { addToBackStack(null) } @@ -148,6 +148,7 @@ class SettingsActivity : ACTION_SUGGESTIONS -> SuggestionsSettingsFragment() ACTION_HISTORY -> UserDataSettingsFragment() ACTION_TRACKER -> TrackerSettingsFragment() + ACTION_MANAGE_DOWNLOADS -> DownloadsSettingsFragment() ACTION_SOURCE -> SourceSettingsFragment.newInstance( intent.getSerializableExtraCompat(EXTRA_SOURCE) as? MangaSource ?: MangaSource.LOCAL, ) @@ -177,6 +178,7 @@ class SettingsActivity : private const val ACTION_HISTORY = "${BuildConfig.APPLICATION_ID}.action.MANAGE_HISTORY" private const val ACTION_SOURCE = "${BuildConfig.APPLICATION_ID}.action.MANAGE_SOURCE_SETTINGS" private const val ACTION_MANAGE_SOURCES = "${BuildConfig.APPLICATION_ID}.action.MANAGE_SOURCES_LIST" + private const val ACTION_MANAGE_DOWNLOADS = "${BuildConfig.APPLICATION_ID}.action.MANAGE_DOWNLOADS" private const val EXTRA_SOURCE = "source" private const val HOST_ABOUT = "about" private const val HOST_SYNC_SETTINGS = "sync-settings" @@ -203,6 +205,10 @@ class SettingsActivity : Intent(context, SettingsActivity::class.java) .setAction(ACTION_MANAGE_SOURCES) + fun newDownloadsSettingsIntent(context: Context) = + Intent(context, SettingsActivity::class.java) + .setAction(ACTION_MANAGE_DOWNLOADS) + fun newSourceSettingsIntent(context: Context, source: MangaSource) = Intent(context, SettingsActivity::class.java) .setAction(ACTION_SOURCE) diff --git a/app/src/main/res/menu/opt_downloads.xml b/app/src/main/res/menu/opt_downloads.xml index 49ac78fe5..c349522f4 100644 --- a/app/src/main/res/menu/opt_downloads.xml +++ b/app/src/main/res/menu/opt_downloads.xml @@ -27,4 +27,9 @@ android:title="@string/remove_completed" app:showAsAction="never" /> + +