3 Commits
5 changed files with 28 additions and 12 deletions

No files matched your search

+1
View File
@@ -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)
} }
} }
} }
@@ -101,6 +101,7 @@ fun PatcherScreen(
errorMessage = errorMessage =
getString(Res.string.cant_checkout_title) to getString(Res.string.cant_checkout_message) getString(Res.string.cant_checkout_title) to getString(Res.string.cant_checkout_message)
} catch (ex: Throwable) { } catch (ex: Throwable) {
ex.printStackTrace()
viewModel.cancel() viewModel.cancel()
errorMessage = getString(Res.string.unknown_error) to ex.stackTraceToString() errorMessage = getString(Res.string.unknown_error) to ex.stackTraceToString()
} finally { } finally {
@@ -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) {
+5 -2
View File
@@ -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" }
@@ -95,9 +95,17 @@ val PATCH_VR_METADATA = Patch("patch_vr_metadata") {
this?.put(createUsesFeature("android.software.xr.api.openxr", true)) this?.put(createUsesFeature("android.software.xr.api.openxr", true))
?.put(createUsesFeature("android.software.xr.api.spatial", true)) ?.put(createUsesFeature("android.software.xr.api.spatial", true))
?.put(createUsesFeature("android.software.xr.input.controller", false)) ?.put(createUsesFeature("android.software.xr.input.controller", false))
?.put(createUsesFeature("android.hardware.xr.input.hand_tracking", false))
?.put(createUsesFeature("android.hardware.xr.input.eye_tracking", false))
?.put(createUsesPermission("org.khronos.openxr.permission.OPENXR")) ?.put(createUsesPermission("org.khronos.openxr.permission.OPENXR"))
?.put(createUsesPermission("org.khronos.openxr.permission.OPENXR_SYSTEM")) ?.put(createUsesPermission("org.khronos.openxr.permission.OPENXR_SYSTEM"))
?.put(createUsesPermission("com.huawei.android.permission.VR")) ?.put(createUsesPermission("com.huawei.android.permission.VR"))
?.put(createUsesPermission("android.permission.EYE_TRACKING_COARSE"))
?.put(createUsesPermission("android.permission.EYE_TRACKING_FINE"))
?.put(createUsesPermission("android.permission.FACE_TRACKING"))
?.put(createUsesPermission("android.permission.HAND_TRACKING"))
?.put(createUsesPermission("android.permission.SCENE_UNDERSTANDING_COARSE"))
?.put(createUsesPermission("android.permission.SCENE_UNDERSTANDING_FINE"))
} }
takeNodesEach({ named("application") }) { takeNodesEach({ named("application") }) {
takeNodesEach({ named("activity") }) { takeNodesEach({ named("activity") }) {