Import backup from import dialog
This commit is contained in:
@@ -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"
|
||||
|
||||
@@ -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
|
||||
|
||||
12
app/src/main/res/drawable/ic_backup_restore.xml
Normal file
12
app/src/main/res/drawable/ic_backup_restore.xml
Normal 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>
|
||||
@@ -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>
|
||||
|
||||
@@ -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>
|
||||
|
||||
Reference in New Issue
Block a user