Add file system management in the main menu.
This commit is contained in:
		
							parent
							
								
									34a0ee13f0
								
							
						
					
					
						commit
						de13bf2c74
					
				
					 9 changed files with 46 additions and 3 deletions
				
			
		| 
						 | 
				
			
			@ -1,6 +1,6 @@
 | 
			
		|||
package com.pixelized.desktop.lwa.repository
 | 
			
		||||
 | 
			
		||||
private fun operatingSystem(
 | 
			
		||||
fun operatingSystem(
 | 
			
		||||
    name: String = System.getProperty("os.name")
 | 
			
		||||
): OperatingSystem {
 | 
			
		||||
    return when {
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -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,
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -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))
 | 
			
		||||
            )
 | 
			
		||||
        }
 | 
			
		||||
    }
 | 
			
		||||
}
 | 
			
		||||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue