From 7b743c95fb960be2b370829adbcf7557bdef4aa3 Mon Sep 17 00:00:00 2001 From: aro Date: Mon, 20 Mar 2023 15:11:39 +0100 Subject: [PATCH] refactor: server view --- .../xyz/atnrch/wrench/gui/WrenchScaffold.kt | 9 +++- .../gui/filemanager/FileManagerDisplay.kt | 4 +- .../bottom/FileAppBottomBar.kt} | 7 ++- .../gui/filemanager/bottom/FileBottomRow.kt | 2 +- .../filemanager/bottom/FloatingAddButton.kt | 4 +- ...aultDisplay.kt => EmptyFileManagerView.kt} | 2 +- .../gui/server/bottom/ServerAppBottomBar.kt | 23 +++++++++ .../gui/server/bottom/ServerBottomRow.kt | 23 +++++++++ .../gui/server/bottom/ServerStateButton.kt | 51 +++++++++++++++++++ ...trionView.kt => EmptyServerManagerView.kt} | 6 +-- 10 files changed, 116 insertions(+), 15 deletions(-) rename src/main/kotlin/xyz/atnrch/wrench/gui/{AppBottomBar.kt => filemanager/bottom/FileAppBottomBar.kt} (81%) rename src/main/kotlin/xyz/atnrch/wrench/gui/filemanager/center/{DefaultDisplay.kt => EmptyFileManagerView.kt} (98%) create mode 100644 src/main/kotlin/xyz/atnrch/wrench/gui/server/bottom/ServerAppBottomBar.kt create mode 100644 src/main/kotlin/xyz/atnrch/wrench/gui/server/bottom/ServerBottomRow.kt create mode 100644 src/main/kotlin/xyz/atnrch/wrench/gui/server/bottom/ServerStateButton.kt rename src/main/kotlin/xyz/atnrch/wrench/gui/server/center/{UnderConstrutrionView.kt => EmptyServerManagerView.kt} (88%) diff --git a/src/main/kotlin/xyz/atnrch/wrench/gui/WrenchScaffold.kt b/src/main/kotlin/xyz/atnrch/wrench/gui/WrenchScaffold.kt index d96d707..3ebc313 100644 --- a/src/main/kotlin/xyz/atnrch/wrench/gui/WrenchScaffold.kt +++ b/src/main/kotlin/xyz/atnrch/wrench/gui/WrenchScaffold.kt @@ -9,7 +9,9 @@ import androidx.compose.ui.unit.dp import androidx.compose.ui.window.WindowState import xyz.atnrch.wrench.gui.appearance.UIColors 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.server.bottom.ServerAppBottomBar import xyz.atnrch.wrench.storage.LayoutStorage import xyz.atnrch.wrench.watcher.Watcher import xyz.atnrch.wrench.watcher.WatcherEntry @@ -25,7 +27,7 @@ fun WrenchScaffold(state: WindowState) { val snackBarDataHolder = SnackBarDataHolder(scaffoldState, rememberCoroutineScope()) val watcherManager = remember { WatcherManager(entries) } val watcher = remember { Watcher(watcherManager, snackBarDataHolder) } - val tabTitles = listOf("File Manager", "Servers") + val tabTitles = listOf("Files", "Servers") val layoutStorage = LayoutStorage { it.forEach { entry -> watcherManager.addFile(entry.file, entry.outputs) @@ -47,13 +49,16 @@ fun WrenchScaffold(state: WindowState) { isFloatingActionButtonDocked = true, backgroundColor = UIColors.PRIMARY, bottomBar = { - if (tabIndex == 0) AppBottomBar( + if (tabIndex == 0) FileAppBottomBar( minMode, watcherManager, watcher, currentClick, outputs ) { currentClick = it } + else { + ServerAppBottomBar(minMode, currentClick) { currentClick = it } + } } ) { WatcherDisplay( diff --git a/src/main/kotlin/xyz/atnrch/wrench/gui/filemanager/FileManagerDisplay.kt b/src/main/kotlin/xyz/atnrch/wrench/gui/filemanager/FileManagerDisplay.kt index 6785e1a..1851e3d 100644 --- a/src/main/kotlin/xyz/atnrch/wrench/gui/filemanager/FileManagerDisplay.kt +++ b/src/main/kotlin/xyz/atnrch/wrench/gui/filemanager/FileManagerDisplay.kt @@ -8,7 +8,7 @@ import androidx.compose.runtime.Composable import androidx.compose.ui.Alignment import androidx.compose.ui.Modifier 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.output.OutputEntries import xyz.atnrch.wrench.watcher.WatcherManager @@ -50,7 +50,7 @@ private fun DisplayEntries( onEntryClick: (id: Int) -> Unit ) { if (watcherManager.getEntries().isEmpty()) { - DefaultDisplay() + EmptyFileManagerView() } else { InputEntries(minMode, watcherManager, onEntryClick) OutputEntries(watcherManager, currentClick, outputs) diff --git a/src/main/kotlin/xyz/atnrch/wrench/gui/AppBottomBar.kt b/src/main/kotlin/xyz/atnrch/wrench/gui/filemanager/bottom/FileAppBottomBar.kt similarity index 81% rename from src/main/kotlin/xyz/atnrch/wrench/gui/AppBottomBar.kt rename to src/main/kotlin/xyz/atnrch/wrench/gui/filemanager/bottom/FileAppBottomBar.kt index d895fd0..42dd747 100644 --- a/src/main/kotlin/xyz/atnrch/wrench/gui/AppBottomBar.kt +++ b/src/main/kotlin/xyz/atnrch/wrench/gui/filemanager/bottom/FileAppBottomBar.kt @@ -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.material.BottomAppBar import androidx.compose.material.MaterialTheme import androidx.compose.runtime.Composable -import xyz.atnrch.wrench.gui.filemanager.bottom.FileBottomRow import xyz.atnrch.wrench.gui.appearance.UIColors import xyz.atnrch.wrench.watcher.Watcher import xyz.atnrch.wrench.watcher.WatcherManager import java.nio.file.Path @Composable -fun AppBottomBar( +fun FileAppBottomBar( minMode: Boolean, watcherManager: WatcherManager, watcher: Watcher, @@ -25,6 +24,6 @@ fun AppBottomBar( ), backgroundColor = UIColors.DARK_PRIMARY ) { - FileBottomRow(minMode, watcherManager, watcher, currentClick, outputs, onCurrentClick) + FileButtonBar(minMode, watcherManager, watcher, currentClick, outputs, onCurrentClick) } } \ No newline at end of file diff --git a/src/main/kotlin/xyz/atnrch/wrench/gui/filemanager/bottom/FileBottomRow.kt b/src/main/kotlin/xyz/atnrch/wrench/gui/filemanager/bottom/FileBottomRow.kt index a8c6e0e..7a8e460 100644 --- a/src/main/kotlin/xyz/atnrch/wrench/gui/filemanager/bottom/FileBottomRow.kt +++ b/src/main/kotlin/xyz/atnrch/wrench/gui/filemanager/bottom/FileBottomRow.kt @@ -10,7 +10,7 @@ import xyz.atnrch.wrench.watcher.WatcherManager import java.nio.file.Path @Composable -fun FileBottomRow( +fun FileButtonBar( minMode: Boolean, watcherManager: WatcherManager, watcher: Watcher, diff --git a/src/main/kotlin/xyz/atnrch/wrench/gui/filemanager/bottom/FloatingAddButton.kt b/src/main/kotlin/xyz/atnrch/wrench/gui/filemanager/bottom/FloatingAddButton.kt index fd1ac0a..06af812 100644 --- a/src/main/kotlin/xyz/atnrch/wrench/gui/filemanager/bottom/FloatingAddButton.kt +++ b/src/main/kotlin/xyz/atnrch/wrench/gui/filemanager/bottom/FloatingAddButton.kt @@ -7,7 +7,7 @@ import androidx.compose.material.FloatingActionButton import androidx.compose.material.Icon import androidx.compose.material.MaterialTheme 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.ui.Modifier import androidx.compose.ui.graphics.Color @@ -40,7 +40,7 @@ fun FloatingAddButton( ) ) { Icon( - Icons.Rounded.PostAdd, + Icons.Filled.PostAdd, tint = Color.White, contentDescription = "Add file...", modifier = Modifier.size(32.dp) diff --git a/src/main/kotlin/xyz/atnrch/wrench/gui/filemanager/center/DefaultDisplay.kt b/src/main/kotlin/xyz/atnrch/wrench/gui/filemanager/center/EmptyFileManagerView.kt similarity index 98% rename from src/main/kotlin/xyz/atnrch/wrench/gui/filemanager/center/DefaultDisplay.kt rename to src/main/kotlin/xyz/atnrch/wrench/gui/filemanager/center/EmptyFileManagerView.kt index 32dd2e6..7cf6ffc 100644 --- a/src/main/kotlin/xyz/atnrch/wrench/gui/filemanager/center/DefaultDisplay.kt +++ b/src/main/kotlin/xyz/atnrch/wrench/gui/filemanager/center/EmptyFileManagerView.kt @@ -18,7 +18,7 @@ import xyz.atnrch.wrench.gui.appearance.UIColors @OptIn(ExperimentalUnitApi::class) @Composable -fun DefaultDisplay() { +fun EmptyFileManagerView() { Box( contentAlignment = Alignment.Center, modifier = Modifier.fillMaxWidth().fillMaxHeight() diff --git a/src/main/kotlin/xyz/atnrch/wrench/gui/server/bottom/ServerAppBottomBar.kt b/src/main/kotlin/xyz/atnrch/wrench/gui/server/bottom/ServerAppBottomBar.kt new file mode 100644 index 0000000..5f4d2dc --- /dev/null +++ b/src/main/kotlin/xyz/atnrch/wrench/gui/server/bottom/ServerAppBottomBar.kt @@ -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) + } +} \ No newline at end of file diff --git a/src/main/kotlin/xyz/atnrch/wrench/gui/server/bottom/ServerBottomRow.kt b/src/main/kotlin/xyz/atnrch/wrench/gui/server/bottom/ServerBottomRow.kt new file mode 100644 index 0000000..fa07d52 --- /dev/null +++ b/src/main/kotlin/xyz/atnrch/wrench/gui/server/bottom/ServerBottomRow.kt @@ -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) + }*/ +} \ No newline at end of file diff --git a/src/main/kotlin/xyz/atnrch/wrench/gui/server/bottom/ServerStateButton.kt b/src/main/kotlin/xyz/atnrch/wrench/gui/server/bottom/ServerStateButton.kt new file mode 100644 index 0000000..1d7155a --- /dev/null +++ b/src/main/kotlin/xyz/atnrch/wrench/gui/server/bottom/ServerStateButton.kt @@ -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") + } + } +} \ No newline at end of file diff --git a/src/main/kotlin/xyz/atnrch/wrench/gui/server/center/UnderConstrutrionView.kt b/src/main/kotlin/xyz/atnrch/wrench/gui/server/center/EmptyServerManagerView.kt similarity index 88% rename from src/main/kotlin/xyz/atnrch/wrench/gui/server/center/UnderConstrutrionView.kt rename to src/main/kotlin/xyz/atnrch/wrench/gui/server/center/EmptyServerManagerView.kt index b0516d0..0cbf196 100644 --- a/src/main/kotlin/xyz/atnrch/wrench/gui/server/center/UnderConstrutrionView.kt +++ b/src/main/kotlin/xyz/atnrch/wrench/gui/server/center/EmptyServerManagerView.kt @@ -4,7 +4,7 @@ import androidx.compose.foundation.layout.* import androidx.compose.material.Icon import androidx.compose.material.Text 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.ui.Alignment import androidx.compose.ui.Modifier @@ -28,14 +28,14 @@ fun UnderConstructionView() { horizontalAlignment = Alignment.CenterHorizontally ) { Icon( - imageVector = Icons.Rounded.Engineering, + imageVector = Icons.Rounded.Flag, tint = UIColors.ORANGE, contentDescription = "Icon", modifier = Modifier.size(58.dp) ) Spacer(Modifier.height(24.dp)) Text( - text = "Not implemented yet!", + text = "Start by adding or clicking an existing server.", fontFamily = Fonts.ROBOTO_BOLD, fontSize = TextUnit(20F, TextUnitType.Sp), color = Color.White