pull/36/head
kunfei 5 years ago
parent 4ff6ea6653
commit 2dc2d6728b
  1. 162
      app/src/main/java/io/legado/app/ui/book/source/edit/SourceEditActivity.kt
  2. 39
      app/src/main/java/io/legado/app/ui/rss/source/edit/RssSourceEditActivity.kt
  3. 8
      app/src/main/java/io/legado/app/ui/rss/source/edit/RssSourceEditViewModel.kt

@ -79,20 +79,14 @@ class SourceEditActivity :
override fun onCompatOptionsItemSelected(item: MenuItem): Boolean {
when (item.itemId) {
R.id.menu_save -> {
val bookSource = getSource()
if (bookSource == null) {
toast("书源名称和URL不能为空")
} else {
viewModel.save(bookSource) { setResult(Activity.RESULT_OK); finish() }
getSource()?.let {
viewModel.save(it) { setResult(Activity.RESULT_OK); finish() }
}
}
R.id.menu_debug_source -> {
val bookSource = getSource()
if (bookSource == null) {
toast("书源名称和URL不能为空")
} else {
viewModel.save(bookSource) {
startActivity<SourceDebugActivity>(Pair("key", bookSource.bookSourceUrl))
getSource()?.let {
viewModel.save(it) {
startActivity<SourceDebugActivity>(Pair("key", it.bookSourceUrl))
}
}
}
@ -249,84 +243,76 @@ class SourceEditActivity :
val bookInfoRule = BookInfoRule()
val tocRule = TocRule()
val contentRule = ContentRule()
for (entity in sourceEntities) {
with(entity) {
when (key) {
"bookSourceUrl" -> value?.let { source.bookSourceUrl = it } ?: return null
"bookSourceName" -> value?.let { source.bookSourceName = it } ?: return null
"bookSourceGroup" -> source.bookSourceGroup = value
"loginUrl" -> source.loginUrl = value
"bookUrlPattern" -> source.bookUrlPattern = value
"header" -> source.header = value
}
}
}
for (entity in searchEntities) {
with(entity) {
when (key) {
"searchUrl" -> source.searchUrl = value
"bookList" -> searchRule.bookList = value
"name" -> searchRule.name = value
"author" -> searchRule.author = value
"kind" -> searchRule.kind = value
"intro" -> searchRule.intro = value
"updateTime" -> searchRule.updateTime = value
"wordCount" -> searchRule.wordCount = value
"lastChapter" -> searchRule.lastChapter = value
"coverUrl" -> searchRule.coverUrl = value
"bookUrl" -> searchRule.bookUrl = value
}
}
}
for (entity in findEntities) {
with(entity) {
when (key) {
"exploreUrl" -> source.exploreUrl = value
"bookList" -> exploreRule.bookList = value
"name" -> exploreRule.name = value
"author" -> exploreRule.author = value
"kind" -> exploreRule.kind = value
"intro" -> exploreRule.intro = value
"updateTime" -> exploreRule.updateTime = value
"wordCount" -> exploreRule.wordCount = value
"lastChapter" -> exploreRule.lastChapter = value
"coverUrl" -> exploreRule.coverUrl = value
"bookUrl" -> exploreRule.bookUrl = value
}
}
}
for (entity in infoEntities) {
with(entity) {
when (key) {
"init" -> bookInfoRule.init = value
"name" -> bookInfoRule.name = value
"author" -> bookInfoRule.author = value
"kind" -> bookInfoRule.kind = value
"intro" -> bookInfoRule.intro = value
"updateTime" -> bookInfoRule.updateTime = value
"wordCount" -> bookInfoRule.wordCount = value
"lastChapter" -> bookInfoRule.lastChapter = value
"coverUrl" -> bookInfoRule.coverUrl = value
"tocUrl" -> bookInfoRule.tocUrl = value
}
}
}
for (entity in tocEntities) {
with(entity) {
when (key) {
"chapterList" -> tocRule.chapterList = value
"chapterName" -> tocRule.chapterName = value
"chapterUrl" -> tocRule.chapterUrl = value
"nextTocUrl" -> tocRule.nextTocUrl = value
}
}
}
for (entity in contentEntities) {
with(entity) {
when (key) {
"content" -> contentRule.content = value
"nextContentUrl" -> contentRule.nextContentUrl = value
sourceEntities.forEach {
when (it.key) {
"bookSourceUrl" -> source.bookSourceUrl = it.value ?: ""
"bookSourceName" -> source.bookSourceName = it.value ?: ""
"bookSourceGroup" -> source.bookSourceGroup = it.value
"loginUrl" -> source.loginUrl = it.value
"bookUrlPattern" -> source.bookUrlPattern = it.value
"header" -> source.header = it.value
}
}
if (source.bookSourceUrl.isBlank() || source.bookSourceName.isBlank()) {
toast("书源名称和URL不能为空")
return null
}
searchEntities.forEach {
when (it.key) {
"searchUrl" -> source.searchUrl = it.value
"bookList" -> searchRule.bookList = it.value
"name" -> searchRule.name = it.value
"author" -> searchRule.author = it.value
"kind" -> searchRule.kind = it.value
"intro" -> searchRule.intro = it.value
"updateTime" -> searchRule.updateTime = it.value
"wordCount" -> searchRule.wordCount = it.value
"lastChapter" -> searchRule.lastChapter = it.value
"coverUrl" -> searchRule.coverUrl = it.value
"bookUrl" -> searchRule.bookUrl = it.value
}
}
findEntities.forEach {
when (it.key) {
"exploreUrl" -> source.exploreUrl = it.value
"bookList" -> exploreRule.bookList = it.value
"name" -> exploreRule.name = it.value
"author" -> exploreRule.author = it.value
"kind" -> exploreRule.kind = it.value
"intro" -> exploreRule.intro = it.value
"updateTime" -> exploreRule.updateTime = it.value
"wordCount" -> exploreRule.wordCount = it.value
"lastChapter" -> exploreRule.lastChapter = it.value
"coverUrl" -> exploreRule.coverUrl = it.value
"bookUrl" -> exploreRule.bookUrl = it.value
}
}
infoEntities.forEach {
when (it.key) {
"init" -> bookInfoRule.init = it.value
"name" -> bookInfoRule.name = it.value
"author" -> bookInfoRule.author = it.value
"kind" -> bookInfoRule.kind = it.value
"intro" -> bookInfoRule.intro = it.value
"updateTime" -> bookInfoRule.updateTime = it.value
"wordCount" -> bookInfoRule.wordCount = it.value
"lastChapter" -> bookInfoRule.lastChapter = it.value
"coverUrl" -> bookInfoRule.coverUrl = it.value
"tocUrl" -> bookInfoRule.tocUrl = it.value
}
}
tocEntities.forEach {
when (it.key) {
"chapterList" -> tocRule.chapterList = it.value
"chapterName" -> tocRule.chapterName = it.value
"chapterUrl" -> tocRule.chapterUrl = it.value
"nextTocUrl" -> tocRule.nextTocUrl = it.value
}
}
contentEntities.forEach {
when (it.key) {
"content" -> contentRule.content = it.value
"nextContentUrl" -> contentRule.nextContentUrl = it.value
}
}
source.ruleSearch = GSON.toJson(searchRule)

@ -1,9 +1,11 @@
package io.legado.app.ui.rss.source.edit
import android.app.Activity
import android.graphics.Rect
import android.os.Bundle
import android.view.Gravity
import android.view.Menu
import android.view.MenuItem
import android.view.ViewTreeObserver
import android.widget.EditText
import android.widget.PopupWindow
@ -62,6 +64,20 @@ class RssSourceEditActivity :
return super.onCompatCreateOptionsMenu(menu)
}
override fun onCompatOptionsItemSelected(item: MenuItem): Boolean {
when (item.itemId) {
R.id.menu_save -> {
getRssSource()?.let {
viewModel.save(it) {
setResult(Activity.RESULT_OK)
finish()
}
}
}
}
return super.onCompatOptionsItemSelected(item)
}
private fun initView() {
ATH.applyEdgeEffectColor(recycler_view)
mSoftKeyboardTool = KeyboardToolPop(this, AppConst.keyboardToolChars, this)
@ -98,7 +114,30 @@ class RssSourceEditActivity :
add(EditEntity("ruleContent", rssSource?.ruleContent, R.string.rss_rule_content))
add(EditEntity("ruleLink", rssSource?.ruleLink, R.string.rss_rule_link))
}
}
private fun getRssSource(): RssSource? {
val source = viewModel.sourceLiveData.value ?: RssSource()
sourceEntities.forEach {
when (it.key) {
"sourceName" -> source.sourceName = it.value ?: ""
"sourceUrl" -> source.sourceName = it.value ?: ""
"iconUrl" -> source.sourceName = it.value ?: ""
"ruleTitle" -> source.sourceName = it.value ?: ""
"ruleAuthor" -> source.sourceName = it.value ?: ""
"ruleGuid" -> source.sourceName = it.value ?: ""
"rulePubDate" -> source.sourceName = it.value ?: ""
"ruleCategories" -> source.sourceName = it.value ?: ""
"ruleDescription" -> source.sourceName = it.value ?: ""
"ruleImage" -> source.sourceName = it.value ?: ""
"ruleContent" -> source.sourceName = it.value ?: ""
"ruleLink" -> source.sourceName = it.value ?: ""
}
}
if (source.sourceName.isBlank() || source.sourceName.isBlank()) {
return null
}
return source
}
override fun sendText(text: String) {

@ -18,5 +18,11 @@ class RssSourceEditViewModel(application: Application) : BaseViewModel(applicati
}
}
fun save(rssSource: RssSource, success: (() -> Unit)) {
execute {
App.db.rssSourceDao().insert(rssSource)
}.onSuccess {
success()
}
}
}
Loading…
Cancel
Save