Skip to content

Commit b5ee296

Browse files
committed
refactor: use rime dedicate api to change candidate page
1 parent 2276540 commit b5ee296

File tree

4 files changed

+23
-6
lines changed

4 files changed

+23
-6
lines changed

app/src/main/java/com/osfans/trime/core/Rime.kt

+8
Original file line numberDiff line numberDiff line change
@@ -127,6 +127,11 @@ class Rime :
127127
deleteRimeCandidateOnCurrentPage(idx).also { if (it) requireResponse() }
128128
}
129129

130+
override suspend fun changeCandidatePage(backward: Boolean): Boolean =
131+
withRimeContext {
132+
changeRimeCandidatePage(backward).also { if (it) requireResponse() }
133+
}
134+
130135
override suspend fun moveCursorPos(position: Int) =
131136
withRimeContext {
132137
setRimeCaretPos(position)
@@ -373,6 +378,9 @@ class Rime :
373378
@JvmStatic
374379
external fun forgetRimeCandidate(index: Int): Boolean
375380

381+
@JvmStatic
382+
external fun changeRimeCandidatePage(backward: Boolean): Boolean
383+
376384
@JvmStatic
377385
external fun getAvailableRimeSchemaList(): Array<SchemaItem>
378386

app/src/main/java/com/osfans/trime/core/RimeApi.kt

+2
Original file line numberDiff line numberDiff line change
@@ -41,6 +41,8 @@ interface RimeApi {
4141

4242
suspend fun deletedPagedCandidate(idx: Int): Boolean
4343

44+
suspend fun changeCandidatePage(backward: Boolean): Boolean
45+
4446
suspend fun moveCursorPos(position: Int)
4547

4648
suspend fun availableSchemata(): Array<SchemaItem>

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

+2-6
Original file line numberDiff line numberDiff line change
@@ -6,10 +6,8 @@
66
package com.osfans.trime.ime.composition
77

88
import android.annotation.SuppressLint
9-
import android.view.KeyEvent
109
import android.view.ViewGroup
1110
import androidx.constraintlayout.widget.ConstraintLayout
12-
import com.osfans.trime.core.RimeKeyMapping
1311
import com.osfans.trime.core.RimeProto
1412
import com.osfans.trime.daemon.RimeSession
1513
import com.osfans.trime.daemon.launchOnReady
@@ -57,12 +55,10 @@ class CandidatesView(
5755
rime.launchOnReady { it.selectPagedCandidate(position) }
5856
}
5957
PagedCandidatesUi.ClickType.PREV_PAGE -> {
60-
val value = RimeKeyMapping.keyCodeToVal(KeyEvent.KEYCODE_PAGE_UP)
61-
rime.launchOnReady { it.processKey(value, 0u) }
58+
rime.launchOnReady { it.changeCandidatePage(true) }
6259
}
6360
PagedCandidatesUi.ClickType.NEXT_PAGE -> {
64-
val value = RimeKeyMapping.keyCodeToVal(KeyEvent.KEYCODE_PAGE_DOWN)
65-
rime.launchOnReady { it.processKey(value, 0u) }
61+
rime.launchOnReady { it.changeCandidatePage(false) }
6662
}
6763
}
6864
}

app/src/main/jni/librime_jni/rime_jni.cc

+11
Original file line numberDiff line numberDiff line change
@@ -118,6 +118,10 @@ class Rime {
118118
return rime->delete_candidate(session, index);
119119
}
120120

121+
bool changePage(bool backward) {
122+
return rime->change_page(session, backward);
123+
}
124+
121125
using CandidateItem = std::pair<std::string, std::string>;
122126
using CandidateList = std::vector<CandidateItem>;
123127

@@ -415,6 +419,13 @@ Java_com_osfans_trime_core_Rime_forgetRimeCandidate(JNIEnv *env,
415419
return Rime::Instance().forgetCandidate(index);
416420
}
417421

422+
extern "C" JNIEXPORT jboolean JNICALL
423+
Java_com_osfans_trime_core_Rime_changeRimeCandidatePage(JNIEnv *env,
424+
jclass clazz,
425+
jboolean backward) {
426+
return Rime::Instance().changePage(backward);
427+
}
428+
418429
extern "C" JNIEXPORT jobjectArray JNICALL
419430
Java_com_osfans_trime_core_Rime_getRimeCandidates(JNIEnv *env, jclass clazz,
420431
jint start_index,

0 commit comments

Comments
 (0)