From e941da6f19680f5ca4eb91aa37d95ebe32de2773 Mon Sep 17 00:00:00 2001 From: "hasinarak3@gmail.com" Date: Wed, 28 Jan 2026 15:38:20 +0300 Subject: [PATCH] fix SaveSettings (+androidMain) --- .../kotlin/mg/dot/feufaro/SaveSettings.kt | 14 ++++++ .../kotlin/mg/dot/feufaro/SaveSettings.kt | 35 +++----------- .../kotlin/mg/dot/feufaro/SaveSettings.kt | 46 +++++++++++++++++++ 3 files changed, 66 insertions(+), 29 deletions(-) create mode 100644 composeApp/src/androidMain/kotlin/mg/dot/feufaro/SaveSettings.kt create mode 100644 composeApp/src/desktopMain/kotlin/mg/dot/feufaro/SaveSettings.kt diff --git a/composeApp/src/androidMain/kotlin/mg/dot/feufaro/SaveSettings.kt b/composeApp/src/androidMain/kotlin/mg/dot/feufaro/SaveSettings.kt new file mode 100644 index 0000000..ceb6069 --- /dev/null +++ b/composeApp/src/androidMain/kotlin/mg/dot/feufaro/SaveSettings.kt @@ -0,0 +1,14 @@ +package mg.dot.feufaro + +import com.russhwolf.settings.Settings +import com.russhwolf.settings.set + +actual class SaveSettings actual constructor() { + actual val settings: Settings = Settings() + + actual fun loadLastUsedDir(): String = settings.getString("last_dir", "/") + actual fun saveLastUsedDir(lastDir: String) { settings["last_dir"] = lastDir } + + actual fun saveWindowBounds(width: Int, height: Int, x: Int, y: Int) {} + actual fun loadWindowBounds(): List = listOf(0, 0, 0, 0) +} \ No newline at end of file diff --git a/composeApp/src/commonMain/kotlin/mg/dot/feufaro/SaveSettings.kt b/composeApp/src/commonMain/kotlin/mg/dot/feufaro/SaveSettings.kt index aa3a5d8..29a1c96 100644 --- a/composeApp/src/commonMain/kotlin/mg/dot/feufaro/SaveSettings.kt +++ b/composeApp/src/commonMain/kotlin/mg/dot/feufaro/SaveSettings.kt @@ -8,36 +8,13 @@ import androidx.compose.ui.window.WindowPlacement import androidx.compose.ui.window.WindowState import androidx.compose.ui.window.WindowPosition -class SaveSettings { +expect class SaveSettings() { + val settings: Settings - private val settings: Settings = Settings() + fun loadLastUsedDir(): String - fun loadLastUsedDir(): String { - val lastDirectory = settings.getString("last_dir", "/") + fun saveLastUsedDir(lastDir: String) - return lastDirectory - } - - fun saveLastUsedDir(lastDir: String) { - settings["last_dir"] = lastDir - } - - fun loadWindowState(): WindowState { - val width = settings.getInt("window_width", 800) - val height = settings.getInt("window_height", 600) - val x = settings.getInt("window_x", 100) - val y = settings.getInt("window_y", 100) - - return WindowState( - size = DpSize(width.dp, height.dp), - position = WindowPosition(x.dp, y.dp) - ) - } - - fun saveWindowState(state: WindowState) { - settings["window_width"] = state.size.width.value.toInt() - settings["window_height"] = state.size.height.value.toInt() - settings["window_x"] = state.position.x.value.toInt() - settings["window_y"] = state.position.y.value.toInt() - } + fun loadWindowState(): WindowState + fun saveWindowState(state: WindowState) } \ No newline at end of file diff --git a/composeApp/src/desktopMain/kotlin/mg/dot/feufaro/SaveSettings.kt b/composeApp/src/desktopMain/kotlin/mg/dot/feufaro/SaveSettings.kt new file mode 100644 index 0000000..4949c18 --- /dev/null +++ b/composeApp/src/desktopMain/kotlin/mg/dot/feufaro/SaveSettings.kt @@ -0,0 +1,46 @@ +package mg.dot.feufaro + +import com.russhwolf.settings.Settings +import com.russhwolf.settings.set +import androidx.compose.ui.window.WindowState +import androidx.compose.ui.window.WindowPosition +import androidx.compose.ui.unit.DpSize +import androidx.compose.ui.unit.dp + +actual class SaveSettings actual constructor() { + actual val settings: Settings = Settings() + + actual fun loadLastUsedDir(): String = settings.getString("last_dir", "/") + actual fun saveLastUsedDir(lastDir: String) { settings["last_dir"] = lastDir } + + fun saveWindowBounds(width: Int, height: Int, x: Int, y: Int) { + settings["window_width"] = width + settings["window_height"] = height + settings["window_x"] = x + settings["window_y"] = y + } + + fun loadWindowBounds(): List = listOf( + settings.getInt("window_width", 800), + settings.getInt("window_height", 600), + settings.getInt("window_x", 100), + settings.getInt("window_y", 100) + ) + + actual fun loadWindowState(): WindowState { + val bounds = loadWindowBounds() + return WindowState( + size = DpSize(bounds[0].dp, bounds[1].dp), + position = WindowPosition(bounds[2].dp, bounds[3].dp) + ) + } + + actual fun saveWindowState(state: WindowState) { + saveWindowBounds( + state.size.width.value.toInt(), + state.size.height.value.toInt(), + state.position.x.value.toInt(), + state.position.y.value.toInt() + ) + } +} \ No newline at end of file