From 5f39a70be3db017cd60368f17a85b02c1f694504 Mon Sep 17 00:00:00 2001 From: tibbi Date: Sun, 3 Sep 2017 12:59:52 +0200 Subject: [PATCH] some updates related to file copy/move/de/compress --- .../filemanager/adapters/ItemsAdapter.kt | 49 +++++-------------- .../dialogs/CreateNewItemDialog.kt | 25 ++++------ .../filemanager/fragments/ItemsFragment.kt | 4 +- 3 files changed, 24 insertions(+), 54 deletions(-) diff --git a/app/src/main/kotlin/com/simplemobiletools/filemanager/adapters/ItemsAdapter.kt b/app/src/main/kotlin/com/simplemobiletools/filemanager/adapters/ItemsAdapter.kt index b64b2408..5f9aa716 100644 --- a/app/src/main/kotlin/com/simplemobiletools/filemanager/adapters/ItemsAdapter.kt +++ b/app/src/main/kotlin/com/simplemobiletools/filemanager/adapters/ItemsAdapter.kt @@ -27,7 +27,9 @@ import com.simplemobiletools.filemanager.dialogs.CompressAsDialog import com.simplemobiletools.filemanager.extensions.config import com.simplemobiletools.filemanager.extensions.isZipFile import kotlinx.android.synthetic.main.list_item.view.* -import java.io.* +import java.io.Closeable +import java.io.File +import java.io.FileInputStream import java.util.* import java.util.zip.ZipEntry import java.util.zip.ZipFile @@ -201,9 +203,7 @@ class ItemsAdapter(val activity: SimpleActivity, var mItems: MutableList, targetPath: String): Boolean { val queue = LinkedList() - val fos = getFileOutputStream(targetPath, "application/zip") ?: return false + val fos = activity.getFileOutputStreamSync(targetPath, "application/zip") ?: return false val zout = ZipOutputStream(fos) var res: Closeable = fos @@ -338,8 +329,8 @@ class ItemsAdapter(val activity: SimpleActivity, var mItems: MutableList Unit) { +class CreateNewItemDialog(val activity: SimpleActivity, val path: String, val callback: (success: Boolean) -> Unit) { private val view = activity.layoutInflater.inflate(R.layout.dialog_create_new, null) init { @@ -33,15 +33,11 @@ class CreateNewItemDialog(val activity: SimpleActivity, val path: String, val ca if (view.dialog_radio_group.checkedRadioButtonId == R.id.dialog_radio_directory) { createDirectory(file, this) { - if (!it) { - errorOccurred() - } + callback(it) } } else { createFile(file, this) { - if (!it) { - errorOccurred() - } + callback(it) } } } else { @@ -56,6 +52,8 @@ class CreateNewItemDialog(val activity: SimpleActivity, val path: String, val ca activity.needsStupidWritePermissions(path) -> activity.handleSAFDialog(file) { val documentFile = activity.getFileDocument(file.absolutePath) if (documentFile == null) { + val error = String.format(activity.getString(R.string.could_not_create_folder), file.absolutePath) + activity.showErrorToast(error) callback(false) return@handleSAFDialog } @@ -64,22 +62,19 @@ class CreateNewItemDialog(val activity: SimpleActivity, val path: String, val ca } file.mkdirs() -> { success(alertDialog) - callback(true) } else -> callback(false) } } - private fun errorOccurred() { - activity.toast(R.string.unknown_error_occurred) - } - private fun createFile(file: File, alertDialog: AlertDialog, callback: (Boolean) -> Unit) { try { if (activity.needsStupidWritePermissions(path)) { activity.handleSAFDialog(file) { val documentFile = activity.getFileDocument(file.absolutePath) if (documentFile == null) { + val error = String.format(activity.getString(R.string.could_not_create_file), file.absolutePath) + activity.showErrorToast(error) callback(false) return@handleSAFDialog } @@ -88,15 +83,15 @@ class CreateNewItemDialog(val activity: SimpleActivity, val path: String, val ca } } else if (file.createNewFile()) { success(alertDialog) - callback(true) } } catch (exception: IOException) { - activity.showErrorToast(exception.toString()) + activity.showErrorToast(exception) + callback(false) } } private fun success(alertDialog: AlertDialog) { alertDialog.dismiss() - callback() + callback(true) } } diff --git a/app/src/main/kotlin/com/simplemobiletools/filemanager/fragments/ItemsFragment.kt b/app/src/main/kotlin/com/simplemobiletools/filemanager/fragments/ItemsFragment.kt index 38289f1f..2a14308a 100644 --- a/app/src/main/kotlin/com/simplemobiletools/filemanager/fragments/ItemsFragment.kt +++ b/app/src/main/kotlin/com/simplemobiletools/filemanager/fragments/ItemsFragment.kt @@ -223,7 +223,9 @@ class ItemsFragment : Fragment(), ItemsAdapter.ItemOperationsListener { private fun createNewItem() { CreateNewItemDialog(activity as SimpleActivity, mPath) { - fillItems() + if (it) { + fillItems() + } } }