feat: remove output button

This commit is contained in:
aro 2022-12-02 17:20:16 +01:00
parent 379d1b2f2e
commit 50b52ecf58
8 changed files with 150 additions and 54 deletions

View file

@ -9,7 +9,6 @@ import xyz.atnrch.wrench.components.center.empty.DefaultDisplay
import xyz.atnrch.wrench.components.center.input.InputEntries
import xyz.atnrch.wrench.components.center.output.OutputEntries
import xyz.atnrch.wrench.watcher.WatcherManager
import java.io.File
import java.nio.file.Path
@Composable
@ -24,7 +23,7 @@ fun WatcherDisplay(
modifier = Modifier.padding(0.dp, 0.dp, 0.dp, 55.dp)
) {
if (watcherManager.getEntries().isEmpty()) {
watcherManager.addFile(File("/home/aro/IdeaProjects/Wrench/dummy"))
//watcherManager.addFile(File("/home/aro/IdeaProjects/Wrench/dummy"))
DefaultDisplay()
} else {
InputEntries(watcherManager, onEntryClick)

View file

@ -30,6 +30,6 @@ fun WrenchScaffold() {
floatingActionButton = { FloatingButton(watcherManager) },
isFloatingActionButtonDocked = true,
backgroundColor = UIColors.PRIMARY,
bottomBar = { BottomAppBar(watcherManager, watcher, currentClick, outputs) }
bottomBar = { BottomAppBar(watcherManager, watcher, currentClick, outputs) { currentClick = it } }
) { WatcherDisplay(watcherManager, currentClick, outputs) { currentClick = it } }
}

View file

@ -1,2 +1,64 @@
package xyz.atnrch.wrench.components.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.NoteAdd
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.components.center.showDirectoryPicker
import xyz.atnrch.wrench.logger.Logger
import xyz.atnrch.wrench.ui.UIColors
import xyz.atnrch.wrench.watcher.WatcherEntry
import xyz.atnrch.wrench.watcher.WatcherManager
import java.nio.file.Path
@Composable
fun AddOutputButton(
watcherManager: WatcherManager,
outputs: MutableList<Path>,
currentClick: Int
) {
Button(
onClick =
{
val entry: WatcherEntry? = watcherManager.getFromId(currentClick)
showDirectoryPicker({
Logger.info("Path: ${it.absolutePath}")
entry!!.map.add(it.toPath())
outputs.add(it.toPath())
}, {
Logger.info("No file selected.")
})
},
colors = ButtonDefaults.buttonColors(UIColors.DARK, 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.NoteAdd,
tint = UIColors.ORANGE,
contentDescription = "Add output",
modifier = Modifier.size(22.dp)
)
Spacer(Modifier.size(ButtonDefaults.IconSpacing))
Text("Add output...")
}
}

View file

@ -13,12 +13,13 @@ fun BottomAppBar(
watcherManager: WatcherManager,
watcher: Watcher,
currentClick: Int,
outputs: MutableList<Path>
outputs: MutableList<Path>,
onCurrentClick: (Int) -> Unit
) {
androidx.compose.material.BottomAppBar(
cutoutShape = MaterialTheme.shapes.small.copy(
CornerSize(percent = 50)
),
backgroundColor = UIColors.DARK
) { BottomRowNew(watcherManager, watcher, currentClick, outputs) }
) { BottomRowNew(watcherManager, watcher, currentClick, outputs, onCurrentClick) }
}

View file

