refactor: server view

This commit is contained in:
aro 2023-03-20 15:11:39 +01:00
parent 4a56148f6e
commit 7b743c95fb
10 changed files with 116 additions and 15 deletions

View file

@ -9,7 +9,9 @@ import androidx.compose.ui.unit.dp
import androidx.compose.ui.window.WindowState import androidx.compose.ui.window.WindowState
import xyz.atnrch.wrench.gui.appearance.UIColors import xyz.atnrch.wrench.gui.appearance.UIColors
import xyz.atnrch.wrench.gui.component.SnackBarDataHolder import xyz.atnrch.wrench.gui.component.SnackBarDataHolder
import xyz.atnrch.wrench.gui.filemanager.bottom.FileAppBottomBar
import xyz.atnrch.wrench.gui.filemanager.bottom.FloatingAddButton import xyz.atnrch.wrench.gui.filemanager.bottom.FloatingAddButton
import xyz.atnrch.wrench.gui.server.bottom.ServerAppBottomBar
import xyz.atnrch.wrench.storage.LayoutStorage import xyz.atnrch.wrench.storage.LayoutStorage
import xyz.atnrch.wrench.watcher.Watcher import xyz.atnrch.wrench.watcher.Watcher
import xyz.atnrch.wrench.watcher.WatcherEntry import xyz.atnrch.wrench.watcher.WatcherEntry
@ -25,7 +27,7 @@ fun WrenchScaffold(state: WindowState) {
val snackBarDataHolder = SnackBarDataHolder(scaffoldState, rememberCoroutineScope()) val snackBarDataHolder = SnackBarDataHolder(scaffoldState, rememberCoroutineScope())
val watcherManager = remember { WatcherManager(entries) } val watcherManager = remember { WatcherManager(entries) }
val watcher = remember { Watcher(watcherManager, snackBarDataHolder) } val watcher = remember { Watcher(watcherManager, snackBarDataHolder) }
val tabTitles = listOf("File Manager", "Servers") val tabTitles = listOf("Files", "Servers")
val layoutStorage = LayoutStorage { val layoutStorage = LayoutStorage {
it.forEach { entry -> it.forEach { entry ->
watcherManager.addFile(entry.file, entry.outputs) watcherManager.addFile(entry.file, entry.outputs)
@ -47,13 +49,16 @@ fun WrenchScaffold(state: WindowState) {
isFloatingActionButtonDocked = true, isFloatingActionButtonDocked = true,
backgroundColor = UIColors.PRIMARY, backgroundColor = UIColors.PRIMARY,
bottomBar = { bottomBar = {
if (tabIndex == 0) AppBottomBar( if (tabIndex == 0) FileAppBottomBar(
minMode, minMode,
watcherManager, watcherManager,
watcher, watcher,
currentClick, currentClick,
outputs outputs
) { currentClick = it } ) { currentClick = it }
else {
ServerAppBottomBar(minMode, currentClick) { currentClick = it }
}
} }
) { ) {
WatcherDisplay( WatcherDisplay(

View file

@ -8,7 +8,7 @@ import androidx.compose.runtime.Composable
import androidx.compose.ui.Alignment import androidx.compose.ui.Alignment
import androidx.compose.ui.Modifier import androidx.compose.ui.Modifier
import androidx.compose.ui.unit.dp import androidx.compose.ui.unit.dp
import xyz.atnrch.wrench.gui.filemanager.center.DefaultDisplay import xyz.atnrch.wrench.gui.filemanager.center.EmptyFileManagerView
import xyz.atnrch.wrench.gui.filemanager.center.input.InputEntries import xyz.atnrch.wrench.gui.filemanager.center.input.InputEntries
import xyz.atnrch.wrench.gui.filemanager.center.output.OutputEntries import xyz.atnrch.wrench.gui.filemanager.center.output.OutputEntries
import xyz.atnrch.wrench.watcher.WatcherManager import xyz.atnrch.wrench.watcher.WatcherManager
@ -50,7 +50,7 @@ private fun DisplayEntries(
onEntryClick: (id: Int) -> Unit onEntryClick: (id: Int) -> Unit
) { ) {
if (watcherManager.getEntries().isEmpty()) { if (watcherManager.getEntries().isEmpty()) {
DefaultDisplay() EmptyFileManagerView()
} else { } else {
InputEntries(minMode, watcherManager, onEntryClick) InputEntries(minMode, watcherManager, onEntryClick)
OutputEntries(watcherManager, currentClick, outputs) OutputEntries(watcherManager, currentClick, outputs)

View file

@ -1,17 +1,16 @@
package xyz.atnrch.wrench.gui package xyz.atnrch.wrench.gui.filemanager.bottom
import androidx.compose.foundation.shape.CornerSize import androidx.compose.foundation.shape.CornerSize
import androidx.compose.material.BottomAppBar import androidx.compose.material.BottomAppBar
import androidx.compose.material.MaterialTheme import androidx.compose.material.MaterialTheme
import androidx.compose.runtime.Composable import androidx.compose.runtime.Composable
import xyz.atnrch.wrench.gui.filemanager.bottom.FileBottomRow
import xyz.atnrch.wrench.gui.appearance.UIColors import xyz.atnrch.wrench.gui.appearance.UIColors
import xyz.atnrch.wrench.watcher.Watcher import xyz.atnrch.wrench.watcher.Watcher
import xyz.atnrch.wrench.watcher.WatcherManager import xyz.atnrch.wrench.watcher.WatcherManager
import java.nio.file.Path import java.nio.file.Path
@Composable @Composable
fun AppBottomBar( fun FileAppBottomBar(
minMode: Boolean, minMode: Boolean,
watcherManager: WatcherManager, watcherManager: WatcherManager,
watcher: Watcher, watcher: Watcher,
@ -25,6 +24,6 @@ fun AppBottomBar(
), ),
backgroundColor = UIColors.DARK_PRIMARY backgroundColor = UIColors.DARK_PRIMARY
) { ) {
FileBottomRow(minMode, watcherManager, watcher, currentClick, outputs, onCurrentClick) FileButtonBar(minMode, watcherManager, watcher, currentClick, outputs, onCurrentClick)
} }
} }

View file

@ -10,7 +10,7 @@ import xyz.atnrch.wrench.watcher.WatcherManager
import java.nio.file.Path import java.nio.file.Path
@Composable @Composable
fun FileBottomRow( fun FileButtonBar(
minMode: Boolean, minMode: Boolean,
watcherManager: WatcherManager, watcherManager: WatcherManager,
watcher: Watcher, watcher: Watcher,

View file

@ -7,7 +7,7 @@ import androidx.compose.material.FloatingActionButton
import androidx.compose.material.Icon import androidx.compose.material.Icon
import androidx.compose.material.MaterialTheme import androidx.compose.material.MaterialTheme
import androidx.compose.material.icons.Icons import androidx.compose.material.icons.Icons
import androidx.compose.material.icons.rounded.PostAdd import androidx.compose.material.icons.filled.PostAdd
import androidx.compose.runtime.Composable import androidx.compose.runtime.Composable
import androidx.compose.ui.Modifier import androidx.compose.ui.Modifier
import androidx.compose.ui.graphics.Color import androidx.compose.ui.graphics.Color
@ -40,7 +40,7 @@ fun FloatingAddButton(
) )
) { ) {
Icon( Icon(
Icons.Rounded.PostAdd, Icons.Filled.PostAdd,
tint = Color.White, tint = Color.White,
contentDescription = "Add file...", contentDescription = "Add file...",
modifier = Modifier.size(32.dp) modifier = Modifier.size(32.dp)

View file

@ -18,7 +18,7 @@ import xyz.atnrch.wrench.gui.appearance.UIColors
@OptIn(ExperimentalUnitApi::class) @OptIn(ExperimentalUnitApi::class)
@Composable @Composable
fun DefaultDisplay() { fun EmptyFileManagerView() {
Box( Box(
contentAlignment = Alignment.Center, contentAlignment = Alignment.Center,
modifier = Modifier.fillMaxWidth().fillMaxHeight() modifier = Modifier.fillMaxWidth().fillMaxHeight()

View file

@ -0,0 +1,23 @@
package xyz.atnrch.wrench.gui.server.bottom
import androidx.compose.foundation.shape.CornerSize
import androidx.compose.material.BottomAppBar
import androidx.compose.material.MaterialTheme
import androidx.compose.runtime.Composable
import xyz.atnrch.wrench.gui.appearance.UIColors
@Composable
fun ServerAppBottomBar(
minMode: Boolean,
currentClick: Int,
onCurrentClick: (Int) -> Unit
) {
BottomAppBar(
cutoutShape = MaterialTheme.shapes.small.copy(
CornerSize(percent = 50)
),
backgroundColor = UIColors.DARK_PRIMARY
) {
ServerButtonBar(minMode, currentClick, onCurrentClick)
}
}

View file

@ -0,0 +1,23 @@
package xyz.atnrch.wrench.gui.server.bottom
import androidx.compose.foundation.layout.Spacer
import androidx.compose.foundation.layout.width
import androidx.compose.runtime.Composable
import androidx.compose.ui.Modifier
import androidx.compose.ui.unit.dp
@Composable
fun ServerButtonBar(
minMode: Boolean,
currentClick: Int,
onCurrentClick: (Int) -> Unit,
) {
Spacer(Modifier.width(10.dp))
AddServerStateButton(minMode)
/*if (currentClick != -1) {
Spacer(Modifier.width(10.dp))
AddOutputButton(minMode, watcherManager, outputs, currentClick)
Spacer(Modifier.width(10.dp))
RemoveOutputButton(minMode, watcherManager, outputs, currentClick, onCurrentClick)
}*/
}

View file

@ -0,0 +1,51 @@
package xyz.atnrch.wrench.gui.server.bottom
import androidx.compose.foundation.BorderStroke
import androidx.compose.foundation.layout.PaddingValues
import androidx.compose.foundation.layout.Spacer
import androidx.compose.foundation.layout.size
import androidx.compose.foundation.shape.RoundedCornerShape
import androidx.compose.material.Button
import androidx.compose.material.ButtonDefaults
import androidx.compose.material.Icon
import androidx.compose.material.Text
import androidx.compose.material.icons.Icons
import androidx.compose.material.icons.filled.Start
import androidx.compose.runtime.Composable
import androidx.compose.ui.Modifier
import androidx.compose.ui.draw.shadow
import androidx.compose.ui.graphics.Color
import androidx.compose.ui.unit.dp
import xyz.atnrch.wrench.gui.appearance.UIColors
@Composable
fun AddServerStateButton(
minMode: Boolean,
) {
Button(
onClick =
{
},
colors = ButtonDefaults.buttonColors(UIColors.DARK_PRIMARY, Color.White),
contentPadding = PaddingValues(
start = 14.dp,
top = 6.dp,
end = 14.dp,
bottom = 6.dp
),
shape = RoundedCornerShape(100),
border = BorderStroke(2.dp, UIColors.ORANGE),
modifier = Modifier.shadow(24.dp, RoundedCornerShape(100), false)
) {
Icon(
Icons.Filled.Start,
tint = UIColors.ORANGE,
contentDescription = "Add output",
modifier = Modifier.size(22.dp)
)
if(!minMode) {
Spacer(Modifier.size(ButtonDefaults.IconSpacing))
Text("Start")
}
}
}

View file

@ -4,7 +4,7 @@ import androidx.compose.foundation.layout.*
import androidx.compose.material.Icon import androidx.compose.material.Icon
import androidx.compose.material.Text import androidx.compose.material.Text
import androidx.compose.material.icons.Icons import androidx.compose.material.icons.Icons
import androidx.compose.material.icons.rounded.Engineering import androidx.compose.material.icons.rounded.Flag
import androidx.compose.runtime.Composable import androidx.compose.runtime.Composable
import androidx.compose.ui.Alignment import androidx.compose.ui.Alignment
import androidx.compose.ui.Modifier import androidx.compose.ui.Modifier
@ -28,14 +28,14 @@ fun UnderConstructionView() {
horizontalAlignment = Alignment.CenterHorizontally horizontalAlignment = Alignment.CenterHorizontally
) { ) {
Icon( Icon(
imageVector = Icons.Rounded.Engineering, imageVector = Icons.Rounded.Flag,
tint = UIColors.ORANGE, tint = UIColors.ORANGE,
contentDescription = "Icon", contentDescription = "Icon",
modifier = Modifier.size(58.dp) modifier = Modifier.size(58.dp)
) )
Spacer(Modifier.height(24.dp)) Spacer(Modifier.height(24.dp))
Text( Text(
text = "Not implemented yet!", text = "Start by adding or clicking an existing server.",
fontFamily = Fonts.ROBOTO_BOLD, fontFamily = Fonts.ROBOTO_BOLD,
fontSize = TextUnit(20F, TextUnitType.Sp), fontSize = TextUnit(20F, TextUnitType.Sp),
color = Color.White color = Color.White