add deleting

This commit is contained in:
tibbi 2016-11-20 22:35:32 +01:00
parent 037d0108d4
commit 205a6d26d5
9 changed files with 46 additions and 49 deletions

View File

@ -14,6 +14,7 @@ import com.simplemobiletools.filemanager.Config
import com.simplemobiletools.filemanager.R import com.simplemobiletools.filemanager.R
import com.simplemobiletools.filemanager.activities.SimpleActivity import com.simplemobiletools.filemanager.activities.SimpleActivity
import com.simplemobiletools.filemanager.dialogs.RenameItemDialog import com.simplemobiletools.filemanager.dialogs.RenameItemDialog
import com.simplemobiletools.filepicker.dialogs.ConfirmationDialog
import com.simplemobiletools.filepicker.extensions.formatSize import com.simplemobiletools.filepicker.extensions.formatSize
import com.simplemobiletools.filepicker.extensions.isGif import com.simplemobiletools.filepicker.extensions.isGif
import com.simplemobiletools.filepicker.extensions.toast import com.simplemobiletools.filepicker.extensions.toast
@ -60,6 +61,10 @@ class ItemsAdapter(val activity: SimpleActivity, val mItems: List<FileDirItem>,
shareFiles() shareFiles()
true true
} }
R.id.cab_delete -> {
askConfirmDelete()
true
}
else -> false else -> false
} }
} }
@ -125,6 +130,23 @@ class ItemsAdapter(val activity: SimpleActivity, val mItems: List<FileDirItem>,
} }
} }
private fun askConfirmDelete() {
ConfirmationDialog(activity, listener = object : ConfirmationDialog.OnConfirmedListener {
override fun onConfirmed() {
actMode?.finish()
prepareForDeleting()
}
})
}
private fun prepareForDeleting() {
val selections = multiSelector.selectedPositions
val paths = ArrayList<String>(selections.size)
selections.forEach { paths.add(mItems[it].path) }
listener?.prepareForDeleting(paths)
}
private fun getSelectedMedia(): List<FileDirItem> { private fun getSelectedMedia(): List<FileDirItem> {
val positions = multiSelector.selectedPositions val positions = multiSelector.selectedPositions
val selectedMedia = ArrayList<FileDirItem>(positions.size) val selectedMedia = ArrayList<FileDirItem>(positions.size)
@ -199,5 +221,7 @@ class ItemsAdapter(val activity: SimpleActivity, val mItems: List<FileDirItem>,
interface ItemOperationsListener { interface ItemOperationsListener {
fun refreshItems() fun refreshItems()
fun prepareForDeleting(paths: ArrayList<String>)
} }
} }

View File

@ -7,11 +7,9 @@ import android.net.Uri
import android.os.Bundle import android.os.Bundle
import android.support.design.widget.Snackbar import android.support.design.widget.Snackbar
import android.view.LayoutInflater import android.view.LayoutInflater
import android.view.MotionEvent
import android.view.View import android.view.View
import android.view.ViewGroup import android.view.ViewGroup
import android.webkit.MimeTypeMap import android.webkit.MimeTypeMap
import android.widget.AdapterView
import com.simplemobiletools.filemanager.Config import com.simplemobiletools.filemanager.Config
import com.simplemobiletools.filemanager.PATH import com.simplemobiletools.filemanager.PATH
import com.simplemobiletools.filemanager.R import com.simplemobiletools.filemanager.R
@ -27,7 +25,7 @@ import kotlinx.android.synthetic.main.items_fragment.*
import java.io.File import java.io.File
import java.util.* import java.util.*
class ItemsFragment : android.support.v4.app.Fragment(), AdapterView.OnItemClickListener, ItemsAdapter.ItemOperationsListener, View.OnTouchListener { class ItemsFragment : android.support.v4.app.Fragment(), ItemsAdapter.ItemOperationsListener {
private var mListener: ItemInteractionListener? = null private var mListener: ItemInteractionListener? = null
private var mSnackbar: Snackbar? = null private var mSnackbar: Snackbar? = null
@ -78,11 +76,11 @@ class ItemsFragment : android.support.v4.app.Fragment(), AdapterView.OnItemClick
mItems = newItems mItems = newItems
val adapter = ItemsAdapter(activity as SimpleActivity, mItems, this) { val adapter = ItemsAdapter(activity as SimpleActivity, mItems, this) {
itemClicked(it)
} }
items_list.adapter = adapter items_list.adapter = adapter
items_list.addItemDecoration(RecyclerViewDivider(context)) items_list.addItemDecoration(RecyclerViewDivider(context))
items_list.setOnTouchListener(this) items_list.setOnTouchListener { view, motionEvent -> checkDelete(); true }
} }
fun setListener(listener: ItemInteractionListener) { fun setListener(listener: ItemInteractionListener) {
@ -125,8 +123,7 @@ class ItemsFragment : android.support.v4.app.Fragment(), AdapterView.OnItemClick
return 0 return 0
} }
override fun onItemClick(parent: AdapterView<*>, view: View, position: Int, id: Long) { fun itemClicked(item: FileDirItem) {
val item = mItems[position]
if (item.isDirectory) { if (item.isDirectory) {
mListener?.itemClicked(item) mListener?.itemClicked(item)
} else { } else {
@ -177,26 +174,12 @@ class ItemsFragment : android.support.v4.app.Fragment(), AdapterView.OnItemClick
return type + "/*" return type + "/*"
} }
/*override fun onPrepareActionMode(mode: ActionMode, menu: Menu): Boolean { /*override fun onActionItemClicked(mode: ActionMode, item: MenuItem): Boolean {
val menuItem = menu.findItem(R.id.cab_rename)
menuItem.isVisible = mSelectedItemsCnt == 1
return true
}
override fun onActionItemClicked(mode: ActionMode, item: MenuItem): Boolean {
when (item.itemId) { when (item.itemId) {
R.id.cab_rename -> {
displayRenameDialog()
mode.finish()
}
R.id.cab_copy -> { R.id.cab_copy -> {
displayCopyDialog() displayCopyDialog()
mode.finish() mode.finish()
} }
R.id.cab_delete -> {
prepareForDeleting()
mode.finish()
}
else -> return false else -> return false
} }
@ -227,15 +210,6 @@ class ItemsFragment : android.support.v4.app.Fragment(), AdapterView.OnItemClick
}) })
} }
private fun getSelectedItem(): FileDirItem? {
val itemIndexes = getSelectedItemIndexes()
if (itemIndexes.isEmpty())
return null
val itemIndex = itemIndexes[0]
return mItems[itemIndex]
}
private fun getSelectedItemIndexes(): List<Int> { private fun getSelectedItemIndexes(): List<Int> {
/*val items = items_list.checkedItemPositions /*val items = items_list.checkedItemPositions
val cnt = items.size() val cnt = items.size()
@ -246,21 +220,15 @@ class ItemsFragment : android.support.v4.app.Fragment(), AdapterView.OnItemClick
return ArrayList() return ArrayList()
} }
private fun prepareForDeleting() { override fun prepareForDeleting(paths: ArrayList<String>) {
mToBeDeleted.clear() activity.toast(R.string.deleting)
/*val items = items_list.checkedItemPositions mToBeDeleted = paths
val cnt = items.size() val deletedCnt = mToBeDeleted.size
var deletedCnt = 0
for (i in 0..cnt - 1) {
if (items.valueAt(i)) {
val id = items.keyAt(i)
val path = mItems[id].path
mToBeDeleted.add(path)
deletedCnt++
}
}
notifyDeletion(deletedCnt)*/ if ((activity as SimpleActivity).isShowingPermDialog(File(mToBeDeleted[0])))
return
notifyDeletion(deletedCnt)
} }
private fun notifyDeletion(cnt: Int) { private fun notifyDeletion(cnt: Int) {
@ -275,12 +243,10 @@ class ItemsFragment : android.support.v4.app.Fragment(), AdapterView.OnItemClick
fillItems() fillItems()
} }
override fun onTouch(v: View, event: MotionEvent): Boolean { fun checkDelete() {
if (mSnackbar != null && mSnackbar!!.isShown) { if (mSnackbar?.isShown == true) {
deleteItems() deleteItems()
} }
return false
} }
private fun deleteItems() { private fun deleteItems() {

View File

@ -13,6 +13,7 @@
<string name="empty_name">Please enter a name</string> <string name="empty_name">Please enter a name</string>
<string name="error_occurred">Ein unbekannter Fehler ist aufgetreten</string> <string name="error_occurred">Ein unbekannter Fehler ist aufgetreten</string>
<string name="delete">Löschen</string> <string name="delete">Löschen</string>
<string name="deleting">Lösche</string>
<string name="undo">Rückgängig</string> <string name="undo">Rückgängig</string>
<string name="rename">Umbenennen</string> <string name="rename">Umbenennen</string>
<string name="properties">Eigenschaften</string> <string name="properties">Eigenschaften</string>

View File

@ -13,6 +13,7 @@
<string name="empty_name">Por favor, introduce un nombre</string> <string name="empty_name">Por favor, introduce un nombre</string>
<string name="error_occurred">Se ha producido un error inesperado</string> <string name="error_occurred">Se ha producido un error inesperado</string>
<string name="delete">Eliminar</string> <string name="delete">Eliminar</string>
<string name="deleting">Eliminando</string>
<string name="undo">Deshacer</string> <string name="undo">Deshacer</string>
<string name="rename">Renombrar</string> <string name="rename">Renombrar</string>
<string name="properties">Propiedades</string> <string name="properties">Propiedades</string>

View File

@ -13,6 +13,7 @@
<string name="empty_name">Inserisci un nome</string> <string name="empty_name">Inserisci un nome</string>
<string name="error_occurred">Riscontrato un errore sconosciuto</string> <string name="error_occurred">Riscontrato un errore sconosciuto</string>
<string name="delete">Elimina</string> <string name="delete">Elimina</string>
<string name="deleting">Eliminazione</string>
<string name="undo">Annulla</string> <string name="undo">Annulla</string>
<string name="rename">Rinomina</string> <string name="rename">Rinomina</string>
<string name="properties">Proprietà</string> <string name="properties">Proprietà</string>

View File

@ -13,6 +13,7 @@
<string name="empty_name">Please enter a name</string> <string name="empty_name">Please enter a name</string>
<string name="error_occurred">不明なエラーが発生しました</string> <string name="error_occurred">不明なエラーが発生しました</string>
<string name="delete">削除</string> <string name="delete">削除</string>
<string name="deleting">削除中</string>
<string name="undo">元に戻す</string> <string name="undo">元に戻す</string>
<string name="rename">名前を変更</string> <string name="rename">名前を変更</string>
<string name="properties">Properties</string> <string name="properties">Properties</string>

View File

@ -13,6 +13,7 @@
<string name="empty_name">Por favor digite o nome</string> <string name="empty_name">Por favor digite o nome</string>
<string name="error_occurred">Ocorreu um erro desconhecido</string> <string name="error_occurred">Ocorreu um erro desconhecido</string>
<string name="delete">Apagar</string> <string name="delete">Apagar</string>
<string name="deleting">A apagar</string>
<string name="undo">Desfazer</string> <string name="undo">Desfazer</string>
<string name="rename">Renomear</string> <string name="rename">Renomear</string>
<string name="properties">Propriedades</string> <string name="properties">Propriedades</string>

View File

@ -13,6 +13,7 @@
<string name="empty_name">Please enter a name</string> <string name="empty_name">Please enter a name</string>
<string name="error_occurred">Ett okänt fel har uppstått</string> <string name="error_occurred">Ett okänt fel har uppstått</string>
<string name="delete">Ta bort</string> <string name="delete">Ta bort</string>
<string name="deleting">Tar bort</string>
<string name="undo">Ångra</string> <string name="undo">Ångra</string>
<string name="rename">Döp om</string> <string name="rename">Döp om</string>
<string name="properties">Properties</string> <string name="properties">Properties</string>

View File

@ -13,6 +13,7 @@
<string name="empty_name">Please enter a name</string> <string name="empty_name">Please enter a name</string>
<string name="error_occurred">An unknown error occurred</string> <string name="error_occurred">An unknown error occurred</string>
<string name="delete">Delete</string> <string name="delete">Delete</string>
<string name="deleting">Deleting</string>
<string name="undo">Undo</string> <string name="undo">Undo</string>
<string name="rename">Rename</string> <string name="rename">Rename</string>
<string name="properties">Properties</string> <string name="properties">Properties</string>