handle picking multiple items at get_content too
This commit is contained in:
parent
679d68fc26
commit
f081f8039a
|
@ -1,6 +1,7 @@
|
||||||
package com.simplemobiletools.filemanager.activities
|
package com.simplemobiletools.filemanager.activities
|
||||||
|
|
||||||
import android.app.Activity
|
import android.app.Activity
|
||||||
|
import android.content.ClipData
|
||||||
import android.content.Intent
|
import android.content.Intent
|
||||||
import android.net.Uri
|
import android.net.Uri
|
||||||
import android.os.Bundle
|
import android.os.Bundle
|
||||||
|
@ -30,7 +31,6 @@ import java.util.*
|
||||||
class MainActivity : SimpleActivity() {
|
class MainActivity : SimpleActivity() {
|
||||||
private val BACK_PRESS_TIMEOUT = 5000
|
private val BACK_PRESS_TIMEOUT = 5000
|
||||||
private var wasBackJustPressed = false
|
private var wasBackJustPressed = false
|
||||||
private var isGetContentIntent = false
|
|
||||||
|
|
||||||
private lateinit var fragment: ItemsFragment
|
private lateinit var fragment: ItemsFragment
|
||||||
|
|
||||||
|
@ -40,8 +40,10 @@ class MainActivity : SimpleActivity() {
|
||||||
storeStoragePaths()
|
storeStoragePaths()
|
||||||
|
|
||||||
fragment = fragment_holder as ItemsFragment
|
fragment = fragment_holder as ItemsFragment
|
||||||
isGetContentIntent = intent.action == Intent.ACTION_GET_CONTENT
|
val isGetContentIntent = intent.action == Intent.ACTION_GET_CONTENT
|
||||||
|
val allowPickingMultiple = intent.getBooleanExtra(Intent.EXTRA_ALLOW_MULTIPLE, false)
|
||||||
fragment.isGetContentIntent = isGetContentIntent
|
fragment.isGetContentIntent = isGetContentIntent
|
||||||
|
fragment.isPickMultipleIntent = allowPickingMultiple
|
||||||
|
|
||||||
tryInitFileManager()
|
tryInitFileManager()
|
||||||
checkWhatsNewDialog()
|
checkWhatsNewDialog()
|
||||||
|
@ -205,6 +207,20 @@ class MainActivity : SimpleActivity() {
|
||||||
finish()
|
finish()
|
||||||
}
|
}
|
||||||
|
|
||||||
|
fun pickedPaths(paths: ArrayList<String>) {
|
||||||
|
val uris = paths.map { Uri.fromFile(File(it)) } as ArrayList
|
||||||
|
val clipData = ClipData("Attachment", arrayOf(uris.getMimeType()), ClipData.Item(uris.removeAt(0)))
|
||||||
|
|
||||||
|
uris.forEach {
|
||||||
|
clipData.addItem(ClipData.Item(it))
|
||||||
|
}
|
||||||
|
|
||||||
|
val resultIntent = Intent()
|
||||||
|
resultIntent.clipData = clipData
|
||||||
|
setResult(Activity.RESULT_OK, resultIntent)
|
||||||
|
finish()
|
||||||
|
}
|
||||||
|
|
||||||
private fun checkWhatsNewDialog() {
|
private fun checkWhatsNewDialog() {
|
||||||
arrayListOf<Release>().apply {
|
arrayListOf<Release>().apply {
|
||||||
add(Release(26, R.string.release_26))
|
add(Release(26, R.string.release_26))
|
||||||
|
|
|
@ -37,9 +37,8 @@ import java.util.zip.ZipEntry
|
||||||
import java.util.zip.ZipFile
|
import java.util.zip.ZipFile
|
||||||
import java.util.zip.ZipOutputStream
|
import java.util.zip.ZipOutputStream
|
||||||
|
|
||||||
|
class ItemsAdapter(val activity: SimpleActivity, var mItems: MutableList<FileDirItem>, val listener: ItemOperationsListener?, val isPickMultipleIntent: Boolean,
|
||||||
class ItemsAdapter(val activity: SimpleActivity, var mItems: MutableList<FileDirItem>, val listener: ItemOperationsListener?, val itemClick: (FileDirItem) -> Unit) :
|
val itemClick: (FileDirItem) -> Unit) : RecyclerView.Adapter<ItemsAdapter.ViewHolder>() {
|
||||||
RecyclerView.Adapter<ItemsAdapter.ViewHolder>() {
|
|
||||||
private var textColor = activity.config.textColor
|
private var textColor = activity.config.textColor
|
||||||
|
|
||||||
private val multiSelector = MultiSelector()
|
private val multiSelector = MultiSelector()
|
||||||
|
@ -101,6 +100,7 @@ class ItemsAdapter(val activity: SimpleActivity, var mItems: MutableList<FileDir
|
||||||
private val multiSelectorMode = object : ModalMultiSelectorCallback(multiSelector) {
|
private val multiSelectorMode = object : ModalMultiSelectorCallback(multiSelector) {
|
||||||
override fun onActionItemClicked(mode: ActionMode, item: MenuItem): Boolean {
|
override fun onActionItemClicked(mode: ActionMode, item: MenuItem): Boolean {
|
||||||
when (item.itemId) {
|
when (item.itemId) {
|
||||||
|
R.id.cab_confirm_selection -> confirmSelection()
|
||||||
R.id.cab_rename -> displayRenameDialog()
|
R.id.cab_rename -> displayRenameDialog()
|
||||||
R.id.cab_properties -> showProperties()
|
R.id.cab_properties -> showProperties()
|
||||||
R.id.cab_share -> shareFiles()
|
R.id.cab_share -> shareFiles()
|
||||||
|
@ -125,6 +125,7 @@ class ItemsAdapter(val activity: SimpleActivity, var mItems: MutableList<FileDir
|
||||||
override fun onPrepareActionMode(actionMode: ActionMode?, menu: Menu): Boolean {
|
override fun onPrepareActionMode(actionMode: ActionMode?, menu: Menu): Boolean {
|
||||||
menu.findItem(R.id.cab_rename).isVisible = selectedPositions.size <= 1
|
menu.findItem(R.id.cab_rename).isVisible = selectedPositions.size <= 1
|
||||||
menu.findItem(R.id.cab_decompress).isVisible = getSelectedMedia().map { it.path }.any { it.isZipFile() }
|
menu.findItem(R.id.cab_decompress).isVisible = getSelectedMedia().map { it.path }.any { it.isZipFile() }
|
||||||
|
menu.findItem(R.id.cab_confirm_selection).isVisible = isPickMultipleIntent
|
||||||
return true
|
return true
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -138,6 +139,11 @@ class ItemsAdapter(val activity: SimpleActivity, var mItems: MutableList<FileDir
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private fun confirmSelection() {
|
||||||
|
val paths = getSelectedMedia().filter { !it.isDirectory }.map { it.path } as ArrayList<String>
|
||||||
|
listener?.selectedPaths(paths)
|
||||||
|
}
|
||||||
|
|
||||||
private fun displayRenameDialog() {
|
private fun displayRenameDialog() {
|
||||||
RenameItemDialog(activity, getSelectedMedia()[0].path) {
|
RenameItemDialog(activity, getSelectedMedia()[0].path) {
|
||||||
activity.runOnUiThread {
|
activity.runOnUiThread {
|
||||||
|
@ -559,5 +565,7 @@ class ItemsAdapter(val activity: SimpleActivity, var mItems: MutableList<FileDir
|
||||||
fun deleteFiles(files: ArrayList<File>)
|
fun deleteFiles(files: ArrayList<File>)
|
||||||
|
|
||||||
fun itemLongClicked(position: Int)
|
fun itemLongClicked(position: Int)
|
||||||
|
|
||||||
|
fun selectedPaths(paths: ArrayList<String>)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -35,6 +35,7 @@ import kotlin.collections.ArrayList
|
||||||
class ItemsFragment : Fragment(), ItemsAdapter.ItemOperationsListener, Breadcrumbs.BreadcrumbsListener {
|
class ItemsFragment : Fragment(), ItemsAdapter.ItemOperationsListener, Breadcrumbs.BreadcrumbsListener {
|
||||||
var currentPath = ""
|
var currentPath = ""
|
||||||
var isGetContentIntent = false
|
var isGetContentIntent = false
|
||||||
|
var isPickMultipleIntent = false
|
||||||
|
|
||||||
private var storedTextColor = 0
|
private var storedTextColor = 0
|
||||||
private var showHidden = false
|
private var showHidden = false
|
||||||
|
@ -121,7 +122,7 @@ class ItemsFragment : Fragment(), ItemsAdapter.ItemOperationsListener, Breadcrum
|
||||||
val currAdapter = items_list.adapter
|
val currAdapter = items_list.adapter
|
||||||
if (currAdapter == null) {
|
if (currAdapter == null) {
|
||||||
items_list.apply {
|
items_list.apply {
|
||||||
this.adapter = ItemsAdapter(activity as SimpleActivity, storedItems, this@ItemsFragment) {
|
this.adapter = ItemsAdapter(activity as SimpleActivity, storedItems, this@ItemsFragment, isPickMultipleIntent) {
|
||||||
itemClicked(it)
|
itemClicked(it)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -310,4 +311,8 @@ class ItemsFragment : Fragment(), ItemsAdapter.ItemOperationsListener, Breadcrum
|
||||||
override fun itemLongClicked(position: Int) {
|
override fun itemLongClicked(position: Int) {
|
||||||
items_list.setDragSelectActive(position)
|
items_list.setDragSelectActive(position)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
override fun selectedPaths(paths: ArrayList<String>) {
|
||||||
|
(activity as MainActivity).pickedPaths(paths)
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,6 +1,11 @@
|
||||||
<?xml version="1.0" encoding="utf-8"?>
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
<menu xmlns:android="http://schemas.android.com/apk/res/android"
|
<menu xmlns:android="http://schemas.android.com/apk/res/android"
|
||||||
xmlns:app="http://schemas.android.com/apk/res-auto">
|
xmlns:app="http://schemas.android.com/apk/res-auto">
|
||||||
|
<item
|
||||||
|
android:id="@+id/cab_confirm_selection"
|
||||||
|
android:icon="@drawable/ic_check"
|
||||||
|
android:title="@string/confirm_selection"
|
||||||
|
app:showAsAction="ifRoom"/>
|
||||||
<item
|
<item
|
||||||
android:id="@+id/cab_properties"
|
android:id="@+id/cab_properties"
|
||||||
android:icon="@drawable/ic_info"
|
android:icon="@drawable/ic_info"
|
||||||
|
|
Loading…
Reference in New Issue