Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit b384d185 authored by tibbi's avatar tibbi
Browse files

update a couple more places, try using FileDirItem or just path at file operations

parent e06550a6
Loading
Loading
Loading
Loading
+1 −1
Original line number Diff line number Diff line
@@ -6,7 +6,7 @@ buildscript {
        propMinSdkVersion = 16
        propTargetSdkVersion = propCompileSdkVersion
        propVersionCode = 1
        propVersionName = '3.11.15'
        propVersionName = '3.11.36'
        kotlin_version = '1.2.21'
        support_libs = '27.0.2'
    }
+14 −14
Original line number Diff line number Diff line
@@ -166,8 +166,8 @@ open class BaseSimpleActivity : AppCompatActivity() {

    fun startCustomizationActivity() = startActivity(Intent(this, CustomizationActivity::class.java))

    fun handleSAFDialog(file: File, callback: () -> Unit): Boolean {
        return if (isShowingSAFDialog(file, baseConfig.treeUri, OPEN_DOCUMENT_TREE)) {
    fun handleSAFDialog(path: String, callback: () -> Unit): Boolean {
        return if (isShowingSAFDialog(path, baseConfig.treeUri, OPEN_DOCUMENT_TREE)) {
            funAfterSAFPermission = callback
            true
        } else {
@@ -189,14 +189,14 @@ open class BaseSimpleActivity : AppCompatActivity() {
            return
        }

        handleSAFDialog(destinationFolder) {
        handleSAFDialog(destination) {
            copyMoveCallback = callback
            if (isCopyOperation) {
                startCopyMove(fileDirItems, destinationFolder, isCopyOperation, copyPhotoVideoOnly, copyHidden)
                startCopyMove(fileDirItems, FileDirItem(destination), isCopyOperation, copyPhotoVideoOnly, copyHidden)
            } else {
                if (isPathOnSD(source) || isPathOnSD(destination) || fileDirItems.first().isDirectory || isNougatPlus()) {
                    handleSAFDialog(File(source)) {
                        startCopyMove(fileDirItems, destinationFolder, isCopyOperation, copyPhotoVideoOnly, copyHidden)
                    handleSAFDialog(source) {
                        startCopyMove(fileDirItems, FileDirItem(destination), isCopyOperation, copyPhotoVideoOnly, copyHidden)
                    }
                } else {
                    toast(R.string.moving)
@@ -228,15 +228,15 @@ open class BaseSimpleActivity : AppCompatActivity() {
        }
    }

    private fun startCopyMove(files: ArrayList<FileDirItem>, destinationFolder: File, isCopyOperation: Boolean, copyPhotoVideoOnly: Boolean, copyHidden: Boolean) {
        checkConflict(files, destinationFolder, 0, LinkedHashMap()) {
    private fun startCopyMove(files: ArrayList<FileDirItem>, destinationFileDirItem: FileDirItem, isCopyOperation: Boolean, copyPhotoVideoOnly: Boolean, copyHidden: Boolean) {
        checkConflict(files, destinationFileDirItem, 0, LinkedHashMap()) {
            toast(if (isCopyOperation) R.string.copying else R.string.moving)
            val pair = Pair(files, destinationFolder)
            val pair = Pair(files, destinationFileDirItem)
            CopyMoveTask(this, isCopyOperation, copyPhotoVideoOnly, it, copyMoveListener, copyHidden).execute(pair)
        }
    }

    private fun checkConflict(files: ArrayList<FileDirItem>, destinationFolder: File, index: Int, conflictResolutions: LinkedHashMap<String, Int>,
    private fun checkConflict(files: ArrayList<FileDirItem>, destinationFileDirItem: FileDirItem, index: Int, conflictResolutions: LinkedHashMap<String, Int>,
                              callback: (resolutions: LinkedHashMap<String, Int>) -> Unit) {
        if (index == files.size) {
            callback(conflictResolutions)
@@ -244,20 +244,20 @@ open class BaseSimpleActivity : AppCompatActivity() {
        }

        val file = files[index]
        val newFile = File(destinationFolder, file.name)
        val newFile = File(destinationFileDirItem.path, file.name)
        if (newFile.exists()) {
            FileConflictDialog(this, newFile) { resolution, applyForAll ->
                if (applyForAll) {
                    conflictResolutions.clear()
                    conflictResolutions[""] = resolution
                    checkConflict(files, destinationFolder, files.size, conflictResolutions, callback)
                    checkConflict(files, destinationFileDirItem, files.size, conflictResolutions, callback)
                } else {
                    conflictResolutions[newFile.absolutePath] = resolution
                    checkConflict(files, destinationFolder, index + 1, conflictResolutions, callback)
                    checkConflict(files, destinationFileDirItem, index + 1, conflictResolutions, callback)
                }
            }
        } else {
            checkConflict(files, destinationFolder, index + 1, conflictResolutions, callback)
            checkConflict(files, destinationFileDirItem, index + 1, conflictResolutions, callback)
        }
    }

+4 −4
Original line number Diff line number Diff line
@@ -25,7 +25,7 @@ import java.lang.ref.WeakReference
import java.util.*

class CopyMoveTask(val activity: BaseSimpleActivity, val copyOnly: Boolean = false, val copyMediaOnly: Boolean, val conflictResolutions: LinkedHashMap<String, Int>,
                   listener: CopyMoveListener, val copyHidden: Boolean) : AsyncTask<Pair<ArrayList<FileDirItem>, File>, Void, Boolean>() {
                   listener: CopyMoveListener, val copyHidden: Boolean) : AsyncTask<Pair<ArrayList<FileDirItem>, FileDirItem>, Void, Boolean>() {
    private val INITIAL_PROGRESS_DELAY = 3000L
    private val PROGRESS_RECHECK_INTERVAL = 500L

@@ -50,7 +50,7 @@ class CopyMoveTask(val activity: BaseSimpleActivity, val copyOnly: Boolean = fal
        mNotificationBuilder = NotificationCompat.Builder(activity)
    }

    override fun doInBackground(vararg params: Pair<ArrayList<FileDirItem>, File>): Boolean? {
    override fun doInBackground(vararg params: Pair<ArrayList<FileDirItem>, FileDirItem>): Boolean? {
        if (params.isEmpty()) {
            return false
        }
@@ -61,7 +61,7 @@ class CopyMoveTask(val activity: BaseSimpleActivity, val copyOnly: Boolean = fal
        mNotifId = (System.currentTimeMillis() / 1000).toInt()
        mMaxSize = 0
        for (file in mFiles) {
            val newFile = File(pair.second, file.name)
            val newFile = File(pair.second!!.path, file.name)
            if (!newFile.exists() || getConflictResolution(newFile) != CONFLICT_SKIP) {
                mMaxSize += (File(file.path).getProperSize(copyHidden) / 1000).toInt()
            }
@@ -74,7 +74,7 @@ class CopyMoveTask(val activity: BaseSimpleActivity, val copyOnly: Boolean = fal

        for (file in mFiles) {
            try {
                val newFile = File(pair.second, file.name)
                val newFile = File(pair.second!!.path, file.name)
                if (newFile.exists()) {
                    val resolution = getConflictResolution(newFile)
                    if (resolution == CONFLICT_SKIP) {
+9 −9
Original line number Diff line number Diff line
@@ -31,7 +31,7 @@ class CreateNewFolderDialog(val activity: BaseSimpleActivity, val path: String,
                                return@OnClickListener
                            }

                            createFolder(file, this)
                            createFolder("$path/$name", this)
                        }
                        else -> activity.toast(R.string.invalid_name)
                    }
@@ -40,19 +40,19 @@ class CreateNewFolderDialog(val activity: BaseSimpleActivity, val path: String,
        }
    }

    private fun createFolder(file: File, alertDialog: AlertDialog) {
    private fun createFolder(path: String, alertDialog: AlertDialog) {
        try {
            when {
                activity.needsStupidWritePermissions(file.absolutePath) -> activity.handleSAFDialog(file) {
                activity.needsStupidWritePermissions(path) -> activity.handleSAFDialog(path) {
                    try {
                        val documentFile = activity.getFileDocument(file.absolutePath)
                        documentFile?.createDirectory(file.name)
                        sendSuccess(alertDialog, file)
                        val documentFile = activity.getFileDocument(path)
                        documentFile?.createDirectory(path.getFilenameFromPath())
                        sendSuccess(alertDialog, path)
                    } catch (e: SecurityException) {
                        activity.showErrorToast(e)
                    }
                }
                file.mkdirs() -> sendSuccess(alertDialog, file)
                File(path).mkdirs() -> sendSuccess(alertDialog, path)
                else -> activity.toast(R.string.unknown_error_occurred)
            }
        } catch (e: Exception) {
@@ -60,8 +60,8 @@ class CreateNewFolderDialog(val activity: BaseSimpleActivity, val path: String,
        }
    }

    private fun sendSuccess(alertDialog: AlertDialog, file: File) {
        callback(file.absolutePath.trimEnd('/'))
    private fun sendSuccess(alertDialog: AlertDialog, path: String) {
        callback(path.trimEnd('/'))
        alertDialog.dismiss()
    }
}
+3 −2
Original line number Diff line number Diff line
@@ -52,8 +52,9 @@ class RenameItemDialog(val activity: BaseSimpleActivity, val path: String, val c

                    val updatedFiles = ArrayList<File>()
                    updatedFiles.add(file)
                    if (!newExtension.isEmpty())
                    if (!newExtension.isEmpty()) {
                        newName += ".$newExtension"
                    }

                    val newFile = File(file.parent, newName)
                    if (newFile.exists()) {
@@ -62,7 +63,7 @@ class RenameItemDialog(val activity: BaseSimpleActivity, val path: String, val c
                    }

                    updatedFiles.add(newFile)
                    activity.renameFile(file, newFile) {
                    activity.renameFile(path, "${file.parent}/$newName") {
                        if (it) {
                            sendSuccess(updatedFiles)
                            dismiss()
Loading