pull/83/head
kunfei 6 years ago
parent 361b5ae800
commit a9a14ce8b1
  1. 29
      app/src/main/java/io/legado/app/ui/importbook/ImportBookActivity.kt
  2. 28
      app/src/main/java/io/legado/app/ui/importbook/ImportBookAdapter.kt
  3. 86
      app/src/main/res/layout/item_import_book.xml

@ -16,7 +16,8 @@ import kotlinx.android.synthetic.main.activity_import_book.*
import java.io.File
class ImportBookActivity : VMBaseActivity<ImportBookViewModel>(R.layout.activity_import_book) {
class ImportBookActivity : VMBaseActivity<ImportBookViewModel>(R.layout.activity_import_book),
ImportBookAdapter.CallBack {
private val requestCodeSelectFolder = 342
private var rootDoc: DocumentFile? = null
private val subDirs = arrayListOf<String>()
@ -27,7 +28,7 @@ class ImportBookActivity : VMBaseActivity<ImportBookViewModel>(R.layout.activity
override fun onActivityCreated(savedInstanceState: Bundle?) {
initView()
upPath()
upRootDoc()
}
override fun onCompatCreateOptionsMenu(menu: Menu): Boolean {
@ -44,28 +45,34 @@ class ImportBookActivity : VMBaseActivity<ImportBookViewModel>(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<ImportBookViewModel>(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()
}
}

@ -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<DocumentFile>(context, R.layout.item_import_book) {
override fun convert(holder: ItemViewHolder, item: DocumentFile, payloads: MutableList<Any>) {
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)
}
}

@ -1,8 +1,90 @@
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent">
android:layout_height="60dp"
android:background="@drawable/selector_common_bg"
android:orientation="horizontal"
android:baselineAligned="false">
<FrameLayout
android:layout_width="60dp"
android:layout_height="match_parent">
<!--文件夹标识或已选文件标识-->
<androidx.appcompat.widget.AppCompatImageView
android:id="@+id/iv_icon"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:scaleType="center"
android:visibility="invisible"
android:src="@drawable/ic_folder"
app:tint="@color/tv_text_default" />
<!--选择是否添加文件-->
<io.legado.app.lib.theme.view.ATECheckBox
android:id="@+id/cb_select"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center"
android:clickable="true"
android:enabled="true"
android:focusable="true" />
</FrameLayout>
<RelativeLayout
android:layout_width="0dp"
android:layout_height="match_parent"
android:layout_weight="1"
android:paddingTop="8dp"
android:paddingBottom="8dp">
<TextView
android:id="@+id/tv_name"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:singleLine="true"
android:text="@string/app_name"
android:textSize="16sp" />
<LinearLayout
android:id="@+id/ll_brief"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_alignParentBottom="true"
android:gravity="center_vertical"
android:orientation="horizontal">
<io.legado.app.lib.theme.view.ATEAccentBgTextView
android:id="@+id/tv_tag"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginRight="15dp"
android:paddingStart="5dp"
android:paddingEnd="5dp"
android:text="TXT"
tools:ignore="HardcodedText,RtlHardcoded" />
<TextView
android:id="@+id/tv_size"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginRight="15dp"
tools:ignore="RtlHardcoded"
tools:text="324kb" />
<TextView
android:id="@+id/tv_date"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
tools:text="2017-05-22" />
</LinearLayout>
<TextView
android:id="@+id/tv_sub_count"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentBottom="true"
android:visibility="gone"
tools:text="0 项" />
</RelativeLayout>
</LinearLayout>
Loading…
Cancel
Save