From 4189b304d81a41d98c1fea8dcf31fea82003a070 Mon Sep 17 00:00:00 2001 From: aro Date: Fri, 25 Nov 2022 21:52:19 +0100 Subject: [PATCH] feat: guess I can get the selected file from button now? --- .../wrench/components/WatcherDisplay.kt | 19 +++++++++++++++++-- .../wrench/components/WrenchScaffold.kt | 2 +- .../components/center/DummyTextEntry.kt | 5 +++-- .../components/center/WatcherTextEntry.kt | 6 +++++- .../components/center/input/InputEntries.kt | 7 ++----- .../components/center/output/OutputEntries.kt | 10 +++++----- .../wrench/registery/ComponentRegistery.kt | 17 +++++++++++++++++ .../xyz/atnrch/wrench/watcher/Watcher.kt | 4 ++-- .../atnrch/wrench/watcher/WatcherManager.kt | 15 +++++++++++---- 9 files changed, 63 insertions(+), 22 deletions(-) create mode 100644 src/main/kotlin/xyz/atnrch/wrench/registery/ComponentRegistery.kt diff --git a/src/main/kotlin/xyz/atnrch/wrench/components/WatcherDisplay.kt b/src/main/kotlin/xyz/atnrch/wrench/components/WatcherDisplay.kt index 53d1e4e..1652ddf 100644 --- a/src/main/kotlin/xyz/atnrch/wrench/components/WatcherDisplay.kt +++ b/src/main/kotlin/xyz/atnrch/wrench/components/WatcherDisplay.kt @@ -1,7 +1,13 @@ package xyz.atnrch.wrench.components +import androidx.compose.foundation.layout.Box import androidx.compose.foundation.layout.Row +import androidx.compose.foundation.layout.fillMaxHeight +import androidx.compose.foundation.layout.fillMaxWidth +import androidx.compose.material.Text import androidx.compose.runtime.Composable +import androidx.compose.ui.Alignment +import androidx.compose.ui.Modifier import xyz.atnrch.wrench.components.center.input.InputEntries import xyz.atnrch.wrench.components.center.output.OutputEntries import xyz.atnrch.wrench.watcher.WatcherManager @@ -11,7 +17,16 @@ fun WatcherDisplay( watcherManager: WatcherManager ) { Row { - InputEntries(watcherManager) - OutputEntries() + if(watcherManager.getEntries().isEmpty()) { + Box( + contentAlignment = Alignment.Center, + modifier = Modifier.fillMaxWidth().fillMaxHeight() + ) { + Text("Add a file to start...") + } + } else { + InputEntries(watcherManager) + OutputEntries(watcherManager) + } } } diff --git a/src/main/kotlin/xyz/atnrch/wrench/components/WrenchScaffold.kt b/src/main/kotlin/xyz/atnrch/wrench/components/WrenchScaffold.kt index 7544250..2a3fafd 100644 --- a/src/main/kotlin/xyz/atnrch/wrench/components/WrenchScaffold.kt +++ b/src/main/kotlin/xyz/atnrch/wrench/components/WrenchScaffold.kt @@ -8,7 +8,7 @@ import xyz.atnrch.wrench.watcher.WatcherManager @Composable fun WrenchScaffold() { - val entries: MutableList = remember { mutableStateListOf() } + val entries: MutableMap = remember { mutableStateMapOf() } val watcher = remember { Watcher(entries) } val watcherManager = remember { WatcherManager(entries) } var buttonState by remember { mutableStateOf(false) } diff --git a/src/main/kotlin/xyz/atnrch/wrench/components/center/DummyTextEntry.kt b/src/main/kotlin/xyz/atnrch/wrench/components/center/DummyTextEntry.kt index 42d7f5b..c69db03 100644 --- a/src/main/kotlin/xyz/atnrch/wrench/components/center/DummyTextEntry.kt +++ b/src/main/kotlin/xyz/atnrch/wrench/components/center/DummyTextEntry.kt @@ -3,9 +3,10 @@ package xyz.atnrch.wrench.components.debug import androidx.compose.runtime.Composable import xyz.atnrch.wrench.components.WatcherTextEntry import xyz.atnrch.wrench.watcher.WatcherEntry +import xyz.atnrch.wrench.watcher.WatcherManager import java.io.File @Composable -fun DummyTextEntry() { - WatcherTextEntry(WatcherEntry(File("/home/aro/IdeaProjects/Wrench/dummy"), arrayListOf())) +fun DummyTextEntry(watcherManager: WatcherManager) { + WatcherTextEntry(0, WatcherEntry(File("/home/aro/IdeaProjects/Wrench/dummy"), arrayListOf()), watcherManager) } \ No newline at end of file diff --git a/src/main/kotlin/xyz/atnrch/wrench/components/center/WatcherTextEntry.kt b/src/main/kotlin/xyz/atnrch/wrench/components/center/WatcherTextEntry.kt index 8224908..f4a7404 100644 --- a/src/main/kotlin/xyz/atnrch/wrench/components/center/WatcherTextEntry.kt +++ b/src/main/kotlin/xyz/atnrch/wrench/components/center/WatcherTextEntry.kt @@ -11,12 +11,14 @@ import androidx.compose.ui.unit.ExperimentalUnitApi import androidx.compose.ui.unit.TextUnit import androidx.compose.ui.unit.TextUnitType import xyz.atnrch.wrench.components.center.dialog.EntryDialog +import xyz.atnrch.wrench.registery.ACTIVE_COMPOSABLE import xyz.atnrch.wrench.ui.Fonts import xyz.atnrch.wrench.watcher.WatcherEntry +import xyz.atnrch.wrench.watcher.WatcherManager @OptIn(ExperimentalUnitApi::class) @Composable -fun WatcherTextEntry(entry: WatcherEntry) { +fun WatcherTextEntry(id: Int, entry: WatcherEntry, watcherManager: WatcherManager) { var dialogState by remember { mutableStateOf(false) } Text( @@ -28,6 +30,8 @@ fun WatcherTextEntry(entry: WatcherEntry) { ), modifier = Modifier.clickable { dialogState = true + ACTIVE_COMPOSABLE = id + println("PATH IS ${watcherManager.getFromId(ACTIVE_COMPOSABLE)!!.file.path}") } ) diff --git a/src/main/kotlin/xyz/atnrch/wrench/components/center/input/InputEntries.kt b/src/main/kotlin/xyz/atnrch/wrench/components/center/input/InputEntries.kt index 3dbf42f..233d5a2 100644 --- a/src/main/kotlin/xyz/atnrch/wrench/components/center/input/InputEntries.kt +++ b/src/main/kotlin/xyz/atnrch/wrench/components/center/input/InputEntries.kt @@ -9,7 +9,7 @@ import androidx.compose.ui.Modifier import androidx.compose.ui.graphics.RectangleShape import androidx.compose.ui.unit.dp import xyz.atnrch.wrench.components.WatcherTextEntry -import xyz.atnrch.wrench.components.debug.DummyTextEntry +import xyz.atnrch.wrench.registery.RegisterComposable import xyz.atnrch.wrench.ui.UIColors import xyz.atnrch.wrench.watcher.WatcherManager @@ -30,10 +30,7 @@ fun InputEntries( verticalArrangement = Arrangement.spacedBy(15.dp) ) { watcherManager.getEntries().forEach { - WatcherTextEntry(it) - } - for (i in 0..5) { - DummyTextEntry() + RegisterComposable(it.key) { WatcherTextEntry(it.key, it.value, watcherManager) } } } } diff --git a/src/main/kotlin/xyz/atnrch/wrench/components/center/output/OutputEntries.kt b/src/main/kotlin/xyz/atnrch/wrench/components/center/output/OutputEntries.kt index 97cfdd0..8f487d4 100644 --- a/src/main/kotlin/xyz/atnrch/wrench/components/center/output/OutputEntries.kt +++ b/src/main/kotlin/xyz/atnrch/wrench/components/center/output/OutputEntries.kt @@ -8,11 +8,13 @@ import androidx.compose.ui.Alignment import androidx.compose.ui.Modifier import androidx.compose.ui.graphics.RectangleShape import androidx.compose.ui.unit.dp -import xyz.atnrch.wrench.components.debug.DummyTextEntry +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 @Composable -fun OutputEntries() { +fun OutputEntries(watcherManager: WatcherManager) { Box( contentAlignment = Alignment.Center, modifier = Modifier @@ -25,9 +27,7 @@ fun OutputEntries() { Column( verticalArrangement = Arrangement.spacedBy(15.dp) ) { - for (i in 0..5) { - DummyTextEntry() - } + val entry: WatcherEntry? = watcherManager.getFromId(ACTIVE_COMPOSABLE) } } } \ No newline at end of file diff --git a/src/main/kotlin/xyz/atnrch/wrench/registery/ComponentRegistery.kt b/src/main/kotlin/xyz/atnrch/wrench/registery/ComponentRegistery.kt new file mode 100644 index 0000000..288c8d2 --- /dev/null +++ b/src/main/kotlin/xyz/atnrch/wrench/registery/ComponentRegistery.kt @@ -0,0 +1,17 @@ +package xyz.atnrch.wrench.registery + +import androidx.compose.runtime.Composable + +val REGISTRY: HashMap Unit> = hashMapOf() +var ACTIVE_COMPOSABLE = -1 + +@Composable +fun RegisterComposable(id: Int, composable: @Composable () -> Unit) { + REGISTRY[id] = composable + composable.invoke() +} + +@Composable +fun GetActiveComposable(): Int { + return ACTIVE_COMPOSABLE +} \ No newline at end of file diff --git a/src/main/kotlin/xyz/atnrch/wrench/watcher/Watcher.kt b/src/main/kotlin/xyz/atnrch/wrench/watcher/Watcher.kt index 8d4c929..55ccac4 100644 --- a/src/main/kotlin/xyz/atnrch/wrench/watcher/Watcher.kt +++ b/src/main/kotlin/xyz/atnrch/wrench/watcher/Watcher.kt @@ -6,7 +6,7 @@ import xyz.atnrch.wrench.logger.Logger import java.nio.file.Files import java.util.concurrent.TimeUnit -class Watcher(private val entries: MutableList) { +class Watcher(private val entries: MutableMap) { companion object { var WATCHING = false } @@ -22,7 +22,7 @@ class Watcher(private val entries: MutableList) { while (WATCHING) { delay(TimeUnit.SECONDS.toMillis(5)) val manager = WatcherManager(entries) - for (entry: WatcherEntry in manager.getEntries()) { + for (entry: WatcherEntry in manager.getEntries().values) { entry.map.forEach { Files.copy(entry.file.toPath(), it.toAbsolutePath()) } diff --git a/src/main/kotlin/xyz/atnrch/wrench/watcher/WatcherManager.kt b/src/main/kotlin/xyz/atnrch/wrench/watcher/WatcherManager.kt index 0c69cb2..b300022 100644 --- a/src/main/kotlin/xyz/atnrch/wrench/watcher/WatcherManager.kt +++ b/src/main/kotlin/xyz/atnrch/wrench/watcher/WatcherManager.kt @@ -3,14 +3,21 @@ package xyz.atnrch.wrench.watcher import xyz.atnrch.wrench.logger.Logger import java.io.File -class WatcherManager(private val entries: MutableList) { +class WatcherManager(private val entries: MutableMap) { + private var currentId: Int = -1 + fun addFile(file: File) { val watcherEntry = WatcherEntry(file, arrayListOf()) - entries.add(watcherEntry) - Logger.info("Tracking new file: ${file.name} (${file.absolutePath})") + currentId += 1 + entries[currentId] = (watcherEntry) + Logger.info("Tracking new file:\n ID: $currentId\n Name: ${file.name}\n Path: ${file.absolutePath}") } - fun getEntries(): MutableList { + fun getEntries(): MutableMap { return entries } + + fun getFromId(id: Int): WatcherEntry? { + return entries[id] + } } \ No newline at end of file