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 { override fun onCompatOptionsItemSelected(item: MenuItem): Boolean {
when (item.itemId) { when (item.itemId) {
R.id.menu_save -> { R.id.menu_save -> {
val bookSource = getSource() getSource()?.let {
if (bookSource == null) { viewModel.save(it) { setResult(Activity.RESULT_OK); finish() }
toast("书源名称和URL不能为空")
} else {
viewModel.save(bookSource) { setResult(Activity.RESULT_OK); finish() }
} }
} }
R.id.menu_debug_source -> { R.id.menu_debug_source -> {
val bookSource = getSource() getSource()?.let {
if (bookSource == null) { viewModel.save(it) {
toast("书源名称和URL不能为空") startActivity<SourceDebugActivity>(Pair("key", it.bookSourceUrl))
} else {
viewModel.save(bookSource) {
startActivity<SourceDebugActivity>(Pair("key", bookSource.bookSourceUrl))
} }
} }
} }
@ -249,84 +243,76 @@ class SourceEditActivity :
val bookInfoRule = BookInfoRule() val bookInfoRule = BookInfoRule()
val tocRule = TocRule() val tocRule = TocRule()
val contentRule = ContentRule() val contentRule = ContentRule()
for (entity in sourceEntities) { sourceEntities.forEach {
with(entity) { when (it.key) {
when (key) { "bookSourceUrl" -> source.bookSourceUrl = it.value ?: ""
"bookSourceUrl" -> value?.let { source.bookSourceUrl = it } ?: return null "bookSourceName" -> source.bookSourceName = it.value ?: ""
"bookSourceName" -> value?.let { source.bookSourceName = it } ?: return null "bookSourceGroup" -> source.bookSourceGroup = it.value
"bookSourceGroup" -> source.bookSourceGroup = value "loginUrl" -> source.loginUrl = it.value
"loginUrl" -> source.loginUrl = value "bookUrlPattern" -> source.bookUrlPattern = it.value
"bookUrlPattern" -> source.bookUrlPattern = value "header" -> source.header = it.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
} }
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) source.ruleSearch = GSON.toJson(searchRule)

@ -1,9 +1,11 @@
package io.legado.app.ui.rss.source.edit package io.legado.app.ui.rss.source.edit
import android.app.Activity
import android.graphics.Rect import android.graphics.Rect
import android.os.Bundle import android.os.Bundle
import android.view.Gravity import android.view.Gravity
import android.view.Menu import android.view.Menu
import android.view.MenuItem
import android.view.ViewTreeObserver import android.view.ViewTreeObserver
import android.widget.EditText import android.widget.EditText
import android.widget.PopupWindow import android.widget.PopupWindow
@ -62,6 +64,20 @@ class RssSourceEditActivity :
return super.onCompatCreateOptionsMenu(menu) 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() { private fun initView() {
ATH.applyEdgeEffectColor(recycler_view) ATH.applyEdgeEffectColor(recycler_view)
mSoftKeyboardTool = KeyboardToolPop(this, AppConst.keyboardToolChars, this) mSoftKeyboardTool = KeyboardToolPop(this, AppConst.keyboardToolChars, this)
@ -98,7 +114,30 @@ class RssSourceEditActivity :
add(EditEntity("ruleContent", rssSource?.ruleContent, R.string.rss_rule_content)) add(EditEntity("ruleContent", rssSource?.ruleContent, R.string.rss_rule_content))
add(EditEntity("ruleLink", rssSource?.ruleLink, R.string.rss_rule_link)) 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) { 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