refactor: server view
This commit is contained in:
parent
4a56148f6e
commit
7b743c95fb
10 changed files with 116 additions and 15 deletions
|
@ -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(
|
||||||
|
|
|
@ -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)
|
||||||
|
|
|
@ -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)
|
||||||
}
|
}
|
||||||
}
|
}
|
|
@ -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,
|
||||||
|
|
|
@ -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)
|
||||||
|
|
|
@ -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()
|
|
@ -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)
|
||||||
|
}
|
||||||
|
}
|
|
@ -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)
|
||||||
|
}*/
|
||||||
|
}
|
|
@ -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")
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
|
@ -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
|
Reference in a new issue