@ -1,5 +1,61 @@
package xyz.atnrch.wrench.components.bottom
class RemoveOutputButton(watcherManager: WatcherManager, outputs: MutableList<Path>, currentClick: Int) {
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.Delete
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.registery.ACTIVE_COMPOSABLE
import xyz.atnrch.wrench.ui.UIColors
import xyz.atnrch.wrench.watcher.WatcherEntry
import xyz.atnrch.wrench.watcher.WatcherManager
import java.nio.file.Path
@Composable
fun RemoveOutputButton(
watcherManager: WatcherManager,
outputs: MutableList<Path>,
currentClick: Int,
onCurrentClick: (Int) -> Unit
) {
Button(
onClick =
{
val entry: WatcherEntry? = watcherManager.getFromId(currentClick)
watcherManager.removeFile(currentClick)
outputs.clear()
ACTIVE_COMPOSABLE = -1
onCurrentClick.invoke(-1)
},
colors = ButtonDefaults.buttonColors(UIColors.DARK, Color.White),
contentPadding = PaddingValues(
start = 14.dp,
top = 6.dp,
end = 14.dp,
bottom = 6.dp
),
shape = RoundedCornerShape(100),
border = BorderStroke(2.dp, UIColors.STRESS),
modifier = Modifier.shadow(24.dp, RoundedCornerShape(100), false)
) {
Icon(
Icons.Filled.Delete,
tint = UIColors.STRESS,
contentDescription = "Remove file",
modifier = Modifier.size(22.dp)
)
Spacer(Modifier.size(ButtonDefaults.IconSpacing))
Text("Delete input")
}
}

View file

@ -11,18 +11,14 @@ 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.NoteAdd
import androidx.compose.material.icons.filled.Update
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.components.center.showDirectoryPicker
import xyz.atnrch.wrench.logger.Logger
import xyz.atnrch.wrench.ui.UIColors
import xyz.atnrch.wrench.watcher.Watcher
import xyz.atnrch.wrench.watcher.WatcherEntry
import xyz.atnrch.wrench.watcher.WatcherManager
import java.nio.file.Path
@ -31,7 +27,8 @@ fun BottomRowNew(
watcherManager: WatcherManager,
watcher: Watcher,
currentClick: Int,
outputs: MutableList<Path>
outputs: MutableList<Path>,
onCurrentClick: (Int) -> Unit,
) {
Spacer(Modifier.width(10.dp))
Button(
@ -58,37 +55,8 @@ fun BottomRowNew(
}
if (currentClick != -1) {
Spacer(Modifier.width(10.dp))
Button(
onClick =
{
val entry: WatcherEntry? = watcherManager.getFromId(currentClick)
showDirectoryPicker({
Logger.info("Path: ${it.absolutePath}")
entry!!.map.add(it.toPath())
outputs.add(it.toPath())
}, {
Logger.info("No file selected.")
})
},
colors = ButtonDefaults.buttonColors(UIColors.DARK, 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.NoteAdd,
tint = UIColors.ORANGE,
contentDescription = "Start",
modifier = Modifier.size(22.dp)
)
Spacer(Modifier.size(ButtonDefaults.IconSpacing))
Text("Add output...")
}
AddOutputButton(watcherManager, outputs, currentClick)
Spacer(Modifier.width(10.dp))
RemoveOutputButton(watcherManager, outputs, currentClick, onCurrentClick)
}
}

View file

@ -1,37 +1,43 @@
package xyz.atnrch.wrench.components.center.empty
import androidx.compose.foundation.layout.*
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.rounded.QuestionMark
import androidx.compose.material.icons.rounded.FolderOff
import androidx.compose.runtime.Composable
import androidx.compose.ui.Alignment
import androidx.compose.ui.Modifier
import androidx.compose.ui.graphics.Color
import androidx.compose.ui.unit.ExperimentalUnitApi
import androidx.compose.ui.unit.TextUnit
import androidx.compose.ui.unit.TextUnitType
import androidx.compose.ui.unit.dp
import xyz.atnrch.wrench.ui.Fonts
import xyz.atnrch.wrench.ui.UIColors
@OptIn(ExperimentalUnitApi::class)
@Composable
fun DefaultDisplay() {
Box(
contentAlignment = Alignment.Center,
modifier = Modifier.fillMaxWidth().fillMaxHeight()
) {
Row(
verticalAlignment = Alignment.CenterVertically,
horizontalArrangement = Arrangement.SpaceEvenly
Column (
verticalArrangement = Arrangement.SpaceEvenly,
horizontalAlignment = Alignment.CenterHorizontally
) {
Icon(
imageVector = Icons.Rounded.QuestionMark,
tint = Color.White,
imageVector = Icons.Rounded.FolderOff,
tint = UIColors.ORANGE,
contentDescription = "Open Folder",
modifier = Modifier.size(ButtonDefaults.IconSize)
modifier = Modifier.size(58.dp)
)
Spacer(Modifier.size(ButtonDefaults.IconSpacing))
Spacer(Modifier.height(24.dp))
Text(
text = "Add a file to start...",
fontFamily = Fonts.ROBOTO_REGULAR,
fontFamily = Fonts.ROBOTO_BOLD,
fontSize = TextUnit(20F, TextUnitType.Sp),
color = Color.White
)
}

View file

@ -13,6 +13,10 @@ class WatcherManager(private val entries: MutableMap<Int, WatcherEntry>) {
Logger.info("Tracking new file:\n ID: $currentId\n Name: ${file.name}\n Path: ${file.absolutePath}")
}
fun removeFile(id: Int) {
entries.remove(id)
}
fun getEntries(): MutableMap<Int, WatcherEntry> {
return entries
}