Skip to content

Commit 9f69360

Browse files
committed
add some handling for copying root items
1 parent 794f6cc commit 9f69360

File tree

2 files changed

+32
-2
lines changed

2 files changed

+32
-2
lines changed

app/src/main/kotlin/com/simplemobiletools/filemanager/adapters/ItemsAdapter.kt

Lines changed: 31 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -25,7 +25,9 @@ import com.simplemobiletools.filemanager.R
2525
import com.simplemobiletools.filemanager.activities.SimpleActivity
2626
import com.simplemobiletools.filemanager.dialogs.CompressAsDialog
2727
import com.simplemobiletools.filemanager.extensions.config
28+
import com.simplemobiletools.filemanager.extensions.isPathOnRoot
2829
import com.simplemobiletools.filemanager.extensions.isZipFile
30+
import com.stericson.RootTools.RootTools
2931
import kotlinx.android.synthetic.main.list_item.view.*
3032
import java.io.Closeable
3133
import java.io.File
@@ -207,11 +209,38 @@ class ItemsAdapter(val activity: SimpleActivity, var mItems: MutableList<FileDir
207209

208210
val source = if (files[0].isFile) files[0].parent else files[0].absolutePath
209211
FilePickerDialog(activity, source, false, config.shouldShowHidden, true) {
210-
activity.copyMoveFilesTo(files, source, it, isCopyOperation, false) {
212+
if (activity.isPathOnRoot(source)) {
213+
copyRootItems(files, it)
214+
} else {
215+
activity.copyMoveFilesTo(files, source, it, isCopyOperation, false) {
216+
listener?.refreshItems()
217+
actMode?.finish()
218+
}
219+
}
220+
}
221+
}
222+
223+
private fun copyRootItems(files: ArrayList<File>, destinationPath: String) {
224+
activity.toast(R.string.copying)
225+
Thread({
226+
var fileCnt = files.count()
227+
files.forEach {
228+
if (RootTools.copyFile(it.absolutePath, destinationPath, false, true)) {
229+
fileCnt--
230+
}
231+
}
232+
233+
when {
234+
fileCnt <= 0 -> activity.toast(R.string.copying_success)
235+
fileCnt == files.count() -> activity.toast(R.string.copy_failed)
236+
else -> activity.toast(R.string.copying_success_partial)
237+
}
238+
239+
activity.runOnUiThread {
211240
listener?.refreshItems()
212241
actMode?.finish()
213242
}
214-
}
243+
}).start()
215244
}
216245

217246
private fun compressSelection() {

app/src/main/kotlin/com/simplemobiletools/filemanager/helpers/RootHelpers.kt

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -75,6 +75,7 @@ class RootHelpers {
7575
super.commandCompleted(id, exitcode)
7676
}
7777
}
78+
7879
try {
7980
RootTools.getShell(true).add(command)
8081
} catch (e: Exception) {

0 commit comments

Comments
 (0)