refactor: global refactor and optimization

This commit is contained in:
aro 2023-01-14 22:09:23 +01:00
parent be5039b386
commit 68fae30197
22 changed files with 75 additions and 97 deletions

View file

@ -5,7 +5,7 @@ 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.style.UIColors
import xyz.atnrch.wrench.gui.appearance.UIColors
import xyz.atnrch.wrench.watcher.Watcher
import xyz.atnrch.wrench.watcher.WatcherManager
import java.nio.file.Path

View file

@ -1,4 +1,4 @@
package xyz.atnrch.wrench.gui.filemanager.top
package xyz.atnrch.wrench.gui
import androidx.compose.foundation.layout.Spacer
import androidx.compose.foundation.layout.size
@ -12,14 +12,15 @@ import androidx.compose.runtime.Composable
import androidx.compose.ui.Modifier
import androidx.compose.ui.graphics.Color
import androidx.compose.ui.unit.dp
import xyz.atnrch.wrench.gui.style.Fonts
import xyz.atnrch.wrench.gui.style.UIColors
import xyz.atnrch.wrench.json.JsonLayout
import xyz.atnrch.wrench.gui.appearance.Fonts
import xyz.atnrch.wrench.gui.appearance.UIColors
import xyz.atnrch.wrench.gui.filemanager.top.FileManagerTopButtons
import xyz.atnrch.wrench.storage.LayoutStorage
import xyz.atnrch.wrench.watcher.WatcherEntry
@Composable
fun TopBar(
jsonLayout: JsonLayout,
layoutStorage: LayoutStorage,
tabIndex: Int,
values: MutableCollection<WatcherEntry>
) {
@ -42,7 +43,7 @@ fun TopBar(
},
actions = {
if (tabIndex == 0) {
TopBarButtons(jsonLayout, values)
FileManagerTopButtons(layoutStorage, values)
}
}
)

View file

@ -8,7 +8,7 @@ import androidx.compose.runtime.Composable
import androidx.compose.ui.graphics.Color
import xyz.atnrch.wrench.gui.filemanager.FileManagerDisplay
import xyz.atnrch.wrench.gui.server.ServerManagerDisplay
import xyz.atnrch.wrench.gui.style.UIColors
import xyz.atnrch.wrench.gui.appearance.UIColors
import xyz.atnrch.wrench.watcher.WatcherManager
import java.nio.file.Path

View file

