mirror of
https://github.com/FossifyOrg/Gallery.git
synced 2024-11-30 08:18:00 +01:00
display cached dirs and media only when appropriate
This commit is contained in:
parent
e237afe916
commit
570e471dec
4 changed files with 44 additions and 34 deletions
|
@ -276,8 +276,13 @@ class MainActivity : SimpleActivity(), DirectoryAdapter.DirOperationsListener {
|
||||||
mIsGettingDirs = true
|
mIsGettingDirs = true
|
||||||
if (!mLoadedInitialPhotos) {
|
if (!mLoadedInitialPhotos) {
|
||||||
getCachedDirectories {
|
getCachedDirectories {
|
||||||
if (it.isNotEmpty()) {
|
val shouldShowHidden = config.shouldShowHidden
|
||||||
gotDirectories(it, true)
|
val excludedPaths = config.excludedFolders
|
||||||
|
val includedPaths = config.includedFolders
|
||||||
|
val dirs = it.filter { it.path.shouldFolderBeVisible(excludedPaths, includedPaths, shouldShowHidden) } as ArrayList<Directory>
|
||||||
|
|
||||||
|
if (dirs.isNotEmpty()) {
|
||||||
|
gotDirectories(dirs, true)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -566,17 +571,16 @@ class MainActivity : SimpleActivity(), DirectoryAdapter.DirOperationsListener {
|
||||||
}
|
}
|
||||||
|
|
||||||
val dirs = getSortedDirectories(newDirs)
|
val dirs = getSortedDirectories(newDirs)
|
||||||
directories_refresh_layout.isRefreshing = false
|
|
||||||
mIsGettingDirs = false
|
mIsGettingDirs = false
|
||||||
|
|
||||||
directories_empty_text_label.beVisibleIf(dirs.isEmpty() && !isFromCache)
|
|
||||||
directories_empty_text.beVisibleIf(dirs.isEmpty() && !isFromCache)
|
|
||||||
directories_grid.beVisibleIf(directories_empty_text_label.isGone())
|
|
||||||
|
|
||||||
checkLastMediaChanged()
|
checkLastMediaChanged()
|
||||||
mDirs = dirs
|
mDirs = dirs
|
||||||
|
|
||||||
runOnUiThread {
|
runOnUiThread {
|
||||||
|
directories_refresh_layout.isRefreshing = false
|
||||||
|
directories_empty_text_label.beVisibleIf(dirs.isEmpty() && !isFromCache)
|
||||||
|
directories_empty_text.beVisibleIf(dirs.isEmpty() && !isFromCache)
|
||||||
|
directories_grid.beVisibleIf(directories_empty_text_label.isGone())
|
||||||
|
|
||||||
val allowHorizontalScroll = config.scrollHorizontally && config.viewTypeFiles == VIEW_TYPE_GRID
|
val allowHorizontalScroll = config.scrollHorizontally && config.viewTypeFiles == VIEW_TYPE_GRID
|
||||||
directories_vertical_fastscroller.beVisibleIf(directories_grid.isVisible() && !allowHorizontalScroll)
|
directories_vertical_fastscroller.beVisibleIf(directories_grid.isVisible() && !allowHorizontalScroll)
|
||||||
directories_horizontal_fastscroller.beVisibleIf(directories_grid.isVisible() && allowHorizontalScroll)
|
directories_horizontal_fastscroller.beVisibleIf(directories_grid.isVisible() && allowHorizontalScroll)
|
||||||
|
|
|
@ -456,10 +456,16 @@ class MediaActivity : SimpleActivity(), MediaAdapter.MediaOperationsListener {
|
||||||
mIsGettingMedia = true
|
mIsGettingMedia = true
|
||||||
if (!mLoadedInitialPhotos) {
|
if (!mLoadedInitialPhotos) {
|
||||||
getCachedMedia(mPath) {
|
getCachedMedia(mPath) {
|
||||||
if (it.isEmpty()) {
|
val shouldShowHidden = config.shouldShowHidden
|
||||||
|
var media = it
|
||||||
|
if (!shouldShowHidden) {
|
||||||
|
media = media.filter { !it.name.startsWith('.') } as ArrayList<Medium>
|
||||||
|
}
|
||||||
|
|
||||||
|
if (media.isEmpty()) {
|
||||||
media_refresh_layout.isRefreshing = true
|
media_refresh_layout.isRefreshing = true
|
||||||
} else {
|
} else {
|
||||||
gotMedia(it, true)
|
gotMedia(media, true)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
|
@ -636,7 +642,6 @@ class MediaActivity : SimpleActivity(), MediaAdapter.MediaOperationsListener {
|
||||||
}.start()
|
}.start()
|
||||||
|
|
||||||
mIsGettingMedia = false
|
mIsGettingMedia = false
|
||||||
|
|
||||||
checkLastMediaChanged()
|
checkLastMediaChanged()
|
||||||
mMedia = media
|
mMedia = media
|
||||||
|
|
||||||
|
|
|
@ -11,3 +11,24 @@ fun String.getFileSignature(): ObjectKey {
|
||||||
fun String.isThisOrParentIncluded(includedPaths: MutableSet<String>) = includedPaths.any { startsWith(it, true) }
|
fun String.isThisOrParentIncluded(includedPaths: MutableSet<String>) = includedPaths.any { startsWith(it, true) }
|
||||||
|
|
||||||
fun String.isThisOrParentExcluded(excludedPaths: MutableSet<String>) = excludedPaths.any { startsWith(it, true) }
|
fun String.isThisOrParentExcluded(excludedPaths: MutableSet<String>) = excludedPaths.any { startsWith(it, true) }
|
||||||
|
|
||||||
|
fun String.shouldFolderBeVisible(excludedPaths: MutableSet<String>, includedPaths: MutableSet<String>, showHidden: Boolean): Boolean {
|
||||||
|
val file = File(this)
|
||||||
|
return if (isEmpty()) {
|
||||||
|
false
|
||||||
|
} else if (!showHidden && file.containsNoMedia()) {
|
||||||
|
false
|
||||||
|
} else if (isThisOrParentIncluded(includedPaths)) {
|
||||||
|
true
|
||||||
|
} else if (isThisOrParentExcluded(excludedPaths)) {
|
||||||
|
false
|
||||||
|
} else if (!showHidden && file.isDirectory && file.canonicalFile == file.absoluteFile) {
|
||||||
|
var containsNoMediaOrDot = file.containsNoMedia() || contains("/.")
|
||||||
|
if (!containsNoMediaOrDot) {
|
||||||
|
containsNoMediaOrDot = file.doesThisOrParentHaveNoMedia()
|
||||||
|
}
|
||||||
|
!containsNoMediaOrDot
|
||||||
|
} else {
|
||||||
|
true
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
|
@ -8,7 +8,8 @@ import com.simplemobiletools.commons.extensions.*
|
||||||
import com.simplemobiletools.commons.helpers.OTG_PATH
|
import com.simplemobiletools.commons.helpers.OTG_PATH
|
||||||
import com.simplemobiletools.commons.helpers.photoExtensions
|
import com.simplemobiletools.commons.helpers.photoExtensions
|
||||||
import com.simplemobiletools.commons.helpers.videoExtensions
|
import com.simplemobiletools.commons.helpers.videoExtensions
|
||||||
import com.simplemobiletools.gallery.extensions.*
|
import com.simplemobiletools.gallery.extensions.config
|
||||||
|
import com.simplemobiletools.gallery.extensions.shouldFolderBeVisible
|
||||||
import com.simplemobiletools.gallery.models.Medium
|
import com.simplemobiletools.gallery.models.Medium
|
||||||
import java.io.File
|
import java.io.File
|
||||||
import java.util.LinkedHashMap
|
import java.util.LinkedHashMap
|
||||||
|
@ -132,7 +133,7 @@ class MediaFetcher(val context: Context) {
|
||||||
val curMedia = ArrayList<Medium>()
|
val curMedia = ArrayList<Medium>()
|
||||||
val showHidden = config.shouldShowHidden
|
val showHidden = config.shouldShowHidden
|
||||||
val excludedFolders = config.excludedFolders
|
val excludedFolders = config.excludedFolders
|
||||||
foldersToScan.filter { shouldFolderBeVisible(it, excludedFolders, includedFolders, showHidden) }.toList().forEach {
|
foldersToScan.filter { it.shouldFolderBeVisible(excludedFolders, includedFolders, showHidden) }.toList().forEach {
|
||||||
fetchFolderContent(it, curMedia, isPickImage, isPickVideo, filterMedia)
|
fetchFolderContent(it, curMedia, isPickImage, isPickVideo, filterMedia)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -182,27 +183,6 @@ class MediaFetcher(val context: Context) {
|
||||||
return directories
|
return directories
|
||||||
}
|
}
|
||||||
|
|
||||||
private fun shouldFolderBeVisible(path: String, excludedPaths: MutableSet<String>, includedPaths: MutableSet<String>, showHidden: Boolean): Boolean {
|
|
||||||
val file = File(path)
|
|
||||||
return if (path.isEmpty()) {
|
|
||||||
false
|
|
||||||
} else if (!showHidden && file.containsNoMedia()) {
|
|
||||||
false
|
|
||||||
} else if (path.isThisOrParentIncluded(includedPaths)) {
|
|
||||||
true
|
|
||||||
} else if (path.isThisOrParentExcluded(excludedPaths)) {
|
|
||||||
false
|
|
||||||
} else if (!showHidden && file.isDirectory && file.canonicalFile == file.absoluteFile) {
|
|
||||||
var containsNoMediaOrDot = file.containsNoMedia() || path.contains("/.")
|
|
||||||
if (!containsNoMediaOrDot) {
|
|
||||||
containsNoMediaOrDot = file.doesThisOrParentHaveNoMedia()
|
|
||||||
}
|
|
||||||
!containsNoMediaOrDot
|
|
||||||
} else {
|
|
||||||
true
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
private fun getMediaInFolder(folder: String, curMedia: ArrayList<Medium>, isPickImage: Boolean, isPickVideo: Boolean, filterMedia: Int) {
|
private fun getMediaInFolder(folder: String, curMedia: ArrayList<Medium>, isPickImage: Boolean, isPickVideo: Boolean, filterMedia: Int) {
|
||||||
val files = File(folder).listFiles() ?: return
|
val files = File(folder).listFiles() ?: return
|
||||||
val doExtraCheck = context.config.doExtraCheck
|
val doExtraCheck = context.config.doExtraCheck
|
||||||
|
|
Loading…
Reference in a new issue