diff --git a/app/src/main/java/io/legado/app/ui/importbook/ImportBookActivity.kt b/app/src/main/java/io/legado/app/ui/importbook/ImportBookActivity.kt index 16ea5ded3..286549dda 100644 --- a/app/src/main/java/io/legado/app/ui/importbook/ImportBookActivity.kt +++ b/app/src/main/java/io/legado/app/ui/importbook/ImportBookActivity.kt @@ -16,7 +16,8 @@ import kotlinx.android.synthetic.main.activity_import_book.* import java.io.File -class ImportBookActivity : VMBaseActivity(R.layout.activity_import_book) { +class ImportBookActivity : VMBaseActivity(R.layout.activity_import_book), + ImportBookAdapter.CallBack { private val requestCodeSelectFolder = 342 private var rootDoc: DocumentFile? = null private val subDirs = arrayListOf() @@ -27,7 +28,7 @@ class ImportBookActivity : VMBaseActivity(R.layout.activity override fun onActivityCreated(savedInstanceState: Bundle?) { initView() - upPath() + upRootDoc() } override fun onCompatCreateOptionsMenu(menu: Menu): Boolean { @@ -44,28 +45,34 @@ class ImportBookActivity : VMBaseActivity(R.layout.activity private fun initView() { recycler_view.layoutManager = LinearLayoutManager(this) - importBookAdapter = ImportBookAdapter(this) + importBookAdapter = ImportBookAdapter(this, this) recycler_view.adapter = importBookAdapter } - private fun upPath() { + private fun upRootDoc() { AppConfig.importBookPath?.let { val rootUri = Uri.parse(it) rootDoc = DocumentFile.fromTreeUri(this, rootUri) subDirs.clear() - tv_path.text = getPath() + upPath() } } - private fun getPath(): String { + private fun upPath() { rootDoc?.let { var path = it.name + File.separator + subDirs.joinToString(File.separator) if (!path.endsWith(File.separator)) { path += File.separator } - return path + tv_path.text = path + var doc = rootDoc + for (dirName in subDirs) { + doc = rootDoc?.findFile(dirName) + } + doc?.listFiles()?.let { + importBookAdapter.setItems(it.toList()) + } } - return "" } private fun selectImportFolder() { @@ -88,10 +95,14 @@ class ImportBookActivity : VMBaseActivity(R.layout.activity Intent.FLAG_GRANT_READ_URI_PERMISSION or Intent.FLAG_GRANT_WRITE_URI_PERMISSION ) AppConfig.importBookPath = it.toString() - upPath() + upRootDoc() } } } } + override fun findFolder(dirName: String) { + subDirs.add(dirName) + upPath() + } } \ No newline at end of file diff --git a/app/src/main/java/io/legado/app/ui/importbook/ImportBookAdapter.kt b/app/src/main/java/io/legado/app/ui/importbook/ImportBookAdapter.kt index 29ac7e579..124071266 100644 --- a/app/src/main/java/io/legado/app/ui/importbook/ImportBookAdapter.kt +++ b/app/src/main/java/io/legado/app/ui/importbook/ImportBookAdapter.kt @@ -5,14 +5,40 @@ import androidx.documentfile.provider.DocumentFile import io.legado.app.R import io.legado.app.base.adapter.ItemViewHolder import io.legado.app.base.adapter.SimpleRecyclerAdapter +import io.legado.app.utils.invisible +import io.legado.app.utils.visible +import kotlinx.android.synthetic.main.item_import_book.view.* +import org.jetbrains.anko.sdk27.listeners.onClick -class ImportBookAdapter(context: Context) : +class ImportBookAdapter(context: Context, val callBack: CallBack) : SimpleRecyclerAdapter(context, R.layout.item_import_book) { override fun convert(holder: ItemViewHolder, item: DocumentFile, payloads: MutableList) { + holder.itemView.apply { + if (item.isDirectory) { + iv_icon.visible() + cb_select.invisible() + } else { + iv_icon.invisible() + cb_select.visible() + } + tv_name.text = item.name + onClick { + item.name?.let { name -> + if (item.isDirectory) { + callBack.findFolder(name) + } else { + } + } + } + } + } + + interface CallBack { + fun findFolder(dirName: String) } } \ No newline at end of file diff --git a/app/src/main/res/layout/item_import_book.xml b/app/src/main/res/layout/item_import_book.xml index f14841ad0..abd638413 100644 --- a/app/src/main/res/layout/item_import_book.xml +++ b/app/src/main/res/layout/item_import_book.xml @@ -1,8 +1,90 @@ + android:layout_height="60dp" + android:background="@drawable/selector_common_bg" + android:orientation="horizontal" + android:baselineAligned="false"> + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file