Add file system management in the main menu.

This commit is contained in:
Thomas Andres Gomez 2024-11-28 19:04:45 +01:00
parent 34a0ee13f0
commit de13bf2c74
9 changed files with 46 additions and 3 deletions

View file

@ -37,6 +37,8 @@ kotlin {
implementation(libs.ktor.server.core)
implementation(libs.ktor.server.netty)
implementation(libs.ktor.server.websockets)
// shell
implementation(libs.lordcodes.turttle)
}
commonTest.dependencies {

View file

@ -4,8 +4,10 @@
<string name="dialog__cancel_action">Annuler</string>
<string name="main_page__create_action">Créer une feuille de personnage</string>
<string name="main_page__network_action">Configuration de la table</string>
<string name="main_page__open_save_directory">Ouvrir le dossier de sauvegarde</string>
<string name="main_page__roll_history_action">Consulter l'historique des lancers</string>
<string name="main_page__network_action">Configuration de la table</string>
<string name="roll_page__roll__label">Jet de :</string>
<string name="roll_page__roll__success_label">Réussite si lancer inférieur ou égale à : %1$s</string>

View file

@ -1,6 +1,6 @@
package com.pixelized.desktop.lwa.repository
private fun operatingSystem(
fun operatingSystem(
name: String = System.getProperty("os.name")
): OperatingSystem {
return when {

View file

@ -30,6 +30,7 @@ import lwacharactersheet.composeapp.generated.resources.Res
import lwacharactersheet.composeapp.generated.resources.character_sheet_edit__create__title
import lwacharactersheet.composeapp.generated.resources.main_page__create_action
import lwacharactersheet.composeapp.generated.resources.main_page__network_action
import lwacharactersheet.composeapp.generated.resources.main_page__open_save_directory
import lwacharactersheet.composeapp.generated.resources.main_page__roll_history_action
import org.jetbrains.compose.resources.getString
import org.jetbrains.compose.resources.stringResource
@ -79,6 +80,9 @@ fun MainPage(
onRollHistory = {
screen.navigateToRollHistory()
},
onOpenSaveDirectory = {
viewModel.openSaveDirectory()
},
onNetwork = {
screen.navigateToNetwork()
},
@ -94,6 +98,7 @@ fun MainPageContent(
onCharacter: (CharacterUio) -> Unit,
onCreateCharacter: () -> Unit,
onRollHistory: () -> Unit,
onOpenSaveDirectory: () -> Unit,
onNetwork: () -> Unit,
) {
Column(
@ -128,6 +133,18 @@ fun MainPageContent(
)
}
TextButton(
onClick = onOpenSaveDirectory,
) {
Text(
modifier = Modifier.fillMaxWidth(),
maxLines = 1,
overflow = TextOverflow.Ellipsis,
textAlign = TextAlign.Start,
text = stringResource(Res.string.main_page__open_save_directory),
)
}
Column {
TextButton(
onClick = onRollHistory,

View file

@ -4,7 +4,11 @@ import androidx.compose.runtime.Composable
import androidx.compose.runtime.Stable
import androidx.compose.runtime.State
import androidx.lifecycle.ViewModel
import com.lordcodes.turtle.shellRun
import com.pixelized.desktop.lwa.repository.OperatingSystem
import com.pixelized.desktop.lwa.repository.characterSheet.CharacterSheetRepository
import com.pixelized.desktop.lwa.repository.operatingSystem
import com.pixelized.desktop.lwa.repository.storePath
import com.pixelized.desktop.lwa.utils.extention.collectAsState
class MainPageViewModel(
@ -23,4 +27,18 @@ class MainPageViewModel(
)
}
}
fun openSaveDirectory() {
when (val os = operatingSystem()) {
OperatingSystem.Windows -> shellRun(
"explorer.exe",
listOf(storePath(operatingSystem = os))
)
OperatingSystem.Macintosh -> shellRun(
"open",
listOf(storePath(operatingSystem = os))
)
}
}
}

View file

@ -3,8 +3,10 @@ package com.pixelized.desktop.lwa
import androidx.compose.ui.window.application
import org.koin.compose.KoinContext
import org.koin.core.context.startKoin
import javax.swing.UIManager
fun main() {
UIManager.setLookAndFeel(UIManager.getSystemLookAndFeelClassName())
startKoin {
modules(modules = moduleDependencies)
}

View file

@ -34,4 +34,6 @@ ktor-client-cio = { group = 'io.ktor', name = "ktor-client-cio", version.ref = "
ktor-client-websockets = { group = 'io.ktor', name = "ktor-client-websockets", version.ref = "ktor_version" }
ktor-server-core = { group = 'io.ktor', name = "ktor-server-core", version.ref = "ktor_version" }
ktor-server-netty = { group = 'io.ktor', name = "ktor-server-netty", version.ref = "ktor_version" }
ktor-server-websockets = { group = 'io.ktor', name = "ktor-server-websockets", version.ref = "ktor_version" }
ktor-server-websockets = { group = 'io.ktor', name = "ktor-server-websockets", version.ref = "ktor_version" }
lordcodes-turttle = { group="com.lordcodes.turtle", name="turtle", version="0.5.0"}

BIN
lwa.zip

Binary file not shown.

BIN
output.zip Normal file

Binary file not shown.