From 8397ebac6607edde125a1a4b35f4682dc9eea414 Mon Sep 17 00:00:00 2001 From: tibbi Date: Wed, 27 Jun 2018 16:56:22 +0200 Subject: [PATCH] add some helper menu buttons for emptying and disabling recycle bin --- .../gallery/activities/MediaActivity.kt | 17 +++++++++++++++++ .../gallery/extensions/Activity.kt | 18 ++++++++++++++++++ .../gallery/interfaces/DirectoryDao.kt | 4 ++++ .../gallery/interfaces/MediumDao.kt | 3 +++ app/src/main/res/menu/menu_media.xml | 8 ++++++++ 5 files changed, 50 insertions(+) diff --git a/app/src/main/kotlin/com/simplemobiletools/gallery/activities/MediaActivity.kt b/app/src/main/kotlin/com/simplemobiletools/gallery/activities/MediaActivity.kt index ae24492c6..57739f38c 100644 --- a/app/src/main/kotlin/com/simplemobiletools/gallery/activities/MediaActivity.kt +++ b/app/src/main/kotlin/com/simplemobiletools/gallery/activities/MediaActivity.kt @@ -198,6 +198,9 @@ class MediaActivity : SimpleActivity(), MediaAdapter.MediaOperationsListener { findItem(R.id.unhide_folder).isVisible = isFolderHidden && !mShowAll && mPath != FAVORITES && mPath != RECYCLE_BIN findItem(R.id.exclude_folder).isVisible = !mShowAll && mPath != FAVORITES && mPath != RECYCLE_BIN + findItem(R.id.empty_recycle_bin).isVisible = mPath == RECYCLE_BIN + findItem(R.id.empty_disable_recycle_bin).isVisible = mPath == RECYCLE_BIN + findItem(R.id.folder_view).isVisible = mShowAll findItem(R.id.open_camera).isVisible = mShowAll findItem(R.id.about).isVisible = mShowAll @@ -219,6 +222,8 @@ class MediaActivity : SimpleActivity(), MediaAdapter.MediaOperationsListener { when (item.itemId) { R.id.sort -> showSortingDialog() R.id.filter -> showFilterMediaDialog() + R.id.empty_recycle_bin -> emptyRecycleBin() + R.id.empty_disable_recycle_bin -> emptyAndDisableRecycleBin() R.id.toggle_filename -> toggleFilenameVisibility() R.id.open_camera -> launchCamera() R.id.folder_view -> switchToFolderView() @@ -418,6 +423,18 @@ class MediaActivity : SimpleActivity(), MediaAdapter.MediaOperationsListener { } } + private fun emptyRecycleBin() { + emptyTheRecycleBin { + finish() + } + } + + private fun emptyAndDisableRecycleBin() { + emptyAndDisableTheRecycleBin { + finish() + } + } + private fun toggleFilenameVisibility() { config.displayFileNames = !config.displayFileNames getMediaAdapter()?.updateDisplayFilenames(config.displayFileNames) diff --git a/app/src/main/kotlin/com/simplemobiletools/gallery/extensions/Activity.kt b/app/src/main/kotlin/com/simplemobiletools/gallery/extensions/Activity.kt index 89c2cb333..41a33621f 100644 --- a/app/src/main/kotlin/com/simplemobiletools/gallery/extensions/Activity.kt +++ b/app/src/main/kotlin/com/simplemobiletools/gallery/extensions/Activity.kt @@ -204,3 +204,21 @@ fun BaseSimpleActivity.movePathsInRecycleBin(paths: ArrayList, callback: callback?.invoke(pathsCnt == 0) }.start() } + +fun BaseSimpleActivity.emptyTheRecycleBin(callback: () -> Unit) { + Thread { + filesDir.deleteRecursively() + galleryDB.MediumDao().clearRecycleBin() + galleryDB.DirectoryDao().deleteRecycleBin() + callback() + }.start() +} + +fun BaseSimpleActivity.emptyAndDisableTheRecycleBin(callback: () -> Unit) { + Thread { + emptyTheRecycleBin { + config.useRecycleBin = false + callback() + } + }.start() +} diff --git a/app/src/main/kotlin/com/simplemobiletools/gallery/interfaces/DirectoryDao.kt b/app/src/main/kotlin/com/simplemobiletools/gallery/interfaces/DirectoryDao.kt index ad1b5afab..6ca318f4d 100644 --- a/app/src/main/kotlin/com/simplemobiletools/gallery/interfaces/DirectoryDao.kt +++ b/app/src/main/kotlin/com/simplemobiletools/gallery/interfaces/DirectoryDao.kt @@ -4,6 +4,7 @@ import android.arch.persistence.room.Dao import android.arch.persistence.room.Insert import android.arch.persistence.room.OnConflictStrategy.REPLACE import android.arch.persistence.room.Query +import com.simplemobiletools.gallery.helpers.RECYCLE_BIN import com.simplemobiletools.gallery.models.Directory @Dao @@ -25,4 +26,7 @@ interface DirectoryDao { @Query("UPDATE directories SET thumbnail = :thumbnail, filename = :name, path = :newPath WHERE path = :oldPath COLLATE NOCASE") fun updateDirectoryAfterRename(thumbnail: String, name: String, newPath: String, oldPath: String) + + @Query("DELETE FROM directories WHERE path = \'$RECYCLE_BIN\' COLLATE NOCASE") + fun deleteRecycleBin() } diff --git a/app/src/main/kotlin/com/simplemobiletools/gallery/interfaces/MediumDao.kt b/app/src/main/kotlin/com/simplemobiletools/gallery/interfaces/MediumDao.kt index 31ea1835e..68e4c3642 100644 --- a/app/src/main/kotlin/com/simplemobiletools/gallery/interfaces/MediumDao.kt +++ b/app/src/main/kotlin/com/simplemobiletools/gallery/interfaces/MediumDao.kt @@ -37,4 +37,7 @@ interface MediumDao { @Query("UPDATE media SET deleted_ts = :deletedTS WHERE full_path = :path COLLATE NOCASE") fun updateDeleted(path: String, deletedTS: Long) + + @Query("DELETE FROM media WHERE deleted_ts != 0") + fun clearRecycleBin() } diff --git a/app/src/main/res/menu/menu_media.xml b/app/src/main/res/menu/menu_media.xml index f59adabec..ea3f38fd9 100644 --- a/app/src/main/res/menu/menu_media.xml +++ b/app/src/main/res/menu/menu_media.xml @@ -22,6 +22,14 @@ android:icon="@drawable/ic_filter" android:title="@string/filter_media" app:showAsAction="ifRoom"/> + +