feat: remove output button
This commit is contained in:
parent
379d1b2f2e
commit
50b52ecf58
8 changed files with 150 additions and 54 deletions
|
@ -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)
|
||||
|
|
|
@ -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 } }
|
||||
}
|
|
@ -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...")
|
||||
}
|
||||
}
|
|
@ -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) }
|
||||
}
|
|
@ -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")
|
||||
}
|
||||
}
|
||||
|
|
|
@ -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(
|
||||
|
@ -56,39 +53,10 @@ fun BottomRowNew(
|
|||
Spacer(Modifier.size(ButtonDefaults.IconSpacing))
|
||||
Text("Move files")
|
||||
}
|
||||
if(currentClick != -1) {
|
||||
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)
|
||||
}
|
||||
}
|
|
@ -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
|
||||
)
|
||||
}
|
||||
|
|
|
@ -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
|
||||
}
|
||||
|
|
Reference in a new issue