Просмотр исходного кода

增加内置文件管理器,未完成

kunfei 3 лет назад
Родитель
Сommit
01f18067df

+ 4 - 4
app/src/app/res/xml/about.xml

@@ -95,13 +95,13 @@
         app:layout="@layout/view_preference_category">
 
         <io.legado.app.lib.prefs.Preference
-            android:key="privacyPolicy"
-            android:title="@string/privacy_policy"
+            android:key="crashLog"
+            android:title="@string/crash_log"
             app:iconSpaceReserved="false" />
 
         <io.legado.app.lib.prefs.Preference
-            android:key="crashLog"
-            android:title="@string/crash_log"
+            android:key="privacyPolicy"
+            android:title="@string/privacy_policy"
             app:iconSpaceReserved="false" />
 
         <io.legado.app.lib.prefs.Preference

+ 16 - 5
app/src/main/java/io/legado/app/ui/document/FileManageActivity.kt

@@ -18,6 +18,7 @@ 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.list
 import io.legado.app.utils.viewbindingdelegate.viewBinding
 
 class FileManageActivity : VMBaseActivity<ActivityFileManageBinding, FileManageViewModel>(),
@@ -38,6 +39,7 @@ class FileManageActivity : VMBaseActivity<ActivityFileManageBinding, FileManageV
     override fun onActivityCreated(savedInstanceState: Bundle?) {
         initView()
         initSearchView()
+        initData()
     }
 
     private fun initView() {
@@ -66,15 +68,17 @@ class FileManageActivity : VMBaseActivity<ActivityFileManageBinding, FileManageV
         })
     }
 
+    private fun initData() {
+        viewModel.rootDoc?.list()?.let {
+            fileAdapter.setItems(it)
+        }
+    }
+
     override fun onPathClick(position: Int) {
 
     }
 
     inner class FileAdapter : RecyclerAdapter<FileDoc, ItemFileBinding>(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())!!
@@ -93,7 +97,14 @@ class FileManageActivity : VMBaseActivity<ActivityFileManageBinding, FileManageV
             item: FileDoc,
             payloads: MutableList<Any>
         ) {
-            binding.imageView
+            if (!item.isDir) {
+                binding.imageView.setImageDrawable(fileIcon)
+            } else if (holder.layoutPosition == 0 && viewModel.subDocs.isNotEmpty()) {
+                binding.imageView.setImageDrawable(upIcon)
+            } else {
+                binding.imageView.setImageDrawable(folderIcon)
+            }
+            binding.textView.text = item.name
         }
 
 

+ 7 - 0
app/src/main/java/io/legado/app/ui/document/FileManageViewModel.kt

@@ -2,6 +2,13 @@ package io.legado.app.ui.document
 
 import android.app.Application
 import io.legado.app.base.BaseViewModel
+import io.legado.app.utils.FileDoc
 
 class FileManageViewModel(application: Application) : BaseViewModel(application) {
+
+    val rootDoc = context.getExternalFilesDir(null)?.parentFile?.let {
+        FileDoc.fromFile(it)
+    }
+    val subDocs = arrayListOf<FileDoc>()
+
 }

+ 2 - 0
app/src/main/java/io/legado/app/ui/main/my/MyFragment.kt

@@ -29,6 +29,7 @@ import io.legado.app.ui.book.toc.rule.TxtTocRuleActivity
 import io.legado.app.ui.config.ConfigActivity
 import io.legado.app.ui.config.ConfigTag
 import io.legado.app.ui.dict.rule.DictRuleActivity
+import io.legado.app.ui.document.FileManageActivity
 import io.legado.app.ui.replace.ReplaceRuleActivity
 import io.legado.app.ui.widget.dialog.TextDialog
 import io.legado.app.utils.*
