|
@@ -10,7 +10,6 @@ import android.view.animation.Animation
|
|
|
import android.widget.FrameLayout
|
|
import android.widget.FrameLayout
|
|
|
import androidx.core.view.isVisible
|
|
import androidx.core.view.isVisible
|
|
|
import io.legado.app.R
|
|
import io.legado.app.R
|
|
|
-import io.legado.app.constant.EventBus
|
|
|
|
|
import io.legado.app.databinding.ViewSearchMenuBinding
|
|
import io.legado.app.databinding.ViewSearchMenuBinding
|
|
|
import io.legado.app.help.*
|
|
import io.legado.app.help.*
|
|
|
import io.legado.app.lib.theme.*
|
|
import io.legado.app.lib.theme.*
|
|
@@ -29,12 +28,15 @@ class SearchMenu @JvmOverloads constructor(
|
|
|
private val callBack: CallBack get() = activity as CallBack
|
|
private val callBack: CallBack get() = activity as CallBack
|
|
|
private val binding = ViewSearchMenuBinding.inflate(LayoutInflater.from(context), this, true)
|
|
private val binding = ViewSearchMenuBinding.inflate(LayoutInflater.from(context), this, true)
|
|
|
|
|
|
|
|
- private val menuBottomIn: Animation = AnimationUtilsSupport.loadAnimation(context, R.anim.anim_readbook_bottom_in)
|
|
|
|
|
- private val menuBottomOut: Animation = AnimationUtilsSupport.loadAnimation(context, R.anim.anim_readbook_bottom_out)
|
|
|
|
|
|
|
+ private val menuBottomIn: Animation =
|
|
|
|
|
+ AnimationUtilsSupport.loadAnimation(context, R.anim.anim_readbook_bottom_in)
|
|
|
|
|
+ private val menuBottomOut: Animation =
|
|
|
|
|
+ AnimationUtilsSupport.loadAnimation(context, R.anim.anim_readbook_bottom_out)
|
|
|
private val bgColor: Int = context.bottomBackground
|
|
private val bgColor: Int = context.bottomBackground
|
|
|
private val textColor: Int = context.getPrimaryTextColor(ColorUtils.isColorLight(bgColor))
|
|
private val textColor: Int = context.getPrimaryTextColor(ColorUtils.isColorLight(bgColor))
|
|
|
private val bottomBackgroundList: ColorStateList =
|
|
private val bottomBackgroundList: ColorStateList =
|
|
|
- Selector.colorBuild().setDefaultColor(bgColor).setPressedColor(ColorUtils.darkenColor(bgColor)).create()
|
|
|
|
|
|
|
+ Selector.colorBuild().setDefaultColor(bgColor)
|
|
|
|
|
+ .setPressedColor(ColorUtils.darkenColor(bgColor)).create()
|
|
|
private var onMenuOutEnd: (() -> Unit)? = null
|
|
private var onMenuOutEnd: (() -> Unit)? = null
|
|
|
|
|
|
|
|
private val searchResultList: MutableList<SearchResult> = mutableListOf()
|
|
private val searchResultList: MutableList<SearchResult> = mutableListOf()
|
|
@@ -43,26 +45,21 @@ class SearchMenu @JvmOverloads constructor(
|
|
|
private val hasSearchResult: Boolean
|
|
private val hasSearchResult: Boolean
|
|
|
get() = searchResultList.isNotEmpty()
|
|
get() = searchResultList.isNotEmpty()
|
|
|
val selectedSearchResult: SearchResult?
|
|
val selectedSearchResult: SearchResult?
|
|
|
- get() = if (searchResultList.isNotEmpty()) searchResultList[currentSearchResultIndex] else null
|
|
|
|
|
- val previousSearchResult: SearchResult
|
|
|
|
|
- get() = searchResultList[lastSearchResultIndex]
|
|
|
|
|
|
|
+ get() = searchResultList.getOrNull(currentSearchResultIndex)
|
|
|
|
|
+ val previousSearchResult: SearchResult?
|
|
|
|
|
+ get() = searchResultList.getOrNull(lastSearchResultIndex)
|
|
|
|
|
|
|
|
init {
|
|
init {
|
|
|
initAnimation()
|
|
initAnimation()
|
|
|
initView()
|
|
initView()
|
|
|
bindEvent()
|
|
bindEvent()
|
|
|
updateSearchInfo()
|
|
updateSearchInfo()
|
|
|
- observeSearchResultList()
|
|
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
- private fun observeSearchResultList() {
|
|
|
|
|
- activity?.let { owner ->
|
|
|
|
|
- eventObservable<List<SearchResult>>(EventBus.SEARCH_RESULT).observe(owner, {
|
|
|
|
|
- searchResultList.clear()
|
|
|
|
|
- searchResultList.addAll(it)
|
|
|
|
|
- updateSearchInfo()
|
|
|
|
|
- })
|
|
|
|
|
- }
|
|
|
|
|
|
|
+ fun upSearchResultList(resultList: List<SearchResult>) {
|
|
|
|
|
+ searchResultList.clear()
|
|
|
|
|
+ searchResultList.addAll(resultList)
|
|
|
|
|
+ updateSearchInfo()
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
private fun initView() = binding.run {
|
|
private fun initView() = binding.run {
|
|
@@ -104,18 +101,20 @@ class SearchMenu @JvmOverloads constructor(
|
|
|
}
|
|
}
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
|
|
+ @SuppressLint("SetTextI18n")
|
|
|
fun updateSearchInfo() {
|
|
fun updateSearchInfo() {
|
|
|
ReadBook.curTextChapter?.let {
|
|
ReadBook.curTextChapter?.let {
|
|
|
- binding.tvCurrentSearchInfo.text = context.getString(R.string.search_content_size) + ": ${searchResultList.size} / 当前章节: ${it.title}"
|
|
|
|
|
|
|
+ binding.tvCurrentSearchInfo.text =
|
|
|
|
|
+ """${context.getString(R.string.search_content_size)}: ${searchResultList.size} / 当前章节: ${it.title}"""
|
|
|
}
|
|
}
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
fun updateSearchResultIndex(updateIndex: Int) {
|
|
fun updateSearchResultIndex(updateIndex: Int) {
|
|
|
lastSearchResultIndex = currentSearchResultIndex
|
|
lastSearchResultIndex = currentSearchResultIndex
|
|
|
currentSearchResultIndex = when {
|
|
currentSearchResultIndex = when {
|
|
|
- updateIndex < 0 -> 0
|
|
|
|
|
|
|
+ updateIndex < 0 -> 0
|
|
|
updateIndex >= searchResultList.size -> searchResultList.size - 1
|
|
updateIndex >= searchResultList.size -> searchResultList.size - 1
|
|
|
- else -> updateIndex
|
|
|
|
|
|
|
+ else -> updateIndex
|
|
|
}
|
|
}
|
|
|
}
|
|
}
|
|
|
|
|
|
|
@@ -143,13 +142,6 @@ class SearchMenu @JvmOverloads constructor(
|
|
|
}
|
|
}
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
- //设置
|
|
|
|
|
-// llSetting.setOnClickListener {
|
|
|
|
|
-// runMenuOut {
|
|
|
|
|
-// callBack.showSearchSetting()
|
|
|
|
|
-// }
|
|
|
|
|
-// }
|
|
|
|
|
-
|
|
|
|
|
fabLeft.setOnClickListener {
|
|
fabLeft.setOnClickListener {
|
|
|
updateSearchResultIndex(currentSearchResultIndex - 1)
|
|
updateSearchResultIndex(currentSearchResultIndex - 1)
|
|
|
callBack.navigateToSearch(searchResultList[currentSearchResultIndex])
|
|
callBack.navigateToSearch(searchResultList[currentSearchResultIndex])
|
|
@@ -192,8 +184,8 @@ class SearchMenu @JvmOverloads constructor(
|
|
|
root.padding = 0
|
|
root.padding = 0
|
|
|
when (activity?.navigationBarGravity) {
|
|
when (activity?.navigationBarGravity) {
|
|
|
Gravity.BOTTOM -> root.bottomPadding = navigationBarHeight
|
|
Gravity.BOTTOM -> root.bottomPadding = navigationBarHeight
|
|
|
- Gravity.LEFT -> root.leftPadding = navigationBarHeight
|
|
|
|
|
- Gravity.RIGHT -> root.rightPadding = navigationBarHeight
|
|
|
|
|
|
|
+ Gravity.LEFT -> root.leftPadding = navigationBarHeight
|
|
|
|
|
+ Gravity.RIGHT -> root.rightPadding = navigationBarHeight
|
|
|
}
|
|
}
|
|
|
}
|
|
}
|
|
|
callBack.upSystemUiVisibility()
|
|
callBack.upSystemUiVisibility()
|