diff --git a/app/src/main/java/io/legado/app/ui/document/FileManageActivity.kt b/app/src/main/java/io/legado/app/ui/document/FileManageActivity.kt index d205cfff2..fa2d5bc50 100644 --- a/app/src/main/java/io/legado/app/ui/document/FileManageActivity.kt +++ b/app/src/main/java/io/legado/app/ui/document/FileManageActivity.kt @@ -11,21 +11,27 @@ import io.legado.app.base.adapter.ItemViewHolder import io.legado.app.base.adapter.RecyclerAdapter import io.legado.app.databinding.ActivityFileManageBinding import io.legado.app.databinding.ItemFileBinding -import io.legado.app.lib.theme.backgroundColor import io.legado.app.lib.theme.primaryTextColor +import io.legado.app.ui.document.adapter.PathAdapter +import io.legado.app.ui.document.utils.FilePickerIcon +import io.legado.app.ui.widget.recycler.VerticalDivider +import io.legado.app.utils.ConvertUtils import io.legado.app.utils.FileDoc import io.legado.app.utils.applyTint import io.legado.app.utils.viewbindingdelegate.viewBinding -class FileManageActivity : VMBaseActivity() { - +class FileManageActivity : VMBaseActivity(), + PathAdapter.CallBack { override val binding by viewBinding(ActivityFileManageBinding::inflate) override val viewModel by viewModels() private val searchView: SearchView by lazy { binding.titleBar.findViewById(R.id.search_view) } - private val adapter by lazy { + private val pathAdapter by lazy { + PathAdapter(this, this) + } + private val fileAdapter by lazy { FileAdapter() } @@ -35,9 +41,11 @@ class FileManageActivity : VMBaseActivity(this@FileManageActivity) { - + private var rootPath: String? = null + var currentPath: String? = null + private set + private val homeIcon = ConvertUtils.toDrawable(FilePickerIcon.getHome())!! + private val upIcon = ConvertUtils.toDrawable(FilePickerIcon.getUpDir())!! + private val folderIcon = ConvertUtils.toDrawable(FilePickerIcon.getFolder())!! + private val fileIcon = ConvertUtils.toDrawable(FilePickerIcon.getFile())!! override fun getViewBinding(parent: ViewGroup): ItemFileBinding { - TODO("Not yet implemented") + return ItemFileBinding.inflate(inflater, parent, false) } override fun registerListener(holder: ItemViewHolder, binding: ItemFileBinding) { - TODO("Not yet implemented") + } override fun convert( @@ -76,7 +93,7 @@ class FileManageActivity : VMBaseActivity ) { - TODO("Not yet implemented") + binding.imageView } diff --git a/app/src/main/java/io/legado/app/ui/document/adapter/FileAdapter.kt b/app/src/main/java/io/legado/app/ui/document/adapter/FileAdapter.kt index f2ac9e8f6..66ec8c2a5 100644 --- a/app/src/main/java/io/legado/app/ui/document/adapter/FileAdapter.kt +++ b/app/src/main/java/io/legado/app/ui/document/adapter/FileAdapter.kt @@ -21,10 +21,10 @@ class FileAdapter(context: Context, val callBack: CallBack) : private var rootPath: String? = null var currentPath: String? = null private set - private val homeIcon = ConvertUtils.toDrawable(FilePickerIcon.getHome()) - private val upIcon = ConvertUtils.toDrawable(FilePickerIcon.getUpDir()) - private val folderIcon = ConvertUtils.toDrawable(FilePickerIcon.getFolder()) - private val fileIcon = ConvertUtils.toDrawable(FilePickerIcon.getFile()) + private val homeIcon = ConvertUtils.toDrawable(FilePickerIcon.getHome())!! + private val upIcon = ConvertUtils.toDrawable(FilePickerIcon.getUpDir())!! + private val folderIcon = ConvertUtils.toDrawable(FilePickerIcon.getFolder())!! + private val fileIcon = ConvertUtils.toDrawable(FilePickerIcon.getFile())!! private val primaryTextColor = context.getPrimaryTextColor(!AppConfig.isNightTheme) private val disabledTextColor = context.getPrimaryDisabledTextColor(!AppConfig.isNightTheme) @@ -39,22 +39,22 @@ class FileAdapter(context: Context, val callBack: CallBack) : currentPath = path if (callBack.isShowHomeDir) { //添加“返回主目录” - val fileRoot = FileItem() - fileRoot.isDirectory = true - fileRoot.icon = homeIcon - fileRoot.name = DIR_ROOT - fileRoot.size = 0 - fileRoot.path = rootPath ?: path + val fileRoot = FileItem( + isDirectory = true, + icon = homeIcon, + name = DIR_ROOT, + path = rootPath ?: path + ) data.add(fileRoot) } if (callBack.isShowUpDir && path != PathAdapter.sdCardDirectory) { //添加“返回上一级目录” - val fileParent = FileItem() - fileParent.isDirectory = true - fileParent.icon = upIcon - fileParent.name = DIR_PARENT - fileParent.size = 0 - fileParent.path = File(path).parent ?: "" + val fileParent = FileItem( + isDirectory = true, + icon = upIcon, + name = DIR_PARENT, + path = File(path).parent ?: "" + ) data.add(fileParent) } currentPath?.let { currentPath -> @@ -64,18 +64,22 @@ class FileAdapter(context: Context, val callBack: CallBack) : if (!callBack.isShowHideDir && file.name.startsWith(".")) { continue } - val fileItem = FileItem() - val isDirectory = file.isDirectory - fileItem.isDirectory = isDirectory - if (isDirectory) { - fileItem.icon = folderIcon - fileItem.size = 0 + val fileItem = if (file.isDirectory) { + FileItem( + name = file.name, + icon = folderIcon, + path = file.absolutePath, + isDirectory = true + ) } else { - fileItem.icon = fileIcon - fileItem.size = file.length() + FileItem( + name = file.name, + icon = fileIcon, + path = file.absolutePath, + size = file.length(), + isDirectory = true + ) } - fileItem.name = file.name - fileItem.path = file.absolutePath data.add(fileItem) } } diff --git a/app/src/main/java/io/legado/app/ui/document/entity/FileItem.kt b/app/src/main/java/io/legado/app/ui/document/entity/FileItem.kt index 88cd6b6b2..3642bdb54 100644 --- a/app/src/main/java/io/legado/app/ui/document/entity/FileItem.kt +++ b/app/src/main/java/io/legado/app/ui/document/entity/FileItem.kt @@ -4,14 +4,11 @@ import android.graphics.drawable.Drawable /** * 文件项信息 - * - * @author 李玉江[QQ:1032694760] - * @since 2014-05-23 18:02 */ -class FileItem : JavaBean() { - var icon: Drawable? = null - var name: String? = null - var path = "/" - var size: Long = 0 - var isDirectory = false -} +data class FileItem( + var icon: Drawable, + var name: String, + var path: String = "/", + var size: Long = 0, + var isDirectory: Boolean = false, +) diff --git a/app/src/main/java/io/legado/app/ui/document/entity/JavaBean.kt b/app/src/main/java/io/legado/app/ui/document/entity/JavaBean.kt deleted file mode 100644 index 1b1dbeda0..000000000 --- a/app/src/main/java/io/legado/app/ui/document/entity/JavaBean.kt +++ /dev/null @@ -1,51 +0,0 @@ -package io.legado.app.ui.document.entity - -import java.io.Serializable -import java.lang.reflect.Field -import java.lang.reflect.Modifier - -/** - * JavaBean类 - * - * @author 李玉江[QQ:1032694760] - * @since 2014-04-23 16:14 - */ -open class JavaBean : Serializable { - - /** - * 反射出所有字段值 - */ - override fun toString(): String { - val list = ArrayList() - var clazz: Class<*>? = javaClass - list.addAll(listOf(*clazz!!.declaredFields))//得到自身的所有字段 - val sb = StringBuilder() - while (clazz != Any::class.java) { - clazz = clazz!!.superclass//得到继承自父类的字段 - val fields = clazz!!.declaredFields - for (field in fields) { - val modifier = field.modifiers - if (Modifier.isPublic(modifier) || Modifier.isProtected(modifier)) { - list.add(field) - } - } - } - val fields = list.toTypedArray() - for (field in fields) { - val fieldName = field.name - kotlin.runCatching { - val obj = field.get(this) - sb.append(fieldName) - sb.append("=") - sb.append(obj) - sb.append("\n") - } - } - return sb.toString() - } - - companion object { - private const val serialVersionUID = -6111323241670458039L - } - -} diff --git a/app/src/main/res/layout/activity_file_manage.xml b/app/src/main/res/layout/activity_file_manage.xml index c10ed8d97..8de73a71b 100644 --- a/app/src/main/res/layout/activity_file_manage.xml +++ b/app/src/main/res/layout/activity_file_manage.xml @@ -14,51 +14,21 @@ app:contentLayout="@layout/view_search" /> - - - - - - + android:layout_height="24dp" + android:paddingLeft="10dp" + android:paddingRight="10dp" + android:background="@color/background_card" + android:elevation="5dp" + app:layout_constraintTop_toBottomOf="@+id/titleBar" /> + app:layout_constraintTop_toBottomOf="@id/rv_path" />