Skip to content

Commit 41f5f78

Browse files
committed
store the file type thumbnails to avoid refetching
1 parent 4b0f3c1 commit 41f5f78

File tree

1 file changed

+52
-48
lines changed
  • app/src/main/kotlin/com/simplemobiletools/filemanager/pro/adapters

1 file changed

+52
-48
lines changed

app/src/main/kotlin/com/simplemobiletools/filemanager/pro/adapters/ItemsAdapter.kt

Lines changed: 52 additions & 48 deletions
Original file line numberDiff line numberDiff line change
@@ -57,7 +57,9 @@ class ItemsAdapter(activity: SimpleActivity, var listItems: MutableList<ListItem
5757

5858
private val TYPE_FILE_DIR = 1
5959
private val TYPE_SECTION = 2
60+
private lateinit var fileDrawable: Drawable
6061
private lateinit var folderDrawable: Drawable
62+
private var fileDrawables = HashMap<String, Drawable>()
6163
private var currentItemsHash = listItems.hashCode()
6264
private var textToHighlight = ""
6365
private val hasOTGConnected = activity.hasOTGConnected()
@@ -151,11 +153,6 @@ class ItemsAdapter(activity: SimpleActivity, var listItems: MutableList<ListItem
151153

152154
private fun getItemWithKey(key: Int): FileDirItem? = listItems.firstOrNull { it.path.hashCode() == key }
153155

154-
fun initDrawables() {
155-
folderDrawable = activity.resources.getColoredDrawableWithColor(R.drawable.ic_folder_vector, textColor)
156-
folderDrawable.alpha = 180
157-
}
158-
159156
private fun isOneFileSelected() = isOneItemSelected() && getItemWithKey(selectedKeys.first())?.isDirectory == false
160157

161158
private fun checkHideBtnVisibility(menu: Menu) {
@@ -707,10 +704,11 @@ class ItemsAdapter(activity: SimpleActivity, var listItems: MutableList<ListItem
707704
item_date.beVisible()
708705
item_date.text = listItem.modified.formatDate(activity)
709706

707+
val drawable = fileDrawables.getOrElse(fileName.substringAfterLast(".").toLowerCase(), { fileDrawable })
710708
val options = RequestOptions()
711709
.signature(listItem.mPath.getFileSignature())
712710
.diskCacheStrategy(DiskCacheStrategy.RESOURCE)
713-
.error(getFileIcon(fileName.substringAfterLast(".").toLowerCase()))
711+
.error(drawable)
714712
.centerCrop()
715713

716714
val itemToLoad = getImagePathToLoad(listItem.path)
@@ -751,47 +749,53 @@ class ItemsAdapter(activity: SimpleActivity, var listItems: MutableList<ListItem
751749
return itemToLoad
752750
}
753751

754-
private fun getFileIcon(extension: String): Drawable {
755-
val id = when (extension) {
756-
"aep" -> R.drawable.ic_file_aep
757-
"ai" -> R.drawable.ic_file_ai
758-
"avi" -> R.drawable.ic_file_avi
759-
"css" -> R.drawable.ic_file_css
760-
"csv" -> R.drawable.ic_file_csv
761-
"dbf" -> R.drawable.ic_file_dbf
762-
"doc", "docx" -> R.drawable.ic_file_doc
763-
"dwg" -> R.drawable.ic_file_dwg
764-
"exe" -> R.drawable.ic_file_exe
765-
"fla" -> R.drawable.ic_file_fla
766-
"flv" -> R.drawable.ic_file_flv
767-
"htm", "html" -> R.drawable.ic_file_html
768-
"ics" -> R.drawable.ic_file_ics
769-
"indd" -> R.drawable.ic_file_indd
770-
"iso" -> R.drawable.ic_file_iso
771-
"jpg", "jpeg" -> R.drawable.ic_file_jpg
772-
"js" -> R.drawable.ic_file_js
773-
"json" -> R.drawable.ic_file_json
774-
"m4a" -> R.drawable.ic_file_m4a
775-
"mp3" -> R.drawable.ic_file_mp3
776-
"mp4" -> R.drawable.ic_file_mp4
777-
"ogg" -> R.drawable.ic_file_ogg
778-
"pdf" -> R.drawable.ic_file_pdf
779-
"plproj" -> R.drawable.ic_file_plproj
780-
"prproj" -> R.drawable.ic_file_prproj
781-
"psd" -> R.drawable.ic_file_psd
782-
"rtf" -> R.drawable.ic_file_rtf
783-
"sesx" -> R.drawable.ic_file_sesx
784-
"svg" -> R.drawable.ic_file_svg
785-
"txt" -> R.drawable.ic_file_txt
786-
"vcf" -> R.drawable.ic_file_vcf
787-
"wav" -> R.drawable.ic_file_wav
788-
"wmv" -> R.drawable.ic_file_wmv
789-
"xls" -> R.drawable.ic_file_xls
790-
"xml" -> R.drawable.ic_file_xml
791-
"zip" -> R.drawable.ic_file_zip
792-
else -> R.drawable.ic_file_generic
793-
}
794-
795-
return resources.getDrawable(id)
752+
fun initDrawables() {
753+
folderDrawable = resources.getColoredDrawableWithColor(R.drawable.ic_folder_vector, textColor)
754+
folderDrawable.alpha = 180
755+
fileDrawable = resources.getDrawable(R.drawable.ic_file_generic)
756+
757+
hashMapOf<String, Int>().apply {
758+
put("aep", R.drawable.ic_file_aep)
759+
put("ai", R.drawable.ic_file_ai)
760+
put("avi", R.drawable.ic_file_avi)
761+
put("css", R.drawable.ic_file_css)
762+
put("csv", R.drawable.ic_file_csv)
763+
put("dbf", R.drawable.ic_file_dbf)
764+
put("doc", R.drawable.ic_file_doc)
765+
put("docx", R.drawable.ic_file_doc)
766+
put("dwg", R.drawable.ic_file_dwg)
767+
put("exe", R.drawable.ic_file_exe)
768+
put("fla", R.drawable.ic_file_fla)
769+
put("flv", R.drawable.ic_file_flv)
770+
put("htm", R.drawable.ic_file_html)
771+
put("html", R.drawable.ic_file_html)
772+
put("ics", R.drawable.ic_file_ics)
773+
put("indd", R.drawable.ic_file_indd)
774+
put("iso", R.drawable.ic_file_iso)
775+
put("jpg", R.drawable.ic_file_jpg)
776+
put("jpeg", R.drawable.ic_file_jpg)
777+
put("js", R.drawable.ic_file_js)
778+
put("json", R.drawable.ic_file_json)
779+
put("m4a", R.drawable.ic_file_m4a)
780+
put("mp3", R.drawable.ic_file_mp3)
781+
put("mp4", R.drawable.ic_file_mp4)
782+
put("ogg", R.drawable.ic_file_ogg)
783+
put("pdf", R.drawable.ic_file_pdf)
784+
put("plproj", R.drawable.ic_file_plproj)
785+
put("prproj", R.drawable.ic_file_prproj)
786+
put("psd", R.drawable.ic_file_psd)
787+
put("rtf", R.drawable.ic_file_rtf)
788+
put("sesx", R.drawable.ic_file_sesx)
789+
put("svg", R.drawable.ic_file_svg)
790+
put("txt", R.drawable.ic_file_txt)
791+
put("vcf", R.drawable.ic_file_vcf)
792+
put("wav", R.drawable.ic_file_wav)
793+
put("wmv", R.drawable.ic_file_wmv)
794+
put("xls", R.drawable.ic_file_xls)
795+
put("xml", R.drawable.ic_file_xml)
796+
put("zip", R.drawable.ic_file_zip)
797+
}.forEach { (key, value) ->
798+
fileDrawables.put(key, resources.getDrawable(value))
799+
}
796800
}
797801
}

0 commit comments

Comments
 (0)