sort the media already at fetching from mediastore, to save time
This commit is contained in:
parent
2a7baf14d2
commit
06fe8a669a
1 changed files with 26 additions and 4 deletions
|
@ -4,6 +4,10 @@ import android.content.Context
|
||||||
import android.os.AsyncTask
|
import android.os.AsyncTask
|
||||||
import android.provider.MediaStore
|
import android.provider.MediaStore
|
||||||
import com.simplemobiletools.commons.extensions.*
|
import com.simplemobiletools.commons.extensions.*
|
||||||
|
import com.simplemobiletools.commons.helpers.SORT_BY_DATE_MODIFIED
|
||||||
|
import com.simplemobiletools.commons.helpers.SORT_BY_NAME
|
||||||
|
import com.simplemobiletools.commons.helpers.SORT_BY_SIZE
|
||||||
|
import com.simplemobiletools.commons.helpers.SORT_DESCENDING
|
||||||
import com.simplemobiletools.gallery.extensions.config
|
import com.simplemobiletools.gallery.extensions.config
|
||||||
import com.simplemobiletools.gallery.helpers.IMAGES
|
import com.simplemobiletools.gallery.helpers.IMAGES
|
||||||
import com.simplemobiletools.gallery.helpers.VIDEOS
|
import com.simplemobiletools.gallery.helpers.VIDEOS
|
||||||
|
@ -24,9 +28,6 @@ class GetMediaAsynctask(val context: Context, val mPath: String, val isPickVideo
|
||||||
media = getFilesFrom(mPath)
|
media = getFilesFrom(mPath)
|
||||||
}
|
}
|
||||||
|
|
||||||
Medium.sorting = context.config.getFileSorting(mPath)
|
|
||||||
media.sort()
|
|
||||||
|
|
||||||
return Unit
|
return Unit
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -44,7 +45,7 @@ class GetMediaAsynctask(val context: Context, val mPath: String, val isPickVideo
|
||||||
val selection = if (curPath.isEmpty()) null else "(${MediaStore.Images.Media.DATA} LIKE ? AND ${MediaStore.Images.Media.DATA} NOT LIKE ?)"
|
val selection = if (curPath.isEmpty()) null else "(${MediaStore.Images.Media.DATA} LIKE ? AND ${MediaStore.Images.Media.DATA} NOT LIKE ?)"
|
||||||
val selectionArgs = if (curPath.isEmpty()) null else arrayOf("$curPath/%", "$curPath/%/%")
|
val selectionArgs = if (curPath.isEmpty()) null else arrayOf("$curPath/%", "$curPath/%/%")
|
||||||
|
|
||||||
val cur = context.contentResolver.query(uri, projection, selection, selectionArgs, null)
|
val cur = context.contentResolver.query(uri, projection, selection, selectionArgs, getSorting())
|
||||||
if (cur.moveToFirst()) {
|
if (cur.moveToFirst()) {
|
||||||
var filename: String
|
var filename: String
|
||||||
var path: String
|
var path: String
|
||||||
|
@ -95,9 +96,30 @@ class GetMediaAsynctask(val context: Context, val mPath: String, val isPickVideo
|
||||||
} while (cur.moveToNext())
|
} while (cur.moveToNext())
|
||||||
}
|
}
|
||||||
cur.close()
|
cur.close()
|
||||||
|
|
||||||
|
Medium.sorting = context.config.getFileSorting(mPath)
|
||||||
|
curMedia.sort()
|
||||||
|
|
||||||
return curMedia
|
return curMedia
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private fun getSorting(): String {
|
||||||
|
val sorting = context.config.getFileSorting(mPath)
|
||||||
|
val sortValue = if (sorting and SORT_BY_NAME > 0)
|
||||||
|
MediaStore.Images.Media.DISPLAY_NAME
|
||||||
|
else if (sorting and SORT_BY_SIZE > 0)
|
||||||
|
MediaStore.Images.Media.SIZE
|
||||||
|
else if (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"
|
||||||
|
}
|
||||||
|
|
||||||
override fun onPostExecute(result: Unit?) {
|
override fun onPostExecute(result: Unit?) {
|
||||||
super.onPostExecute(result)
|
super.onPostExecute(result)
|
||||||
callback.invoke(media)
|
callback.invoke(media)
|
||||||
|
|
Loading…
Reference in a new issue