Fixes
This commit is contained in:
@@ -64,6 +64,9 @@ class ExternalBackupStorage @Inject constructor(
|
||||
suspend fun getLastBackupDate() = listOrNull()?.maxOfOrNull { it.dateTime }
|
||||
|
||||
suspend fun trim(maxCount: Int): Boolean {
|
||||
if (maxCount == Int.MAX_VALUE) {
|
||||
return false
|
||||
}
|
||||
val list = listOrNull()
|
||||
if (list == null || list.size <= maxCount) {
|
||||
return false
|
||||
|
||||
@@ -12,7 +12,6 @@ import androidx.appcompat.app.AppCompatDelegate
|
||||
import androidx.collection.ArraySet
|
||||
import androidx.core.content.edit
|
||||
import androidx.core.os.LocaleListCompat
|
||||
import androidx.core.util.TimeUtils
|
||||
import androidx.documentfile.provider.DocumentFile
|
||||
import androidx.preference.PreferenceManager
|
||||
import dagger.hilt.android.qualifiers.ApplicationContext
|
||||
@@ -476,7 +475,11 @@ class AppSettings @Inject constructor(@ApplicationContext context: Context) {
|
||||
get() = TimeUnit.DAYS.toMillis(prefs.getString(KEY_BACKUP_PERIODICAL_FREQUENCY, null)?.toLongOrNull() ?: 7L)
|
||||
|
||||
val periodicalBackupMaxCount: Int
|
||||
get() = prefs.getInt(KEY_BACKUP_PERIODICAL_COUNT, 10)
|
||||
get() = if (prefs.getBoolean(KEY_BACKUP_PERIODICAL_TRIM, true)) {
|
||||
prefs.getInt(KEY_BACKUP_PERIODICAL_COUNT, 10)
|
||||
} else {
|
||||
Int.MAX_VALUE
|
||||
}
|
||||
|
||||
var periodicalBackupDirectory: Uri?
|
||||
get() = prefs.getString(KEY_BACKUP_PERIODICAL_OUTPUT, null)?.toUriOrNull()
|
||||
@@ -626,6 +629,7 @@ class AppSettings @Inject constructor(@ApplicationContext context: Context) {
|
||||
const val KEY_RESTORE = "restore"
|
||||
const val KEY_BACKUP_PERIODICAL_ENABLED = "backup_periodic"
|
||||
const val KEY_BACKUP_PERIODICAL_FREQUENCY = "backup_periodic_freq"
|
||||
const val KEY_BACKUP_PERIODICAL_TRIM = "backup_periodic_trim"
|
||||
const val KEY_BACKUP_PERIODICAL_COUNT = "backup_periodic_count"
|
||||
const val KEY_BACKUP_PERIODICAL_OUTPUT = "backup_periodic_output"
|
||||
const val KEY_BACKUP_PERIODICAL_LAST = "backup_periodic_last"
|
||||
|
||||
@@ -9,6 +9,7 @@ import android.widget.AdapterView
|
||||
import android.widget.ArrayAdapter
|
||||
import androidx.core.view.isGone
|
||||
import androidx.core.view.updatePadding
|
||||
import androidx.fragment.app.Fragment
|
||||
import androidx.fragment.app.FragmentManager
|
||||
import com.google.android.material.chip.Chip
|
||||
import com.google.android.material.slider.RangeSlider
|
||||
@@ -356,5 +357,7 @@ class FilterSheetFragment : BaseAdaptiveSheet<SheetFilterBinding>(),
|
||||
private const val TAG = "FilterSheet"
|
||||
|
||||
fun show(fm: FragmentManager) = FilterSheetFragment().showDistinct(fm, TAG)
|
||||
|
||||
fun isSupported(fragment: Fragment) = fragment.activity is FilterCoordinator.Owner
|
||||
}
|
||||
}
|
||||
|
||||
@@ -62,7 +62,7 @@ class LocalListFragment : MangaListFragment(), FilterCoordinator.Owner {
|
||||
|
||||
override fun onViewBindingCreated(binding: FragmentListBinding, savedInstanceState: Bundle?) {
|
||||
super.onViewBindingCreated(binding, savedInstanceState)
|
||||
addMenuProvider(LocalListMenuProvider(binding.root.context, childFragmentManager, this::onEmptyActionClick))
|
||||
addMenuProvider(LocalListMenuProvider(this, this::onEmptyActionClick))
|
||||
addMenuProvider(MangaSearchMenuProvider(filterCoordinator, viewModel))
|
||||
viewModel.onMangaRemoved.observeEvent(viewLifecycleOwner) { onItemRemoved() }
|
||||
}
|
||||
|
||||
@@ -1,18 +1,17 @@
|
||||
package org.koitharu.kotatsu.local.ui
|
||||
|
||||
import android.content.Context
|
||||
import android.content.Intent
|
||||
import android.view.Menu
|
||||
import android.view.MenuInflater
|
||||
import android.view.MenuItem
|
||||
import androidx.core.view.MenuProvider
|
||||
import androidx.fragment.app.FragmentManager
|
||||
import androidx.fragment.app.Fragment
|
||||
import org.koitharu.kotatsu.R
|
||||
import org.koitharu.kotatsu.filter.ui.sheet.FilterSheetFragment
|
||||
import org.koitharu.kotatsu.settings.storage.directories.MangaDirectoriesActivity
|
||||
|
||||
class LocalListMenuProvider(
|
||||
private val context: Context,
|
||||
private val fragmentManager: FragmentManager,
|
||||
private val fragment: Fragment,
|
||||
private val onImportClick: Function0<Unit>,
|
||||
) : MenuProvider {
|
||||
|
||||
@@ -20,6 +19,11 @@ class LocalListMenuProvider(
|
||||
menuInflater.inflate(R.menu.opt_local, menu)
|
||||
}
|
||||
|
||||
override fun onPrepareMenu(menu: Menu) {
|
||||
super.onPrepareMenu(menu)
|
||||
menu.findItem(R.id.action_filter)?.isVisible = FilterSheetFragment.isSupported(fragment)
|
||||
}
|
||||
|
||||
override fun onMenuItemSelected(menuItem: MenuItem): Boolean {
|
||||
return when (menuItem.itemId) {
|
||||
R.id.action_import -> {
|
||||
@@ -28,12 +32,14 @@ class LocalListMenuProvider(
|
||||
}
|
||||
|
||||
R.id.action_directories -> {
|
||||
context.startActivity(MangaDirectoriesActivity.newIntent(context))
|
||||
fragment.context?.run {
|
||||
startActivity(Intent(this, MangaDirectoriesActivity::class.java))
|
||||
}
|
||||
true
|
||||
}
|
||||
|
||||
R.id.action_filter -> {
|
||||
FilterSheetFragment.show(fragmentManager)
|
||||
FilterSheetFragment.show(fragment.childFragmentManager)
|
||||
true
|
||||
}
|
||||
|
||||
|
||||
@@ -763,4 +763,6 @@
|
||||
<string name="breadcrumbs_separator" translatable="false"><![CDATA[" > "]]></string>
|
||||
<string name="access_denied_403">Access denied (403)</string>
|
||||
<string name="max_backups_count">Max number of backups</string>
|
||||
<string name="delete_old_backups">Delete old backups</string>
|
||||
<string name="delete_old_backups_summary">Automatically delete old backup files to save storage space</string>
|
||||
</resources>
|
||||
|
||||
@@ -24,7 +24,15 @@
|
||||
android:title="@string/backup_frequency"
|
||||
app:useSimpleSummaryProvider="true" />
|
||||
|
||||
<SwitchPreferenceCompat
|
||||
android:defaultValue="true"
|
||||
android:dependency="backup_periodic"
|
||||
android:key="backup_periodic_trim"
|
||||
android:summary="@string/delete_old_backups_summary"
|
||||
android:title="@string/delete_old_backups" />
|
||||
|
||||
<org.koitharu.kotatsu.settings.utils.SliderPreference
|
||||
android:dependency="backup_periodic_trim"
|
||||
android:key="backup_periodic_count"
|
||||
android:stepSize="1"
|
||||
android:title="@string/max_backups_count"
|
||||
|
||||
@@ -5,7 +5,7 @@ adapterdelegates = "4.3.2"
|
||||
appcompat = "1.7.0"
|
||||
avifDecoder = "1.1.1.14d8e3c4"
|
||||
biometric = "1.2.0-alpha05"
|
||||
coil = "3.0.1"
|
||||
coil = "3.0.2"
|
||||
collections = "1.4.5"
|
||||
conscrypt = "2.5.3"
|
||||
constraintlayout = "2.2.0"
|
||||
@@ -30,7 +30,7 @@ material = "1.12.0"
|
||||
moshi = "1.15.1"
|
||||
okhttp = "4.12.0"
|
||||
okio = "3.9.1"
|
||||
parsers = "275d7f5419"
|
||||
parsers = "f3d14e101c"
|
||||
preference = "1.2.1"
|
||||
recyclerview = "1.3.2"
|
||||
room = "2.6.1"
|
||||
|
||||
Reference in New Issue
Block a user