Resolve SharedPreferences for desktop & com.russhwolf.settings for android

This commit is contained in:
Hasinjato 2026-06-22 17:31:55 +03:00
parent d3fa9e0725
commit 323dec9e78
5 changed files with 18 additions and 6 deletions

View file

@ -72,6 +72,7 @@ kotlin {
implementation(libs.kotlinx.serialization.json) implementation(libs.kotlinx.serialization.json)
implementation(libs.bundles.voyager) implementation(libs.bundles.voyager)
implementation(libs.cafe.voyager.koin) implementation(libs.cafe.voyager.koin)
implementation(libs.multiplatform.settings)
implementation(compose.materialIconsExtended) implementation(compose.materialIconsExtended)
//implementation(kotlin("stdlib-jdk8")) //implementation(kotlin("stdlib-jdk8"))
//implementation("org.jetbrains.compose.foundation:foundation-desktop") //implementation("org.jetbrains.compose.foundation:foundation-desktop")

View file

@ -1,13 +1,12 @@
package mg.dot.feufaro.di package mg.dot.feufaro.di
import android.content.Context import android.content.Context
import com.russhwolf.settings.Settings
import com.russhwolf.settings.SharedPreferencesSettings
import mg.dot.feufaro.AndroidFileRepository import mg.dot.feufaro.AndroidFileRepository
import mg.dot.feufaro.config.AppConfig
import org.koin.core.module.dsl.singleOf // Import for Koin DSL
import org.koin.core.module.dsl.bind // Import for Koin DSL
import org.koin.dsl.module
import mg.dot.feufaro.FileRepository import mg.dot.feufaro.FileRepository
import org.koin.android.ext.koin.androidContext // Import for androidContext() import mg.dot.feufaro.config.AppConfig
import org.koin.dsl.module
val androidModule = module { val androidModule = module {
// Koin will automatically provide the Android Context because you called androidContext() in AndroidApp. // Koin will automatically provide the Android Context because you called androidContext() in AndroidApp.
@ -18,6 +17,10 @@ val androidModule = module {
transposeasif = "C", transposeasif = "C",
) )
} }
single<Settings> {
val sharedPrefs = get<Context>().getSharedPreferences("mg.dot.feufaro", Context.MODE_PRIVATE)
SharedPreferencesSettings(sharedPrefs)
}
} }

View file

@ -11,7 +11,7 @@ import org.koin.core.module.dsl.singleOf
val commonModule = module { val commonModule = module {
singleOf(::MusicXML) singleOf(::MusicXML)
single { DisplayConfigManager(fileRepository = get())} single { DisplayConfigManager(fileRepository = get(), settings = get()) }
single { SharedScreenModel(fileRepository = get()) } single { SharedScreenModel(fileRepository = get()) }
single { Solfa(get(), get()) } single { Solfa(get(), get()) }

View file

@ -1,10 +1,13 @@
package mg.dot.feufaro.di package mg.dot.feufaro.di
import com.russhwolf.settings.PreferencesSettings
import com.russhwolf.settings.Settings
import org.koin.core.module.dsl.singleOf // Import for Koin DSL import org.koin.core.module.dsl.singleOf // Import for Koin DSL
import org.koin.core.module.dsl.bind // Import for Koin DSL import org.koin.core.module.dsl.bind // Import for Koin DSL
import org.koin.dsl.module import org.koin.dsl.module
import mg.dot.feufaro.FileRepository import mg.dot.feufaro.FileRepository
import mg.dot.feufaro.config.AppConfig import mg.dot.feufaro.config.AppConfig
import java.util.prefs.Preferences
val desktopModule = module { val desktopModule = module {
// When Koin is initialized on Desktop, it will use DesktopFileRepository // When Koin is initialized on Desktop, it will use DesktopFileRepository
@ -19,4 +22,7 @@
actual val platformModule = module { actual val platformModule = module {
single<FileRepository> { DesktopFileRepository() } // Une version simple sans Context single<FileRepository> { DesktopFileRepository() } // Une version simple sans Context
single<Settings> {
PreferencesSettings(Preferences.userRoot().node("mg.dot.feufaro"))
}
} }

View file

@ -12,6 +12,7 @@ androidx-lifecycle = "2.9.1"
androidx-testExt = "1.2.1" androidx-testExt = "1.2.1"
composeHotReload = "1.0.0-alpha11" composeHotReload = "1.0.0-alpha11"
composeMultiplatform = "1.8.2" composeMultiplatform = "1.8.2"
multiplatformSettings = "1.1.1"
junit = "4.13.2" junit = "4.13.2"
kotlin = "2.2.0" kotlin = "2.2.0"
kotlinx-coroutines = "1.10.2" kotlinx-coroutines = "1.10.2"
@ -58,6 +59,7 @@ voyager-navigator = { module = "cafe.adriel.voyager:voyager-navigator", version.
voyager-screenmodel = { module = "cafe.adriel.voyager:voyager-screenmodel", version.ref = "voyager" } voyager-screenmodel = { module = "cafe.adriel.voyager:voyager-screenmodel", version.ref = "voyager" }
voyager-koin = { module = "cafe.adriel.voyager:voyager-koin", version.ref = "voyager" } voyager-koin = { module = "cafe.adriel.voyager:voyager-koin", version.ref = "voyager" }
#ktmidi = { group = "dev.atsushieno", name = "ktmidi", version.ref = "ktmidi" } #ktmidi = { group = "dev.atsushieno", name = "ktmidi", version.ref = "ktmidi" }
multiplatform-settings = { module = "com.russhwolf:multiplatform-settings", version.ref = "multiplatformSettings" }
[plugins] [plugins]
androidApplication = { id = "com.android.application", version.ref = "agp" } androidApplication = { id = "com.android.application", version.ref = "agp" }