mirror of
https://github.com/ultrasonic/ultrasonic
synced 2025-02-17 04:00:39 +01:00
Cleaned up warnings in FilePickerAdapter
This commit is contained in:
parent
7c66bc7ec8
commit
ccf39661ab
@ -14,7 +14,6 @@ import androidx.appcompat.widget.AppCompatEditText
|
|||||||
import androidx.recyclerview.widget.RecyclerView
|
import androidx.recyclerview.widget.RecyclerView
|
||||||
import java.io.File
|
import java.io.File
|
||||||
import java.util.LinkedList
|
import java.util.LinkedList
|
||||||
import kotlin.Comparator
|
|
||||||
import org.moire.ultrasonic.R
|
import org.moire.ultrasonic.R
|
||||||
import org.moire.ultrasonic.util.Util
|
import org.moire.ultrasonic.util.Util
|
||||||
import timber.log.Timber
|
import timber.log.Timber
|
||||||
@ -24,7 +23,8 @@ import timber.log.Timber
|
|||||||
* @author this implementation is loosely based on the work of Yogesh Sundaresan,
|
* @author this implementation is loosely based on the work of Yogesh Sundaresan,
|
||||||
* original license: http://www.apache.org/licenses/LICENSE-2.0
|
* original license: http://www.apache.org/licenses/LICENSE-2.0
|
||||||
*/
|
*/
|
||||||
internal class FilePickerAdapter : RecyclerView.Adapter<FilePickerAdapter.FileListHolder> {
|
internal class FilePickerAdapter(view: FilePickerView) :
|
||||||
|
RecyclerView.Adapter<FilePickerAdapter.FileListHolder>() {
|
||||||
|
|
||||||
private var data: MutableList<FileListItem> = LinkedList()
|
private var data: MutableList<FileListItem> = LinkedList()
|
||||||
var defaultDirectory: File = Environment.getExternalStorageDirectory()
|
var defaultDirectory: File = Environment.getExternalStorageDirectory()
|
||||||
@ -34,32 +34,15 @@ internal class FilePickerAdapter : RecyclerView.Adapter<FilePickerAdapter.FileLi
|
|||||||
private set
|
private set
|
||||||
|
|
||||||
private var context: Context? = null
|
private var context: Context? = null
|
||||||
private var listerView: FilePickerView? = null
|
private var listerView: FilePickerView? = view
|
||||||
private var isRealDirectory: Boolean = false
|
private var isRealDirectory: Boolean = false
|
||||||
|
|
||||||
private val physicalPaths: Array<String>
|
|
||||||
get() = arrayOf(
|
|
||||||
"/storage/sdcard0", "/storage/sdcard1", "/storage/extsdcard",
|
|
||||||
"/storage/sdcard0/external_sdcard", "/mnt/extsdcard", "/mnt/sdcard/external_sd",
|
|
||||||
"/mnt/external_sd", "/mnt/media_rw/sdcard1", "/removable/microsd", "/mnt/emmc",
|
|
||||||
"/storage/external_SD", "/storage/ext_sd", "/storage/removable/sdcard1",
|
|
||||||
"/data/sdext", "/data/sdext2", "/data/sdext3", "/data/sdext4", "/sdcard1",
|
|
||||||
"/sdcard2", "/storage/microsd", "/data/user"
|
|
||||||
)
|
|
||||||
|
|
||||||
private var folderIcon: Drawable? = null
|
private var folderIcon: Drawable? = null
|
||||||
private var upIcon: Drawable? = null
|
private var upIcon: Drawable? = null
|
||||||
private var sdIcon: Drawable? = null
|
private var sdIcon: Drawable? = null
|
||||||
|
|
||||||
constructor(defaultDir: File, view: FilePickerView) : this(view) {
|
init {
|
||||||
this.defaultDirectory = defaultDir
|
|
||||||
selectedDirectory = defaultDir
|
|
||||||
}
|
|
||||||
|
|
||||||
constructor(view: FilePickerView) {
|
|
||||||
this.context = view.context
|
this.context = view.context
|
||||||
listerView = view
|
|
||||||
|
|
||||||
upIcon = Util.getDrawableFromAttribute(context, R.attr.filepicker_subdirectory_up)
|
upIcon = Util.getDrawableFromAttribute(context, R.attr.filepicker_subdirectory_up)
|
||||||
folderIcon = Util.getDrawableFromAttribute(context, R.attr.filepicker_folder)
|
folderIcon = Util.getDrawableFromAttribute(context, R.attr.filepicker_folder)
|
||||||
sdIcon = Util.getDrawableFromAttribute(context, R.attr.filepicker_sd_card)
|
sdIcon = Util.getDrawableFromAttribute(context, R.attr.filepicker_sd_card)
|
||||||
@ -71,8 +54,8 @@ internal class FilePickerAdapter : RecyclerView.Adapter<FilePickerAdapter.FileLi
|
|||||||
|
|
||||||
private fun fileLister(currentDirectory: File) {
|
private fun fileLister(currentDirectory: File) {
|
||||||
var fileList = LinkedList<FileListItem>()
|
var fileList = LinkedList<FileListItem>()
|
||||||
var storages: List<File>? = null
|
val storages: List<File>?
|
||||||
var storagePaths: List<String>? = null
|
val storagePaths: List<String>?
|
||||||
storages = context!!.getExternalFilesDirs(null).filterNotNull()
|
storages = context!!.getExternalFilesDirs(null).filterNotNull()
|
||||||
storagePaths = storages.map { i -> i.absolutePath }
|
storagePaths = storages.map { i -> i.absolutePath }
|
||||||
|
|
||||||
@ -82,8 +65,7 @@ internal class FilePickerAdapter : RecyclerView.Adapter<FilePickerAdapter.FileLi
|
|||||||
currentDirectory.absolutePath == "/mnt"
|
currentDirectory.absolutePath == "/mnt"
|
||||||
) {
|
) {
|
||||||
isRealDirectory = false
|
isRealDirectory = false
|
||||||
fileList =
|
fileList = getKitKatStorageItems(storages)
|
||||||
getKitKatStorageItems(storages!!)
|
|
||||||
} else {
|
} else {
|
||||||
isRealDirectory = true
|
isRealDirectory = true
|
||||||
val files = currentDirectory.listFiles()
|
val files = currentDirectory.listFiles()
|
||||||
@ -96,20 +78,18 @@ internal class FilePickerAdapter : RecyclerView.Adapter<FilePickerAdapter.FileLi
|
|||||||
|
|
||||||
data = LinkedList(fileList)
|
data = LinkedList(fileList)
|
||||||
|
|
||||||
data.sortWith(
|
data.sortWith { f1, f2 ->
|
||||||
Comparator { f1, f2 ->
|
if (f1.file!!.isDirectory && f2.file!!.isDirectory)
|
||||||
if (f1.file!!.isDirectory && f2.file!!.isDirectory)
|
f1.name.compareTo(f2.name, ignoreCase = true)
|
||||||
f1.name.compareTo(f2.name, ignoreCase = true)
|
else if (f1.file!!.isDirectory && !f2.file!!.isDirectory)
|
||||||
else if (f1.file!!.isDirectory && !f2.file!!.isDirectory)
|
-1
|
||||||
-1
|
else if (!f1.file!!.isDirectory && f2.file!!.isDirectory)
|
||||||
else if (!f1.file!!.isDirectory && f2.file!!.isDirectory)
|
1
|
||||||
1
|
else if (!f1.file!!.isDirectory && !f2.file!!.isDirectory)
|
||||||
else if (!f1.file!!.isDirectory && !f2.file!!.isDirectory)
|
f1.name.compareTo(f2.name, ignoreCase = true)
|
||||||
f1.name.compareTo(f2.name, ignoreCase = true)
|
else
|
||||||
else
|
0
|
||||||
0
|
}
|
||||||
}
|
|
||||||
)
|
|
||||||
|
|
||||||
selectedDirectory = currentDirectory
|
selectedDirectory = currentDirectory
|
||||||
selectedDirectoryChanged.invoke(
|
selectedDirectoryChanged.invoke(
|
||||||
@ -122,7 +102,7 @@ internal class FilePickerAdapter : RecyclerView.Adapter<FilePickerAdapter.FileLi
|
|||||||
if (currentDirectory.absolutePath != "/" && isRealDirectory) {
|
if (currentDirectory.absolutePath != "/" && isRealDirectory) {
|
||||||
// If we are on KitKat or later, only the default App folder is usable, so we can't
|
// If we are on KitKat or later, only the default App folder is usable, so we can't
|
||||||
// navigate the SD card. Jump to the root if "Up" is selected.
|
// navigate the SD card. Jump to the root if "Up" is selected.
|
||||||
if (storagePaths!!.indexOf(currentDirectory.absolutePath) > 0)
|
if (storagePaths.indexOf(currentDirectory.absolutePath) > 0)
|
||||||
data.add(0, FileListItem(File("/"), "..", upIcon!!))
|
data.add(0, FileListItem(File("/"), "..", upIcon!!))
|
||||||
else
|
else
|
||||||
data.add(0, FileListItem(selectedDirectory.parentFile!!, "..", upIcon!!))
|
data.add(0, FileListItem(selectedDirectory.parentFile!!, "..", upIcon!!))
|
||||||
@ -132,33 +112,6 @@ internal class FilePickerAdapter : RecyclerView.Adapter<FilePickerAdapter.FileLi
|
|||||||
listerView!!.scrollToPosition(0)
|
listerView!!.scrollToPosition(0)
|
||||||
}
|
}
|
||||||
|
|
||||||
private fun getStorageItems(): LinkedList<FileListItem> {
|
|
||||||
val fileList = LinkedList<FileListItem>()
|
|
||||||
var s = System.getenv("EXTERNAL_STORAGE")
|
|
||||||
if (!TextUtils.isEmpty(s)) {
|
|
||||||
val f = File(s!!)
|
|
||||||
fileList.add(FileListItem(f, f.name, sdIcon!!))
|
|
||||||
} else {
|
|
||||||
val paths = physicalPaths
|
|
||||||
for (path in paths) {
|
|
||||||
val f = File(path)
|
|
||||||
if (f.exists())
|
|
||||||
fileList.add(FileListItem(f, f.name, sdIcon!!))
|
|
||||||
}
|
|
||||||
}
|
|
||||||
s = System.getenv("SECONDARY_STORAGE")
|
|
||||||
if (s != null && !TextUtils.isEmpty(s)) {
|
|
||||||
val rawSecondaryStorages =
|
|
||||||
s.split(File.pathSeparator.toRegex()).dropLastWhile { it.isEmpty() }.toTypedArray()
|
|
||||||
for (path in rawSecondaryStorages) {
|
|
||||||
val f = File(path)
|
|
||||||
if (f.exists())
|
|
||||||
fileList.add(FileListItem(f, f.name, sdIcon!!))
|
|
||||||
}
|
|
||||||
}
|
|
||||||
return fileList
|
|
||||||
}
|
|
||||||
|
|
||||||
private fun getKitKatStorageItems(storages: List<File>): LinkedList<FileListItem> {
|
private fun getKitKatStorageItems(storages: List<File>): LinkedList<FileListItem> {
|
||||||
val fileList = LinkedList<FileListItem>()
|
val fileList = LinkedList<FileListItem>()
|
||||||
if (storages.isNotEmpty()) {
|
if (storages.isNotEmpty()) {
|
||||||
|
Loading…
x
Reference in New Issue
Block a user