@@ -150,6 +151,7 @@ class MyFragment : BaseFragment(R.layout.fragment_my_config) {
                 "theme_setting" -> startActivity<ConfigActivity> {
                     putExtra("configTag", ConfigTag.THEME_CONFIG)
                 }
+                "fileManage" -> startActivity<FileManageActivity>()
                 "readRecord" -> startActivity<ReadRecordActivity>()
                 "donate" -> startActivity<DonateActivity>()
                 "about" -> startActivity<AboutActivity>()

+ 10 - 0
app/src/main/res/drawable/ic_folder_outline.xml

@@ -0,0 +1,10 @@
+<vector android:height="24dp"
+    android:tint="#000000"
+    android:viewportHeight="24"
+    android:viewportWidth="24"
+    android:width="24dp"
+    xmlns:android="http://schemas.android.com/apk/res/android">
+    <path
+        android:fillColor="@android:color/white"
+        android:pathData="M9.17,6l2,2H20v10H4V6h5.17M10,4H4c-1.1,0 -1.99,0.9 -1.99,2L2,18c0,1.1 0.9,2 2,2h16c1.1,0 2,-0.9 2,-2V8c0,-1.1 -0.9,-2 -2,-2h-8l-2,-2z" />
+</vector>

+ 1 - 0
app/src/main/res/values-es-rES/strings.xml

@@ -1088,4 +1088,5 @@
     <string name="agree">同意</string>
     <string name="refuse">拒绝</string>
     <string name="file_manage">文件管理</string>
+    <string name="file_manage_summary">管理私有文件夹的文件</string>
 </resources>

+ 1 - 0
app/src/main/res/values-ja-rJP/strings.xml

@@ -1091,4 +1091,5 @@
     <string name="agree">同意</string>
     <string name="refuse">拒绝</string>
     <string name="file_manage">文件管理</string>
+    <string name="file_manage_summary">管理私有文件夹的文件</string>
 </resources>

+ 1 - 0
app/src/main/res/values-pt-rBR/strings.xml

@@ -1091,4 +1091,5 @@
     <string name="agree">同意</string>
     <string name="refuse">拒绝</string>
     <string name="file_manage">文件管理</string>
+    <string name="file_manage_summary">管理私有文件夹的文件</string>
 </resources>

+ 1 - 0
app/src/main/res/values-zh-rHK/strings.xml

@@ -1088,4 +1088,5 @@
     <string name="agree">同意</string>
     <string name="refuse">拒绝</string>
     <string name="file_manage">文件管理</string>
+    <string name="file_manage_summary">管理私有文件夹的文件</string>
 </resources>

+ 1 - 0
app/src/main/res/values-zh-rTW/strings.xml

@@ -1090,4 +1090,5 @@
     <string name="agree">同意</string>
     <string name="refuse">拒绝</string>
     <string name="file_manage">文件管理</string>
+    <string name="file_manage_summary">管理私有文件夹的文件</string>
 </resources>

+ 1 - 0
app/src/main/res/values-zh/strings.xml

@@ -1090,4 +1090,5 @@
     <string name="agree">同意</string>
     <string name="refuse">拒绝</string>
     <string name="file_manage">文件管理</string>
+    <string name="file_manage_summary">管理私有文件夹的文件</string>
 </resources>

+ 1 - 0
app/src/main/res/values/strings.xml

@@ -1091,4 +1091,5 @@
     <string name="agree">同意</string>
     <string name="refuse">拒绝</string>
     <string name="file_manage">文件管理</string>
+    <string name="file_manage_summary">管理私有文件夹的文件</string>
 </resources>

+ 4 - 4
app/src/main/res/xml/about.xml

@@ -89,13 +89,13 @@
         app:layout="@layout/view_preference_category">
 
         <io.legado.app.lib.prefs.Preference
-            android:key="privacyPolicy"
-            android:title="@string/privacy_policy"
+            android:key="crashLog"
+            android:title="@string/crash_log"
             app:iconSpaceReserved="false" />
 
         <io.legado.app.lib.prefs.Preference
-            android:key="crashLog"
-            android:title="@string/crash_log"
+            android:key="privacyPolicy"
+            android:title="@string/privacy_policy"
             app:iconSpaceReserved="false" />
 
         <io.legado.app.lib.prefs.Preference

+ 7 - 0
app/src/main/res/xml/pref_main.xml

@@ -104,6 +104,13 @@
             android:icon="@drawable/ic_history"
             app:iconSpaceReserved="false" />
 
+        <io.legado.app.lib.prefs.Preference
+            android:key="fileManage"
+            android:title="@string/file_manage"
+            android:summary="@string/file_manage_summary"
+            android:icon="@drawable/ic_folder_outline"
+            app:iconSpaceReserved="false" />
+
         <io.legado.app.lib.prefs.Preference
             android:key="donate"
             android:summary="@string/donate_summary"