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

@ -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))
)
}
}
}