From bffbf0e46bae1933bcd42b7fd23e436f6e8e503b Mon Sep 17 00:00:00 2001 From: Jason Yao Date: Mon, 14 Sep 2020 21:33:52 -0400 Subject: [PATCH 1/8] revert log --- .../main/java/io/legado/app/service/help/ReadBook.kt | 11 +++++++++++ .../io/legado/app/ui/book/read/ReadBookActivity.kt | 5 +++++ .../app/ui/book/searchContent/SearchListFragment.kt | 4 ++++ 3 files changed, 20 insertions(+) diff --git a/app/src/main/java/io/legado/app/service/help/ReadBook.kt b/app/src/main/java/io/legado/app/service/help/ReadBook.kt index 2e96221f3..dfa337ae7 100644 --- a/app/src/main/java/io/legado/app/service/help/ReadBook.kt +++ b/app/src/main/java/io/legado/app/service/help/ReadBook.kt @@ -339,9 +339,11 @@ object ReadBook { index = content.indexOf(query, index + 1); count += 1 } + Log.d("h11128", "new index $index") val contentPosition = index var pageIndex = 0 var length = pages[pageIndex].text.length + Log.d("h11128", "page size ${pages.size}") while (length < contentPosition){ pageIndex += 1 if (pageIndex >pages.size){ @@ -349,12 +351,16 @@ object ReadBook { break } length += pages[pageIndex].text.length + Log.d("h11128", "to next page , add length change to $length") } + Log.d("h11128", "at pageindex $pageIndex") + // calculate search result's lineIndex val currentPage = pages[pageIndex] var lineIndex = 0 length = length - currentPage.text.length + currentPage.textLines[lineIndex].text.length + Log.d("h11128", "currentLine ${currentPage.textLines[lineIndex].text}") while (length < contentPosition){ lineIndex += 1 if (lineIndex >currentPage.textLines.size){ @@ -362,12 +368,17 @@ object ReadBook { break } length += currentPage.textLines[lineIndex].text.length + Log.d("h11128", "currentLine ${currentPage.textLines[lineIndex].text}") } // charIndex + Log.d("h11128", "currentLine ${currentPage.textLines[lineIndex].text}") + Log.d("h11128", "currentLength $length") val currentLine = currentPage.textLines[lineIndex] length -= currentLine.text.length + Log.d("h11128", "currentLength $length") val charIndex = contentPosition - length + Log.d("h11128", "contentLength $contentPosition") return arrayOf(pageIndex, lineIndex, charIndex) } diff --git a/app/src/main/java/io/legado/app/ui/book/read/ReadBookActivity.kt b/app/src/main/java/io/legado/app/ui/book/read/ReadBookActivity.kt index 7120e047a..7abcdfc3a 100644 --- a/app/src/main/java/io/legado/app/ui/book/read/ReadBookActivity.kt +++ b/app/src/main/java/io/legado/app/ui/book/read/ReadBookActivity.kt @@ -780,13 +780,18 @@ class ReadBookActivity : VMBaseActivity(R.layout.activity_boo val indexWithinChapter = data.getIntExtra("indexWithinChapter", 0) val query = data.getStringExtra("query") viewModel.openChapter(index) + // block until load correct chapter and pages var pages = ReadBook.curTextChapter?.pages while (ReadBook.durChapterIndex != index || pages == null ){ delay(100L) pages = ReadBook.curTextChapter?.pages } + Log.d("h11128", "Current chapter pages ${pages.size}") val positions = ReadBook.searchResultPositions(pages, indexWithinChapter, query!!) + Log.d("h11128", positions[0].toString()) + Log.d("h11128", positions[1].toString()) + Log.d("h11128", positions[2].toString()) //todo: show selected text val job1 = async(Main){ ReadBook.skipToPage(positions[0]) diff --git a/app/src/main/java/io/legado/app/ui/book/searchContent/SearchListFragment.kt b/app/src/main/java/io/legado/app/ui/book/searchContent/SearchListFragment.kt index 38ac013df..646153b6c 100644 --- a/app/src/main/java/io/legado/app/ui/book/searchContent/SearchListFragment.kt +++ b/app/src/main/java/io/legado/app/ui/book/searchContent/SearchListFragment.kt @@ -121,12 +121,15 @@ class SearchListFragment : VMBaseFragment(R.layout.fragment val job = async(IO){ if (isLocalBook || adapter.cacheFileNames.contains(BookHelp.formatChapterName(chapter))) { searchResults = searchChapter(newText, chapter) + //Log.d("h11128", "find ${searchResults.size} results in chapter ${chapter.title}") } } job.await() if (searchResults.isNotEmpty()){ + //Log.d("h11128", "load ${searchResults.size} results in chapter ${chapter.title}") searchResultList.addAll(searchResults) tv_current_search_info.text = "搜索结果:$searchResultCounts" + //Log.d("h11128", "searchResultList size ${searchResultList.size}") adapter.addItems(searchResults) searchResults = listOf() } @@ -226,6 +229,7 @@ class SearchListFragment : VMBaseFragment(R.layout.fragment searchData.putExtra("contentPosition", searchResult.contentPosition) searchData.putExtra("query", searchResult.query) searchData.putExtra("indexWithinChapter", searchResult.indexWithinChapter) + Log.d("h11128","current chapter index ${searchResult.chapterIndex}") activity?.setResult(RESULT_OK, searchData) activity?.finish() From dc5c7f2a3eed9d36cdd379140052ed33159cc9f8 Mon Sep 17 00:00:00 2001 From: 10bits Date: Mon, 21 Sep 2020 20:58:15 +0800 Subject: [PATCH 2/8] =?UTF-8?q?=E4=BC=98=E5=8C=96webdav=E5=A4=87=E4=BB=BD?= =?UTF-8?q?=E7=A6=BB=E7=BA=BF=E7=BC=93=E5=AD=98=E4=B9=A6=E7=B1=8D?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../main/java/io/legado/app/constant/PreferKey.kt | 2 +- .../java/io/legado/app/help/storage/WebDavHelp.kt | 8 ++++---- .../io/legado/app/ui/book/cache/CacheViewModel.kt | 13 ++++++------- app/src/main/res/values-zh-rHK/strings.xml | 4 ++-- app/src/main/res/values-zh-rTW/strings.xml | 4 ++-- app/src/main/res/values-zh/strings.xml | 4 ++-- app/src/main/res/values/strings.xml | 4 ++-- app/src/main/res/xml/pref_config_backup.xml | 4 ++-- 8 files changed, 21 insertions(+), 22 deletions(-) diff --git a/app/src/main/java/io/legado/app/constant/PreferKey.kt b/app/src/main/java/io/legado/app/constant/PreferKey.kt index 3e89dd2e2..f40091b0f 100644 --- a/app/src/main/java/io/legado/app/constant/PreferKey.kt +++ b/app/src/main/java/io/legado/app/constant/PreferKey.kt @@ -33,7 +33,7 @@ object PreferKey { const val webDavAccount = "web_dav_account" const val webDavPassword = "web_dav_password" const val webDavCreateDir = "webDavCreateDir" - const val webDavExport = "webDavExport" + const val webDavCacheBackup = "webDavCacheBackup" const val changeSourceLoadToc = "changeSourceLoadToc" const val chineseConverterType = "chineseConverterType" const val launcherIcon = "launcherIcon" diff --git a/app/src/main/java/io/legado/app/help/storage/WebDavHelp.kt b/app/src/main/java/io/legado/app/help/storage/WebDavHelp.kt index 327ed5fda..407bcf2c5 100644 --- a/app/src/main/java/io/legado/app/help/storage/WebDavHelp.kt +++ b/app/src/main/java/io/legado/app/help/storage/WebDavHelp.kt @@ -125,13 +125,13 @@ object WebDavHelp { fun exportWebDav(path: String, fileName: String) { try { if (initWebDav()) { - //默认导出到legado文件夹下exports目录 + // 默认导出到legado文件夹下exports目录 val exportsWebDavUrl = rootWebDavUrl + EncoderUtils.escape("exports") + "/" - //在legado文件夹创建exports目录,如果不存在的话 + // 在legado文件夹创建exports目录,如果不存在的话 WebDav(exportsWebDavUrl).makeAsDir() val file = File("${path}${File.separator}${fileName}") - //如果导出的本地文件存在,开始上传 - if(file.exists()){ + // 如果导出的本地文件存在,开始上传 + if(file.exists()) { val putUrl = exportsWebDavUrl + fileName WebDav(putUrl).upload("${path}${File.separator}${fileName}") } diff --git a/app/src/main/java/io/legado/app/ui/book/cache/CacheViewModel.kt b/app/src/main/java/io/legado/app/ui/book/cache/CacheViewModel.kt index afc78bc37..52e26862c 100644 --- a/app/src/main/java/io/legado/app/ui/book/cache/CacheViewModel.kt +++ b/app/src/main/java/io/legado/app/ui/book/cache/CacheViewModel.kt @@ -40,15 +40,14 @@ class CacheViewModel(application: Application) : BaseViewModel(application) { val content = getAllContents(book) DocumentUtils.createFileIfNotExist(doc, filename) ?.writeText(context, content) - if(App.INSTANCE.getPrefBoolean(PreferKey.webDavExport,false)) { - //写出文件到cache目录 + if(App.INSTANCE.getPrefBoolean(PreferKey.webDavCacheBackup,false)) { FileUtils.createFileIfNotExist( File(FileUtils.getCachePath()), filename - ).writeText(content) - //导出到webdav + ).writeText(content) // 写出文件到cache目录 + // 导出到webdav WebDavHelp.exportWebDav(FileUtils.getCachePath(), filename) - //上传完删除cache文件 + // 上传完删除cache文件 FileUtils.deleteFile("${FileUtils.getCachePath()}${File.separator}${filename}") } App.db.bookChapterDao().getChapterList(book.bookUrl).forEach { chapter -> @@ -79,8 +78,8 @@ class CacheViewModel(application: Application) : BaseViewModel(application) { val filename = "${book.name} by ${book.author}.txt" FileUtils.createFileIfNotExist(file, filename) .writeText(getAllContents(book)) - if(App.INSTANCE.getPrefBoolean(PreferKey.webDavExport,false)) { - WebDavHelp.exportWebDav(file.absolutePath, filename)//导出到webdav + if(App.INSTANCE.getPrefBoolean(PreferKey.webDavCacheBackup,false)) { + WebDavHelp.exportWebDav(file.absolutePath, filename) // 导出到webdav } App.db.bookChapterDao().getChapterList(book.bookUrl).forEach { chapter -> BookHelp.getContent(book, chapter).let { content -> diff --git a/app/src/main/res/values-zh-rHK/strings.xml b/app/src/main/res/values-zh-rHK/strings.xml index eac3f655b..8ad97bc38 100644 --- a/app/src/main/res/values-zh-rHK/strings.xml +++ b/app/src/main/res/values-zh-rHK/strings.xml @@ -10,8 +10,8 @@ 導入閲讀數據 創建子文件夾 創建 legado 文件夾作爲備份路徑 - 離線導出WebDav - 默認導出到legado文件夾下exports目錄 + 離線緩存書籍備份 + 導出本地同時備份到legado文件夾下exports目錄 備份路徑 導入舊版數據 導入 Github 數據 diff --git a/app/src/main/res/values-zh-rTW/strings.xml b/app/src/main/res/values-zh-rTW/strings.xml index 25fe6e740..d83bd8552 100644 --- a/app/src/main/res/values-zh-rTW/strings.xml +++ b/app/src/main/res/values-zh-rTW/strings.xml @@ -10,8 +10,8 @@ 匯入閱讀資料 建立子資料夾 建立legado資料夾作為備份資料夾 - 離線導出WebDav - 默認導出到legado文件夾下exports目錄 + 離線緩存書籍備份 + 導出本地同時備份到legado文件夾下exports目錄 備份路徑 匯入舊版資料 匯入Github資料 diff --git a/app/src/main/res/values-zh/strings.xml b/app/src/main/res/values-zh/strings.xml index 8981f1707..8f0068f33 100644 --- a/app/src/main/res/values-zh/strings.xml +++ b/app/src/main/res/values-zh/strings.xml @@ -10,8 +10,8 @@ 导入阅读数据 创建子文件夹 创建legado文件夹作为备份文件夹 - 离线导出WebDav - 默认导出到legado文件夹下exports目录 + 离线缓存书籍备份 + 导出本地同时备份到legado文件夹下exports目录 备份路径 请选择备份路径 导入旧版数据 diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml index be20fce1e..adbda6a61 100644 --- a/app/src/main/res/values/strings.xml +++ b/app/src/main/res/values/strings.xml @@ -10,8 +10,8 @@ Import Legado data Create a subfolder Create a folder named Legado as the backup folder. - Export Webdav - Default export to the exports directory under the legado folder + Offline cache book backup + Export to local and back up to the exports directory under the legado folder Backup to Please select a backup path. Import legacy data diff --git a/app/src/main/res/xml/pref_config_backup.xml b/app/src/main/res/xml/pref_config_backup.xml index 1d0ee0a9d..dc5ec4f37 100644 --- a/app/src/main/res/xml/pref_config_backup.xml +++ b/app/src/main/res/xml/pref_config_backup.xml @@ -39,8 +39,8 @@ From 8c377c2ba50c55f4b558c8a84b124c0dc01528c7 Mon Sep 17 00:00:00 2001 From: Jason Yao Date: Mon, 21 Sep 2020 20:59:10 -0400 Subject: [PATCH 3/8] =?UTF-8?q?=E9=80=89=E6=8B=A9=E6=90=9C=E7=B4=A2?= =?UTF-8?q?=E6=96=87=E5=AD=97?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../io/legado/app/service/help/ReadBook.kt | 16 ++++++++-- .../app/ui/book/read/ReadBookActivity.kt | 32 +++++++++++++------ 2 files changed, 37 insertions(+), 11 deletions(-) diff --git a/app/src/main/java/io/legado/app/service/help/ReadBook.kt b/app/src/main/java/io/legado/app/service/help/ReadBook.kt index dfa337ae7..c52f75afe 100644 --- a/app/src/main/java/io/legado/app/service/help/ReadBook.kt +++ b/app/src/main/java/io/legado/app/service/help/ReadBook.kt @@ -378,8 +378,20 @@ object ReadBook { length -= currentLine.text.length Log.d("h11128", "currentLength $length") val charIndex = contentPosition - length - Log.d("h11128", "contentLength $contentPosition") - return arrayOf(pageIndex, lineIndex, charIndex) + var addLine = 0 + var charIndex2 = 0 + // change line + if ((charIndex + query.length) > currentLine.text.length){ + addLine = 1 + charIndex2 = charIndex + query.length - currentLine.text.length - 1 + } + // changePage + if ((lineIndex + addLine + 1) > currentPage.textLines.size){ + addLine = -1 + charIndex2 = charIndex + query.length - currentLine.text.length - 1 + } + Log.d("h11128", "charIndex2 $charIndex $addLine $charIndex2") + return arrayOf(pageIndex, lineIndex, charIndex, addLine, charIndex2) } /** diff --git a/app/src/main/java/io/legado/app/ui/book/read/ReadBookActivity.kt b/app/src/main/java/io/legado/app/ui/book/read/ReadBookActivity.kt index b6bb4503c..8ea3cd1c6 100644 --- a/app/src/main/java/io/legado/app/ui/book/read/ReadBookActivity.kt +++ b/app/src/main/java/io/legado/app/ui/book/read/ReadBookActivity.kt @@ -9,6 +9,7 @@ import android.graphics.drawable.ColorDrawable import android.net.Uri import android.os.Bundle import android.os.Handler +import android.util.Log import android.view.* import android.view.ViewGroup.LayoutParams.WRAP_CONTENT import androidx.core.view.get @@ -56,16 +57,14 @@ import io.legado.app.ui.widget.dialog.TextDialog import io.legado.app.utils.* import kotlinx.android.synthetic.main.activity_book_read.* import kotlinx.android.synthetic.main.view_read_menu.* -import kotlinx.coroutines.CoroutineScope +import kotlinx.coroutines.* import kotlinx.coroutines.Dispatchers.IO import kotlinx.coroutines.Dispatchers.Main -import kotlinx.coroutines.async -import kotlinx.coroutines.delay -import kotlinx.coroutines.launch import org.jetbrains.anko.sdk27.listeners.onClick import org.jetbrains.anko.startActivity import org.jetbrains.anko.startActivityForResult import org.jetbrains.anko.toast +import java.lang.Runnable class ReadBookActivity : VMBaseActivity(R.layout.activity_book_read), View.OnTouchListener, @@ -794,14 +793,29 @@ class ReadBookActivity : VMBaseActivity(R.layout.activity_boo Log.d("h11128", positions[0].toString()) Log.d("h11128", positions[1].toString()) Log.d("h11128", positions[2].toString()) - //todo: show selected text - val job1 = async(Main){ + Log.d("h11128", positions[3].toString()) + + while (ReadBook.durPageIndex != positions[0]){ + delay(100L) ReadBook.skipToPage(positions[0]) - page_view.curPage.selectStartMoveIndex(positions[0], positions[1], 0) - page_view.curPage.selectEndMoveIndex(positions[0], positions[1], 0 + query.length ) + } + withContext(Main){ + Log.d("h11128", "currentpage ${ReadBook.durPageIndex}") + Log.d("h11128", "currentpage ${page_view.pageFactory.currentPage.index}") + Log.d("h11128", "${positions[0]} ${positions[1]} ${positions[2]}") + + page_view.curPage.selectStartMoveIndex(0, positions[1], positions[2]) + delay(20L) + when (positions[3]){ + 0 -> page_view.curPage.selectEndMoveIndex(0, positions[1], positions[2] + query.length - 1) + 1 -> page_view.curPage.selectEndMoveIndex(0, positions[1] + 1, positions[4]) + //todo: consider change page, jump to scroll position + -1 -> page_view.curPage.selectEndMoveIndex(1, 0, positions[4]) + } page_view.isTextSelected = true + delay(100L) + Log.d("h11128", "asdasd $selectedText") } - job1.await() } } requestCodeReplace -> onReplaceRuleSave() From 65b7bb3d41eaed371d1aebd1001f4baf18bd1e17 Mon Sep 17 00:00:00 2001 From: Jason Yao Date: Mon, 21 Sep 2020 21:04:28 -0400 Subject: [PATCH 4/8] clean log --- .../main/java/io/legado/app/service/help/ReadBook.kt | 11 ----------- .../io/legado/app/ui/book/read/ReadBookActivity.kt | 12 ------------ 2 files changed, 23 deletions(-) diff --git a/app/src/main/java/io/legado/app/service/help/ReadBook.kt b/app/src/main/java/io/legado/app/service/help/ReadBook.kt index c52f75afe..479850620 100644 --- a/app/src/main/java/io/legado/app/service/help/ReadBook.kt +++ b/app/src/main/java/io/legado/app/service/help/ReadBook.kt @@ -339,11 +339,9 @@ object ReadBook { index = content.indexOf(query, index + 1); count += 1 } - Log.d("h11128", "new index $index") val contentPosition = index var pageIndex = 0 var length = pages[pageIndex].text.length - Log.d("h11128", "page size ${pages.size}") while (length < contentPosition){ pageIndex += 1 if (pageIndex >pages.size){ @@ -351,16 +349,12 @@ object ReadBook { break } length += pages[pageIndex].text.length - Log.d("h11128", "to next page , add length change to $length") } - Log.d("h11128", "at pageindex $pageIndex") - // calculate search result's lineIndex val currentPage = pages[pageIndex] var lineIndex = 0 length = length - currentPage.text.length + currentPage.textLines[lineIndex].text.length - Log.d("h11128", "currentLine ${currentPage.textLines[lineIndex].text}") while (length < contentPosition){ lineIndex += 1 if (lineIndex >currentPage.textLines.size){ @@ -368,15 +362,11 @@ object ReadBook { break } length += currentPage.textLines[lineIndex].text.length - Log.d("h11128", "currentLine ${currentPage.textLines[lineIndex].text}") } // charIndex - Log.d("h11128", "currentLine ${currentPage.textLines[lineIndex].text}") - Log.d("h11128", "currentLength $length") val currentLine = currentPage.textLines[lineIndex] length -= currentLine.text.length - Log.d("h11128", "currentLength $length") val charIndex = contentPosition - length var addLine = 0 var charIndex2 = 0 @@ -390,7 +380,6 @@ object ReadBook { addLine = -1 charIndex2 = charIndex + query.length - currentLine.text.length - 1 } - Log.d("h11128", "charIndex2 $charIndex $addLine $charIndex2") return arrayOf(pageIndex, lineIndex, charIndex, addLine, charIndex2) } diff --git a/app/src/main/java/io/legado/app/ui/book/read/ReadBookActivity.kt b/app/src/main/java/io/legado/app/ui/book/read/ReadBookActivity.kt index 8ea3cd1c6..92df11f6a 100644 --- a/app/src/main/java/io/legado/app/ui/book/read/ReadBookActivity.kt +++ b/app/src/main/java/io/legado/app/ui/book/read/ReadBookActivity.kt @@ -781,29 +781,18 @@ class ReadBookActivity : VMBaseActivity(R.layout.activity_boo val indexWithinChapter = data.getIntExtra("indexWithinChapter", 0) val query = data.getStringExtra("query") viewModel.openChapter(index) - // block until load correct chapter and pages var pages = ReadBook.curTextChapter?.pages while (ReadBook.durChapterIndex != index || pages == null ){ delay(100L) pages = ReadBook.curTextChapter?.pages } - Log.d("h11128", "Current chapter pages ${pages.size}") val positions = ReadBook.searchResultPositions(pages, indexWithinChapter, query!!) - Log.d("h11128", positions[0].toString()) - Log.d("h11128", positions[1].toString()) - Log.d("h11128", positions[2].toString()) - Log.d("h11128", positions[3].toString()) - while (ReadBook.durPageIndex != positions[0]){ delay(100L) ReadBook.skipToPage(positions[0]) } withContext(Main){ - Log.d("h11128", "currentpage ${ReadBook.durPageIndex}") - Log.d("h11128", "currentpage ${page_view.pageFactory.currentPage.index}") - Log.d("h11128", "${positions[0]} ${positions[1]} ${positions[2]}") - page_view.curPage.selectStartMoveIndex(0, positions[1], positions[2]) delay(20L) when (positions[3]){ @@ -814,7 +803,6 @@ class ReadBookActivity : VMBaseActivity(R.layout.activity_boo } page_view.isTextSelected = true delay(100L) - Log.d("h11128", "asdasd $selectedText") } } } From 5584a22637d8e7d63192b7e8f300ddfe158f8b11 Mon Sep 17 00:00:00 2001 From: AndyBernie Date: Tue, 22 Sep 2020 11:00:31 +0800 Subject: [PATCH 5/8] =?UTF-8?q?=E6=8D=A2=E6=BA=90=E6=97=B6=E6=97=A0?= =?UTF-8?q?=E6=9C=80=E6=96=B0=E7=AB=A0=E8=8A=82=E6=97=B6=E8=87=AA=E5=8A=A8?= =?UTF-8?q?=E5=8A=A0=E8=BD=BD=E8=AF=A6=E6=83=85=E9=A1=B5?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../book/changesource/ChangeSourceViewModel.kt | 17 ++++++++++------- 1 file changed, 10 insertions(+), 7 deletions(-) diff --git a/app/src/main/java/io/legado/app/ui/book/changesource/ChangeSourceViewModel.kt b/app/src/main/java/io/legado/app/ui/book/changesource/ChangeSourceViewModel.kt index ec423c3dd..581ad9f41 100644 --- a/app/src/main/java/io/legado/app/ui/book/changesource/ChangeSourceViewModel.kt +++ b/app/src/main/java/io/legado/app/ui/book/changesource/ChangeSourceViewModel.kt @@ -120,12 +120,8 @@ class ChangeSourceViewModel(application: Application) : BaseViewModel(applicatio .onSuccess(IO) { it.forEach { searchBook -> if (searchBook.name == name && searchBook.author == author) { - if (context.getPrefBoolean(PreferKey.changeSourceLoadToc)) { - if (searchBook.tocUrl.isEmpty()) { - loadBookInfo(searchBook.toBook()) - } else { - loadChapter(searchBook.toBook()) - } + if (searchBook.latestChapterTitle.isNullOrEmpty()) { + loadBookInfo(searchBook.toBook()) } else { searchFinish(searchBook) } @@ -156,7 +152,14 @@ class ChangeSourceViewModel(application: Application) : BaseViewModel(applicatio App.db.bookSourceDao().getBookSource(book.origin)?.let { bookSource -> WebBook(bookSource).getBookInfo(book, this) .onSuccess { - loadChapter(it) + if (context.getPrefBoolean(PreferKey.changeSourceLoadToc)) { + loadChapter(it) + } else { + //从详情页里获取最新章节 + book.latestChapterTitle = it.latestChapterTitle + val searchBook = book.toSearchBook() + searchFinish(searchBook) + } }.onError { debug { context.getString(R.string.error_get_book_info) } } From 273d465e080304e49922bbdc0ce9f3ac7a023a2f Mon Sep 17 00:00:00 2001 From: AndyBernie Date: Tue, 22 Sep 2020 12:31:23 +0800 Subject: [PATCH 6/8] add options --- app/src/main/java/io/legado/app/constant/PreferKey.kt | 1 + .../legado/app/ui/book/changesource/ChangeSourceDialog.kt | 6 ++++++ .../app/ui/book/changesource/ChangeSourceViewModel.kt | 4 +++- app/src/main/res/menu/change_source.xml | 6 ++++++ app/src/main/res/values-zh-rHK/strings.xml | 1 + app/src/main/res/values-zh-rTW/strings.xml | 1 + app/src/main/res/values-zh/strings.xml | 1 + app/src/main/res/values/strings.xml | 1 + 8 files changed, 20 insertions(+), 1 deletion(-) diff --git a/app/src/main/java/io/legado/app/constant/PreferKey.kt b/app/src/main/java/io/legado/app/constant/PreferKey.kt index f40091b0f..7ef56460e 100644 --- a/app/src/main/java/io/legado/app/constant/PreferKey.kt +++ b/app/src/main/java/io/legado/app/constant/PreferKey.kt @@ -35,6 +35,7 @@ object PreferKey { const val webDavCreateDir = "webDavCreateDir" const val webDavCacheBackup = "webDavCacheBackup" const val changeSourceLoadToc = "changeSourceLoadToc" + const val changeSourceLoadInfo = "changeSourceLoadInfo" const val chineseConverterType = "chineseConverterType" const val launcherIcon = "launcherIcon" const val textSelectAble = "selectText" diff --git a/app/src/main/java/io/legado/app/ui/book/changesource/ChangeSourceDialog.kt b/app/src/main/java/io/legado/app/ui/book/changesource/ChangeSourceDialog.kt index bbd627466..e73b443a6 100644 --- a/app/src/main/java/io/legado/app/ui/book/changesource/ChangeSourceDialog.kt +++ b/app/src/main/java/io/legado/app/ui/book/changesource/ChangeSourceDialog.kt @@ -88,6 +88,8 @@ class ChangeSourceDialog : BaseDialogFragment(), tool_bar.setOnMenuItemClickListener(this) tool_bar.menu.findItem(R.id.menu_load_toc)?.isChecked = getPrefBoolean(PreferKey.changeSourceLoadToc) + tool_bar.menu.findItem(R.id.menu_load_info)?.isChecked = + getPrefBoolean(PreferKey.changeSourceLoadInfo) } private fun initRecyclerView() { @@ -159,6 +161,10 @@ class ChangeSourceDialog : BaseDialogFragment(), putPrefBoolean(PreferKey.changeSourceLoadToc, !item.isChecked) item.isChecked = !item.isChecked } + R.id.menu_load_info -> { + putPrefBoolean(PreferKey.changeSourceLoadInfo, !item.isChecked) + item.isChecked = !item.isChecked + } R.id.menu_stop -> viewModel.stopSearch() } return false diff --git a/app/src/main/java/io/legado/app/ui/book/changesource/ChangeSourceViewModel.kt b/app/src/main/java/io/legado/app/ui/book/changesource/ChangeSourceViewModel.kt index 581ad9f41..6633a889d 100644 --- a/app/src/main/java/io/legado/app/ui/book/changesource/ChangeSourceViewModel.kt +++ b/app/src/main/java/io/legado/app/ui/book/changesource/ChangeSourceViewModel.kt @@ -121,7 +121,9 @@ class ChangeSourceViewModel(application: Application) : BaseViewModel(applicatio it.forEach { searchBook -> if (searchBook.name == name && searchBook.author == author) { if (searchBook.latestChapterTitle.isNullOrEmpty()) { - loadBookInfo(searchBook.toBook()) + if (context.getPrefBoolean(PreferKey.changeSourceLoadInfo)) { + loadBookInfo(searchBook.toBook()) + } } else { searchFinish(searchBook) } diff --git a/app/src/main/res/menu/change_source.xml b/app/src/main/res/menu/change_source.xml index ab2bfee4c..dd2deae1b 100644 --- a/app/src/main/res/menu/change_source.xml +++ b/app/src/main/res/menu/change_source.xml @@ -24,4 +24,10 @@ android:checkable="true" app:showAsAction="never" /> + + \ No newline at end of file diff --git a/app/src/main/res/values-zh-rHK/strings.xml b/app/src/main/res/values-zh-rHK/strings.xml index 72b0eaa2f..4d38941b5 100644 --- a/app/src/main/res/values-zh-rHK/strings.xml +++ b/app/src/main/res/values-zh-rHK/strings.xml @@ -568,6 +568,7 @@ 導出所選 導出 加載目錄 + 加載詳情頁 TTS WebDav 密碼 輸入你的 WebDav 授權密碼 diff --git a/app/src/main/res/values-zh-rTW/strings.xml b/app/src/main/res/values-zh-rTW/strings.xml index 69c410eaa..6335186ca 100644 --- a/app/src/main/res/values-zh-rTW/strings.xml +++ b/app/src/main/res/values-zh-rTW/strings.xml @@ -569,6 +569,7 @@ 匯出所選 匯出 載入目錄 + 載入詳情頁 TTS WebDav 密碼 輸入你的WebDav授權密碼 diff --git a/app/src/main/res/values-zh/strings.xml b/app/src/main/res/values-zh/strings.xml index 76b0b02c1..92977d3f5 100644 --- a/app/src/main/res/values-zh/strings.xml +++ b/app/src/main/res/values-zh/strings.xml @@ -575,6 +575,7 @@ 导出所选 导出 加载目录 + 加载详情页 TTS WebDav 密码 输入你的WebDav授权密码 diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml index 4343ffa11..4779b5909 100644 --- a/app/src/main/res/values/strings.xml +++ b/app/src/main/res/values/strings.xml @@ -577,6 +577,7 @@ Export selected Export Load chapters + Load book detail TTS WebDav password Input you WebDav authorized password From be931db1a0cb84719c2652ec11ecff5e821d3928 Mon Sep 17 00:00:00 2001 From: AndyBernie Date: Tue, 22 Sep 2020 12:49:28 +0800 Subject: [PATCH 7/8] update --- app/src/main/assets/updateLog.md | 1 + .../legado/app/ui/book/changesource/ChangeSourceViewModel.kt | 4 +++- 2 files changed, 4 insertions(+), 1 deletion(-) diff --git a/app/src/main/assets/updateLog.md b/app/src/main/assets/updateLog.md index 0e4cfb8b6..6b5ff9e46 100644 --- a/app/src/main/assets/updateLog.md +++ b/app/src/main/assets/updateLog.md @@ -5,6 +5,7 @@ **2020/09/21** * 修复规则解析bug +* 换源时无最新章节信息时可加载详情页来获取(默认关闭) **2020/09/20** * 优化正文搜索 diff --git a/app/src/main/java/io/legado/app/ui/book/changesource/ChangeSourceViewModel.kt b/app/src/main/java/io/legado/app/ui/book/changesource/ChangeSourceViewModel.kt index 6633a889d..0cbc1e2ee 100644 --- a/app/src/main/java/io/legado/app/ui/book/changesource/ChangeSourceViewModel.kt +++ b/app/src/main/java/io/legado/app/ui/book/changesource/ChangeSourceViewModel.kt @@ -121,8 +121,10 @@ class ChangeSourceViewModel(application: Application) : BaseViewModel(applicatio it.forEach { searchBook -> if (searchBook.name == name && searchBook.author == author) { if (searchBook.latestChapterTitle.isNullOrEmpty()) { - if (context.getPrefBoolean(PreferKey.changeSourceLoadInfo)) { + if (context.getPrefBoolean(PreferKey.changeSourceLoadInfo) || context.getPrefBoolean(PreferKey.changeSourceLoadToc)) { loadBookInfo(searchBook.toBook()) + } else { + searchFinish(searchBook) } } else { searchFinish(searchBook) From 6219ab8774e455a6fb24e7c95acba838b895674b Mon Sep 17 00:00:00 2001 From: gedoor Date: Tue, 22 Sep 2020 14:27:51 +0800 Subject: [PATCH 8/8] =?UTF-8?q?=E4=BF=AE=E5=A4=8D=E8=A7=84=E5=88=99?= =?UTF-8?q?=E8=A7=A3=E6=9E=90bug?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../main/java/io/legado/app/model/analyzeRule/AnalyzeRule.kt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/app/src/main/java/io/legado/app/model/analyzeRule/AnalyzeRule.kt b/app/src/main/java/io/legado/app/model/analyzeRule/AnalyzeRule.kt index 81dfe2f61..29c0f5473 100644 --- a/app/src/main/java/io/legado/app/model/analyzeRule/AnalyzeRule.kt +++ b/app/src/main/java/io/legado/app/model/analyzeRule/AnalyzeRule.kt @@ -458,7 +458,7 @@ class AnalyzeRule(var book: BaseBook? = null) : JsExtensions { } tmp = evalMatcher.group() when { - tmp.startsWith("$") && !rule.contains("##") -> { + tmp.startsWith("$") -> { ruleType.add(tmp.substring(1).toInt()) ruleParam.add(tmp) }