Import backup from import dialog

This commit is contained in:
Koitharu
2023-04-12 19:50:12 +03:00
parent 938be67cd3
commit c8053b2eb6
5 changed files with 46 additions and 0 deletions

View File

@@ -12,6 +12,8 @@ import com.google.android.material.dialog.MaterialAlertDialogBuilder
import org.koitharu.kotatsu.R
import org.koitharu.kotatsu.base.ui.AlertDialogFragment
import org.koitharu.kotatsu.databinding.DialogImportBinding
import org.koitharu.kotatsu.settings.backup.BackupDialogFragment
import org.koitharu.kotatsu.settings.backup.RestoreDialogFragment
class ImportDialogFragment : AlertDialogFragment<DialogImportBinding>(), View.OnClickListener {
@@ -21,6 +23,9 @@ class ImportDialogFragment : AlertDialogFragment<DialogImportBinding>(), View.On
private val importDirCall = registerForActivityResult(ActivityResultContracts.OpenDocumentTree()) {
startImport(listOfNotNull(it))
}
private val backupSelectCall = registerForActivityResult(ActivityResultContracts.OpenDocument()) {
restoreBackup(it)
}
override fun onInflateView(inflater: LayoutInflater, container: ViewGroup?): DialogImportBinding {
return DialogImportBinding.inflate(inflater, container, false)
@@ -37,12 +42,14 @@ class ImportDialogFragment : AlertDialogFragment<DialogImportBinding>(), View.On
super.onViewCreated(view, savedInstanceState)
binding.buttonDir.setOnClickListener(this)
binding.buttonFile.setOnClickListener(this)
binding.buttonBackup.setOnClickListener(this)
}
override fun onClick(v: View) {
when (v.id) {
R.id.button_file -> importFileCall.launch(arrayOf("*/*"))
R.id.button_dir -> importDirCall.launch(null)
R.id.button_backup -> backupSelectCall.launch(arrayOf("*/*"))
}
}
@@ -56,6 +63,12 @@ class ImportDialogFragment : AlertDialogFragment<DialogImportBinding>(), View.On
dismiss()
}
private fun restoreBackup(uri: Uri?) {
RestoreDialogFragment.newInstance(uri ?: return)
.show(parentFragmentManager, BackupDialogFragment.TAG)
dismiss()
}
companion object {
private const val TAG = "ImportDialogFragment"

View File

@@ -165,6 +165,9 @@ fun RecyclerView.invalidateNestedItemDecorations() {
}
}
val View.parentView: ViewGroup?
get() = parent as? ViewGroup
val View.parents: Sequence<ViewParent>
get() = sequence {
var p: ViewParent? = parent

View File

@@ -0,0 +1,12 @@
<?xml version="1.0" encoding="utf-8"?>
<vector
xmlns:android="http://schemas.android.com/apk/res/android"
android:width="24dp"
android:height="24dp"
android:tint="?attr/colorControlNormal"
android:viewportWidth="24"
android:viewportHeight="24">
<path
android:fillColor="#000000"
android:pathData="M12,3A9,9 0 0,0 3,12H0L4,16L8,12H5A7,7 0 0,1 12,5A7,7 0 0,1 19,12A7,7 0 0,1 12,19C10.5,19 9.09,18.5 7.94,17.7L6.5,19.14C8.04,20.3 9.94,21 12,21A9,9 0 0,0 21,12A9,9 0 0,0 12,3M14,12A2,2 0 0,0 12,10A2,2 0 0,0 10,12A2,2 0 0,0 12,14A2,2 0 0,0 14,12Z" />
</vector>

View File

@@ -32,4 +32,21 @@
app:subtitle="@string/folder_with_images_import_description"
app:title="@string/folder_with_images" />
<com.google.android.material.divider.MaterialDivider
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginVertical="4dp" />
<org.koitharu.kotatsu.base.ui.widgets.TwoLinesItemView
android:id="@+id/button_backup"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:drawablePadding="?android:listPreferredItemPaddingStart"
android:minHeight="?android:listPreferredItemHeightSmall"
android:paddingStart="?android:listPreferredItemPaddingStart"
android:paddingEnd="?android:listPreferredItemPaddingEnd"
app:icon="@drawable/ic_backup_restore"
app:subtitle="@string/restore_backup_description"
app:title="@string/restore_backup" />
</LinearLayout>

View File

@@ -431,4 +431,5 @@
<string name="comics_archive_import_description">You can select one or more .cbz or .zip files, each file will be recognized as a separate manga.</string>
<string name="folder_with_images_import_description">You can select a directory with archives or images. Each archive (or subdirectory) will be recognized as a chapter.</string>
<string name="speed">Speed</string>
<string name="restore_backup_description">Import a previously created backup of user data</string>
</resources>