diff --git a/app/src/main/kotlin/org/koitharu/kotatsu/settings/storage/DirectoryModel.kt b/app/src/main/kotlin/org/koitharu/kotatsu/settings/storage/DirectoryModel.kt index 7c274458d..a606c7abf 100644 --- a/app/src/main/kotlin/org/koitharu/kotatsu/settings/storage/DirectoryModel.kt +++ b/app/src/main/kotlin/org/koitharu/kotatsu/settings/storage/DirectoryModel.kt @@ -9,9 +9,11 @@ data class DirectoryModel( val title: String?, @StringRes val titleRes: Int, val file: File?, + val isRemovable: Boolean, val isChecked: Boolean, val isAvailable: Boolean, ) : ListModel { + override fun areItemsTheSame(other: ListModel): Boolean { return other is DirectoryModel && other.file == file && other.title == title && other.titleRes == titleRes } diff --git a/app/src/main/kotlin/org/koitharu/kotatsu/settings/storage/MangaDirectorySelectViewModel.kt b/app/src/main/kotlin/org/koitharu/kotatsu/settings/storage/MangaDirectorySelectViewModel.kt index 7985c9bda..3df94e208 100644 --- a/app/src/main/kotlin/org/koitharu/kotatsu/settings/storage/MangaDirectorySelectViewModel.kt +++ b/app/src/main/kotlin/org/koitharu/kotatsu/settings/storage/MangaDirectorySelectViewModel.kt @@ -64,6 +64,7 @@ class MangaDirectorySelectViewModel @Inject constructor( file = dir, isChecked = dir == defaultValue, isAvailable = true, + isRemovable = false, ) } this += DirectoryModel( @@ -72,6 +73,7 @@ class MangaDirectorySelectViewModel @Inject constructor( file = null, isChecked = false, isAvailable = true, + isRemovable = false, ) } } diff --git a/app/src/main/kotlin/org/koitharu/kotatsu/settings/storage/directories/DirectoryConfigAD.kt b/app/src/main/kotlin/org/koitharu/kotatsu/settings/storage/directories/DirectoryConfigAD.kt index e4aa8c5fe..d1d823a14 100644 --- a/app/src/main/kotlin/org/koitharu/kotatsu/settings/storage/directories/DirectoryConfigAD.kt +++ b/app/src/main/kotlin/org/koitharu/kotatsu/settings/storage/directories/DirectoryConfigAD.kt @@ -21,11 +21,16 @@ fun directoryConfigAD( bind { binding.textViewTitle.text = item.title ?: getString(item.titleRes) binding.textViewSubtitle.textAndVisible = item.file?.absolutePath - binding.imageViewRemove.isVisible = item.isChecked - binding.textViewTitle.drawableStart = if (item.isAvailable) { - null + binding.imageViewRemove.isVisible = item.isRemovable + binding.imageViewRemove.isEnabled = !item.isChecked + binding.textViewTitle.drawableStart = if (!item.isAvailable) { + ContextCompat.getDrawable(context, R.drawable.ic_alert_outline)?.apply { + setTint(ContextCompat.getColor(context, R.color.warning)) + } + } else if (item.isChecked) { + ContextCompat.getDrawable(context, R.drawable.ic_download) } else { - ContextCompat.getDrawable(context, R.drawable.ic_alert_outline) + null } } } diff --git a/app/src/main/kotlin/org/koitharu/kotatsu/settings/storage/directories/MangaDirectoriesViewModel.kt b/app/src/main/kotlin/org/koitharu/kotatsu/settings/storage/directories/MangaDirectoriesViewModel.kt index bad65b98f..b53cc05de 100644 --- a/app/src/main/kotlin/org/koitharu/kotatsu/settings/storage/directories/MangaDirectoriesViewModel.kt +++ b/app/src/main/kotlin/org/koitharu/kotatsu/settings/storage/directories/MangaDirectoriesViewModel.kt @@ -59,16 +59,18 @@ class MangaDirectoriesViewModel @Inject constructor( val prevJob = loadingJob loadingJob = launchJob(Dispatchers.Default) { prevJob?.cancelAndJoin() + val downloadDir = storageManager.getDefaultWriteableDir() val applicationDirs = storageManager.getApplicationStorageDirs() - val customDirs = settings.userSpecifiedMangaDirectories + val customDirs = settings.userSpecifiedMangaDirectories - applicationDirs items.value = buildList(applicationDirs.size + customDirs.size) { applicationDirs.mapTo(this) { dir -> DirectoryModel( title = storageManager.getDirectoryDisplayName(dir, isFullPath = false), titleRes = 0, file = dir, - isChecked = false, + isChecked = dir == downloadDir, isAvailable = dir.canRead() && dir.canWrite(), + isRemovable = false, ) } customDirs.mapTo(this) { dir -> @@ -76,8 +78,9 @@ class MangaDirectoriesViewModel @Inject constructor( title = storageManager.getDirectoryDisplayName(dir, isFullPath = false), titleRes = 0, file = dir, - isChecked = true, + isChecked = dir == downloadDir, isAvailable = dir.canRead() && dir.canWrite(), + isRemovable = true, ) } } diff --git a/app/src/main/res/layout/item_storage_config.xml b/app/src/main/res/layout/item_storage_config.xml index e1a552325..7ca26ee5a 100644 --- a/app/src/main/res/layout/item_storage_config.xml +++ b/app/src/main/res/layout/item_storage_config.xml @@ -27,7 +27,6 @@ android:gravity="center_vertical" android:singleLine="true" android:textAppearance="?attr/textAppearanceTitleSmall" - app:drawableTint="@color/warning" tools:drawableStart="@drawable/ic_alert_outline" tools:text="@tools:sample/lorem[3]" />