Skip to content

Commit

Permalink
chore,refactor: introduce Koin dependency injection library
Browse files Browse the repository at this point in the history
Use Koin to inject dependencies for the UI components, which make it easier to manage those stuffs and avoid the complex templates and long construct arguments.
  • Loading branch information
WhiredPlanck committed Jan 24, 2024
1 parent 879c7f5 commit 21429cb
Show file tree
Hide file tree
Showing 6 changed files with 36 additions and 5 deletions.
1 change: 1 addition & 0 deletions app/build.gradle.kts
Expand Up @@ -126,6 +126,7 @@ dependencies {
implementation(libs.androidx.viewpager2)
implementation(libs.flexbox)
implementation(libs.kaml)
implementation(libs.koin.android)
implementation(libs.timber)
implementation(libs.utilcode)
implementation(libs.xxpermissions)
Expand Down
7 changes: 6 additions & 1 deletion app/src/main/java/com/osfans/trime/ime/bar/QuickBar.kt
Expand Up @@ -10,11 +10,16 @@ import com.osfans.trime.databinding.CandidateBarBinding
import com.osfans.trime.databinding.TabBarBinding
import com.osfans.trime.ime.core.Trime
import com.osfans.trime.ime.enums.SymbolKeyboardType
import org.koin.core.component.KoinComponent
import org.koin.core.component.inject
import splitties.views.dsl.core.add
import splitties.views.dsl.core.lParams
import splitties.views.dsl.core.matchParent

class QuickBar(private val context: Context, private val service: Trime) {
class QuickBar : KoinComponent {
private val context: Context by inject()
private val service: Trime by inject()

val oldCandidateBar by lazy {
CandidateBarBinding.inflate(LayoutInflater.from(context)).apply {
with(root) {
Expand Down
23 changes: 21 additions & 2 deletions app/src/main/java/com/osfans/trime/ime/core/InputView.kt
Expand Up @@ -8,6 +8,10 @@ import androidx.constraintlayout.widget.ConstraintLayout
import com.osfans.trime.ime.bar.QuickBar
import com.osfans.trime.ime.keyboard.KeyboardWindow
import com.osfans.trime.util.styledFloat
import org.koin.android.ext.koin.androidContext
import org.koin.android.ext.koin.androidLogger
import org.koin.core.context.startKoin
import org.koin.dsl.module
import splitties.views.dsl.constraintlayout.below
import splitties.views.dsl.constraintlayout.bottomOfParent
import splitties.views.dsl.constraintlayout.centerHorizontally
Expand All @@ -27,12 +31,27 @@ class InputView(
val service: Trime,
) : ConstraintLayout(service) {
private val themedContext = context.withTheme(android.R.style.Theme_DeviceDefault_Settings)
val quickBar = QuickBar(context, service)
val keyboardWindow = KeyboardWindow(context, service)
val quickBar = QuickBar()
val keyboardWindow = KeyboardWindow()

private val module =
module {
single { this@InputView }
single { themedContext }
single { service }
single { keyboardWindow }
single { quickBar }
}

val keyboardView: View

init {
startKoin {
androidLogger()
androidContext(context)
modules(module)
}

keyboardView =
constraintLayout {
isMotionEventSplittingEnabled = true
Expand Down
Expand Up @@ -7,11 +7,16 @@ import com.osfans.trime.core.Rime
import com.osfans.trime.databinding.MainInputLayoutBinding
import com.osfans.trime.databinding.SymbolInputLayoutBinding
import com.osfans.trime.ime.core.Trime
import org.koin.core.component.KoinComponent
import org.koin.core.component.inject
import splitties.views.dsl.core.add
import splitties.views.dsl.core.lParams
import splitties.views.dsl.core.matchParent

class KeyboardWindow(private val context: Context, private val service: Trime) {
class KeyboardWindow : KoinComponent {
private val context: Context by inject()
private val service: Trime by inject()

val oldMainInputView by lazy {
MainInputLayoutBinding.inflate(LayoutInflater.from(context)).apply {
with(mainKeyboardView) {
Expand Down
Expand Up @@ -160,7 +160,7 @@ class TextInputManager private constructor(private val isDarkMode: Boolean) :
restarting: Boolean,
) {
super.onStartInputView(instance, restarting)
Trime.getService().selectLiquidKeyboard(-1)
trime.selectLiquidKeyboard(-1)
if (restarting) {
trime.performEscape()
}
Expand Down
1 change: 1 addition & 0 deletions gradle/libs.versions.toml
Expand Up @@ -27,6 +27,7 @@ androidx-room-ktx = { module = "androidx.room:room-ktx", version.ref = "room" }
androidx-viewpager2 = { module = "androidx.viewpager2:viewpager2", version = "1.1.0-beta02" }
flexbox = { module = "com.google.android.flexbox:flexbox", version = "3.0.0" }
kaml = { module = "com.charleskorn.kaml:kaml", version = "0.56.0" }
koin-android = { module = "io.insert-koin:koin-android", version = "3.5.3" }
timber = { module = "com.jakewharton.timber:timber", version = "5.0.1" }
utilcode = { module = "com.blankj:utilcodex", version = "1.31.1" }
xxpermissions = { module = "com.github.getActivity:XXPermissions", version = "18.5" }
Expand Down

0 comments on commit 21429cb

Please sign in to comment.