remove the Undo option at removing from media view
This commit is contained in:
parent
62d11861ca
commit
b28f7dcc78
15 changed files with 41 additions and 180 deletions
|
@ -224,13 +224,6 @@ class MainActivity : SimpleActivity(), DirectoryAdapter.DirOperationsListener {
|
||||||
} else {
|
} else {
|
||||||
file.delete()
|
file.delete()
|
||||||
}
|
}
|
||||||
|
|
||||||
if (file.exists()) {
|
|
||||||
try {
|
|
||||||
file.delete()
|
|
||||||
} catch (ignored: Exception) {
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
private val undoDeletion = View.OnClickListener {
|
private val undoDeletion = View.OnClickListener {
|
||||||
|
|
|
@ -4,14 +4,11 @@ import android.app.Activity
|
||||||
import android.app.WallpaperManager
|
import android.app.WallpaperManager
|
||||||
import android.content.Intent
|
import android.content.Intent
|
||||||
import android.graphics.Bitmap
|
import android.graphics.Bitmap
|
||||||
import android.graphics.Color
|
|
||||||
import android.net.Uri
|
import android.net.Uri
|
||||||
import android.os.Bundle
|
import android.os.Bundle
|
||||||
import android.support.design.widget.Snackbar
|
|
||||||
import android.util.Log
|
import android.util.Log
|
||||||
import android.view.Menu
|
import android.view.Menu
|
||||||
import android.view.MenuItem
|
import android.view.MenuItem
|
||||||
import android.view.View
|
|
||||||
import com.bumptech.glide.Glide
|
import com.bumptech.glide.Glide
|
||||||
import com.bumptech.glide.request.animation.GlideAnimation
|
import com.bumptech.glide.request.animation.GlideAnimation
|
||||||
import com.bumptech.glide.request.target.SimpleTarget
|
import com.bumptech.glide.request.target.SimpleTarget
|
||||||
|
@ -32,9 +29,6 @@ class MediaActivity : SimpleActivity(), MediaAdapter.MediaOperationsListener {
|
||||||
companion object {
|
companion object {
|
||||||
private val TAG = MediaActivity::class.java.simpleName
|
private val TAG = MediaActivity::class.java.simpleName
|
||||||
|
|
||||||
private var mSnackbar: Snackbar? = null
|
|
||||||
|
|
||||||
private var mToBeDeleted = ArrayList<String>()
|
|
||||||
private var mMedia = ArrayList<Medium>()
|
private var mMedia = ArrayList<Medium>()
|
||||||
|
|
||||||
private var mPath = ""
|
private var mPath = ""
|
||||||
|
@ -67,11 +61,6 @@ class MediaActivity : SimpleActivity(), MediaAdapter.MediaOperationsListener {
|
||||||
tryloadGallery()
|
tryloadGallery()
|
||||||
}
|
}
|
||||||
|
|
||||||
override fun onPause() {
|
|
||||||
super.onPause()
|
|
||||||
deleteFiles()
|
|
||||||
}
|
|
||||||
|
|
||||||
private fun tryloadGallery() {
|
private fun tryloadGallery() {
|
||||||
if (hasStoragePermission()) {
|
if (hasStoragePermission()) {
|
||||||
val dirName = getHumanizedFilename(mPath)
|
val dirName = getHumanizedFilename(mPath)
|
||||||
|
@ -96,7 +85,6 @@ class MediaActivity : SimpleActivity(), MediaAdapter.MediaOperationsListener {
|
||||||
} else {
|
} else {
|
||||||
media_grid.adapter = adapter
|
media_grid.adapter = adapter
|
||||||
}
|
}
|
||||||
media_grid.setOnTouchListener { view, motionEvent -> checkDelete(); false }
|
|
||||||
}
|
}
|
||||||
|
|
||||||
override fun onCreateOptionsMenu(menu: Menu): Boolean {
|
override fun onCreateOptionsMenu(menu: Menu): Boolean {
|
||||||
|
@ -196,7 +184,7 @@ class MediaActivity : SimpleActivity(), MediaAdapter.MediaOperationsListener {
|
||||||
return
|
return
|
||||||
|
|
||||||
mIsGettingMedia = true
|
mIsGettingMedia = true
|
||||||
GetMediaAsynctask(applicationContext, mPath, mIsGetVideoIntent, mIsGetImageIntent, mToBeDeleted, mShowAll) {
|
GetMediaAsynctask(applicationContext, mPath, mIsGetVideoIntent, mIsGetImageIntent, mShowAll) {
|
||||||
gotMedia(it)
|
gotMedia(it)
|
||||||
}.execute()
|
}.execute()
|
||||||
}
|
}
|
||||||
|
@ -210,44 +198,8 @@ class MediaActivity : SimpleActivity(), MediaAdapter.MediaOperationsListener {
|
||||||
false
|
false
|
||||||
}
|
}
|
||||||
|
|
||||||
override fun prepareForDeleting(paths: ArrayList<String>) {
|
override fun deleteFiles(files: ArrayList<File>) {
|
||||||
toast(R.string.deleting)
|
for (file in files) {
|
||||||
mToBeDeleted = paths
|
|
||||||
val deletedCnt = mToBeDeleted.size
|
|
||||||
|
|
||||||
if (isShowingPermDialog(File(mToBeDeleted[0])))
|
|
||||||
return
|
|
||||||
|
|
||||||
notifyDeletion(deletedCnt)
|
|
||||||
}
|
|
||||||
|
|
||||||
private fun notifyDeletion(cnt: Int) {
|
|
||||||
getMedia()
|
|
||||||
|
|
||||||
if (mMedia.isEmpty()) {
|
|
||||||
deleteFiles()
|
|
||||||
} else {
|
|
||||||
val res = resources
|
|
||||||
val msg = res.getQuantityString(R.plurals.files_deleted, cnt, cnt)
|
|
||||||
mSnackbar = Snackbar.make(coordinator_layout, msg, Snackbar.LENGTH_INDEFINITE)
|
|
||||||
mSnackbar!!.apply {
|
|
||||||
setAction(res.getString(R.string.undo), undoDeletion)
|
|
||||||
setActionTextColor(Color.WHITE)
|
|
||||||
show()
|
|
||||||
}
|
|
||||||
updateMediaView()
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
private fun deleteFiles() {
|
|
||||||
if (mToBeDeleted.isEmpty())
|
|
||||||
return
|
|
||||||
|
|
||||||
mSnackbar?.dismiss()
|
|
||||||
var wereFilesDeleted = false
|
|
||||||
|
|
||||||
for (delPath in mToBeDeleted) {
|
|
||||||
val file = File(delPath)
|
|
||||||
if (file.exists() && file.isImageVideoGif()) {
|
if (file.exists() && file.isImageVideoGif()) {
|
||||||
if (needsStupidWritePermissions(file.absolutePath)) {
|
if (needsStupidWritePermissions(file.absolutePath)) {
|
||||||
if (isShowingPermDialog(file))
|
if (isShowingPermDialog(file))
|
||||||
|
@ -257,38 +209,20 @@ class MediaActivity : SimpleActivity(), MediaAdapter.MediaOperationsListener {
|
||||||
|
|
||||||
// double check we have the uri to the proper file path, not some parent folder
|
// double check we have the uri to the proper file path, not some parent folder
|
||||||
if (document.uri.toString().endsWith(file.absolutePath.getFilenameFromPath()) && !document.isDirectory) {
|
if (document.uri.toString().endsWith(file.absolutePath.getFilenameFromPath()) && !document.isDirectory) {
|
||||||
if (document.delete()) {
|
document.delete()
|
||||||
wereFilesDeleted = true
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
if (file.delete())
|
file.delete()
|
||||||
wereFilesDeleted = true
|
|
||||||
}
|
|
||||||
|
|
||||||
if (file.exists()) {
|
|
||||||
try {
|
|
||||||
file.delete()
|
|
||||||
} catch (ignored: Exception) {
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if (wereFilesDeleted) {
|
scanFiles(files) {
|
||||||
scanPaths(mToBeDeleted) {
|
if (mMedia.isEmpty()) {
|
||||||
if (mMedia.isEmpty()) {
|
finish()
|
||||||
finish()
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
updateMediaView()
|
||||||
}
|
}
|
||||||
mToBeDeleted.clear()
|
|
||||||
}
|
|
||||||
|
|
||||||
private val undoDeletion = View.OnClickListener {
|
|
||||||
mSnackbar!!.dismiss()
|
|
||||||
mToBeDeleted.clear()
|
|
||||||
updateMediaView()
|
|
||||||
}
|
}
|
||||||
|
|
||||||
private fun updateMediaView() {
|
private fun updateMediaView() {
|
||||||
|
@ -349,12 +283,6 @@ class MediaActivity : SimpleActivity(), MediaAdapter.MediaOperationsListener {
|
||||||
initializeGallery()
|
initializeGallery()
|
||||||
}
|
}
|
||||||
|
|
||||||
fun checkDelete() {
|
|
||||||
if (mSnackbar?.isShown == true) {
|
|
||||||
deleteFiles()
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
override fun refreshItems() {
|
override fun refreshItems() {
|
||||||
getMedia()
|
getMedia()
|
||||||
}
|
}
|
||||||
|
|
|
@ -213,13 +213,6 @@ class ViewPagerActivity : SimpleActivity(), ViewPager.OnPageChangeListener, View
|
||||||
file.delete()
|
file.delete()
|
||||||
}
|
}
|
||||||
|
|
||||||
try {
|
|
||||||
if (file.exists())
|
|
||||||
file.delete()
|
|
||||||
} catch (ignored: Exception) {
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
val values = ContentValues()
|
val values = ContentValues()
|
||||||
values.put(MediaStore.MediaColumns.DATA, file.absolutePath)
|
values.put(MediaStore.MediaColumns.DATA, file.absolutePath)
|
||||||
val uri = if (file.isImageSlow()) MediaStore.Images.Media.EXTERNAL_CONTENT_URI else MediaStore.Video.Media.EXTERNAL_CONTENT_URI
|
val uri = if (file.isImageSlow()) MediaStore.Images.Media.EXTERNAL_CONTENT_URI else MediaStore.Video.Media.EXTERNAL_CONTENT_URI
|
||||||
|
@ -251,7 +244,7 @@ class ViewPagerActivity : SimpleActivity(), ViewPager.OnPageChangeListener, View
|
||||||
}
|
}
|
||||||
|
|
||||||
private fun reloadViewPager() {
|
private fun reloadViewPager() {
|
||||||
GetMediaAsynctask(applicationContext, mDirectory, false, false, ArrayList<String>(), mShowAll) {
|
GetMediaAsynctask(applicationContext, mDirectory, false, false, mShowAll) {
|
||||||
mMedia = it
|
mMedia = it
|
||||||
if (isDirEmpty())
|
if (isDirEmpty())
|
||||||
return@GetMediaAsynctask
|
return@GetMediaAsynctask
|
||||||
|
|
|
@ -168,17 +168,17 @@ class MediaAdapter(val activity: SimpleActivity, var media: MutableList<Medium>,
|
||||||
private fun askConfirmDelete() {
|
private fun askConfirmDelete() {
|
||||||
ConfirmationDialog(activity) {
|
ConfirmationDialog(activity) {
|
||||||
actMode?.finish()
|
actMode?.finish()
|
||||||
prepareForDeleting()
|
deleteFiles()
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
private fun getCurrentFile() = File(media[multiSelector.selectedPositions[0]].path)
|
private fun getCurrentFile() = File(media[multiSelector.selectedPositions[0]].path)
|
||||||
|
|
||||||
private fun prepareForDeleting() {
|
private fun deleteFiles() {
|
||||||
val selections = multiSelector.selectedPositions
|
val selections = multiSelector.selectedPositions
|
||||||
val paths = ArrayList<String>(selections.size)
|
val files = ArrayList<File>(selections.size)
|
||||||
selections.forEach { paths.add(media[it].path) }
|
selections.forEach { files.add(File(media[it].path)) }
|
||||||
listener?.prepareForDeleting(paths)
|
listener?.deleteFiles(files)
|
||||||
}
|
}
|
||||||
|
|
||||||
private fun getSelectedMedia(): List<Medium> {
|
private fun getSelectedMedia(): List<Medium> {
|
||||||
|
@ -265,6 +265,6 @@ class MediaAdapter(val activity: SimpleActivity, var media: MutableList<Medium>,
|
||||||
interface MediaOperationsListener {
|
interface MediaOperationsListener {
|
||||||
fun refreshItems()
|
fun refreshItems()
|
||||||
|
|
||||||
fun prepareForDeleting(paths: ArrayList<String>)
|
fun deleteFiles(files: ArrayList<File>)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -13,7 +13,7 @@ import java.io.File
|
||||||
import java.util.*
|
import java.util.*
|
||||||
|
|
||||||
class GetMediaAsynctask(val context: Context, val mPath: String, val isPickVideo: Boolean = false, val isPickImage: Boolean = false,
|
class GetMediaAsynctask(val context: Context, val mPath: String, val isPickVideo: Boolean = false, val isPickImage: Boolean = false,
|
||||||
val mToBeDeleted: List<String> = ArrayList<String>(), val showAll: Boolean, val callback: (media: ArrayList<Medium>) -> Unit) :
|
val showAll: Boolean, val callback: (media: ArrayList<Medium>) -> Unit) :
|
||||||
AsyncTask<Void, Void, ArrayList<Medium>>() {
|
AsyncTask<Void, Void, ArrayList<Medium>>() {
|
||||||
lateinit var mConfig: Config
|
lateinit var mConfig: Config
|
||||||
|
|
||||||
|
@ -49,24 +49,22 @@ class GetMediaAsynctask(val context: Context, val mPath: String, val isPickVideo
|
||||||
if (cursor?.moveToFirst() == true) {
|
if (cursor?.moveToFirst() == true) {
|
||||||
do {
|
do {
|
||||||
val curPath = cursor.getStringValue(MediaStore.Images.Media.DATA) ?: continue
|
val curPath = cursor.getStringValue(MediaStore.Images.Media.DATA) ?: continue
|
||||||
if (!mToBeDeleted.contains(curPath)) {
|
val file = File(curPath)
|
||||||
val file = File(curPath)
|
val size = cursor.getLongValue(MediaStore.Images.Media.SIZE)
|
||||||
val size = cursor.getLongValue(MediaStore.Images.Media.SIZE)
|
|
||||||
|
|
||||||
if (size == 0L) {
|
if (size == 0L) {
|
||||||
invalidFiles.add(file)
|
invalidFiles.add(file)
|
||||||
continue
|
continue
|
||||||
}
|
|
||||||
|
|
||||||
// exclude images of subdirectories
|
|
||||||
if (!showAll && file.parent != mPath)
|
|
||||||
continue
|
|
||||||
|
|
||||||
val name = cursor.getStringValue(MediaStore.Images.Media.DISPLAY_NAME) ?: ""
|
|
||||||
val dateModified = cursor.getLongValue(MediaStore.Images.Media.DATE_MODIFIED)
|
|
||||||
val dateTaken = cursor.getLongValue(MediaStore.Images.Media.DATE_TAKEN)
|
|
||||||
media.add(Medium(name, curPath, i == 1, dateModified, dateTaken, size))
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// exclude images of subdirectories
|
||||||
|
if (!showAll && file.parent != mPath)
|
||||||
|
continue
|
||||||
|
|
||||||
|
val name = cursor.getStringValue(MediaStore.Images.Media.DISPLAY_NAME) ?: ""
|
||||||
|
val dateModified = cursor.getLongValue(MediaStore.Images.Media.DATE_MODIFIED)
|
||||||
|
val dateTaken = cursor.getLongValue(MediaStore.Images.Media.DATE_TAKEN)
|
||||||
|
media.add(Medium(name, curPath, i == 1, dateModified, dateTaken, size))
|
||||||
} while (cursor.moveToNext())
|
} while (cursor.moveToNext())
|
||||||
}
|
}
|
||||||
} finally {
|
} finally {
|
||||||
|
|
|
@ -1,23 +1,17 @@
|
||||||
<?xml version="1.0" encoding="utf-8"?>
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
<android.support.design.widget.CoordinatorLayout
|
<android.support.v4.widget.SwipeRefreshLayout
|
||||||
xmlns:android="http://schemas.android.com/apk/res/android"
|
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"
|
||||||
android:id="@+id/coordinator_layout"
|
android:id="@+id/media_holder"
|
||||||
android:layout_width="match_parent"
|
android:layout_width="match_parent"
|
||||||
android:layout_height="match_parent">
|
android:layout_height="wrap_content">
|
||||||
|
|
||||||
<android.support.v4.widget.SwipeRefreshLayout
|
<android.support.v7.widget.RecyclerView
|
||||||
android:id="@+id/media_holder"
|
android:id="@+id/media_grid"
|
||||||
android:layout_width="match_parent"
|
android:layout_width="match_parent"
|
||||||
android:layout_height="wrap_content">
|
android:layout_height="match_parent"
|
||||||
|
android:scrollbars="vertical"
|
||||||
|
app:layoutManager="android.support.v7.widget.GridLayoutManager"
|
||||||
|
app:spanCount="@integer/photo_columns"/>
|
||||||
|
|
||||||
<android.support.v7.widget.RecyclerView
|
</android.support.v4.widget.SwipeRefreshLayout>
|
||||||
android:id="@+id/media_grid"
|
|
||||||
android:layout_width="match_parent"
|
|
||||||
android:layout_height="match_parent"
|
|
||||||
android:scrollbars="vertical"
|
|
||||||
app:layoutManager="android.support.v7.widget.GridLayoutManager"
|
|
||||||
app:spanCount="@integer/photo_columns"/>
|
|
||||||
|
|
||||||
</android.support.v4.widget.SwipeRefreshLayout>
|
|
||||||
</android.support.design.widget.CoordinatorLayout>
|
|
||||||
|
|
|
@ -55,11 +55,6 @@
|
||||||
<item quantity="other">%1$d Ordner gelöscht</item>
|
<item quantity="other">%1$d Ordner gelöscht</item>
|
||||||
</plurals>
|
</plurals>
|
||||||
|
|
||||||
<plurals name="files_deleted">
|
|
||||||
<item quantity="one">1 Datei gelöscht</item>
|
|
||||||
<item quantity="other">%1$d Dateien gelöscht</item>
|
|
||||||
</plurals>
|
|
||||||
|
|
||||||
<!-- Resizing -->
|
<!-- Resizing -->
|
||||||
<string name="resize">Resize</string>
|
<string name="resize">Resize</string>
|
||||||
<string name="resize_and_save">Resize selection and save</string>
|
<string name="resize_and_save">Resize selection and save</string>
|
||||||
|
|
|
@ -55,11 +55,6 @@
|
||||||
<item quantity="other">%1$d carpetas eliminadas</item>
|
<item quantity="other">%1$d carpetas eliminadas</item>
|
||||||
</plurals>
|
</plurals>
|
||||||
|
|
||||||
<plurals name="files_deleted">
|
|
||||||
<item quantity="one">1 archivo eliminado</item>
|
|
||||||
<item quantity="other">%1$d archivos eliminados</item>
|
|
||||||
</plurals>
|
|
||||||
|
|
||||||
<!-- Resizing -->
|
<!-- Resizing -->
|
||||||
<string name="resize">Resize</string>
|
<string name="resize">Resize</string>
|
||||||
<string name="resize_and_save">Resize selection and save</string>
|
<string name="resize_and_save">Resize selection and save</string>
|
||||||
|
|
|
@ -55,11 +55,6 @@
|
||||||
<item quantity="other">%1$d cartelle eliminate</item>
|
<item quantity="other">%1$d cartelle eliminate</item>
|
||||||
</plurals>
|
</plurals>
|
||||||
|
|
||||||
<plurals name="files_deleted">
|
|
||||||
<item quantity="one">1 file eliminato</item>
|
|
||||||
<item quantity="other">%1$d file eliminati</item>
|
|
||||||
</plurals>
|
|
||||||
|
|
||||||
<!-- Resizing -->
|
<!-- Resizing -->
|
||||||
<string name="resize">Resize</string>
|
<string name="resize">Resize</string>
|
||||||
<string name="resize_and_save">Resize selection and save</string>
|
<string name="resize_and_save">Resize selection and save</string>
|
||||||
|
|
|
@ -55,11 +55,6 @@
|
||||||
<item quantity="other">%1$d フォルダーを削除しました</item>
|
<item quantity="other">%1$d フォルダーを削除しました</item>
|
||||||
</plurals>
|
</plurals>
|
||||||
|
|
||||||
<plurals name="files_deleted">
|
|
||||||
<item quantity="one">1 ファイルを削除しました</item>
|
|
||||||
<item quantity="other">%1$d ファイルを削除しました</item>
|
|
||||||
</plurals>
|
|
||||||
|
|
||||||
<!-- Resizing -->
|
<!-- Resizing -->
|
||||||
<string name="resize">Resize</string>
|
<string name="resize">Resize</string>
|
||||||
<string name="resize_and_save">Resize selection and save</string>
|
<string name="resize_and_save">Resize selection and save</string>
|
||||||
|
|
|
@ -55,11 +55,6 @@
|
||||||
<item quantity="other">%1$d pastas apagadas</item>
|
<item quantity="other">%1$d pastas apagadas</item>
|
||||||
</plurals>
|
</plurals>
|
||||||
|
|
||||||
<plurals name="files_deleted">
|
|
||||||
<item quantity="one">1 ficheiro apagado</item>
|
|
||||||
<item quantity="other">%1$d ficheiros apagados</item>
|
|
||||||
</plurals>
|
|
||||||
|
|
||||||
<!-- Resizing -->
|
<!-- Resizing -->
|
||||||
<string name="resize">Resize</string>
|
<string name="resize">Resize</string>
|
||||||
<string name="resize_and_save">Resize selection and save</string>
|
<string name="resize_and_save">Resize selection and save</string>
|
||||||
|
|
|
@ -56,11 +56,6 @@
|
||||||
<item quantity="other">Папок удалено: %1$d</item>
|
<item quantity="other">Папок удалено: %1$d</item>
|
||||||
</plurals>
|
</plurals>
|
||||||
|
|
||||||
<plurals name="files_deleted">
|
|
||||||
<item quantity="one">1 файл удалён</item>
|
|
||||||
<item quantity="other">Файлов удалено: %1$d</item>
|
|
||||||
</plurals>
|
|
||||||
|
|
||||||
<!-- Resizing -->
|
<!-- Resizing -->
|
||||||
<string name="resize">Изменить размер</string>
|
<string name="resize">Изменить размер</string>
|
||||||
<string name="resize_and_save">Изменить выбранное и сохранить</string>
|
<string name="resize_and_save">Изменить выбранное и сохранить</string>
|
||||||
|
|
|
@ -55,11 +55,6 @@
|
||||||
<item quantity="other">%1$d mappar borttagna</item>
|
<item quantity="other">%1$d mappar borttagna</item>
|
||||||
</plurals>
|
</plurals>
|
||||||
|
|
||||||
<plurals name="files_deleted">
|
|
||||||
<item quantity="one">1 fil borttagen</item>
|
|
||||||
<item quantity="other">%1$d filer borttagna</item>
|
|
||||||
</plurals>
|
|
||||||
|
|
||||||
<!-- Resizing -->
|
<!-- Resizing -->
|
||||||
<string name="resize">Resize</string>
|
<string name="resize">Resize</string>
|
||||||
<string name="resize_and_save">Resize selection and save</string>
|
<string name="resize_and_save">Resize selection and save</string>
|
||||||
|
|
|
@ -56,11 +56,6 @@
|
||||||
<item quantity="other">%1$d folders deleted</item>
|
<item quantity="other">%1$d folders deleted</item>
|
||||||
</plurals>
|
</plurals>
|
||||||
|
|
||||||
<plurals name="files_deleted">
|
|
||||||
<item quantity="one">1 file deleted</item>
|
|
||||||
<item quantity="other">%1$d files deleted</item>
|
|
||||||
</plurals>
|
|
||||||
|
|
||||||
<!-- Resizing -->
|
<!-- Resizing -->
|
||||||
<string name="resize">Resize</string>
|
<string name="resize">Resize</string>
|
||||||
<string name="resize_and_save">Resize selection and save</string>
|
<string name="resize_and_save">Resize selection and save</string>
|
||||||
|
|
|
@ -55,11 +55,6 @@
|
||||||
<item quantity="other">%1$d folders deleted</item>
|
<item quantity="other">%1$d folders deleted</item>
|
||||||
</plurals>
|
</plurals>
|
||||||
|
|
||||||
<plurals name="files_deleted">
|
|
||||||
<item quantity="one">1 file deleted</item>
|
|
||||||
<item quantity="other">%1$d files deleted</item>
|
|
||||||
</plurals>
|
|
||||||
|
|
||||||
<!-- Resizing -->
|
<!-- Resizing -->
|
||||||
<string name="resize">Resize</string>
|
<string name="resize">Resize</string>
|
||||||
<string name="resize_and_save">Resize selection and save</string>
|
<string name="resize_and_save">Resize selection and save</string>
|
||||||
|
|
Loading…
Reference in a new issue