From b91adde3ceb1d25f88723723e239389b8a476fe4 Mon Sep 17 00:00:00 2001
From: storytellerF <34095089+storytellerF@users.noreply.github.com>
Date: Thu, 4 Apr 2024 16:02:54 +0800
Subject: [PATCH] =?UTF-8?q?=E6=8E=A5=E5=85=A5=E6=9C=80=E6=96=B0=E7=9A=84AF?=
=?UTF-8?q?S=EF=BC=8C=E4=BF=AE=E5=A4=8Darchive=20=E8=AE=BF=E9=97=AE?=
=?UTF-8?q?=E9=97=AE=E9=A2=98=20=E5=A2=9E=E5=8A=A0=E5=8E=8B=E7=BC=A9?=
=?UTF-8?q?=E6=96=87=E4=BB=B6=E5=85=A5=E5=8F=A3=EF=BC=8Cvolume=20=E7=AE=A1?=
=?UTF-8?q?=E7=90=86=E4=B8=AD=E5=A2=9E=E5=8A=A0=E6=9D=83=E9=99=90=E7=94=B3?=
=?UTF-8?q?=E8=AF=B7=E6=8C=89=E9=92=AE=20=E5=88=A0=E9=99=A4selected=20?=
=?UTF-8?q?=E4=B8=AD=E6=97=A0=E7=94=A8=E7=9A=84viewHolder=20=E4=BD=8D?=
=?UTF-8?q?=E7=BD=AE?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
app/GiantExplorer/build.gradle.kts | 16 +++---
.../giant-explorer/build.gradle.kts | 43 +++++++--------
.../src/main/AndroidManifest.xml | 13 +++--
.../giant_explorer/control/FileList.kt | 52 ++++++++++---------
.../control/FileListFragment.kt | 23 +++++++-
.../giant_explorer/control/MainActivity.kt | 5 +-
.../dialog/VolumeSpaceDialog.kt | 11 ++++
.../main/res/layout/dialog_volume_space.xml | 11 +++-
.../src/main/res/menu/item_context_menu.xml | 3 ++
.../src/main/res/values-en/strings.xml | 8 +++
.../src/main/res/values/strings.xml | 22 ++++----
app/GiantExplorer/gradle/libs.versions.toml | 39 ++++++++++++++
app/GiantExplorer/settings.gradle.kts | 20 +++++++
13 files changed, 188 insertions(+), 78 deletions(-)
create mode 100644 app/GiantExplorer/gradle/libs.versions.toml
diff --git a/app/GiantExplorer/build.gradle.kts b/app/GiantExplorer/build.gradle.kts
index 668e481..7a1a7f1 100644
--- a/app/GiantExplorer/build.gradle.kts
+++ b/app/GiantExplorer/build.gradle.kts
@@ -4,8 +4,7 @@ import io.gitlab.arturbosch.detekt.DetektCreateBaselineTask
buildscript {
dependencies {
val versionManager: String by project
- val navVersion = "2.7.7"
- classpath("androidx.navigation:navigation-safe-args-gradle-plugin:$navVersion")
+ classpath(libs.navigation.safe.args.gradle.plugin)
//jitpack 构建
classpath("com.github.storytellerF.common-ui-list:version-manager:$versionManager")
//本地构建
@@ -13,14 +12,11 @@ buildscript {
}
}
plugins {
- val androidVersion = "8.3.1"
- val kotlinVersion = "1.9.21"
- val kspVersion = "1.9.21-1.0.15"
- id("com.android.application") version androidVersion apply false
- id("com.android.library") version androidVersion apply false
- id("org.jetbrains.kotlin.android") version kotlinVersion apply false
- id("org.jetbrains.kotlin.jvm") version kotlinVersion apply false
- id("com.google.devtools.ksp") version kspVersion apply false
+ alias(libs.plugins.androidApplication) apply false
+ alias(libs.plugins.jetbrainsKotlinAndroid) apply false
+ alias(libs.plugins.ksp) apply false
+ id("com.starter.easylauncher") version "6.3.0" apply false
+ id("androidx.room") version "2.6.1" apply false
id("io.gitlab.arturbosch.detekt") version "1.23.1"
}
diff --git a/app/GiantExplorer/giant-explorer/build.gradle.kts b/app/GiantExplorer/giant-explorer/build.gradle.kts
index bf6e105..0b024ab 100644
--- a/app/GiantExplorer/giant-explorer/build.gradle.kts
+++ b/app/GiantExplorer/giant-explorer/build.gradle.kts
@@ -18,8 +18,8 @@ plugins {
id("com.storyteller_f.version_manager")
id("kotlin-kapt")
id("com.google.devtools.ksp")
- id("com.starter.easylauncher") version "6.2.0"
- id("androidx.room") version "2.6.1"
+// id("com.starter.easylauncher")
+ id("androidx.room")
}
android {
@@ -52,7 +52,7 @@ android {
dependencies {
- implementation("androidx.constraintlayout:constraintlayout:${Versions.CONSTRAINTLAYOUT}")
+ implementation(libs.constraintlayout)
networkDependency()
workerDependency()
@@ -60,30 +60,29 @@ dependencies {
handleShun()
implementation(project(":giant-explorer-plugin-core"))
- implementation("com.j256.simplemagic:simplemagic:1.17")
- implementation("com.github.bumptech.glide:glide:4.16.0")
+ implementation(libs.simplemagic)
+ implementation(libs.glide)
- implementation("androidx.browser:browser:1.8.0")
- implementation("androidx.webkit:webkit:1.10.0")
- implementation("androidx.preference:preference-ktx:1.2.1")
- implementation("androidx.window:window:1.2.0")
+ implementation(libs.browser)
+ implementation(libs.webkit)
+ implementation(libs.preference.ktx)
+ implementation(libs.window)
- androidTestImplementation("androidx.room:room-testing:2.6.1")
+ androidTestImplementation(libs.room.testing)
val liPluginModule = findProject(":li-plugin")
if (liPluginModule != null) {
implementation(liPluginModule)
}
- implementation("com.github.tony19:logback-android:3.0.0")
+ implementation(libs.logback.android)
- val fileSystemVersion = "73769ee487"
- implementation("com.github.storytellerF.AFS:file-system-remote:$fileSystemVersion")
- implementation("com.github.storytellerF.AFS:file-system-ktx:$fileSystemVersion")
- implementation("com.github.storytellerF.AFS:file-system:$fileSystemVersion")
- implementation("com.github.storytellerF.AFS:file-system-root:$fileSystemVersion")
- implementation("com.github.storytellerF.AFS:file-system-archive:$fileSystemVersion")
- implementation("com.github.storytellerF.AFS:file-system-memory:$fileSystemVersion")
- implementation("com.github.storytellerF.AFS:file-system-local:$fileSystemVersion")
+ implementation(libs.file.system.remote)
+ implementation(libs.file.system.ktx)
+ implementation(libs.file.system)
+ implementation(libs.file.system.root)
+ implementation(libs.file.system.archive)
+ implementation(libs.file.system.memory)
+ implementation(libs.file.system.local)
constraints {
listOf(
@@ -97,12 +96,6 @@ dependencies {
}
baseApp()
-android {
- defaultConfig {
- //fixme file-system-archive minSdk = 24 file-system-memory minSdk = 26
- minSdk = 26
- }
-}
implModule(":slim-ktx")
constraintCommonUIListVersion(versionManager)
configurations.all {
diff --git a/app/GiantExplorer/giant-explorer/src/main/AndroidManifest.xml b/app/GiantExplorer/giant-explorer/src/main/AndroidManifest.xml
index c64b0e0..dfc5719 100644
--- a/app/GiantExplorer/giant-explorer/src/main/AndroidManifest.xml
+++ b/app/GiantExplorer/giant-explorer/src/main/AndroidManifest.xml
@@ -2,11 +2,16 @@
+
+
-
+
+
@@ -115,11 +120,13 @@
+ android:exported="true"
+ android:permission="com.storyteller_f.giant_explorer.provider" />
+ android:exported="true"
+ android:permission="com.storyteller_f.giant_explorer.provider" />
\ No newline at end of file
diff --git a/app/GiantExplorer/giant-explorer/src/main/java/com/storyteller_f/giant_explorer/control/FileList.kt b/app/GiantExplorer/giant-explorer/src/main/java/com/storyteller_f/giant_explorer/control/FileList.kt
index 40e8e6d..f5236c5 100644
--- a/app/GiantExplorer/giant-explorer/src/main/java/com/storyteller_f/giant_explorer/control/FileList.kt
+++ b/app/GiantExplorer/giant-explorer/src/main/java/com/storyteller_f/giant_explorer/control/FileList.kt
@@ -38,6 +38,7 @@ import com.storyteller_f.common_vm_ktx.combineDao
import com.storyteller_f.common_vm_ktx.debounce
import com.storyteller_f.common_vm_ktx.distinctUntilChangedBy
import com.storyteller_f.common_vm_ktx.svm
+import com.storyteller_f.common_vm_ktx.update
import com.storyteller_f.common_vm_ktx.vm
import com.storyteller_f.common_vm_ktx.wait5
import com.storyteller_f.file_system.instance.FileInstance
@@ -94,7 +95,7 @@ class FileListObserver(
) where T : ViewModelStoreOwner, T : SavedStateRegistryOwner {
val fileInstance: FileInstance?
get() = session.fileInstance.value
- val selected: List>?
+ val selected: List?
get() = session.selected.value
val fileListViewModel by owner.svm({}, scope) { handle, _ ->
@@ -241,7 +242,7 @@ private val LiveData>.same
@ItemHolder("file")
class FileItemHolder(
val file: FileModel,
- val selected: List>,
+ val selected: List,
variant: String
) : DataItemHolder(variant) {
override fun areItemsTheSame(other: DataItemHolder) =
@@ -273,9 +274,14 @@ class FileViewHolder(private val binding: ViewHolderFileBinding) :
binding.fileName.text = file.name
binding.fileIcon.fileIcon(file.item)
val item = file.item
- binding.root.isSelected = itemHolder.selected.valueContains(
- Pair(itemHolder, 0)
- ) == true
+ binding.root.isSelected = run {
+ val firstOrNull = itemHolder.selected.firstOrNull {
+ it.areItemsTheSame(
+ itemHolder
+ )
+ }
+ firstOrNull != null
+ } == true
binding.root.setBackgroundResource(
if (file.item.isFile) R.drawable.background_file else R.drawable.background_folder
)
@@ -466,31 +472,27 @@ private suspend fun fileModelBuilder(
}
/**
- * 反选。pair 的first 作为key。
+ * 反选。通过areItemsTheSame 比较,而不是equals
+ * @return 返回新的选中列表和上一次是否处于选中状态
*/
-fun List>?.toggle(
- pair: Pair
-): Pair>, Boolean> {
+fun List?.toggle(
+ holder: DataItemHolder
+): Pair, Boolean> {
val oldSelectedHolders = this ?: mutableListOf()
val otherHolders = oldSelectedHolders.filter {
- !it.first.areItemsTheSame(pair.first)
+ !it.areItemsTheSame(holder)
}
- val stateSelected = otherHolders.size == oldSelectedHolders.size
- val selected = if (stateSelected) otherHolders + pair else otherHolders
- return selected to stateSelected
+ val newState = otherHolders.size == oldSelectedHolders.size
+ val selected = if (newState) otherHolders + holder else otherHolders
+ return selected to newState
}
-fun List>.valueContains(pair: Pair): Boolean {
- val firstOrNull = firstOrNull {
- it.first.areItemsTheSame(pair.first)
+fun MutableLiveData>.toggle(viewHolder: RecyclerView.ViewHolder) {
+ update {
+ val adapterViewHolder = viewHolder as AbstractViewHolder
+ val (selectedHolders, currentSelected) =
+ it.toggle(adapterViewHolder.itemHolder)
+ viewHolder.view.isSelected = currentSelected
+ selectedHolders
}
- return firstOrNull != null
-}
-
-fun MutableLiveData>>.toggle(viewHolder: RecyclerView.ViewHolder) {
- val adapterViewHolder = viewHolder as AbstractViewHolder
- val (selectedHolders, currentSelected) =
- value.toggle(adapterViewHolder.itemHolder to viewHolder.absoluteAdapterPosition)
- viewHolder.view.isSelected = currentSelected
- value = selectedHolders
}
diff --git a/app/GiantExplorer/giant-explorer/src/main/java/com/storyteller_f/giant_explorer/control/FileListFragment.kt b/app/GiantExplorer/giant-explorer/src/main/java/com/storyteller_f/giant_explorer/control/FileListFragment.kt
index 3e2e82e..7cb18c4 100644
--- a/app/GiantExplorer/giant-explorer/src/main/java/com/storyteller_f/giant_explorer/control/FileListFragment.kt
+++ b/app/GiantExplorer/giant-explorer/src/main/java/com/storyteller_f/giant_explorer/control/FileListFragment.kt
@@ -9,6 +9,7 @@ import android.content.pm.PackageManager
import android.content.pm.ResolveInfo
import android.graphics.Rect
import android.net.Uri
+import android.os.Build
import android.text.TextPaint
import android.text.TextUtils
import android.util.Log
@@ -47,6 +48,7 @@ import com.storyteller_f.common_vm_ktx.pvm
import com.storyteller_f.file_system.getFileInstance
import com.storyteller_f.file_system.instance.FileCreatePolicy
import com.storyteller_f.file_system.instance.FileInstance
+import com.storyteller_f.file_system_archive.ArchiveFileInstanceFactory
import com.storyteller_f.file_system_ktx.isDirectory
import com.storyteller_f.giant_explorer.BuildConfig
import com.storyteller_f.giant_explorer.R
@@ -360,6 +362,9 @@ class FileListFragment : SimpleFragment(FragmentFileLis
resolveInstalledPlugins(itemHolder, mimeTypeFromExtension, uri)
resolveNoInstalledPlugins(mimeTypeFromExtension, fullPath, uri)
resolveModulePlugin(key, uri, fullPath)
+ val isSupportArchiveFileInstance = Build.VERSION.SDK_INT >= Build.VERSION_CODES.N
+ menu.findItem(R.id.preview_archive).isVisible =
+ isSupportArchiveFileInstance || itemHolder.file.item.extension == "zip"
setOnMenuItemClickListener { item ->
when (item.itemId) {
@@ -368,12 +373,28 @@ class FileListFragment : SimpleFragment(FragmentFileLis
R.id.copy_to -> moveOrCopy(false, itemHolder)
R.id.copy_file -> copyFilePathToClipboard(itemHolder)
R.id.properties -> showPropertiesDialog(uri)
+ R.id.preview_archive -> previewArchiveFile(uri)
}
true
}
}.show()
}
+ private fun previewArchiveFile(uri: Uri) {
+ val context = context ?: return
+ scope.launch {
+ val fileInstance = getFileInstance(context, uri) ?: return@launch
+ val newUri =
+ ArchiveFileInstanceFactory().buildNestedFile(context, "/", fileInstance)
+ ?: return@launch
+ findNavController().navigate(
+ FileListFragmentDirections.actionFileListFragmentSelf(
+ newUri
+ )
+ )
+ }
+ }
+
private fun PopupMenu.resolveModulePlugin(
key: String,
uri: Uri,
@@ -581,7 +602,7 @@ class FileListFragment : SimpleFragment(FragmentFileLis
}
private fun detectSelected(itemHolder: FileItemHolder) =
- observer.selected?.map { pair -> (pair.first as FileItemHolder).file.item } ?: listOf(
+ observer.selected?.map { pair -> (pair as FileItemHolder).file.item } ?: listOf(
itemHolder.file.item
)
}
diff --git a/app/GiantExplorer/giant-explorer/src/main/java/com/storyteller_f/giant_explorer/control/MainActivity.kt b/app/GiantExplorer/giant-explorer/src/main/java/com/storyteller_f/giant_explorer/control/MainActivity.kt
index e8b0ea3..496563f 100644
--- a/app/GiantExplorer/giant-explorer/src/main/java/com/storyteller_f/giant_explorer/control/MainActivity.kt
+++ b/app/GiantExplorer/giant-explorer/src/main/java/com/storyteller_f/giant_explorer/control/MainActivity.kt
@@ -79,7 +79,7 @@ import java.lang.ref.WeakReference
import java.util.Properties
class FileExplorerSession(application: Application, uri: Uri) : AndroidViewModel(application) {
- val selected = MutableLiveData>>()
+ val selected = MutableLiveData>()
val fileInstance = MutableLiveData()
init {
@@ -387,8 +387,7 @@ class MainActivity : CommonActivity(), FileOperateService.FileOperateResultConta
}
override fun onServiceDisconnected(name: ComponentName?) {
- // fixme 无法移除remote
-// RootAccessFileInstance.registerLibSuRemote()
+ RootAccessFileInstance.removeLibSuRemote()
}
}
diff --git a/app/GiantExplorer/giant-explorer/src/main/java/com/storyteller_f/giant_explorer/dialog/VolumeSpaceDialog.kt b/app/GiantExplorer/giant-explorer/src/main/java/com/storyteller_f/giant_explorer/dialog/VolumeSpaceDialog.kt
index 3dc46c1..ba74643 100644
--- a/app/GiantExplorer/giant-explorer/src/main/java/com/storyteller_f/giant_explorer/dialog/VolumeSpaceDialog.kt
+++ b/app/GiantExplorer/giant-explorer/src/main/java/com/storyteller_f/giant_explorer/dialog/VolumeSpaceDialog.kt
@@ -1,16 +1,20 @@
package com.storyteller_f.giant_explorer.dialog
+import android.content.ContentResolver
+import android.net.Uri
import android.os.Build
import android.os.storage.StorageVolume
import androidx.annotation.RequiresApi
import androidx.core.view.isVisible
import com.storyteller_f.common_ui.SimpleDialogFragment
import com.storyteller_f.common_ui.scope
+import com.storyteller_f.file_system_local.LocalFileSystem
import com.storyteller_f.file_system_local.getFree
import com.storyteller_f.file_system_local.getSpace
import com.storyteller_f.file_system_local.getStorageCompat
import com.storyteller_f.file_system_local.getStorageVolume
import com.storyteller_f.file_system_local.getTotal
+import com.storyteller_f.file_system_local.requestFilePermission
import com.storyteller_f.file_system_local.volumePathName
import com.storyteller_f.giant_explorer.control.format1024
import com.storyteller_f.giant_explorer.databinding.DialogVolumeSpaceBinding
@@ -30,6 +34,13 @@ class VolumeSpaceDialog :
deployFile(binding, it)
}
}
+ val regularUri = Uri.Builder().scheme(ContentResolver.SCHEME_FILE)
+ .path(LocalFileSystem.ROOT_USER_EMULATED_PATH).build()
+ binding.managePermission.setOnClickListener {
+ scope.launch {
+ it.context.requestFilePermission(regularUri)
+ }
+ }
}
private fun deployFile(
diff --git a/app/GiantExplorer/giant-explorer/src/main/res/layout/dialog_volume_space.xml b/app/GiantExplorer/giant-explorer/src/main/res/layout/dialog_volume_space.xml
index ce71602..7a710e3 100644
--- a/app/GiantExplorer/giant-explorer/src/main/res/layout/dialog_volume_space.xml
+++ b/app/GiantExplorer/giant-explorer/src/main/res/layout/dialog_volume_space.xml
@@ -9,9 +9,18 @@
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:orientation="vertical"
- android:paddingHorizontal="40dp"
+ android:paddingHorizontal="20dp"
android:paddingVertical="20dp"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent" />
+
+
\ No newline at end of file
diff --git a/app/GiantExplorer/giant-explorer/src/main/res/menu/item_context_menu.xml b/app/GiantExplorer/giant-explorer/src/main/res/menu/item_context_menu.xml
index 0bd0d25..2696620 100644
--- a/app/GiantExplorer/giant-explorer/src/main/res/menu/item_context_menu.xml
+++ b/app/GiantExplorer/giant-explorer/src/main/res/menu/item_context_menu.xml
@@ -16,4 +16,7 @@
+
\ No newline at end of file
diff --git a/app/GiantExplorer/giant-explorer/src/main/res/values-en/strings.xml b/app/GiantExplorer/giant-explorer/src/main/res/values-en/strings.xml
index 946aa8f..162b201 100644
--- a/app/GiantExplorer/giant-explorer/src/main/res/values-en/strings.xml
+++ b/app/GiantExplorer/giant-explorer/src/main/res/values-en/strings.xml
@@ -47,4 +47,12 @@
Open window mode %s
Prompt before drag&drop
Open window mode
+ server host
+ port
+ user name
+ password
+ share name for smb
+ test connection
+ preview archived file
+ manage permission
\ No newline at end of file
diff --git a/app/GiantExplorer/giant-explorer/src/main/res/values/strings.xml b/app/GiantExplorer/giant-explorer/src/main/res/values/strings.xml
index 07f6e3f..753eaa7 100644
--- a/app/GiantExplorer/giant-explorer/src/main/res/values/strings.xml
+++ b/app/GiantExplorer/giant-explorer/src/main/res/values/strings.xml
@@ -49,16 +49,18 @@
打开新窗口的模式
open_window_mode
粘贴和拖拽之前需要手动同意
- server
- port
- user
- password
+ 服务器
+ 端口
+ 用户名
+ 密码
share name. for smb
测试连接
- is smb
- is sftp
- is ftp
- is ftps explicit
- is ftps implicit
- is webdav
+ is smb
+ is sftp
+ is ftp
+ is ftps explicit
+ is ftps implicit
+ is webdav
+ 预览压缩文件
+ 管理权限
\ No newline at end of file
diff --git a/app/GiantExplorer/gradle/libs.versions.toml b/app/GiantExplorer/gradle/libs.versions.toml
new file mode 100644
index 0000000..ae97142
--- /dev/null
+++ b/app/GiantExplorer/gradle/libs.versions.toml
@@ -0,0 +1,39 @@
+[versions]
+agp = "8.3.1"
+constraintlayout = "2.1.4"
+kotlin = "1.9.21"
+browserVersion = "1.8.0"
+fileSystemVersion = "e6a78e83e5"
+glideVersion = "4.16.0"
+logbackAndroidVersion = "3.0.0"
+navVersion = "2.7.7"
+roomTestingVersion = "2.6.1"
+simplemagicVersion = "1.17"
+windowVersion = "1.2.0"
+webkitVersion = "1.10.0"
+preferenceKtxVersion = "1.2.1"
+kspVersion = "1.9.21-1.0.15"
+
+[libraries]
+browser = { module = "androidx.browser:browser", version.ref = "browserVersion" }
+constraintlayout = { module = "androidx.constraintlayout:constraintlayout", version.ref = "constraintlayout" }
+file-system-archive = { module = "com.github.storytellerF.AFS:file-system-archive", version.ref = "fileSystemVersion" }
+file-system = { module = "com.github.storytellerF.AFS:file-system", version.ref = "fileSystemVersion" }
+file-system-ktx = { module = "com.github.storytellerF.AFS:file-system-ktx", version.ref = "fileSystemVersion" }
+file-system-local = { module = "com.github.storytellerF.AFS:file-system-local", version.ref = "fileSystemVersion" }
+file-system-memory = { module = "com.github.storytellerF.AFS:file-system-memory", version.ref = "fileSystemVersion" }
+file-system-remote = { module = "com.github.storytellerF.AFS:file-system-remote", version.ref = "fileSystemVersion" }
+file-system-root = { module = "com.github.storytellerF.AFS:file-system-root", version.ref = "fileSystemVersion" }
+glide = { module = "com.github.bumptech.glide:glide", version.ref = "glideVersion" }
+navigation-safe-args-gradle-plugin = { module = "androidx.navigation:navigation-safe-args-gradle-plugin", version.ref = "navVersion" }
+preference-ktx = { module = "androidx.preference:preference-ktx", version.ref = "preferenceKtxVersion" }
+simplemagic = { module = "com.j256.simplemagic:simplemagic", version.ref = "simplemagicVersion" }
+webkit = { module = "androidx.webkit:webkit", version.ref = "webkitVersion" }
+window = { module = "androidx.window:window", version.ref = "windowVersion" }
+room-testing = { module = "androidx.room:room-testing", version.ref = "roomTestingVersion" }
+logback-android = { module = "com.github.tony19:logback-android", version.ref = "logbackAndroidVersion" }
+
+[plugins]
+ksp = { id = "com.google.devtools.ksp", version.ref = "kspVersion" }
+androidApplication = { id = "com.android.application", version.ref = "agp" }
+jetbrainsKotlinAndroid = { id = "org.jetbrains.kotlin.android", version.ref = "kotlin" }
\ No newline at end of file
diff --git a/app/GiantExplorer/settings.gradle.kts b/app/GiantExplorer/settings.gradle.kts
index b546112..2163146 100644
--- a/app/GiantExplorer/settings.gradle.kts
+++ b/app/GiantExplorer/settings.gradle.kts
@@ -58,6 +58,26 @@ listOf(
}
}
+
+val fileSystemModulePath = File(rootDir, "../../../AFS")
+
+listOf(
+// "file-system",
+// "file-system-archive",
+// "file-system-ktx",
+// "file-system-local",
+// "file-system-memory",
+// "file-system-remote",
+// "file-system-root"
+).forEach {
+ val modulePath = File(fileSystemModulePath, it)
+ if (modulePath.exists()) {
+ include(it)
+ project(":$it").projectDir = modulePath
+ }
+}
+
+
val home: String = System.getProperty("user.home")
when (filterFolder) {
"local" -> file("$home/AndroidStudioProjects/FilterUIProject/")