diff --git a/app/src/main/java/io/legado/app/data/entities/BookSource.kt b/app/src/main/java/io/legado/app/data/entities/BookSource.kt index aada00709..8dc3ee71b 100644 --- a/app/src/main/java/io/legado/app/data/entities/BookSource.kt +++ b/app/src/main/java/io/legado/app/data/entities/BookSource.kt @@ -169,27 +169,27 @@ data class BookSource( return AppConst.SCRIPT_ENGINE.eval(jsStr, bindings) } - fun equal(source: BookSource?): Boolean { - if (source == null) { - return false - } - return bookSourceName == source.bookSourceName - && bookSourceUrl == source.bookSourceUrl - && bookSourceGroup == source.bookSourceGroup + fun equal(source: BookSource): Boolean { + return equal(bookSourceName, source.bookSourceName) + && equal(bookSourceUrl, source.bookSourceUrl) + && equal(bookSourceGroup, source.bookSourceGroup) && bookSourceType == source.bookSourceType - && bookUrlPattern == source.bookUrlPattern + && equal(bookUrlPattern, source.bookUrlPattern) && enabled == source.enabled && enabledExplore == source.enabledExplore - && header == source.header - && loginUrl == source.loginUrl - && lastUpdateTime == source.lastUpdateTime - && exploreUrl == source.exploreUrl - && searchUrl == source.searchUrl - && ruleSearch == source.ruleSearch - && ruleExplore == source.ruleExplore - && ruleBookInfo == source.ruleBookInfo - && ruleToc == source.ruleToc - && ruleContent == source.ruleContent + && equal(header, source.header) + && equal(loginUrl, source.loginUrl) + && equal(exploreUrl, source.exploreUrl) + && equal(searchUrl, source.searchUrl) + && getSearchRule() == source.getSearchRule() + && getExploreRule() == source.getExploreRule() + && getBookInfoRule() == source.getBookInfoRule() + && getTocRule() == source.getTocRule() + && getContentRule() == source.getContentRule() + } + + private fun equal(a: String?, b: String?): Boolean { + return a == b || (a.isNullOrEmpty() && b.isNullOrEmpty()) } data class ExploreKind( diff --git a/app/src/main/java/io/legado/app/data/entities/RssSource.kt b/app/src/main/java/io/legado/app/data/entities/RssSource.kt index 128410f99..e35ac8bdf 100644 --- a/app/src/main/java/io/legado/app/data/entities/RssSource.kt +++ b/app/src/main/java/io/legado/app/data/entities/RssSource.kt @@ -32,27 +32,25 @@ data class RssSource( var customOrder: Int = 0 ) : Parcelable { - fun equal(source: RssSource?): Boolean { - if (source == null) { - return false - } else { - return sourceUrl == source.sourceUrl - && sourceName == source.sourceName - && sourceIcon == source.sourceIcon - && enabled == source.enabled - && sourceGroup == source.sourceGroup - && ruleArticles == source.ruleArticles - && ruleNextPage == source.ruleNextPage - && ruleTitle == source.ruleTitle - && rulePubDate == source.rulePubDate - && ruleCategories == source.ruleCategories - && ruleDescription == source.ruleDescription - && ruleLink == source.ruleLink - && ruleContent == source.ruleContent - && enableJs == source.enableJs - && loadWithBaseUrl == source.loadWithBaseUrl - && customOrder == source.customOrder - } + fun equal(source: RssSource): Boolean { + return equal(sourceUrl, source.sourceUrl) + && equal(sourceIcon, source.sourceIcon) + && enabled == source.enabled + && equal(sourceGroup, source.sourceGroup) + && equal(ruleArticles, source.ruleArticles) + && equal(ruleNextPage, source.ruleNextPage) + && equal(ruleTitle, source.ruleTitle) + && equal(rulePubDate, source.rulePubDate) + && equal(ruleCategories, source.ruleCategories) + && equal(ruleDescription, source.ruleDescription) + && equal(ruleLink, source.ruleLink) + && equal(ruleContent, source.ruleContent) + && enableJs == source.enableJs + && loadWithBaseUrl == source.loadWithBaseUrl + } + + private fun equal(a: String?, b: String?): Boolean { + return a == b || (a.isNullOrEmpty() && b.isNullOrEmpty()) } } \ No newline at end of file diff --git a/app/src/main/java/io/legado/app/ui/book/source/edit/BookSourceEditActivity.kt b/app/src/main/java/io/legado/app/ui/book/source/edit/BookSourceEditActivity.kt index 75eee99c3..033d7f57d 100644 --- a/app/src/main/java/io/legado/app/ui/book/source/edit/BookSourceEditActivity.kt +++ b/app/src/main/java/io/legado/app/ui/book/source/edit/BookSourceEditActivity.kt @@ -21,8 +21,6 @@ import io.legado.app.data.entities.BookSource import io.legado.app.data.entities.EditEntity import io.legado.app.data.entities.rule.* import io.legado.app.lib.dialogs.alert -import io.legado.app.lib.dialogs.noButton -import io.legado.app.lib.dialogs.yesButton import io.legado.app.lib.theme.ATH import io.legado.app.ui.book.source.debug.BookSourceDebugActivity import io.legado.app.ui.widget.KeyboardToolPop @@ -114,16 +112,13 @@ class BookSourceEditActivity : override fun finish() { val source = getSource() - if (!source.equal(viewModel.bookSource)) { - alert(R.string.exit_no_save) { - yesButton { - if (checkSource(source)) { - viewModel.save(source) { - super.finish() - } - } + if (!source.equal(viewModel.bookSource ?: BookSource())) { + alert(R.string.exit) { + messageResource = R.string.exit_no_save + positiveButton(R.string.yes) + negativeButton(R.string.no) { + super.finish() } - noButton { } }.show().applyTint() } else { super.finish() diff --git a/app/src/main/java/io/legado/app/ui/rss/source/edit/RssSourceEditActivity.kt b/app/src/main/java/io/legado/app/ui/rss/source/edit/RssSourceEditActivity.kt index 9d415e860..c7b561b2a 100644 --- a/app/src/main/java/io/legado/app/ui/rss/source/edit/RssSourceEditActivity.kt +++ b/app/src/main/java/io/legado/app/ui/rss/source/edit/RssSourceEditActivity.kt @@ -19,8 +19,6 @@ import io.legado.app.constant.AppConst import io.legado.app.data.entities.EditEntity import io.legado.app.data.entities.RssSource import io.legado.app.lib.dialogs.alert -import io.legado.app.lib.dialogs.noButton -import io.legado.app.lib.dialogs.yesButton import io.legado.app.lib.theme.ATH import io.legado.app.ui.rss.source.debug.RssSourceDebugActivity import io.legado.app.ui.widget.KeyboardToolPop @@ -56,16 +54,13 @@ class RssSourceEditActivity : override fun finish() { val source = getRssSource() - if (!source.equal(viewModel.rssSource)) { - alert(R.string.exit_no_save) { - yesButton { - if (checkSource(source)) { - viewModel.save(source) { - super.finish() - } - } + if (!source.equal(viewModel.rssSource ?: RssSource())) { + alert(R.string.exit) { + messageResource = R.string.exit_no_save + positiveButton(R.string.yes) + negativeButton(R.string.no) { + super.finish() } - noButton { } }.show().applyTint() } else { super.finish() diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml index 5e6c96226..d606691e4 100644 --- a/app/src/main/res/values/strings.xml +++ b/app/src/main/res/values/strings.xml @@ -59,7 +59,7 @@ 关于 捐赠 退出 - 是否保存 + 尚未保存,是否继续编辑 阅读样式设置 版本 本地