DroidFS/app/src/main/java/sushi/hardcore/droidfs/explorers/ExplorerActivityPick.kt

81 lines
2.8 KiB
Kotlin
Raw Normal View History

2020-07-17 16:35:39 +02:00
package sushi.hardcore.droidfs.explorers
import android.app.Activity
import android.content.Intent
import android.view.Menu
import android.view.MenuItem
import sushi.hardcore.droidfs.R
2022-06-18 21:13:16 +02:00
import sushi.hardcore.droidfs.filesystems.EncryptedVolume
import sushi.hardcore.droidfs.util.IntentUtils
import sushi.hardcore.droidfs.util.PathUtils
2020-07-17 16:35:39 +02:00
2020-07-19 21:46:29 +02:00
class ExplorerActivityPick : BaseExplorerActivity() {
private var resultIntent = Intent()
private var isFinishingIntentionally = false
2020-07-17 16:35:39 +02:00
override fun init() {
setContentView(R.layout.activity_explorer_pick)
2023-05-09 23:13:46 +02:00
resultIntent.putExtra("volumeId", volumeId)
2020-07-17 16:35:39 +02:00
}
2020-12-29 17:05:02 +01:00
override fun bindFileOperationService() {
//don't bind
}
2022-04-17 15:52:34 +02:00
override fun onExplorerElementClick(position: Int) {
if (explorerAdapter.selectedItems.isEmpty()) {
2023-03-07 23:25:17 +01:00
val fullPath = PathUtils.pathJoin(currentDirectoryPath, explorerElements[position].name)
when {
explorerElements[position].isDirectory -> {
setCurrentPath(fullPath)
}
explorerElements[position].isParentFolder -> {
setCurrentPath(PathUtils.getParentPath(currentDirectoryPath))
}
else -> {
resultIntent.putExtra("path", fullPath)
returnActivityResult()
2020-07-17 16:35:39 +02:00
}
}
}
invalidateOptionsMenu()
}
override fun onCreateOptionsMenu(menu: Menu): Boolean {
menuInflater.inflate(R.menu.explorer_pick, menu)
2022-05-01 13:50:37 +02:00
val result = super.onCreateOptionsMenu(menu)
val anyItemSelected = explorerAdapter.selectedItems.isNotEmpty()
menu.findItem(R.id.select_all).isVisible = anyItemSelected
menu.findItem(R.id.validate).isVisible = anyItemSelected
2022-05-01 13:50:37 +02:00
return result
2020-07-17 16:35:39 +02:00
}
override fun onOptionsItemSelected(item: MenuItem): Boolean {
return when (item.itemId) {
R.id.select_all -> {
explorerAdapter.selectAll()
2020-07-17 16:35:39 +02:00
invalidateOptionsMenu()
true
}
R.id.validate -> {
2020-07-17 16:35:39 +02:00
val paths = ArrayList<String>()
val types = ArrayList<Int>()
for (i in explorerAdapter.selectedItems) {
val e = explorerElements[i]
2020-11-03 17:22:09 +01:00
paths.add(PathUtils.pathJoin(currentDirectoryPath, e.name))
2022-06-18 21:13:16 +02:00
types.add(e.stat.type)
2020-07-17 16:35:39 +02:00
}
resultIntent.putStringArrayListExtra("paths", paths)
resultIntent.putIntegerArrayListExtra("types", types)
returnActivityResult()
2020-07-17 16:35:39 +02:00
true
}
else -> super.onOptionsItemSelected(item)
}
}
private fun returnActivityResult() {
setResult(Activity.RESULT_OK, resultIntent)
isFinishingIntentionally = true
2020-07-17 16:35:39 +02:00
finish()
}
}