Convert SearchLayout to view binding
This commit is contained in:
1 parent
46cd1013fb
commit
d1f914c2fa
1 file changed
+43
-55
@@ -25,18 +25,13 @@ import android.util.AttributeSet
|
||||
import android.view.LayoutInflater
|
||||
import android.view.View
|
||||
import android.view.ViewGroup
|
||||
import android.widget.CheckBox
|
||||
import android.widget.CompoundButton
|
||||
import android.widget.FrameLayout
|
||||
import android.widget.ImageView
|
||||
import android.widget.TextView
|
||||
import androidx.annotation.IntDef
|
||||
import androidx.core.content.edit
|
||||
import androidx.core.view.forEach
|
||||
import androidx.recyclerview.widget.DefaultItemAnimator
|
||||
import androidx.recyclerview.widget.LinearLayoutManager
|
||||
import com.google.android.material.chip.Chip
|
||||
import com.google.android.material.chip.ChipGroup
|
||||
import com.google.android.material.tabs.TabLayout
|
||||
import com.google.android.material.tabs.TabLayout.OnTabSelectedListener
|
||||
import com.hippo.ehviewer.R
|
||||
@@ -44,6 +39,9 @@ import com.hippo.ehviewer.Settings
|
||||
import com.hippo.ehviewer.client.EhUtils
|
||||
import com.hippo.ehviewer.client.data.ListUrlBuilder
|
||||
import com.hippo.ehviewer.client.exception.EhException
|
||||
import com.hippo.ehviewer.databinding.SearchAdvanceBinding
|
||||
import com.hippo.ehviewer.databinding.SearchCategoryBinding
|
||||
import com.hippo.ehviewer.databinding.SearchNormalBinding
|
||||
import com.hippo.ehviewer.yorozuya.NumberUtils
|
||||
import com.hippo.ehviewer.yorozuya.ViewUtils
|
||||
|
||||
@@ -59,17 +57,12 @@ class SearchLayout @JvmOverloads constructor(
|
||||
@SearchMode
|
||||
private var mSearchMode = SEARCH_MODE_NORMAL
|
||||
private var mEnableAdvance = false
|
||||
private var mCategoryGroup: ChipGroup
|
||||
private var mNormalView: View
|
||||
private var mNormalSearchMode: RadioGridGroup
|
||||
private var mNormalSearchModeHelp: ImageView
|
||||
private var mEnableAdvanceSwitch: CheckBox
|
||||
private var mAdvanceView: View
|
||||
private var mTableAdvanceSearch: AdvanceSearchTable
|
||||
private var mImageView: ImageSearchLayout
|
||||
private var mActionView: View
|
||||
private var mAction: TabLayout
|
||||
private var mAdapter: SearchAdapter
|
||||
private val binding: SearchNormalBinding
|
||||
private val advanceBinding: SearchAdvanceBinding
|
||||
private val mImageView: ImageSearchLayout
|
||||
private val mActionView: View
|
||||
private val mAction: TabLayout
|
||||
private val mAdapter: SearchAdapter
|
||||
private var mHelper: Helper? = null
|
||||
private val mSharePref: SharedPreferences = Settings.prefs
|
||||
private val mInflater: LayoutInflater
|
||||
@@ -97,9 +90,8 @@ class SearchLayout @JvmOverloads constructor(
|
||||
addItemDecoration(decoration)
|
||||
decoration.applyPaddings(this)
|
||||
// Create normal view
|
||||
mNormalView = mInflater.inflate(R.layout.search_normal, null)
|
||||
binding = SearchNormalBinding.inflate(mInflater)
|
||||
val mCategoryStored = mSharePref.getInt(SEARCH_CATEGORY_PREF, EhUtils.ALL_CATEGORY)
|
||||
mCategoryGroup = mNormalView.findViewById(R.id.search_category_chipgroup)
|
||||
for (mPair in mCategoryTable) {
|
||||
val mChip = inflate(context, R.layout.filter_chip, null) as IdentifiedChip
|
||||
mChip.isCheckable = true
|
||||
@@ -108,33 +100,29 @@ class SearchLayout @JvmOverloads constructor(
|
||||
mChip.isChecked = NumberUtils.int2boolean(mPair.first and mCategoryStored)
|
||||
mChip.setOnLongClickListener {
|
||||
if (mChip.isChecked) {
|
||||
mCategoryGroup.forEach {
|
||||
binding.searchCategoryChipgroup.forEach {
|
||||
(it as IdentifiedChip).isChecked = true
|
||||
}
|
||||
mChip.isChecked = false
|
||||
} else {
|
||||
mCategoryGroup.clearCheck()
|
||||
binding.searchCategoryChipgroup.clearCheck()
|
||||
mChip.isChecked = true
|
||||
}
|
||||
true
|
||||
}
|
||||
mCategoryGroup.addView(mChip)
|
||||
binding.searchCategoryChipgroup.addView(mChip)
|
||||
}
|
||||
mCategoryGroup.setOnCheckedStateChangeListener { group, checkedIds ->
|
||||
binding.searchCategoryChipgroup.setOnCheckedStateChangeListener { group, checkedIds ->
|
||||
var mCategory = 0
|
||||
for (index in checkedIds) {
|
||||
mCategory = mCategory or group.findViewById<IdentifiedChip>(index).idt
|
||||
}
|
||||
mSharePref.edit { putInt(SEARCH_CATEGORY_PREF, mCategory) }
|
||||
}
|
||||
mNormalSearchMode = mNormalView.findViewById(R.id.normal_search_mode)
|
||||
mNormalSearchModeHelp = mNormalView.findViewById(R.id.normal_search_mode_help)
|
||||
mEnableAdvanceSwitch = mNormalView.findViewById(R.id.search_enable_advance)
|
||||
mNormalSearchModeHelp.setOnClickListener(this)
|
||||
mEnableAdvanceSwitch.setOnCheckedChangeListener(this)
|
||||
binding.normalSearchModeHelp.setOnClickListener(this)
|
||||
binding.searchEnableAdvance.setOnCheckedChangeListener(this)
|
||||
// Create advance view
|
||||
mAdvanceView = mInflater.inflate(R.layout.search_advance, null)
|
||||
mTableAdvanceSearch = mAdvanceView.findViewById(R.id.search_advance_search_table)
|
||||
advanceBinding = SearchAdvanceBinding.inflate(mInflater)
|
||||
// Create image view
|
||||
mImageView = mInflater.inflate(R.layout.search_image, null) as ImageSearchLayout
|
||||
// Create action view
|
||||
@@ -156,11 +144,11 @@ class SearchLayout @JvmOverloads constructor(
|
||||
}
|
||||
|
||||
fun setNormalSearchMode(id: Int) {
|
||||
mNormalSearchMode.check(id)
|
||||
binding.normalSearchMode.check(id)
|
||||
}
|
||||
|
||||
fun setCategory(category: Int) {
|
||||
mCategoryGroup.forEach {
|
||||
binding.searchCategoryChipgroup.forEach {
|
||||
(it as IdentifiedChip).apply {
|
||||
isChecked = idt and category != 0
|
||||
}
|
||||
@@ -168,7 +156,7 @@ class SearchLayout @JvmOverloads constructor(
|
||||
}
|
||||
|
||||
override fun onCheckedChanged(buttonView: CompoundButton, isChecked: Boolean) {
|
||||
if (buttonView === mEnableAdvanceSwitch) {
|
||||
if (buttonView === binding.searchEnableAdvance) {
|
||||
post {
|
||||
mEnableAdvance = isChecked
|
||||
if (mSearchMode == SEARCH_MODE_NORMAL) {
|
||||
@@ -191,7 +179,7 @@ class SearchLayout @JvmOverloads constructor(
|
||||
urlBuilder.reset()
|
||||
when (mSearchMode) {
|
||||
SEARCH_MODE_NORMAL -> {
|
||||
when (mNormalSearchMode.checkedRadioButtonId) {
|
||||
when (binding.normalSearchMode.checkedRadioButtonId) {
|
||||
R.id.search_subscription_search -> {
|
||||
urlBuilder.mode = ListUrlBuilder.MODE_SUBSCRIPTION
|
||||
}
|
||||
@@ -214,10 +202,10 @@ class SearchLayout @JvmOverloads constructor(
|
||||
0,
|
||||
)
|
||||
if (mEnableAdvance) {
|
||||
urlBuilder.advanceSearch = mTableAdvanceSearch.advanceSearch
|
||||
urlBuilder.minRating = mTableAdvanceSearch.minRating
|
||||
val pageFrom = mTableAdvanceSearch.pageFrom
|
||||
val pageTo = mTableAdvanceSearch.pageTo
|
||||
urlBuilder.advanceSearch = advanceBinding.searchAdvanceSearchTable.advanceSearch
|
||||
urlBuilder.minRating = advanceBinding.searchAdvanceSearchTable.minRating
|
||||
val pageFrom = advanceBinding.searchAdvanceSearchTable.pageFrom
|
||||
val pageTo = advanceBinding.searchAdvanceSearchTable.pageTo
|
||||
if (pageTo != -1 && pageTo < 10) {
|
||||
throw EhException(context.getString(R.string.search_sp_err1))
|
||||
} else if (pageFrom != -1 && pageTo != -1 && pageTo - pageFrom < 20) {
|
||||
@@ -236,7 +224,7 @@ class SearchLayout @JvmOverloads constructor(
|
||||
}
|
||||
|
||||
override fun onClick(v: View) {
|
||||
if (mNormalSearchModeHelp === v) {
|
||||
if (binding.normalSearchModeHelp === v) {
|
||||
BaseDialogBuilder(context)
|
||||
.setMessage(R.string.search_tip)
|
||||
.show()
|
||||
@@ -302,25 +290,25 @@ class SearchLayout @JvmOverloads constructor(
|
||||
view = mActionView
|
||||
} else {
|
||||
view = mInflater.inflate(R.layout.search_category, parent, false)
|
||||
val title = view.findViewById<TextView>(R.id.category_title)
|
||||
val content = view.findViewById<FrameLayout>(R.id.category_content)
|
||||
when (viewType) {
|
||||
ITEM_TYPE_NORMAL -> {
|
||||
title.setText(R.string.search_normal)
|
||||
ViewUtils.removeFromParent(mNormalView)
|
||||
content.addView(mNormalView)
|
||||
}
|
||||
SearchCategoryBinding.bind(view).run {
|
||||
when (viewType) {
|
||||
ITEM_TYPE_NORMAL -> {
|
||||
categoryTitle.setText(R.string.search_normal)
|
||||
ViewUtils.removeFromParent(binding.root)
|
||||
categoryContent.addView(binding.root)
|
||||
}
|
||||
|
||||
ITEM_TYPE_NORMAL_ADVANCE -> {
|
||||
title.setText(R.string.search_advance)
|
||||
ViewUtils.removeFromParent(mAdvanceView)
|
||||
content.addView(mAdvanceView)
|
||||
}
|
||||
ITEM_TYPE_NORMAL_ADVANCE -> {
|
||||
categoryTitle.setText(R.string.search_advance)
|
||||
ViewUtils.removeFromParent(advanceBinding.root)
|
||||
categoryContent.addView(advanceBinding.root)
|
||||
}
|
||||
|
||||
ITEM_TYPE_IMAGE -> {
|
||||
title.setText(R.string.search_image)
|
||||
ViewUtils.removeFromParent(mImageView)
|
||||
content.addView(mImageView)
|
||||
ITEM_TYPE_IMAGE -> {
|
||||
categoryTitle.setText(R.string.search_image)
|
||||
ViewUtils.removeFromParent(mImageView)
|
||||
categoryContent.addView(mImageView)
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
Reference in new issue
Block a user