Skip to content

Commit 95272b0

Browse files
committed
refactor: use native apis to get stuffs from system's resource instance
1 parent 99dc458 commit 95272b0

File tree

6 files changed

+40
-32
lines changed

6 files changed

+40
-32
lines changed

app/src/main/java/com/osfans/trime/data/AppPrefs.kt

Lines changed: 10 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,6 @@ import com.osfans.trime.R
1111
import com.osfans.trime.data.base.DataManager
1212
import com.osfans.trime.ime.enums.FullscreenMode
1313
import com.osfans.trime.ime.enums.InlinePreeditMode
14-
import com.osfans.trime.ime.keyboard.KeyboardPrefs
1514
import com.osfans.trime.util.appContext
1615
import java.lang.ref.WeakReference
1716
import java.util.Calendar
@@ -201,8 +200,16 @@ class AppPrefs(
201200
var switchArrowEnabled: Boolean = false
202201
get() = prefs.getPref(SWITCH_ARROW_ENABLED, true)
203202
private set
204-
val splitOption: String
205-
get() = prefs.getPref(SPLIT, KeyboardPrefs.SPLIT_OPTION_NEVER)
203+
204+
enum class SplitOption {
205+
AUTO,
206+
LANDSCAPE,
207+
NEVER,
208+
ALWAYS,
209+
}
210+
211+
val splitOption: SplitOption
212+
get() = SplitOption.valueOf(prefs.getPref(SPLIT, SplitOption.NEVER.name))
206213
val splitSpacePercent: Int
207214
get() = prefs.getPref(SPLIT_SPACE_PERCENT, 100)
208215
var candidatePageSize: Int = 0

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

Lines changed: 9 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -6,17 +6,18 @@ package com.osfans.trime.ime.keyboard
66

77
import android.content.res.Configuration
88
import android.view.KeyEvent
9-
import com.blankj.utilcode.util.ScreenUtils
109
import com.osfans.trime.data.AppPrefs.Companion.defaultInstance
1110
import com.osfans.trime.data.theme.EventManager
1211
import com.osfans.trime.data.theme.Theme
1312
import com.osfans.trime.data.theme.ThemeManager
13+
import com.osfans.trime.ime.keyboard.KeyboardPrefs.isLandscapeMode
1414
import com.osfans.trime.util.CollectionUtils.obtainBoolean
1515
import com.osfans.trime.util.CollectionUtils.obtainFloat
1616
import com.osfans.trime.util.CollectionUtils.obtainInt
1717
import com.osfans.trime.util.CollectionUtils.obtainString
1818
import com.osfans.trime.util.appContext
1919
import com.osfans.trime.util.config.ConfigMap
20+
import com.osfans.trime.util.isLandscape
2021
import com.osfans.trime.util.sp
2122
import splitties.dimensions.dp
2223
import timber.log.Timber
@@ -222,7 +223,7 @@ class Keyboard() {
222223
keyboardHeight = getKeyboardHeight(theme, keyboardConfig)
223224
val keyboardKeyWidth = obtainFloat(keyboardConfig, "width", 0f)
224225
val maxColumns = if (columns == -1) Int.MAX_VALUE else columns
225-
val isSplit = KeyboardPrefs().isLandscapeMode() && isLandscapeSplit
226+
val isSplit = appContext.isLandscapeMode() && isLandscapeSplit
226227
val (rowWidthTotalWeight, oneWeightWidthPx, multiplier, scaledHeight, scaledVerticalGap) =
227228
KeyboardSizeCalculator(
228229
name,
@@ -434,7 +435,7 @@ class Keyboard() {
434435

435436
private fun getKeyboardHeightFromKeyboardConfig(keyboardConfig: Map<String, Any?>?): Int {
436437
var mkeyboardHeight = appContext.sp(obtainFloat(keyboardConfig, "keyboard_height", 0f)).toInt()
437-
if (ScreenUtils.isLandscape()) {
438+
if (appContext.resources.configuration.isLandscape()) {
438439
val mkeyBoardHeightLand =
439440
appContext.sp(
440441
obtainFloat(keyboardConfig, "keyboard_height_land", 0f),
@@ -642,13 +643,14 @@ class Keyboard() {
642643

643644
val keyboardSidePaddingPx =
644645
appContext.dp(
645-
when (appContext.resources.configuration.orientation) {
646-
Configuration.ORIENTATION_LANDSCAPE -> keyboardSidePaddingLandscape
647-
else -> keyboardSidePadding
646+
if (appContext.resources.configuration.isLandscape()) {
647+
keyboardSidePaddingLandscape
648+
} else {
649+
keyboardSidePadding
648650
},
649651
)
650652

651-
mDisplayWidth = ScreenUtils.getAppScreenWidth() - 2 * keyboardSidePaddingPx
653+
mDisplayWidth = appContext.resources.displayMetrics.widthPixels - 2 * keyboardSidePaddingPx
652654

653655
// Height of the screen
654656
// final int mDisplayHeight = dm.heightPixels;

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

Lines changed: 12 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -4,31 +4,26 @@
44

55
package com.osfans.trime.ime.keyboard
66

7-
import com.blankj.utilcode.util.ScreenUtils
7+
import android.content.Context
88
import com.osfans.trime.data.AppPrefs
9+
import com.osfans.trime.util.isLandscape
910

10-
class KeyboardPrefs {
11+
object KeyboardPrefs {
1112
private val prefs = AppPrefs.defaultInstance()
1213

13-
fun isLandscapeMode(): Boolean {
14+
private const val WIDE_SCREEN_WIDTH_DP = 600
15+
16+
fun Context.isLandscapeMode(): Boolean {
1417
return when (prefs.keyboard.splitOption) {
15-
SPLIT_OPTION_AUTO -> isWideScreen()
16-
SPLIT_OPTION_LANDSCAPE -> ScreenUtils.isLandscape()
17-
SPLIT_OPTION_ALWAYS -> true
18+
AppPrefs.Keyboard.SplitOption.AUTO -> isWideScreen()
19+
AppPrefs.Keyboard.SplitOption.LANDSCAPE -> resources.configuration.isLandscape()
20+
AppPrefs.Keyboard.SplitOption.ALWAYS -> true
1821
else -> false
1922
}
2023
}
2124

22-
private fun isWideScreen(): Boolean {
23-
return ScreenUtils.getAppScreenWidth() / ScreenUtils.getScreenDensity() > WIDE_SCREEN_WIDTH_DP
24-
}
25-
26-
companion object {
27-
const val SPLIT_OPTION_AUTO = "auto"
28-
const val SPLIT_OPTION_LANDSCAPE = "landscape"
29-
const val SPLIT_OPTION_NEVER = "never"
30-
const val SPLIT_OPTION_ALWAYS = "always"
31-
32-
private const val WIDE_SCREEN_WIDTH_DP = 600
25+
private fun Context.isWideScreen(): Boolean {
26+
val metrics = resources.displayMetrics
27+
return metrics.widthPixels / metrics.density > WIDE_SCREEN_WIDTH_DP
3328
}
3429
}

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

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,7 @@ import com.osfans.trime.core.Rime
99
import com.osfans.trime.data.AppPrefs
1010
import com.osfans.trime.data.schema.SchemaManager
1111
import com.osfans.trime.data.theme.ThemeManager
12+
import com.osfans.trime.ime.keyboard.KeyboardPrefs.isLandscapeMode
1213
import com.osfans.trime.util.appContext
1314
import timber.log.Timber
1415

@@ -20,7 +21,6 @@ object KeyboardSwitcher {
2021
private var currentKeyboardId: String? = null
2122
private var lastKeyboardId: String? = null
2223
private var lastLockKeyboardId: String? = null
23-
private val keyboardPrefs = KeyboardPrefs()
2424
lateinit var currentKeyboard: Keyboard
2525

2626
private fun getKeyboard(name: String): Keyboard {
@@ -87,7 +87,7 @@ object KeyboardSwitcher {
8787
if ("mini" in allKeyboardIds) mappedName = "mini"
8888
}
8989
// 切换到横屏布局
90-
if (keyboardPrefs.isLandscapeMode()) {
90+
if (appContext.isLandscapeMode()) {
9191
val landscapeKeyboard = getKeyboard(mappedName).landscapeKeyboard
9292
if (landscapeKeyboard != null && landscapeKeyboard in allKeyboardIds) {
9393
mappedName = landscapeKeyboard
Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,7 @@
1+
package com.osfans.trime.util
2+
3+
import android.content.res.Configuration
4+
5+
fun Configuration.isNightMode() = uiMode and Configuration.UI_MODE_NIGHT_MASK == Configuration.UI_MODE_NIGHT_YES
6+
7+
fun Configuration.isLandscape() = orientation == Configuration.ORIENTATION_LANDSCAPE

app/src/main/java/com/osfans/trime/util/Utils.kt

Lines changed: 0 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,6 @@
55
package com.osfans.trime.util
66

77
import android.content.Context
8-
import android.content.res.Configuration
98
import android.net.Uri
109
import android.os.Build
1110
import android.os.Bundle
@@ -142,5 +141,3 @@ fun Context.requestExternalStoragePermission() {
142141
},
143142
)
144143
}
145-
146-
fun Configuration.isNightMode() = uiMode and Configuration.UI_MODE_NIGHT_MASK == Configuration.UI_MODE_NIGHT_YES

0 commit comments

Comments
 (0)