Skip to content

Commit 8fb2f56

Browse files
committed
add file fetching at mime type activity
1 parent ffc8380 commit 8fb2f56

File tree

2 files changed

+32
-10
lines changed

2 files changed

+32
-10
lines changed

app/src/main/kotlin/com/simplemobiletools/filemanager/pro/activities/MimeTypesActivity.kt

Lines changed: 31 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -11,11 +11,13 @@ import androidx.core.view.MenuItemCompat
1111
import com.simplemobiletools.commons.extensions.*
1212
import com.simplemobiletools.commons.helpers.VIEW_TYPE_GRID
1313
import com.simplemobiletools.commons.helpers.ensureBackgroundThread
14+
import com.simplemobiletools.commons.models.FileDirItem
1415
import com.simplemobiletools.filemanager.pro.R
1516
import com.simplemobiletools.filemanager.pro.dialogs.ChangeSortingDialog
1617
import com.simplemobiletools.filemanager.pro.dialogs.ChangeViewTypeDialog
1718
import com.simplemobiletools.filemanager.pro.extensions.config
1819
import com.simplemobiletools.filemanager.pro.helpers.*
20+
import com.simplemobiletools.filemanager.pro.models.ListItem
1921
import java.util.*
2022

2123
class MimeTypesActivity : SimpleActivity() {
@@ -44,7 +46,11 @@ class MimeTypesActivity : SimpleActivity() {
4446
)
4547

4648
ensureBackgroundThread {
47-
getProperFilePaths { paths ->
49+
getProperFileDirItems { fileDirItems ->
50+
FileDirItem.sorting = config.getFolderSorting(currentMimeType)
51+
fileDirItems.sort()
52+
val listItems = getListItemsFromFileDirItems(fileDirItems)
53+
4854
runOnUiThread {
4955

5056
}
@@ -97,45 +103,51 @@ class MimeTypesActivity : SimpleActivity() {
97103
return true
98104
}
99105

100-
private fun getProperFilePaths(callback: (ArrayList<String>) -> Unit) {
101-
val filePaths = ArrayList<String>()
106+
private fun getProperFileDirItems(callback: (ArrayList<FileDirItem>) -> Unit) {
107+
val fileDirItems = ArrayList<FileDirItem>()
102108
val uri = MediaStore.Files.getContentUri("external")
103109
val projection = arrayOf(
104110
MediaStore.Files.FileColumns.MIME_TYPE,
105-
MediaStore.Files.FileColumns.DATA
111+
MediaStore.Files.FileColumns.DATA,
112+
MediaStore.Files.FileColumns.DISPLAY_NAME,
113+
MediaStore.Files.FileColumns.SIZE,
114+
MediaStore.Files.FileColumns.DATE_MODIFIED
106115
)
107116

108117
try {
109118
queryCursor(uri, projection) { cursor ->
110119
try {
111120
val fullMimetype = cursor.getStringValue(MediaStore.Files.FileColumns.MIME_TYPE)?.lowercase(Locale.getDefault()) ?: return@queryCursor
112121
val path = cursor.getStringValue(MediaStore.Files.FileColumns.DATA)
122+
val name = cursor.getStringValue(MediaStore.Files.FileColumns.DISPLAY_NAME)
123+
val size = cursor.getLongValue(MediaStore.Files.FileColumns.SIZE)
124+
val lastModified = cursor.getLongValue(MediaStore.Files.FileColumns.DATE_MODIFIED) * 1000
113125

114126
val mimetype = fullMimetype.substringBefore("/")
115127
when (currentMimeType) {
116128
IMAGES -> {
117129
if (mimetype == "image") {
118-
filePaths.add(path)
130+
fileDirItems.add(FileDirItem(path, name, false, 0, size, lastModified))
119131
}
120132
}
121133
VIDEOS -> {
122134
if (mimetype == "video") {
123-
filePaths.add(path)
135+
fileDirItems.add(FileDirItem(path, name, false, 0, size, lastModified))
124136
}
125137
}
126138
AUDIO -> {
127139
if (mimetype == "audio" || extraAudioMimeTypes.contains(fullMimetype)) {
128-
filePaths.add(path)
140+
fileDirItems.add(FileDirItem(path, name, false, 0, size, lastModified))
129141
}
130142
}
131143
DOCUMENTS -> {
132144
if (mimetype == "text" || extraDocumentMimeTypes.contains(fullMimetype)) {
133-
filePaths.add(path)
145+
fileDirItems.add(FileDirItem(path, name, false, 0, size, lastModified))
134146
}
135147
}
136148
ARCHIVES -> {
137149
if (archiveMimeTypes.contains(fullMimetype)) {
138-
filePaths.add(path)
150+
fileDirItems.add(FileDirItem(path, name, false, 0, size, lastModified))
139151
}
140152
}
141153
}
@@ -146,7 +158,16 @@ class MimeTypesActivity : SimpleActivity() {
146158
showErrorToast(e)
147159
}
148160

149-
callback(filePaths)
161+
callback(fileDirItems)
162+
}
163+
164+
private fun getListItemsFromFileDirItems(fileDirItems: ArrayList<FileDirItem>): ArrayList<ListItem> {
165+
val listItems = ArrayList<ListItem>()
166+
fileDirItems.forEach {
167+
val listItem = ListItem(it.path, it.name, false, 0, it.size, it.modified, false)
168+
listItems.add(listItem)
169+
}
170+
return listItems
150171
}
151172

152173
private fun setupSearch(menu: Menu) {

app/src/main/kotlin/com/simplemobiletools/filemanager/pro/models/ListItem.kt

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,5 +2,6 @@ package com.simplemobiletools.filemanager.pro.models
22

33
import com.simplemobiletools.commons.models.FileDirItem
44

5+
// isSectionTitle is used only at search results for showing the current folders path
56
data class ListItem(val mPath: String, val mName: String = "", var mIsDirectory: Boolean = false, var mChildren: Int = 0, var mSize: Long = 0L, var mModified: Long = 0L,
67
var isSectionTitle: Boolean) : FileDirItem(mPath, mName, mIsDirectory, mChildren, mSize, mModified)

0 commit comments

Comments
 (0)