@ -7,11 +7,10 @@ import androidx.compose.material.rememberScaffoldState
import androidx.compose.runtime.*
import androidx.compose.ui.unit.dp
import androidx.compose.ui.window.WindowState
import xyz.atnrch.wrench.data.SnackBarDataHolder
import xyz.atnrch.wrench.gui.filemanager.bottom.FloatingButton
import xyz.atnrch.wrench.gui.filemanager.top.TopBar
import xyz.atnrch.wrench.gui.style.UIColors
import xyz.atnrch.wrench.json.JsonLayout
import xyz.atnrch.wrench.gui.appearance.UIColors
import xyz.atnrch.wrench.gui.component.SnackBarDataHolder
import xyz.atnrch.wrench.gui.filemanager.bottom.FloatingAddButton
import xyz.atnrch.wrench.storage.LayoutStorage
import xyz.atnrch.wrench.watcher.Watcher
import xyz.atnrch.wrench.watcher.WatcherEntry
import xyz.atnrch.wrench.watcher.WatcherManager
@ -27,7 +26,7 @@ fun WrenchScaffold(state: WindowState) {
val watcherManager = remember { WatcherManager(entries) }
val watcher = remember { Watcher(watcherManager, snackBarDataHolder) }
val tabTitles = listOf("File Manager", "Servers")
val jsonLayout = JsonLayout {
val layoutStorage = LayoutStorage {
it.forEach { entry ->
watcherManager.addFile(entry.file, entry.outputs)
}
@ -43,8 +42,8 @@ fun WrenchScaffold(state: WindowState) {
} else {
Scaffold(
scaffoldState = scaffoldState,
topBar = { TopBar(jsonLayout, tabIndex, entries.values) },
floatingActionButton = { if (tabIndex == 0) FloatingButton(watcherManager) },
topBar = { TopBar(layoutStorage, tabIndex, entries.values) },
floatingActionButton = { if (tabIndex == 0) FloatingAddButton(watcherManager) },
isFloatingActionButtonDocked = true,
backgroundColor = UIColors.PRIMARY,
bottomBar = {

View file

@ -1,4 +1,4 @@
package xyz.atnrch.wrench.gui.style
package xyz.atnrch.wrench.gui.appearance
import androidx.compose.ui.text.font.FontFamily
import androidx.compose.ui.text.font.FontStyle
@ -15,14 +15,6 @@ class Fonts {
)
)
val ROBOTO_MEDIUM: FontFamily = FontFamily(
Font(
resource = "font/Roboto-Medium.ttf",
style = FontStyle.Normal,
weight = FontWeight.Medium
)
)
val ROBOTO_REGULAR: FontFamily = FontFamily(
Font(
resource = "font/Roboto-Regular.ttf",

View file

@ -1,4 +1,4 @@
package xyz.atnrch.wrench.gui.style
package xyz.atnrch.wrench.gui.appearance
import androidx.compose.ui.graphics.Color
@ -6,7 +6,6 @@ class UIColors {
companion object {
val PRIMARY = Color(0xFF242424)
val DARK_PRIMARY = Color(0XFF1B1B1B)
val LIGHT_PRIMARY = Color(0xFF6D6D6D)
val LIGHT_RED = Color(0xFFF44336)

View file

@ -1,4 +1,4 @@
package xyz.atnrch.wrench.registery
package xyz.atnrch.wrench.gui.component
import androidx.compose.runtime.Composable

View file

@ -1,4 +1,4 @@
package xyz.atnrch.wrench.data
package xyz.atnrch.wrench.gui.component
import androidx.compose.material.ScaffoldState
import kotlinx.coroutines.CoroutineScope

View file

@ -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.empty.DefaultDisplay
import xyz.atnrch.wrench.gui.filemanager.center.DefaultDisplay
import xyz.atnrch.wrench.gui.filemanager.center.input.InputEntries
import xyz.atnrch.wrench.gui.filemanager.center.output.OutputEntries
import xyz.atnrch.wrench.watcher.WatcherManager
@ -42,18 +42,17 @@ fun FileManagerDisplay(
}
@Composable
fun DisplayEntries(
minmode: Boolean,
private fun DisplayEntries(
minMode: Boolean,
watcherManager: WatcherManager,
currentClick: Int,
outputs: MutableList<Path>,
onEntryClick: (id: Int) -> Unit
) {
if (watcherManager.getEntries().isEmpty()) {
//watcherManager.addFile(File("/home/aro/IdeaProjects/Wrench/dummy"))
DefaultDisplay()
} else {
InputEntries(minmode, watcherManager, onEntryClick)
InputEntries(minMode, watcherManager, onEntryClick)
OutputEntries(watcherManager, currentClick, outputs)
}
}

View file

@ -16,9 +16,9 @@ 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
import xyz.atnrch.wrench.gui.filemanager.center.showDirectoryPicker
import xyz.atnrch.wrench.logger.Logger
import xyz.atnrch.wrench.gui.style.UIColors
import xyz.atnrch.wrench.watcher.WatcherEntry
import xyz.atnrch.wrench.watcher.WatcherManager
import java.nio.file.Path

View file

@ -12,13 +12,13 @@ import androidx.compose.runtime.Composable
import androidx.compose.ui.Modifier
import androidx.compose.ui.graphics.Color
import androidx.compose.ui.unit.dp
import xyz.atnrch.wrench.gui.appearance.UIColors
import xyz.atnrch.wrench.gui.filemanager.center.showFilePicker
import xyz.atnrch.wrench.logger.Logger
import xyz.atnrch.wrench.gui.style.UIColors
import xyz.atnrch.wrench.watcher.WatcherManager
@Composable
fun FloatingButton(
fun FloatingAddButton(
watcherManager: WatcherManager
) {
FloatingActionButton(

View file

@ -16,7 +16,7 @@ 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.style.UIColors
import xyz.atnrch.wrench.gui.appearance.UIColors
import xyz.atnrch.wrench.watcher.Watcher
@Composable

View file

@ -16,8 +16,8 @@ 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.gui.style.UIColors
import xyz.atnrch.wrench.gui.appearance.UIColors
import xyz.atnrch.wrench.gui.component.ACTIVE_COMPOSABLE
import xyz.atnrch.wrench.watcher.WatcherManager
import java.nio.file.Path

View file

@ -1,10 +1,10 @@
package xyz.atnrch.wrench.gui.filemanager.center.empty
package xyz.atnrch.wrench.gui.filemanager.center
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.FolderOff
import androidx.compose.material.icons.rounded.CreateNewFolder
import androidx.compose.runtime.Composable
import androidx.compose.ui.Alignment
import androidx.compose.ui.Modifier
@ -13,8 +13,8 @@ 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.gui.style.Fonts
import xyz.atnrch.wrench.gui.style.UIColors
import xyz.atnrch.wrench.gui.appearance.Fonts
import xyz.atnrch.wrench.gui.appearance.UIColors
@OptIn(ExperimentalUnitApi::class)
@Composable
@ -28,7 +28,7 @@ fun DefaultDisplay() {
horizontalAlignment = Alignment.CenterHorizontally
) {
Icon(
imageVector = Icons.Rounded.FolderOff,
imageVector = Icons.Rounded.CreateNewFolder,
tint = UIColors.ORANGE,
contentDescription = "Open Folder",
modifier = Modifier.size(58.dp)

View file

@ -9,9 +9,9 @@ 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.gui.style.UIColors
import xyz.atnrch.wrench.registery.ACTIVE_COMPOSABLE
import xyz.atnrch.wrench.registery.RegisterComposable
import xyz.atnrch.wrench.gui.appearance.UIColors
import xyz.atnrch.wrench.gui.component.ACTIVE_COMPOSABLE
import xyz.atnrch.wrench.gui.component.RegisterComposable
import xyz.atnrch.wrench.watcher.WatcherManager
@Composable
@ -22,7 +22,7 @@ fun InputEntries(
) {
Box(
contentAlignment = Alignment.Center,
modifier = getModifier(minMode, onEntryClick)
modifier = getBoxModifier(minMode, onEntryClick)
) {
InputTopText()
Column(
@ -42,26 +42,21 @@ fun InputEntries(
}
@Composable
fun getModifier(
minmode: Boolean,
private fun getBoxModifier(
minMode: Boolean,
onEntryClick: (id: Int) -> Unit
): Modifier {
return if (minmode)
Modifier
val modifier: Modifier = Modifier.border(BorderStroke(4.dp, UIColors.ORANGE), RectangleShape)
.clickable {
ACTIVE_COMPOSABLE = -1
onEntryClick.invoke(-1)
}
return if (minMode)
modifier
.fillMaxWidth()
.fillMaxHeight(0.5f)
.border(BorderStroke(4.dp, UIColors.ORANGE), RectangleShape)
.clickable {
ACTIVE_COMPOSABLE = -1
onEntryClick.invoke(-1)
} else {
Modifier
else modifier
.fillMaxHeight()
.fillMaxWidth(0.5f)
.border(BorderStroke(4.dp, UIColors.ORANGE), RectangleShape)
.clickable {
ACTIVE_COMPOSABLE = -1
onEntryClick.invoke(-1)
}
}
}

View file

@ -12,9 +12,9 @@ import androidx.compose.ui.text.TextStyle
import androidx.compose.ui.unit.ExperimentalUnitApi
import androidx.compose.ui.unit.TextUnit
import androidx.compose.ui.unit.TextUnitType
import xyz.atnrch.wrench.gui.style.Fonts
import xyz.atnrch.wrench.gui.style.UIColors
import xyz.atnrch.wrench.registery.ACTIVE_COMPOSABLE
import xyz.atnrch.wrench.gui.appearance.Fonts
import xyz.atnrch.wrench.gui.appearance.UIColors
import xyz.atnrch.wrench.gui.component.ACTIVE_COMPOSABLE
import xyz.atnrch.wrench.watcher.WatcherEntry
@OptIn(ExperimentalUnitApi::class, ExperimentalFoundationApi::class)

View file

@ -13,8 +13,8 @@ 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.gui.style.Fonts
import xyz.atnrch.wrench.gui.style.UIColors
import xyz.atnrch.wrench.gui.appearance.Fonts
import xyz.atnrch.wrench.gui.appearance.UIColors
import xyz.atnrch.wrench.watcher.WatcherEntry
import xyz.atnrch.wrench.watcher.WatcherManager
import java.nio.file.Path

View file

@ -9,21 +9,21 @@ import androidx.compose.runtime.Composable
import androidx.compose.ui.Modifier
import androidx.compose.ui.graphics.Color
import androidx.compose.ui.unit.dp
import xyz.atnrch.wrench.gui.style.UIColors
import xyz.atnrch.wrench.json.JsonLayout
import xyz.atnrch.wrench.json.SerializedWatcherEntry
import xyz.atnrch.wrench.gui.appearance.UIColors
import xyz.atnrch.wrench.storage.LayoutStorage
import xyz.atnrch.wrench.storage.SerializedWatcherEntry
import xyz.atnrch.wrench.watcher.WatcherEntry
import xyz.atnrch.wrench.watcher.WatcherManager
@Composable
fun TopBarButtons(
jsonLayout: JsonLayout,
fun FileManagerTopButtons(
layoutStorage: LayoutStorage,
values: MutableCollection<WatcherEntry>
) {
Button(
colors = ButtonDefaults.buttonColors(UIColors.DARK_GREEN, Color.White),
onClick = {
jsonLayout.writeLayout(SerializedWatcherEntry.fromUnserializedEntries(values.toList()))
layoutStorage.storeLayout(SerializedWatcherEntry.fromUnserializedEntries(values.toList()))
}) {
Text("Save")
}
@ -37,7 +37,7 @@ fun TopBarButtons(
// for the past 2 hrs
// TODO: Make it cleaner maybe?
WatcherManager.CURRENT_ID = 0
jsonLayout.readLayout()
layoutStorage.readLayout()
}) {
Text("Load")
}

View file

@ -13,8 +13,8 @@ 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.gui.style.Fonts
import xyz.atnrch.wrench.gui.style.UIColors
import xyz.atnrch.wrench.gui.appearance.Fonts
import xyz.atnrch.wrench.gui.appearance.UIColors
@OptIn(ExperimentalUnitApi::class)
@Composable

View file

@ -1,4 +1,4 @@
package xyz.atnrch.wrench.json
package xyz.atnrch.wrench.storage
import com.google.gson.Gson
import com.google.gson.reflect.TypeToken
@ -7,16 +7,14 @@ import java.io.File
import java.io.FileReader
import java.io.FileWriter
class JsonLayout(
private val onWatcherEntriesUpdate: (List<WatcherEntry>) -> Unit
) {
class LayoutStorage(private val onWatcherEntriesUpdate: (List<WatcherEntry>) -> Unit) {
private val entryListType = object : TypeToken<List<SerializedWatcherEntry>>() {}.type
private val gson: Gson = Gson().newBuilder()
.setPrettyPrinting()
.create()
private val file = File("layout.json")
fun writeLayout(list: List<SerializedWatcherEntry>) {
fun storeLayout(list: List<SerializedWatcherEntry>) {
val writer = FileWriter(file)
gson.toJson(list, writer)
writer.flush()

View file

@ -1,4 +1,4 @@
package xyz.atnrch.wrench.json
package xyz.atnrch.wrench.storage
import xyz.atnrch.wrench.watcher.WatcherEntry
import java.io.File

View file

@ -2,7 +2,7 @@ package xyz.atnrch.wrench.watcher
import androidx.compose.material.SnackbarDuration
import kotlinx.coroutines.launch
import xyz.atnrch.wrench.data.SnackBarDataHolder
import xyz.atnrch.wrench.gui.component.SnackBarDataHolder
import xyz.atnrch.wrench.logger.Logger
import java.io.IOException
import java.nio.file.Files
@ -10,10 +10,7 @@ import java.nio.file.Path
import java.nio.file.StandardCopyOption
import kotlin.io.path.name
class Watcher(
private val watcherManager: WatcherManager,
private val snackBarDataHolder: SnackBarDataHolder
) {
class Watcher(private val watcherManager: WatcherManager, private val snackBarDataHolder: SnackBarDataHolder) {
fun move() {
Logger.info("Moving files...")
snackBarDataHolder.coroutineScope.launch {
@ -31,11 +28,9 @@ class Watcher(
}
}
}
val logMessage: String = if (foldersTotal < 1) {
"No files to move!"
} else {
val logMessage: String = if (foldersTotal < 1)
"No files to move!" else
"Successfully moved $filesTotal ${if (filesTotal > 1) "files" else "file"} to $foldersTotal ${if (foldersTotal > 1) "folders" else "folder"}."
}
Logger.info(logMessage)
Logger.info("Done moving files.")
snackBarDataHolder.scaffoldState.snackbarHostState.currentSnackbarData?.dismiss()