From 56117c22f96a9d91554fa285ec8d5777d7aba188 Mon Sep 17 00:00:00 2001 From: kunfei Date: Fri, 25 Oct 2019 13:34:27 +0800 Subject: [PATCH] up --- .../app/ui/filechooser/FileChooserDialog.kt | 10 ++- .../app/ui/filechooser/adapter/FileAdapter.kt | 89 +++++++------------ 2 files changed, 39 insertions(+), 60 deletions(-) diff --git a/app/src/main/java/io/legado/app/ui/filechooser/FileChooserDialog.kt b/app/src/main/java/io/legado/app/ui/filechooser/FileChooserDialog.kt index 8dbb36af0..86b0bd071 100644 --- a/app/src/main/java/io/legado/app/ui/filechooser/FileChooserDialog.kt +++ b/app/src/main/java/io/legado/app/ui/filechooser/FileChooserDialog.kt @@ -36,6 +36,12 @@ class FileChooserDialog : DialogFragment(), } } + override var allowExtensions: Array? = null + override var isOnlyListDir: Boolean = false + override var isShowHomeDir: Boolean = false + override var isShowUpDir: Boolean = true + override var isShowHideDir: Boolean = false + private var initPath = FileUtils.getSdCardPath() private var mode: Int = FILE private lateinit var fileAdapter: FileAdapter @@ -100,10 +106,10 @@ class FileChooserDialog : DialogFragment(), } fileAdapter.loadData(currentPath) var adapterCount = fileAdapter.itemCount - if (fileAdapter.isShowHomeDir) { + if (isShowHomeDir) { adapterCount-- } - if (fileAdapter.isShowUpDir) { + if (isShowUpDir) { adapterCount-- } if (adapterCount < 1) { diff --git a/app/src/main/java/io/legado/app/ui/filechooser/adapter/FileAdapter.kt b/app/src/main/java/io/legado/app/ui/filechooser/adapter/FileAdapter.kt index 6e7b29a2d..f0bf5ef6b 100644 --- a/app/src/main/java/io/legado/app/ui/filechooser/adapter/FileAdapter.kt +++ b/app/src/main/java/io/legado/app/ui/filechooser/adapter/FileAdapter.kt @@ -21,56 +21,11 @@ class FileAdapter(context: Context, val callBack: CallBack) : private var rootPath: String? = null var currentPath: String? = null private set - private var allowExtensions: Array? = null//允许的扩展名 - /** - * 是否仅仅读取目录 - */ - var isOnlyListDir = false//是否仅仅读取目录 - /** - * 是否显示返回主目录 - */ - var isShowHomeDir = false//是否显示返回主目录 - /** - * 是否显示返回上一级 - */ - var isShowUpDir = true//是否显示返回上一级 - /** - * 是否显示隐藏的目录(以“.”开头) - */ - var isShowHideDir = true//是否显示隐藏的目录(以“.”开头) - private var itemHeight = 40// dp private var homeIcon: Drawable? = null private var upIcon: Drawable? = null private var folderIcon: Drawable? = null private var fileIcon: Drawable? = null - fun setFileIcon(fileIcon: Drawable) { - this.fileIcon = fileIcon - } - - fun setFolderIcon(folderIcon: Drawable) { - this.folderIcon = folderIcon - } - - fun setHomeIcon(homeIcon: Drawable) { - this.homeIcon = homeIcon - } - - fun setUpIcon(upIcon: Drawable) { - this.upIcon = upIcon - } - - /** - * 允许的扩展名 - */ - fun setAllowExtensions(allowExtensions: Array) { - this.allowExtensions = allowExtensions - } - - fun setItemHeight(itemHeight: Int) { - this.itemHeight = itemHeight - } - fun loadData(path: String?) { if (path == null) { return @@ -87,12 +42,12 @@ class FileAdapter(context: Context, val callBack: CallBack) : if (fileIcon == null) { fileIcon = ConvertUtils.toDrawable(FilePickerIcon.getFILE()) } - val datas = ArrayList() + val data = ArrayList() if (rootPath == null) { rootPath = path } currentPath = path - if (isShowHomeDir) { + if (callBack.isShowHomeDir) { //添加“返回主目录” val fileRoot = FileItem() fileRoot.isDirectory = true @@ -100,9 +55,9 @@ class FileAdapter(context: Context, val callBack: CallBack) : fileRoot.name = DIR_ROOT fileRoot.size = 0 fileRoot.path = rootPath ?: path - datas.add(fileRoot) + data.add(fileRoot) } - if (isShowUpDir && path != "/") { + if (callBack.isShowUpDir && path != "/") { //添加“返回上一级目录” val fileParent = FileItem() fileParent.isDirectory = true @@ -110,17 +65,17 @@ class FileAdapter(context: Context, val callBack: CallBack) : fileParent.name = DIR_PARENT fileParent.size = 0 fileParent.path = File(path).parent - datas.add(fileParent) + data.add(fileParent) } currentPath?.let { currentPath -> - val files: Array? = allowExtensions?.let { allowExtensions -> - if (isOnlyListDir) { + val files: Array? = callBack.allowExtensions?.let { allowExtensions -> + if (callBack.isOnlyListDir) { FileUtils.listDirs(currentPath, allowExtensions) } else { FileUtils.listDirsAndFiles(currentPath, allowExtensions) } } ?: let { - if (isOnlyListDir) { + if (callBack.isOnlyListDir) { FileUtils.listDirs(currentPath) } else { FileUtils.listDirsAndFiles(currentPath) @@ -128,7 +83,7 @@ class FileAdapter(context: Context, val callBack: CallBack) : } if (files != null) { for (file in files) { - if (file == null || (!isShowHideDir && file.name.startsWith("."))) { + if (file == null || (!callBack.isShowHideDir && file.name.startsWith("."))) { continue } val fileItem = FileItem() @@ -143,10 +98,10 @@ class FileAdapter(context: Context, val callBack: CallBack) : } fileItem.name = file.name fileItem.path = file.absolutePath - datas.add(fileItem) + data.add(fileItem) } } - setItems(datas) + setItems(data) } } @@ -163,11 +118,29 @@ class FileAdapter(context: Context, val callBack: CallBack) : interface CallBack { fun onFileClick(position: Int) + //允许的扩展名 + var allowExtensions: Array? + /** + * 是否仅仅读取目录 + */ + var isOnlyListDir: Boolean + /** + * 是否显示返回主目录 + */ + var isShowHomeDir: Boolean + /** + * 是否显示返回上一级 + */ + var isShowUpDir: Boolean + /** + * 是否显示隐藏的目录(以“.”开头) + */ + var isShowHideDir: Boolean } companion object { - val DIR_ROOT = "." - val DIR_PARENT = ".." + const val DIR_ROOT = "." + const val DIR_PARENT = ".." } }