diff --git a/app/src/debug/res/values-zh-rTW/strings.xml b/app/src/debug/res/values-zh-rTW/strings.xml
index 07b0a5dbe..a68f05319 100644
--- a/app/src/debug/res/values-zh-rTW/strings.xml
+++ b/app/src/debug/res/values-zh-rTW/strings.xml
@@ -1,5 +1,5 @@
閲讀.D
- 閲讀·D·搜索
-
\ No newline at end of file
+ 閲讀·D·搜尋
+
diff --git a/app/src/google/res/values-zh-rTW/strings.xml b/app/src/google/res/values-zh-rTW/strings.xml
new file mode 100644
index 000000000..35770fc68
--- /dev/null
+++ b/app/src/google/res/values-zh-rTW/strings.xml
@@ -0,0 +1,6 @@
+
+
+
+ 閱讀Pro
+
+
diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml
index ef2c71ab2..f968d0ba1 100644
--- a/app/src/main/AndroidManifest.xml
+++ b/app/src/main/AndroidManifest.xml
@@ -224,7 +224,7 @@
android:launchMode="singleTop"
android:screenOrientation="behind" />
diff --git a/app/src/main/assets/updateLog.md b/app/src/main/assets/updateLog.md
index 41b2c837f..51ee4565a 100644
--- a/app/src/main/assets/updateLog.md
+++ b/app/src/main/assets/updateLog.md
@@ -3,6 +3,13 @@
* 关注合作公众号 **[小说拾遗]()** 获取好看的小说。
- 旧版数据导入教程:先在旧版阅读(2.x)中进行备份,然后在新版阅读(3.x)【我的】->【备份与恢复】,选择【导入旧版本数据】。
+**2020/10/02**
+* 优化规则解析
+* 优化正文搜索
+* 翻页动画跟随背景
+* 双击发现折叠发现,再次双击滚动至顶端
+* 修复bug
+
**2020/09/29**
* 增加了几个方法用于处理文件 by [Celeter](https://github.com/Celeter)
```
diff --git a/app/src/main/java/io/legado/app/help/ReadBookConfig.kt b/app/src/main/java/io/legado/app/help/ReadBookConfig.kt
index 5cceab22d..118f5b6ca 100644
--- a/app/src/main/java/io/legado/app/help/ReadBookConfig.kt
+++ b/app/src/main/java/io/legado/app/help/ReadBookConfig.kt
@@ -158,12 +158,6 @@ object ReadBookConfig {
App.INSTANCE.putPrefBoolean(PreferKey.shareLayout, value)
}
}
- var pageAnim: Int
- get() = if (AppConfig.isEInkMode) -1 else App.INSTANCE.getPrefInt(PreferKey.pageAnim)
- set(value) {
- App.INSTANCE.putPrefInt(PreferKey.pageAnim, value)
- isScroll = pageAnim == 3
- }
var isScroll = pageAnim == 3
val clickTurnPage get() = App.INSTANCE.getPrefBoolean(PreferKey.clickTurnPage, true)
val textFullJustify get() = App.INSTANCE.getPrefBoolean(PreferKey.textFullJustify, true)
@@ -182,6 +176,13 @@ object ReadBookConfig {
val config get() = if (shareLayout) shareConfig else durConfig
+ var pageAnim: Int
+ get() = config.pageAnim()
+ set(value) {
+ config.setPageAnim(value)
+ isScroll = pageAnim == 3
+ }
+
var textFont: String
get() = config.textFont
set(value) {
@@ -379,6 +380,8 @@ object ReadBookConfig {
private var textColor: String = "#3E3D3B",//白天文字颜色
private var textColorNight: String = "#ADADAD",//夜间文字颜色
private var textColorEInk: String = "#000000",
+ private var pageAnim: Int = 0,
+ private var pageAnimEInk: Int = 3,
var textFont: String = "",//字体
var textBold: Int = 0,//是否粗体字 0:正常, 1:粗体, 2:细体
var textSize: Int = 20,//文字大小
@@ -454,6 +457,20 @@ object ReadBookConfig {
}
}
+ fun setPageAnim(anim: Int) {
+ when {
+ AppConfig.isEInkMode -> pageAnimEInk = anim
+ else -> pageAnim = anim
+ }
+ }
+
+ fun pageAnim(): Int {
+ return when {
+ AppConfig.isEInkMode -> pageAnimEInk
+ else -> pageAnim
+ }
+ }
+
fun textColor(): Int {
return when {
AppConfig.isEInkMode -> Color.parseColor(textColorEInk)
diff --git a/app/src/main/java/io/legado/app/help/storage/Restore.kt b/app/src/main/java/io/legado/app/help/storage/Restore.kt
index 18880822e..b98a248d1 100644
--- a/app/src/main/java/io/legado/app/help/storage/Restore.kt
+++ b/app/src/main/java/io/legado/app/help/storage/Restore.kt
@@ -61,7 +61,6 @@ object Restore {
private val readPrefKeys = arrayOf(
PreferKey.readStyleSelect,
PreferKey.shareLayout,
- PreferKey.pageAnim,
PreferKey.hideStatusBar,
PreferKey.hideNavigationBar,
PreferKey.bodyIndent,
@@ -215,7 +214,6 @@ object Restore {
ReadBookConfig.apply {
styleSelect = App.INSTANCE.getPrefInt(PreferKey.readStyleSelect)
shareLayout = App.INSTANCE.getPrefBoolean(PreferKey.shareLayout)
- pageAnim = App.INSTANCE.getPrefInt(PreferKey.pageAnim)
hideStatusBar = App.INSTANCE.getPrefBoolean(PreferKey.hideStatusBar)
hideNavigationBar = App.INSTANCE.getPrefBoolean(PreferKey.hideNavigationBar)
bodyIndentCount = App.INSTANCE.getPrefInt(PreferKey.bodyIndent, 2)
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 8cd9937f5..4d17aa16d 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
@@ -456,7 +456,7 @@ class AnalyzeRule(var book: BaseBook? = null) : JsExtensions {
while (evalMatcher.find()) {
if (evalMatcher.start() > start) {
tmp = rule.substring(start, evalMatcher.start())
- if (mode != Mode.Js && mode != Mode.Json && mode != Mode.Regex
+ if (mode != Mode.Js && mode != Mode.Regex
&& start == 0 && !tmp.contains("##")
) {
mode = Mode.Regex
diff --git a/app/src/main/java/io/legado/app/ui/book/group/GroupSelectDialog.kt b/app/src/main/java/io/legado/app/ui/book/group/GroupSelectDialog.kt
index bee66bcc6..91732b149 100644
--- a/app/src/main/java/io/legado/app/ui/book/group/GroupSelectDialog.kt
+++ b/app/src/main/java/io/legado/app/ui/book/group/GroupSelectDialog.kt
@@ -34,7 +34,6 @@ import io.legado.app.utils.getViewModel
import io.legado.app.utils.requestInputMethod
import kotlinx.android.synthetic.main.dialog_book_group_picker.*
import kotlinx.android.synthetic.main.dialog_edit_text.view.*
-import kotlinx.android.synthetic.main.dialog_recycler_view.recycler_view
import kotlinx.android.synthetic.main.dialog_recycler_view.tool_bar
import kotlinx.android.synthetic.main.item_group_select.view.*
import org.jetbrains.anko.sdk27.listeners.onClick
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 92df11f6a..b3a2fbbcd 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,7 +9,6 @@ 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
@@ -48,7 +47,7 @@ import io.legado.app.ui.book.read.page.ContentTextView
import io.legado.app.ui.book.read.page.PageView
import io.legado.app.ui.book.read.page.TextPageFactory
import io.legado.app.ui.book.read.page.delegate.PageDelegate
-import io.legado.app.ui.book.searchContent.SearchListActivity
+import io.legado.app.ui.book.searchContent.SearchContentActivity
import io.legado.app.ui.book.source.edit.BookSourceEditActivity
import io.legado.app.ui.login.SourceLogin
import io.legado.app.ui.replacerule.ReplaceRuleActivity
@@ -57,14 +56,16 @@ 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.*
+import kotlinx.coroutines.CoroutineScope
import kotlinx.coroutines.Dispatchers.IO
import kotlinx.coroutines.Dispatchers.Main
+import kotlinx.coroutines.delay
+import kotlinx.coroutines.launch
+import kotlinx.coroutines.withContext
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,
@@ -494,6 +495,7 @@ class ReadBookActivity : VMBaseActivity(R.layout.activity_boo
return true
}
R.id.menu_search_content -> {
+ viewModel.searchContentQuery = selectedText
openSearchActivity(selectedText)
return true
}
@@ -683,10 +685,10 @@ class ReadBookActivity : VMBaseActivity(R.layout.activity_boo
*/
override fun openSearchActivity(searchWord: String?) {
ReadBook.book?.let {
- startActivityForResult(
+ startActivityForResult(
requestCodeSearchResult,
Pair("bookUrl", it.bookUrl),
- Pair("searchWord", searchWord)
+ Pair("searchWord", searchWord ?: viewModel.searchContentQuery)
)
}
}
@@ -771,33 +773,50 @@ class ReadBookActivity : VMBaseActivity(R.layout.activity_boo
requestCodeChapterList ->
data?.getIntExtra("index", ReadBook.durChapterIndex)?.let { index ->
if (index != ReadBook.durChapterIndex) {
- val pageIndex = data.getIntExtra("pageIndex", 0)
- viewModel.openChapter(index, pageIndex)
- }
+ val pageIndex = data.getIntExtra("pageIndex", 0)
+ viewModel.openChapter(index, pageIndex)
}
+ }
requestCodeSearchResult ->
data?.getIntExtra("index", ReadBook.durChapterIndex)?.let { index ->
- launch(IO){
+ launch(IO) {
val indexWithinChapter = data.getIntExtra("indexWithinChapter", 0)
- val query = data.getStringExtra("query")
+ viewModel.searchContentQuery = data.getStringExtra("query") ?: ""
viewModel.openChapter(index)
// block until load correct chapter and pages
var pages = ReadBook.curTextChapter?.pages
- while (ReadBook.durChapterIndex != index || pages == null ){
+ while (ReadBook.durChapterIndex != index || pages == null) {
delay(100L)
pages = ReadBook.curTextChapter?.pages
}
- val positions = ReadBook.searchResultPositions(pages, indexWithinChapter, query!!)
- while (ReadBook.durPageIndex != positions[0]){
+ val positions =
+ ReadBook.searchResultPositions(
+ pages,
+ indexWithinChapter,
+ viewModel.searchContentQuery
+ )
+ while (ReadBook.durPageIndex != positions[0]) {
delay(100L)
ReadBook.skipToPage(positions[0])
}
- withContext(Main){
- page_view.curPage.selectStartMoveIndex(0, positions[1], positions[2])
+ withContext(Main) {
+ 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])
+ when (positions[3]) {
+ 0 -> page_view.curPage.selectEndMoveIndex(
+ 0,
+ positions[1],
+ positions[2] + viewModel.searchContentQuery.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])
}
diff --git a/app/src/main/java/io/legado/app/ui/book/read/ReadBookViewModel.kt b/app/src/main/java/io/legado/app/ui/book/read/ReadBookViewModel.kt
index b8efe1cee..e2ff19199 100644
--- a/app/src/main/java/io/legado/app/ui/book/read/ReadBookViewModel.kt
+++ b/app/src/main/java/io/legado/app/ui/book/read/ReadBookViewModel.kt
@@ -23,6 +23,7 @@ import kotlinx.coroutines.withContext
class ReadBookViewModel(application: Application) : BaseViewModel(application) {
var isInitFinish = false
+ var searchContentQuery = ""
fun initData(intent: Intent) {
execute {
diff --git a/app/src/main/java/io/legado/app/ui/book/read/config/ReadStyleDialog.kt b/app/src/main/java/io/legado/app/ui/book/read/config/ReadStyleDialog.kt
index 12201ae29..a791e6939 100644
--- a/app/src/main/java/io/legado/app/ui/book/read/config/ReadStyleDialog.kt
+++ b/app/src/main/java/io/legado/app/ui/book/read/config/ReadStyleDialog.kt
@@ -104,12 +104,7 @@ class ReadStyleDialog : BaseDialogFragment(), FontSelectDialog.CallBack {
private fun initData() {
cb_share_layout.isChecked = ReadBookConfig.shareLayout
- ReadBookConfig.pageAnim.let {
- if (it >= 0 && it < rg_page_anim.childCount) {
- rg_page_anim.check(rg_page_anim[it].id)
- }
- }
- upStyle()
+ upView()
styleAdapter.setItems(ReadBookConfig.configList)
}
@@ -149,7 +144,7 @@ class ReadStyleDialog : BaseDialogFragment(), FontSelectDialog.CallBack {
cb_share_layout.onCheckedChangeListener = { checkBox, isChecked ->
if (checkBox.isPressed) {
ReadBookConfig.shareLayout = isChecked
- upStyle()
+ upView()
postEvent(EventBus.UP_CONFIG, true)
}
}
@@ -206,7 +201,7 @@ class ReadStyleDialog : BaseDialogFragment(), FontSelectDialog.CallBack {
if (index != oldIndex) {
ReadBookConfig.styleSelect = index
ReadBookConfig.upBg()
- upStyle()
+ upView()
styleAdapter.notifyItemChanged(oldIndex)
styleAdapter.notifyItemChanged(index)
postEvent(EventBus.UP_CONFIG, true)
@@ -220,8 +215,11 @@ class ReadStyleDialog : BaseDialogFragment(), FontSelectDialog.CallBack {
return true
}
- private fun upStyle() {
+ private fun upView() {
ReadBookConfig.let {
+ if (it.pageAnim >= 0 && it.pageAnim < rg_page_anim.childCount) {
+ rg_page_anim.check(rg_page_anim[it.pageAnim].id)
+ }
dsb_text_size.progress = it.textSize - 5
dsb_text_letter_spacing.progress = (it.letterSpacing * 100).toInt() + 50
dsb_line_size.progress = it.lineSpacingExtra
diff --git a/app/src/main/java/io/legado/app/ui/book/searchContent/SearchListActivity.kt b/app/src/main/java/io/legado/app/ui/book/searchContent/SearchContentActivity.kt
similarity index 93%
rename from app/src/main/java/io/legado/app/ui/book/searchContent/SearchListActivity.kt
rename to app/src/main/java/io/legado/app/ui/book/searchContent/SearchContentActivity.kt
index 6c01801c3..3227a9a00 100644
--- a/app/src/main/java/io/legado/app/ui/book/searchContent/SearchListActivity.kt
+++ b/app/src/main/java/io/legado/app/ui/book/searchContent/SearchContentActivity.kt
@@ -22,19 +22,20 @@ import io.legado.app.ui.widget.recycler.VerticalDivider
import io.legado.app.utils.ColorUtils
import io.legado.app.utils.getViewModel
import io.legado.app.utils.observeEvent
-import kotlinx.android.synthetic.main.activity_search_list.*
+import kotlinx.android.synthetic.main.activity_search_content.*
import kotlinx.android.synthetic.main.view_search.*
import kotlinx.coroutines.*
import org.jetbrains.anko.sdk27.listeners.onClick
-class SearchListActivity : VMBaseActivity(R.layout.activity_search_list),
- SearchListAdapter.Callback {
+class SearchContentActivity :
+ VMBaseActivity(R.layout.activity_search_content),
+ SearchContentAdapter.Callback {
- override val viewModel: SearchListViewModel
- get() = getViewModel(SearchListViewModel::class.java)
+ override val viewModel: SearchContentViewModel
+ get() = getViewModel(SearchContentViewModel::class.java)
- lateinit var adapter: SearchListAdapter
+ lateinit var adapter: SearchContentAdapter
private lateinit var mLayoutManager: UpLinearLayoutManager
private var searchResultCounts = 0
private var durChapterIndex = 0
@@ -78,7 +79,7 @@ class SearchListActivity : VMBaseActivity(R.layout.activity
}
private fun initRecyclerView() {
- adapter = SearchListAdapter(this, this)
+ adapter = SearchContentAdapter(this, this)
mLayoutManager = UpLinearLayoutManager(this)
recycler_view.layoutManager = mLayoutManager
recycler_view.addItemDecoration(VerticalDivider(this))
@@ -134,17 +135,15 @@ class SearchListActivity : VMBaseActivity(R.layout.activity
if (!newText.isBlank()) {
adapter.clearItems()
searchResultList.clear()
+ refresh_progress_bar.isAutoLoading = true
searchResultCounts = 0
viewModel.lastQuery = newText
var searchResults = listOf()
launch(Dispatchers.Main) {
App.db.bookChapterDao().getChapterList(viewModel.bookUrl).map { chapter ->
val job = async(Dispatchers.IO) {
- if (isLocalBook || adapter.cacheFileNames.contains(
- BookHelp.formatChapterName(
- chapter
- )
- )
+ if (isLocalBook
+ || adapter.cacheFileNames.contains(BookHelp.formatChapterName(chapter))
) {
searchResults = searchChapter(newText, chapter)
}
@@ -152,6 +151,7 @@ class SearchListActivity : VMBaseActivity(R.layout.activity
job.await()
if (searchResults.isNotEmpty()) {
searchResultList.addAll(searchResults)
+ refresh_progress_bar.isAutoLoading = false
tv_current_search_info.text = "搜索结果:$searchResultCounts"
adapter.addItems(searchResults)
searchResults = listOf()
diff --git a/app/src/main/java/io/legado/app/ui/book/searchContent/SearchListAdapter.kt b/app/src/main/java/io/legado/app/ui/book/searchContent/SearchContentAdapter.kt
similarity index 95%
rename from app/src/main/java/io/legado/app/ui/book/searchContent/SearchListAdapter.kt
rename to app/src/main/java/io/legado/app/ui/book/searchContent/SearchContentAdapter.kt
index d68eb85ca..d64a1a458 100644
--- a/app/src/main/java/io/legado/app/ui/book/searchContent/SearchListAdapter.kt
+++ b/app/src/main/java/io/legado/app/ui/book/searchContent/SearchContentAdapter.kt
@@ -10,7 +10,7 @@ import io.legado.app.utils.hexString
import kotlinx.android.synthetic.main.item_search_list.view.*
import org.jetbrains.anko.sdk27.listeners.onClick
-class SearchListAdapter(context: Context, val callback: Callback) :
+class SearchContentAdapter(context: Context, val callback: Callback) :
SimpleRecyclerAdapter(context, R.layout.item_search_list) {
val cacheFileNames = hashSetOf()
diff --git a/app/src/main/java/io/legado/app/ui/book/searchContent/SearchListViewModel.kt b/app/src/main/java/io/legado/app/ui/book/searchContent/SearchContentViewModel.kt
similarity index 85%
rename from app/src/main/java/io/legado/app/ui/book/searchContent/SearchListViewModel.kt
rename to app/src/main/java/io/legado/app/ui/book/searchContent/SearchContentViewModel.kt
index 0b8cd1259..8ce74e1d4 100644
--- a/app/src/main/java/io/legado/app/ui/book/searchContent/SearchListViewModel.kt
+++ b/app/src/main/java/io/legado/app/ui/book/searchContent/SearchContentViewModel.kt
@@ -6,7 +6,7 @@ import io.legado.app.App
import io.legado.app.base.BaseViewModel
import io.legado.app.data.entities.Book
-class SearchListViewModel(application: Application) : BaseViewModel(application) {
+class SearchContentViewModel(application: Application) : BaseViewModel(application) {
var bookUrl: String = ""
var book: Book? = null
var lastQuery: String = ""
diff --git a/app/src/main/java/io/legado/app/ui/main/MainActivity.kt b/app/src/main/java/io/legado/app/ui/main/MainActivity.kt
index 64e005ba2..26879ae87 100644
--- a/app/src/main/java/io/legado/app/ui/main/MainActivity.kt
+++ b/app/src/main/java/io/legado/app/ui/main/MainActivity.kt
@@ -39,6 +39,7 @@ class MainActivity : VMBaseActivity(R.layout.activity_main),
get() = getViewModel(MainViewModel::class.java)
private var exitTime: Long = 0
private var bookshelfReselected: Long = 0
+ private var exploreReselected: Long = 0
private var pagePosition = 0
private val fragmentMap = hashMapOf()
@@ -72,7 +73,7 @@ class MainActivity : VMBaseActivity(R.layout.activity_main),
override fun onNavigationItemSelected(item: MenuItem): Boolean {
when (item.itemId) {
R.id.menu_bookshelf -> view_pager_main.setCurrentItem(0, false)
- R.id.menu_find_book -> view_pager_main.setCurrentItem(1, false)
+ R.id.menu_explore -> view_pager_main.setCurrentItem(1, false)
R.id.menu_rss -> view_pager_main.setCurrentItem(2, false)
R.id.menu_my_config -> view_pager_main.setCurrentItem(3, false)
}
@@ -88,6 +89,13 @@ class MainActivity : VMBaseActivity(R.layout.activity_main),
(fragmentMap[0] as? BookshelfFragment)?.gotoTop()
}
}
+ R.id.menu_explore -> {
+ if (System.currentTimeMillis() - exploreReselected > 300) {
+ exploreReselected = System.currentTimeMillis()
+ } else {
+ (fragmentMap[1] as? ExploreFragment)?.compressExplore()
+ }
+ }
}
}
diff --git a/app/src/main/java/io/legado/app/ui/main/explore/ExploreAdapter.kt b/app/src/main/java/io/legado/app/ui/main/explore/ExploreAdapter.kt
index 0fdfa373f..137398b71 100644
--- a/app/src/main/java/io/legado/app/ui/main/explore/ExploreAdapter.kt
+++ b/app/src/main/java/io/legado/app/ui/main/explore/ExploreAdapter.kt
@@ -11,7 +11,10 @@ import io.legado.app.base.adapter.SimpleRecyclerAdapter
import io.legado.app.data.entities.BookSource
import io.legado.app.help.coroutine.Coroutine
import io.legado.app.lib.theme.accentColor
-import io.legado.app.utils.*
+import io.legado.app.utils.ACache
+import io.legado.app.utils.dp
+import io.legado.app.utils.gone
+import io.legado.app.utils.visible
import kotlinx.android.synthetic.main.item_fillet_text.view.*
import kotlinx.android.synthetic.main.item_find_book.view.*
import kotlinx.coroutines.CoroutineScope
@@ -97,6 +100,17 @@ class ExploreAdapter(context: Context, private val scope: CoroutineScope, val ca
}
}
+ fun compressExplore(): Boolean {
+ return if (exIndex < 0) {
+ false
+ } else {
+ val oldExIndex = exIndex
+ exIndex = -1
+ notifyItemChanged(oldExIndex)
+ true
+ }
+ }
+
private fun showMenu(view: View, position: Int): Boolean {
val source = getItem(position) ?: return true
val popupMenu = PopupMenu(context, view)
diff --git a/app/src/main/java/io/legado/app/ui/main/explore/ExploreFragment.kt b/app/src/main/java/io/legado/app/ui/main/explore/ExploreFragment.kt
index 6aa870ee7..bceb905d1 100644
--- a/app/src/main/java/io/legado/app/ui/main/explore/ExploreFragment.kt
+++ b/app/src/main/java/io/legado/app/ui/main/explore/ExploreFragment.kt
@@ -15,6 +15,7 @@ import io.legado.app.R
import io.legado.app.base.VMBaseFragment
import io.legado.app.constant.AppPattern
import io.legado.app.data.entities.BookSource
+import io.legado.app.help.AppConfig
import io.legado.app.lib.theme.ATH
import io.legado.app.lib.theme.primaryTextColor
import io.legado.app.ui.book.explore.ExploreShowActivity
@@ -154,4 +155,14 @@ class ExploreFragment : VMBaseFragment(R.layout.fragment_find_
viewModel.topSource(source)
}
+ fun compressExplore() {
+ if (!adapter.compressExplore()) {
+ if (AppConfig.isEInkMode) {
+ rv_find.scrollToPosition(0)
+ } else {
+ rv_find.smoothScrollToPosition(0)
+ }
+ }
+ }
+
}
\ No newline at end of file
diff --git a/app/src/main/res/layout/activity_book_search.xml b/app/src/main/res/layout/activity_book_search.xml
index 6daf33cd4..244841d15 100644
--- a/app/src/main/res/layout/activity_book_search.xml
+++ b/app/src/main/res/layout/activity_book_search.xml
@@ -1,20 +1,19 @@
-
+ android:id="@+id/title_bar"
+ android:layout_width="match_parent"
+ android:layout_height="wrap_content"
+ app:contentInsetStartWithNavigation="0dp"
+ app:contentLayout="@layout/view_search"
+ app:layout_constraintTop_toTopOf="parent"
+ app:title="搜索" />
+ android:orientation="vertical"
+ android:visibility="gone"
+ app:layout_constraintBottom_toBottomOf="parent"
+ app:layout_constraintTop_toBottomOf="@id/title_bar">
+
+
+ app:layout_constraintTop_toBottomOf="@id/refresh_progress_bar" />
- 替换规则(replaceRegex)
分組名稱
備註內容
- E-Ink模式下只有白纸黑字,不显示其它背景
默认启用替换净化
新加入书架的书是否启用替换净化
选择恢复文件
diff --git a/app/src/main/res/values-zh-rTW/strings.xml b/app/src/main/res/values-zh-rTW/strings.xml
index 0d44a8fae..2cfe6ff7a 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資料夾作為備份資料夾
- 離線緩存書籍備份
- 導出本地同時備份到legado文件夾下exports目錄
+ 離線快取書籍備份
+ 匯出本機同時備份到legado資料夾下exports目錄
備份路徑
匯入舊版資料
匯入Github資料
@@ -56,7 +56,7 @@
書架布局
檢視
書城
- 添加本機
+ 新增本機
書源
書源管理
建立/匯入/編輯/管理書源
@@ -85,9 +85,9 @@
瀏覽器寫源,看書
web編輯書源
http://%1$s:%2$d
- 離線緩存
- 離線緩存
- 緩存選擇的章節到本機
+ 離線快取
+ 離線快取
+ 快取選擇的章節到本機
換源
\u3000\u3000這是一款使用Kotlin全新開發的開源的閱讀軟體,歡迎您的加入。關注公眾號[legado-top]!
@@ -97,7 +97,7 @@
Version %s
後臺校驗書源
- 打開后可以在校驗書源時自由操作
+ 打開後可以在校驗書源時自由操作
自動重新整理
打開軟體時自動更新書籍
自動下載最新章節
@@ -159,8 +159,8 @@
無法打開
分享失敗
無章節
- 添加網址
- 添加書籍網址
+ 新增網址
+ 新增書籍網址
背景
作者
作者: %s
@@ -173,7 +173,7 @@
禁用書源
建立書源
建立訂閱源
- 添加書籍
+ 新增書籍
掃描
複製源
貼上源
@@ -185,7 +185,7 @@
分享
軟體分享
跟隨系統
- 添加
+ 新增
匯入書源
本機匯入
網路匯入
@@ -733,7 +733,6 @@
取代規則(replaceRegex)
分組名稱
備註內容
- E-Ink模式下只有白紙黑字,不顯示其它背景
預設啟用取代淨化
新加入書架的書是否啟用取代淨化
選擇復原文件
@@ -757,16 +756,16 @@
總閱讀時間
全不選
刪除所有
- 导入
- 导出
- 保存主题配置
- 保存白天主题配置以共调用和分享
- 保存夜间主题配置以共调用和分享
- 主题列表
- 使用保存主题,导入,分享主题
- 切換默認主題
+ 匯入
+ 匯出
+ 儲存主題配置
+ 儲存白天主題配置以供調用和分享
+ 儲存夜間主題配置以供調用和分享
+ 主題列表
+ 使用儲存主題,匯入,分享主題
+ 切換預設主題
分享選中書源
時間排序
- 全文搜索
+ 全文搜尋
diff --git a/app/src/main/res/values-zh/strings.xml b/app/src/main/res/values-zh/strings.xml
index e3cc6c436..d9a62c811 100644
--- a/app/src/main/res/values-zh/strings.xml
+++ b/app/src/main/res/values-zh/strings.xml
@@ -738,7 +738,6 @@
替换规则(replaceRegex)
分组名称
备注内容
- E-Ink模式下只有白纸黑字,不显示其它背景
默认启用替换净化
新加入书架的书是否启用替换净化
选择恢复文件
diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml
index b7fe8a37f..39b957bf1 100644
--- a/app/src/main/res/values/strings.xml
+++ b/app/src/main/res/values/strings.xml
@@ -323,8 +323,8 @@
Auto scroll
Stop Auto scroll
Auto scroll speed
- Book infomation
- Edit book infomation
+ Book information
+ Edit book information
Use Bookshelf as start page
Auto jump to Recent list
Replacement object. Book name or source url is available
@@ -739,7 +739,6 @@
Reading interface settings
Group name
Remarks section
- Only white page black text in E-Ink mode
Enable replace rule by default
For new added books
Select restore file