do not sort the media files immediately at fetching from mediastore

This commit is contained in:
tibbi 2018-04-10 15:36:15 +02:00
parent f6ee61a224
commit a73a61907c

View file

@ -5,7 +5,9 @@ import android.database.Cursor
import android.net.Uri
import android.provider.MediaStore
import com.simplemobiletools.commons.extensions.*
import com.simplemobiletools.commons.helpers.*
import com.simplemobiletools.commons.helpers.OTG_PATH
import com.simplemobiletools.commons.helpers.photoExtensions
import com.simplemobiletools.commons.helpers.videoExtensions
import com.simplemobiletools.gallery.extensions.*
import com.simplemobiletools.gallery.models.Medium
import java.io.File
@ -40,7 +42,7 @@ class MediaFetcher(val context: Context) {
val selectionArgs = getSelectionArgsQuery(curPath, filterMedia).toTypedArray()
return try {
val cur = context.contentResolver.query(uri, projection, selection, selectionArgs, getSortingForFolder(curPath))
val cur = context.contentResolver.query(uri, projection, selection, selectionArgs, null)
parseCursor(context, cur, isPickImage, isPickVideo, curPath, filterMedia)
} catch (e: Exception) {
ArrayList()
@ -103,12 +105,8 @@ class MediaFetcher(val context: Context) {
}
private fun parseCursor(context: Context, cur: Cursor, isPickImage: Boolean, isPickVideo: Boolean, curPath: String, filterMedia: Int): ArrayList<Medium> {
val curMedia = ArrayList<Medium>()
val config = context.config
val showHidden = config.shouldShowHidden
val excludedFolders = config.excludedFolders
val includedFolders = config.includedFolders
val isThirdPartyIntent = config.isThirdPartyIntent
val foldersToScan = HashSet<String>()
cur.use {
@ -131,11 +129,14 @@ class MediaFetcher(val context: Context) {
}
}
val curMedia = ArrayList<Medium>()
val showHidden = config.shouldShowHidden
val excludedFolders = config.excludedFolders
foldersToScan.filter { shouldFolderBeVisible(it, excludedFolders, includedFolders, showHidden) }.toList().forEach {
fetchFolderContent(it, curMedia, isPickImage, isPickVideo, filterMedia)
}
if (isThirdPartyIntent && curPath.isNotEmpty() && curMedia.isEmpty()) {
if (config.isThirdPartyIntent && curPath.isNotEmpty() && curMedia.isEmpty()) {
getMediaInFolder(curPath, curMedia, isPickImage, isPickVideo, filterMedia)
}
@ -286,20 +287,4 @@ class MediaFetcher(val context: Context) {
curMedia.add(medium)
}
}
private fun getSortingForFolder(path: String): String {
val sorting = context.config.getFileSorting(path)
val sortValue = when {
sorting and SORT_BY_NAME > 0 -> MediaStore.Images.Media.DISPLAY_NAME
sorting and SORT_BY_SIZE > 0 -> MediaStore.Images.Media.SIZE
sorting and SORT_BY_DATE_MODIFIED > 0 -> MediaStore.Images.Media.DATE_MODIFIED
else -> MediaStore.Images.Media.DATE_TAKEN
}
return if (sorting and SORT_DESCENDING > 0) {
"$sortValue DESC"
} else {
"$sortValue ASC"
}
}
}