Skip to content

Commit 5c2f39a

Browse files
committed
refactor: use enum state instead of index to switch UI in InputView
1 parent 21429cb commit 5c2f39a

File tree

4 files changed

+23
-12
lines changed

4 files changed

+23
-12
lines changed

app/src/main/java/com/osfans/trime/ime/bar/QuickBar.kt

+8-3
Original file line numberDiff line numberDiff line change
@@ -42,9 +42,14 @@ class QuickBar : KoinComponent {
4242
TabBarBinding.inflate(LayoutInflater.from(context))
4343
}
4444

45-
fun switchUiByIndex(index: Int) {
46-
if (view.displayedChild == index) return
47-
view.displayedChild = index
45+
enum class State {
46+
Candidate,
47+
Tab,
48+
}
49+
50+
fun switchUiByState(state: State) {
51+
if (view.displayedChild == state.ordinal) return
52+
view.displayedChild = state.ordinal
4853
}
4954

5055
val view by lazy {

app/src/main/java/com/osfans/trime/ime/core/InputView.kt

+3-3
Original file line numberDiff line numberDiff line change
@@ -81,9 +81,9 @@ class InputView(
8181
)
8282
}
8383

84-
fun switchUiByIndex(index: Int) {
85-
keyboardWindow.switchUiByIndex(index)
86-
quickBar.switchUiByIndex(index)
84+
fun switchUiByState(state: KeyboardWindow.State) {
85+
keyboardWindow.switchUiByState(state)
86+
quickBar.switchUiByState(QuickBar.State.entries[state.ordinal])
8787
}
8888

8989
private var showingDialog: Dialog? = null

app/src/main/java/com/osfans/trime/ime/core/Trime.java

+4-3
Original file line numberDiff line numberDiff line change
@@ -66,6 +66,7 @@
6666
import com.osfans.trime.ime.keyboard.Keyboard;
6767
import com.osfans.trime.ime.keyboard.KeyboardSwitcher;
6868
import com.osfans.trime.ime.keyboard.KeyboardView;
69+
import com.osfans.trime.ime.keyboard.KeyboardWindow;
6970
import com.osfans.trime.ime.lifecycle.LifecycleInputMethodService;
7071
import com.osfans.trime.ime.symbol.LiquidKeyboard;
7172
import com.osfans.trime.ime.symbol.TabManager;
@@ -316,7 +317,7 @@ public void inputSymbol(final String text) {
316317
public void selectLiquidKeyboard(final int tabIndex) {
317318
if (inputView == null) return;
318319
if (tabIndex >= 0) {
319-
inputView.switchUiByIndex(1);
320+
inputView.switchUiByState(KeyboardWindow.State.Symbol);
320321

321322
symbolKeyboardType = liquidKeyboard.select(tabIndex);
322323
tabView.updateTabWidth();
@@ -328,7 +329,7 @@ public void selectLiquidKeyboard(final int tabIndex) {
328329
symbolKeyboardType = SymbolKeyboardType.NO_KEY;
329330
// 设置液体键盘处于隐藏状态
330331
TabManager.get().setTabExited();
331-
inputView.switchUiByIndex(0);
332+
inputView.switchUiByState(KeyboardWindow.State.Main);
332333
updateComposing();
333334
}
334335
}
@@ -440,7 +441,7 @@ public void resetCandidate() {
440441
/** 重置鍵盤、候選條、狀態欄等 !!注意,如果其中調用Rime.setOption,切換方案會卡住 */
441442
private void reset() {
442443
if (inputView == null) return;
443-
inputView.switchUiByIndex(0);
444+
inputView.switchUiByState(KeyboardWindow.State.Main);
444445
loadConfig();
445446
updateDarkMode();
446447
final Theme theme = Theme.get(darkMode);

app/src/main/java/com/osfans/trime/ime/keyboard/KeyboardWindow.kt

+8-3
Original file line numberDiff line numberDiff line change
@@ -32,9 +32,14 @@ class KeyboardWindow : KoinComponent {
3232
SymbolInputLayoutBinding.inflate(LayoutInflater.from(context))
3333
}
3434

35-
fun switchUiByIndex(index: Int) {
36-
if (view.displayedChild == index) return
37-
view.displayedChild = index
35+
enum class State {
36+
Main,
37+
Symbol,
38+
}
39+
40+
fun switchUiByState(state: State) {
41+
if (view.displayedChild == state.ordinal) return
42+
view.displayedChild = state.ordinal
3843
}
3944

4045
val view by lazy {

0 commit comments

Comments
 (0)