Skip to content

Commit d66eaa6

Browse files
committed
refactor: simplify the setup of PageCandidatesUi's listeners
1 parent 34d31d4 commit d66eaa6

File tree

2 files changed

+14
-31
lines changed

2 files changed

+14
-31
lines changed

app/src/main/java/com/osfans/trime/ime/candidates/popup/PagedCandidatesUi.kt

+7-16
Original file line numberDiff line numberDiff line change
@@ -23,6 +23,9 @@ import splitties.views.dsl.recyclerview.recyclerView
2323
class PagedCandidatesUi(
2424
override val ctx: Context,
2525
val theme: Theme,
26+
private val onCandidateClick: (Int) -> Unit,
27+
private val onPrevPage: () -> Unit,
28+
private val onNextPage: () -> Unit,
2629
) : Ui {
2730
private var menu = RimeProto.Context.Menu()
2831

@@ -40,19 +43,7 @@ class PagedCandidatesUi(
4043
) : UiHolder(ui)
4144
}
4245

43-
enum class ClickType {
44-
CANDIDATE,
45-
PREV_PAGE,
46-
NEXT_PAGE,
47-
}
48-
49-
private var clickListener: ((type: ClickType, position: Int) -> Unit)? = null
50-
51-
fun setOnClickListener(listener: (type: ClickType, position: Int) -> Unit) {
52-
clickListener = listener
53-
}
54-
55-
val candidatesAdapter =
46+
private val candidatesAdapter =
5647
object : BaseQuickAdapter<RimeProto.Candidate, UiHolder>() {
5748
override fun getItemCount(items: List<RimeProto.Candidate>) =
5849
items.size + (if (menu.pageNumber != 0 || !menu.isLastPage) 1 else 0)
@@ -89,7 +80,7 @@ class PagedCandidatesUi(
8980
val candidate = item ?: return
9081
holder.ui.update(candidate, position == menu.highlightedCandidateIndex)
9182
holder.ui.root.setOnClickListener {
92-
clickListener?.invoke(ClickType.CANDIDATE, position)
83+
onCandidateClick.invoke(position)
9384
}
9485
}
9586
is UiHolder.Pagination -> {
@@ -99,10 +90,10 @@ class PagedCandidatesUi(
9990
alignSelf = if (isHorizontal) AlignItems.CENTER else AlignItems.STRETCH
10091
}
10192
holder.ui.prevIcon.setOnClickListener {
102-
clickListener?.invoke(ClickType.PREV_PAGE, menu.pageNumber)
93+
onPrevPage.invoke()
10394
}
10495
holder.ui.nextIcon.setOnClickListener {
105-
clickListener?.invoke(ClickType.NEXT_PAGE, menu.pageNumber)
96+
onNextPage.invoke()
10697
}
10798
}
10899
}

app/src/main/java/com/osfans/trime/ime/composition/CandidatesView.kt

+7-15
Original file line numberDiff line numberDiff line change
@@ -82,21 +82,13 @@ class CandidatesView(
8282
}
8383

8484
private val candidatesUi =
85-
PagedCandidatesUi(ctx, theme).apply {
86-
setOnClickListener { type, position ->
87-
when (type) {
88-
PagedCandidatesUi.ClickType.CANDIDATE -> {
89-
rime.launchOnReady { it.selectPagedCandidate(position) }
90-
}
91-
PagedCandidatesUi.ClickType.PREV_PAGE -> {
92-
rime.launchOnReady { it.changeCandidatePage(true) }
93-
}
94-
PagedCandidatesUi.ClickType.NEXT_PAGE -> {
95-
rime.launchOnReady { it.changeCandidatePage(false) }
96-
}
97-
}
98-
}
99-
}
85+
PagedCandidatesUi(
86+
ctx,
87+
theme,
88+
onCandidateClick = { index -> rime.launchOnReady { it.selectPagedCandidate(index) } },
89+
onPrevPage = { rime.launchOnReady { it.changeCandidatePage(true) } },
90+
onNextPage = { rime.launchOnReady { it.changeCandidatePage(false) } },
91+
)
10092

10193
private val touchEventReceiverWindow = TouchEventReceiverWindow(this)
10294

0 commit comments

Comments
 (0)