fix #983, add an option for showing the Recycle Bin as the last folder

This commit is contained in:
tibbi 2018-10-17 12:19:01 +02:00
parent 66cd5dad3e
commit af8133b8b2
6 changed files with 59 additions and 6 deletions

View file

@ -768,7 +768,7 @@ class MainActivity : SimpleActivity(), DirectoryOperationsListener {
val foldersToScan = mediaFetcher.getFoldersToScan() val foldersToScan = mediaFetcher.getFoldersToScan()
foldersToScan.add(FAVORITES) foldersToScan.add(FAVORITES)
if (config.showRecycleBinAtFolders) { if (config.useRecycleBin && config.showRecycleBinAtFolders) {
foldersToScan.add(RECYCLE_BIN) foldersToScan.add(RECYCLE_BIN)
} else { } else {
foldersToScan.remove(RECYCLE_BIN) foldersToScan.remove(RECYCLE_BIN)

View file

@ -18,10 +18,7 @@ import com.simplemobiletools.gallery.extensions.config
import com.simplemobiletools.gallery.extensions.emptyTheRecycleBin import com.simplemobiletools.gallery.extensions.emptyTheRecycleBin
import com.simplemobiletools.gallery.extensions.galleryDB import com.simplemobiletools.gallery.extensions.galleryDB
import com.simplemobiletools.gallery.extensions.showRecycleBinEmptyingDialog import com.simplemobiletools.gallery.extensions.showRecycleBinEmptyingDialog
import com.simplemobiletools.gallery.helpers.DEFAULT_BOTTOM_ACTIONS import com.simplemobiletools.gallery.helpers.*
import com.simplemobiletools.gallery.helpers.ROTATE_BY_ASPECT_RATIO
import com.simplemobiletools.gallery.helpers.ROTATE_BY_DEVICE_ROTATION
import com.simplemobiletools.gallery.helpers.ROTATE_BY_SYSTEM_SETTING
import kotlinx.android.synthetic.main.activity_settings.* import kotlinx.android.synthetic.main.activity_settings.*
import java.util.* import java.util.*
@ -77,6 +74,7 @@ class SettingsActivity : SimpleActivity() {
setupManageBottomActions() setupManageBottomActions()
setupUseRecycleBin() setupUseRecycleBin()
setupShowRecycleBin() setupShowRecycleBin()
setupShowRecycleBinLast()
setupEmptyRecycleBin() setupEmptyRecycleBin()
updateTextColors(settings_holder) updateTextColors(settings_holder)
setupSectionColors() setupSectionColors()
@ -459,11 +457,14 @@ class SettingsActivity : SimpleActivity() {
private fun setupUseRecycleBin() { private fun setupUseRecycleBin() {
settings_empty_recycle_bin_holder.beVisibleIf(config.useRecycleBin) settings_empty_recycle_bin_holder.beVisibleIf(config.useRecycleBin)
settings_show_recycle_bin_holder.beVisibleIf(config.useRecycleBin) settings_show_recycle_bin_holder.beVisibleIf(config.useRecycleBin)
settings_show_recycle_bin_last_holder.beVisibleIf(config.useRecycleBin && config.showRecycleBinAtFolders)
settings_use_recycle_bin.isChecked = config.useRecycleBin settings_use_recycle_bin.isChecked = config.useRecycleBin
settings_use_recycle_bin_holder.setOnClickListener { settings_use_recycle_bin_holder.setOnClickListener {
settings_use_recycle_bin.toggle() settings_use_recycle_bin.toggle()
config.useRecycleBin = settings_use_recycle_bin.isChecked config.useRecycleBin = settings_use_recycle_bin.isChecked
settings_empty_recycle_bin_holder.beVisibleIf(config.useRecycleBin) settings_empty_recycle_bin_holder.beVisibleIf(config.useRecycleBin)
settings_show_recycle_bin_holder.beVisibleIf(config.useRecycleBin)
settings_show_recycle_bin_last_holder.beVisibleIf(config.useRecycleBin && config.showRecycleBinAtFolders)
} }
} }
@ -472,6 +473,18 @@ class SettingsActivity : SimpleActivity() {
settings_show_recycle_bin_holder.setOnClickListener { settings_show_recycle_bin_holder.setOnClickListener {
settings_show_recycle_bin.toggle() settings_show_recycle_bin.toggle()
config.showRecycleBinAtFolders = settings_show_recycle_bin.isChecked config.showRecycleBinAtFolders = settings_show_recycle_bin.isChecked
settings_show_recycle_bin_last_holder.beVisibleIf(config.useRecycleBin && config.showRecycleBinAtFolders)
}
}
private fun setupShowRecycleBinLast() {
settings_show_recycle_bin_last.isChecked = config.showRecycleBinLast
settings_show_recycle_bin_last_holder.setOnClickListener {
settings_show_recycle_bin_last.toggle()
config.showRecycleBinLast = settings_show_recycle_bin_last.isChecked
if (config.showRecycleBinLast) {
config.removePinnedFolders(setOf(RECYCLE_BIN))
}
} }
} }

View file

@ -123,6 +123,14 @@ fun Context.movePinnedDirectoriesToFront(dirs: ArrayList<Directory>): ArrayList<
dirs.add(0, newFolder) dirs.add(0, newFolder)
} }
} }
if (config.useRecycleBin && config.showRecycleBinAtFolders && config.showRecycleBinLast) {
val binIndex = dirs.indexOfFirst { it.isRecycleBin() }
if (binIndex != -1) {
val bin = dirs.removeAt(binIndex)
dirs.add(bin)
}
}
return dirs return dirs
} }
@ -334,7 +342,7 @@ fun Context.getCachedDirectories(getVideosOnly: Boolean = false, getImagesOnly:
ArrayList<Directory>() ArrayList<Directory>()
} }
if (!config.showRecycleBinAtFolders) { if (!config.showRecycleBinAtFolders || !config.useRecycleBin) {
directories.removeAll { it.isRecycleBin() } directories.removeAll { it.isRecycleBin() }
} }

