mirror of
https://github.com/ovrport/app.git
synced 2026-10-26 19:19:56 -04:00
refactor: Use SystemFileChooser instead of AWT
This commit is contained in:
1 parent
3b1d59224a
commit
1c7cb335c8
3 files changed
+19
-12
No files matched your search
@@ -45,6 +45,7 @@ kotlin {
|
|||||||
desktopMain.dependencies {
|
desktopMain.dependencies {
|
||||||
implementation(compose.desktop.currentOs)
|
implementation(compose.desktop.currentOs)
|
||||||
implementation(libs.kotlinx.coroutines.swing)
|
implementation(libs.kotlinx.coroutines.swing)
|
||||||
|
implementation(libs.com.formdev.flatlaf)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -13,6 +13,7 @@ import androidx.compose.ui.draganddrop.awtTransferable
|
|||||||
import androidx.compose.ui.window.Window
|
import androidx.compose.ui.window.Window
|
||||||
import androidx.compose.ui.window.application
|
import androidx.compose.ui.window.application
|
||||||
import androidx.lifecycle.viewmodel.compose.viewModel
|
import androidx.lifecycle.viewmodel.compose.viewModel
|
||||||
|
import com.formdev.flatlaf.util.SystemFileChooser
|
||||||
import kotlinx.coroutines.flow.MutableSharedFlow
|
import kotlinx.coroutines.flow.MutableSharedFlow
|
||||||
import kotlinx.coroutines.launch
|
import kotlinx.coroutines.launch
|
||||||
import moe.crx.overport.app.composables.AppContent
|
import moe.crx.overport.app.composables.AppContent
|
||||||
@@ -24,7 +25,6 @@ import org.jetbrains.compose.resources.stringResource
|
|||||||
import overportapp.composeapp.generated.resources.Res
|
import overportapp.composeapp.generated.resources.Res
|
||||||
import overportapp.composeapp.generated.resources.select_a_file
|
import overportapp.composeapp.generated.resources.select_a_file
|
||||||
import overportapp.composeapp.generated.resources.window_icon
|
import overportapp.composeapp.generated.resources.window_icon
|
||||||
import java.awt.FileDialog
|
|
||||||
import java.awt.Frame
|
import java.awt.Frame
|
||||||
import java.awt.datatransfer.DataFlavor
|
import java.awt.datatransfer.DataFlavor
|
||||||
import java.io.*
|
import java.io.*
|
||||||
@@ -97,23 +97,26 @@ fun main(args: Array<String>) = application {
|
|||||||
AppContent(
|
AppContent(
|
||||||
viewModel = viewModel,
|
viewModel = viewModel,
|
||||||
openFile = {
|
openFile = {
|
||||||
val fileDialog = FileDialog(Frame(), selectFileString, FileDialog.LOAD).apply {
|
val fileDialog = SystemFileChooser(selectFileString).apply {
|
||||||
directory = lastOpenedDirectory
|
currentDirectory = File(lastOpenedDirectory)
|
||||||
isVisible = true
|
selectedFile = null
|
||||||
}
|
}
|
||||||
|
|
||||||
val file = fileDialog.file?.let { File(fileDialog.directory).resolve(it) }
|
val file = if (fileDialog.showOpenDialog(Frame()) != SystemFileChooser.APPROVE_OPTION) null else {
|
||||||
|
fileDialog.selectedFile
|
||||||
|
}
|
||||||
|
|
||||||
openFile(file)
|
openFile(file)
|
||||||
},
|
},
|
||||||
saveFile = { name ->
|
saveFile = { name ->
|
||||||
val fileDialog = FileDialog(Frame(), selectFileString, FileDialog.SAVE).apply {
|
val fileDialog = SystemFileChooser(selectFileString).apply {
|
||||||
directory = lastOpenedDirectory
|
currentDirectory = File(lastOpenedDirectory)
|
||||||
file = name
|
selectedFile = File(lastOpenedDirectory, name)
|
||||||
isVisible = true
|
|
||||||
}
|
}
|
||||||
|
|
||||||
val file = fileDialog.file?.let { File(fileDialog.directory).resolve(it) }
|
val file = if (fileDialog.showSaveDialog(Frame()) != SystemFileChooser.APPROVE_OPTION) null else {
|
||||||
|
fileDialog.selectedFile
|
||||||
|
}
|
||||||
|
|
||||||
scope.launch {
|
scope.launch {
|
||||||
if (file == null) {
|
if (file == null) {
|
||||||
|
|||||||
@@ -13,8 +13,11 @@ bcpkix = "1.83"
|
|||||||
kotlinx-serialization = "1.9.0"
|
kotlinx-serialization = "1.9.0"
|
||||||
lifecycle-viewmodel-compose = "2.9.6"
|
lifecycle-viewmodel-compose = "2.9.6"
|
||||||
compose-hot-reload = "1.0.0"
|
compose-hot-reload = "1.0.0"
|
||||||
|
flatlaf = "3.7.2"
|
||||||
|
|
||||||
[libraries]
|
[libraries]
|
||||||
|
com-formdev-flatlaf = { group = "com.formdev", name = "flatlaf", version.ref = "flatlaf" }
|
||||||
|
|
||||||
androidx-activity-compose = { group = "androidx.activity", name = "activity-compose", version.ref = "androidx-activityCompose" }
|
androidx-activity-compose = { group = "androidx.activity", name = "activity-compose", version.ref = "androidx-activityCompose" }
|
||||||
|
|
||||||
androidx-lifecycle-viewmodel = { group = "org.jetbrains.androidx.lifecycle", name = "lifecycle-viewmodel", version.ref = "androidx-lifecycle" }
|
androidx-lifecycle-viewmodel = { group = "org.jetbrains.androidx.lifecycle", name = "lifecycle-viewmodel", version.ref = "androidx-lifecycle" }
|
||||||
@@ -24,8 +27,8 @@ androidx-lifecycle-viewmodel-compose = { group = "org.jetbrains.androidx.lifecyc
|
|||||||
|
|
||||||
android-tools-build = { group = "com.android.tools.build", name = "apksig", version.ref = "apksig" }
|
android-tools-build = { group = "com.android.tools.build", name = "apksig", version.ref = "apksig" }
|
||||||
bouncycastle-pkix = { group = "org.bouncycastle", name = "bcpkix-jdk18on", version.ref = "bcpkix" }
|
bouncycastle-pkix = { group = "org.bouncycastle", name = "bcpkix-jdk18on", version.ref = "bcpkix" }
|
||||||
kotlinx-serialization-json = { group = "org.jetbrains.kotlinx", name ="kotlinx-serialization-json", version.ref = "kotlinx-serialization" }
|
kotlinx-serialization-json = { group = "org.jetbrains.kotlinx", name = "kotlinx-serialization-json", version.ref = "kotlinx-serialization" }
|
||||||
kotlinx-coroutines-core = { group = "org.jetbrains.kotlinx", name ="kotlinx-coroutines-core", version.ref = "kotlinx-coroutines" }
|
kotlinx-coroutines-core = { group = "org.jetbrains.kotlinx", name = "kotlinx-coroutines-core", version.ref = "kotlinx-coroutines" }
|
||||||
|
|
||||||
[plugins]
|
[plugins]
|
||||||
androidApplication = { id = "com.android.application", version.ref = "agp" }
|
androidApplication = { id = "com.android.application", version.ref = "agp" }
|
||||||
|
|||||||
Reference in new issue
Block a user