pull/457/head
gedoor 5 years ago
parent 08a0205cfd
commit e27f5e27e0
  1. 9
      app/src/main/java/io/legado/app/model/localBook/LocalBook.kt
  2. 4
      app/src/main/java/io/legado/app/ui/association/FileAssociationViewModel.kt
  3. 38
      app/src/main/java/io/legado/app/ui/book/local/ImportBookActivity.kt
  4. 8
      app/src/main/java/io/legado/app/ui/book/local/ImportBookAdapter.kt
  5. 2
      app/src/main/java/io/legado/app/ui/book/local/ImportBookViewModel.kt
  6. 44
      app/src/main/java/io/legado/app/ui/book/source/manage/BookSourceActivity.kt
  7. 35
      app/src/main/java/io/legado/app/ui/replace/ReplaceRuleActivity.kt
  8. 35
      app/src/main/java/io/legado/app/ui/rss/source/manage/RssSourceActivity.kt

@ -28,9 +28,11 @@ object LocalBook {
}
}
fun importFile(path: String): Book {
val fileName = if (path.isContentPath()) {
val doc = DocumentFile.fromSingleUri(App.INSTANCE, Uri.parse(path))
fun importFile(uri: Uri): Book {
val path: String
val fileName = if (uri.isContentPath()) {
path = uri.toString()
val doc = DocumentFile.fromSingleUri(App.INSTANCE, uri)
doc?.let {
val bookFile = FileUtils.getFile(AnalyzeTxtFile.cacheFolder, it.name!!)
if (!bookFile.exists()) {
@ -42,6 +44,7 @@ object LocalBook {
}
doc?.name!!
} else {
path = uri.path!!
File(path).name
}
val str = fileName.substringBeforeLast(".")

@ -46,9 +46,9 @@ class FileAssociationViewModel(application: Application) : BaseViewModel(applica
}
if (scheme.isEmpty()) {
val book = if (uri.scheme == "content") {
LocalBook.importFile(uri.toString())
LocalBook.importFile(uri)
} else {
LocalBook.importFile(uri.path.toString())
LocalBook.importFile(uri)
}
val intent = Intent(context, ReadBookActivity::class.java)
intent.putExtra("bookUrl", book.bookUrl)

@ -39,6 +39,7 @@ import java.util.*
class ImportBookActivity : VMBaseActivity<ImportBookViewModel>(R.layout.activity_import_book),
FilePickerDialog.CallBack,
PopupMenu.OnMenuItemClickListener,
SelectActionBar.CallBack,
ImportBookAdapter.CallBack {
private val requestCodeSelectFolder = 342
private var rootDoc: DocumentFile? = null
@ -75,12 +76,26 @@ class ImportBookActivity : VMBaseActivity<ImportBookViewModel>(R.layout.activity
when (item?.itemId) {
R.id.menu_del_selection ->
viewModel.deleteDoc(adapter.selectedUris) {
upPath()
adapter.removeSelection()
}
}
return false
}
override fun selectAll(selectAll: Boolean) {
adapter.selectAll(selectAll)
}
override fun revertSelection() {
adapter.revertSelection()
}
override fun onClickMainAction() {
viewModel.addToBookshelf(adapter.selectedUris) {
adapter.notifyDataSetChanged()
}
}
private fun initView() {
lay_top.setBackgroundColor(backgroundColor)
recycler_view.layoutManager = LinearLayoutManager(this)
@ -89,22 +104,7 @@ class ImportBookActivity : VMBaseActivity<ImportBookViewModel>(R.layout.activity
select_action_bar.setMainActionText(R.string.add_to_shelf)
select_action_bar.inflateMenu(R.menu.import_book_sel)
select_action_bar.setOnMenuItemClickListener(this)
select_action_bar.setCallBack(object : SelectActionBar.CallBack {
override fun selectAll(selectAll: Boolean) {
adapter.selectAll(selectAll)
}
override fun revertSelection() {
adapter.revertSelection()
}
override fun onClickMainAction() {
viewModel.addToBookshelf(adapter.selectedUris) {
upPath()
}
}
})
select_action_bar.setCallBack(this)
}
private fun initEvent() {
@ -210,7 +210,7 @@ class ImportBookActivity : VMBaseActivity<ImportBookViewModel>(R.layout.activity
DocumentsContract.Document.MIME_TYPE_DIR,
it.length(),
Date(it.lastModified()),
Uri.parse(it.absolutePath)
Uri.fromFile(it)
)
)
} else if (it.name.endsWith(".txt", true)
@ -222,7 +222,7 @@ class ImportBookActivity : VMBaseActivity<ImportBookViewModel>(R.layout.activity
it.extension,
it.length(),
Date(it.lastModified()),
Uri.parse(it.absolutePath)
Uri.fromFile(it)
)
)
}

@ -66,6 +66,14 @@ class ImportBookAdapter(context: Context, val callBack: CallBack) :
callBack.upCountView()
}
fun removeSelection() {
for (i in getItems().lastIndex downTo 0) {
if (getItem(i)?.uri.toString() in selectedUris) {
removeItem(i)
}
}
}
override fun convert(holder: ItemViewHolder, item: DocItem, payloads: MutableList<Any>) {
holder.itemView.apply {
if (payloads.isEmpty()) {

@ -16,7 +16,7 @@ class ImportBookViewModel(application: Application) : BaseViewModel(application)
fun addToBookshelf(uriList: HashSet<String>, finally: () -> Unit) {
execute {
uriList.forEach {
LocalBook.importFile(it)
LocalBook.importFile(Uri.parse(it))
}
}.onFinally {
finally.invoke()

@ -53,6 +53,7 @@ class BookSourceActivity : VMBaseActivity<BookSourceViewModel>(R.layout.activity
PopupMenu.OnMenuItemClickListener,
BookSourceAdapter.CallBack,
FilePickerDialog.CallBack,
SelectActionBar.CallBack,
SearchView.OnQueryTextListener {
override val viewModel: BookSourceViewModel
get() = getViewModel(BookSourceViewModel::class.java)
@ -244,33 +245,30 @@ class BookSourceActivity : VMBaseActivity<BookSourceViewModel>(R.layout.activity
})
}
override fun selectAll(selectAll: Boolean) {
if (selectAll) {
adapter.selectAll()
} else {
adapter.revertSelection()
}
}
override fun revertSelection() {
adapter.revertSelection()
}
override fun onClickMainAction() {
alert(titleResource = R.string.draw, messageResource = R.string.sure_del) {
okButton { viewModel.delSelection(adapter.getSelection()) }
noButton { }
}.show().applyTint()
}
private fun initSelectActionBar() {
select_action_bar.setMainActionText(R.string.delete)
select_action_bar.inflateMenu(R.menu.book_source_sel)
select_action_bar.setOnMenuItemClickListener(this)
select_action_bar.setCallBack(object : SelectActionBar.CallBack {
override fun selectAll(selectAll: Boolean) {
if (selectAll) {
adapter.selectAll()
} else {
adapter.revertSelection()
}
}
override fun revertSelection() {
adapter.revertSelection()
}
override fun onClickMainAction() {
this@BookSourceActivity
.alert(titleResource = R.string.draw, messageResource = R.string.sure_del) {
okButton { viewModel.delSelection(adapter.getSelection()) }
noButton { }
}
.show().applyTint()
}
})
select_action_bar.setCallBack(this)
}
override fun onMenuItemClick(item: MenuItem?): Boolean {

@ -50,6 +50,7 @@ class ReplaceRuleActivity :
SearchView.OnQueryTextListener,
PopupMenu.OnMenuItemClickListener,
FilePickerDialog.CallBack,
SelectActionBar.CallBack,
ReplaceRuleAdapter.CallBack {
override val viewModel: ReplaceRuleViewModel
get() = getViewModel(ReplaceRuleViewModel::class.java)
@ -107,27 +108,27 @@ class ReplaceRuleActivity :
search_view.setOnQueryTextListener(this)
}
override fun selectAll(selectAll: Boolean) {
if (selectAll) {
adapter.selectAll()
} else {
adapter.revertSelection()
}
}
override fun revertSelection() {
adapter.revertSelection()
}
override fun onClickMainAction() {
delSourceDialog()
}
private fun initSelectActionView() {
select_action_bar.setMainActionText(R.string.delete)
select_action_bar.inflateMenu(R.menu.replace_rule_sel)
select_action_bar.setOnMenuItemClickListener(this)
select_action_bar.setCallBack(object : SelectActionBar.CallBack {
override fun selectAll(selectAll: Boolean) {
if (selectAll) {
adapter.selectAll()
} else {
adapter.revertSelection()
}
}
override fun revertSelection() {
adapter.revertSelection()
}
override fun onClickMainAction() {
delSourceDialog()
}
})
select_action_bar.setCallBack(this)
}
private fun delSourceDialog() {

@ -48,6 +48,7 @@ import java.util.*
class RssSourceActivity : VMBaseActivity<RssSourceViewModel>(R.layout.activity_rss_source),
PopupMenu.OnMenuItemClickListener,
FilePickerDialog.CallBack,
SelectActionBar.CallBack,
RssSourceAdapter.CallBack {
override val viewModel: RssSourceViewModel
@ -153,27 +154,27 @@ class RssSourceActivity : VMBaseActivity<RssSourceViewModel>(R.layout.activity_r
})
}
override fun selectAll(selectAll: Boolean) {
if (selectAll) {
adapter.selectAll()
} else {
adapter.revertSelection()
}
}
override fun revertSelection() {
adapter.revertSelection()
}
override fun onClickMainAction() {
delSourceDialog()
}
private fun initViewEvent() {
select_action_bar.setMainActionText(R.string.delete)
select_action_bar.inflateMenu(R.menu.rss_source_sel)
select_action_bar.setOnMenuItemClickListener(this)
select_action_bar.setCallBack(object : SelectActionBar.CallBack {
override fun selectAll(selectAll: Boolean) {
if (selectAll) {
adapter.selectAll()
} else {
adapter.revertSelection()
}
}
override fun revertSelection() {
adapter.revertSelection()
}
override fun onClickMainAction() {
delSourceDialog()
}
})
select_action_bar.setCallBack(this)
}
private fun delSourceDialog() {

Loading…
Cancel
Save