View file

@ -89,6 +89,9 @@ class Config(context: Context) : BaseConfig(context) {
val currPinnedFolders = HashSet<String>(pinnedFolders) val currPinnedFolders = HashSet<String>(pinnedFolders)
currPinnedFolders.addAll(paths) currPinnedFolders.addAll(paths)
pinnedFolders = currPinnedFolders pinnedFolders = currPinnedFolders
if (paths.contains(RECYCLE_BIN)) {
showRecycleBinLast = false
}
} }
fun removePinnedFolders(paths: Set<String>) { fun removePinnedFolders(paths: Set<String>) {
@ -392,4 +395,8 @@ class Config(context: Context) : BaseConfig(context) {
var showHighestQuality: Boolean var showHighestQuality: Boolean
get() = prefs.getBoolean(SHOW_HIGHEST_QUALITY, false) get() = prefs.getBoolean(SHOW_HIGHEST_QUALITY, false)
set(showHighestQuality) = prefs.edit().putBoolean(SHOW_HIGHEST_QUALITY, showHighestQuality).apply() set(showHighestQuality) = prefs.edit().putBoolean(SHOW_HIGHEST_QUALITY, showHighestQuality).apply()
var showRecycleBinLast: Boolean
get() = prefs.getBoolean(SHOW_RECYCLE_BIN_LAST, false)
set(showRecycleBinLast) = prefs.edit().putBoolean(SHOW_RECYCLE_BIN_LAST, showRecycleBinLast).apply()
} }

View file

@ -58,6 +58,7 @@ const val USE_RECYCLE_BIN = "use_recycle_bin"
const val GROUP_BY = "group_by" const val GROUP_BY = "group_by"
const val EVER_SHOWN_FOLDERS = "ever_shown_folders" const val EVER_SHOWN_FOLDERS = "ever_shown_folders"
const val SHOW_RECYCLE_BIN_AT_FOLDERS = "show_recycle_bin_at_folders" const val SHOW_RECYCLE_BIN_AT_FOLDERS = "show_recycle_bin_at_folders"
const val SHOW_RECYCLE_BIN_LAST = "show_recycle_bin_last"
const val ALLOW_ZOOMING_IMAGES = "allow_zooming_images" const val ALLOW_ZOOMING_IMAGES = "allow_zooming_images"
const val WAS_SVG_SHOWING_HANDLED = "was_svg_showing_handled" const val WAS_SVG_SHOWING_HANDLED = "was_svg_showing_handled"
const val LAST_BIN_CHECK = "last_bin_check" const val LAST_BIN_CHECK = "last_bin_check"

View file

@ -1141,6 +1141,30 @@
</RelativeLayout> </RelativeLayout>
<RelativeLayout
android:id="@+id/settings_show_recycle_bin_last_holder"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginTop="@dimen/medium_margin"
android:background="?attr/selectableItemBackground"
android:paddingLeft="@dimen/normal_margin"
android:paddingTop="@dimen/activity_margin"
android:paddingRight="@dimen/normal_margin"
android:paddingBottom="@dimen/activity_margin">
<com.simplemobiletools.commons.views.MySwitchCompat
android:id="@+id/settings_show_recycle_bin_last"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:background="@null"
android:clickable="false"
android:paddingStart="@dimen/medium_margin"
android:paddingLeft="@dimen/medium_margin"
android:text="@string/show_recycle_bin_last"
app:switchPadding="@dimen/medium_margin"/>
</RelativeLayout>
<RelativeLayout <RelativeLayout
android:id="@+id/settings_empty_recycle_bin_holder" android:id="@+id/settings_empty_recycle_bin_holder"
android:layout_width="match_parent" android:layout_width="match_parent"