From b4d2691e656b62e947434f0f9a7c5c286ea8301e Mon Sep 17 00:00:00 2001 From: Mestima Date: Tue, 11 Oct 2022 23:16:30 +0300 Subject: [PATCH] Progress bar fix, new features --- .../zomboidmodscopier/CopierController.kt | 57 ++++++++++++++++--- .../me/mestima/zomboidmodscopier/main.fxml | 15 +++-- 2 files changed, 60 insertions(+), 12 deletions(-) diff --git a/src/main/kotlin/me/mestima/zomboidmodscopier/CopierController.kt b/src/main/kotlin/me/mestima/zomboidmodscopier/CopierController.kt index ee65079..f9100e9 100644 --- a/src/main/kotlin/me/mestima/zomboidmodscopier/CopierController.kt +++ b/src/main/kotlin/me/mestima/zomboidmodscopier/CopierController.kt @@ -1,14 +1,20 @@ package me.mestima.zomboidmodscopier +import javafx.application.Platform import javafx.fxml.FXML +import javafx.scene.control.Alert +import javafx.scene.control.Button import javafx.scene.control.ProgressBar import javafx.scene.control.TextField import java.io.File import java.util.concurrent.Semaphore class CopierController { + @FXML + private lateinit var copyBtn: Button - //private val secondPerMod: Long = 2 + @FXML + private lateinit var userBtn: Button @FXML private lateinit var pathName: TextField @@ -19,17 +25,35 @@ class CopierController { @FXML private lateinit var progress: ProgressBar + @FXML + private fun onChangeUsername() { + userBtn.isDisable = true + userName.isDisable = false + } + @FXML private fun onCopy() { + var isCopying: Boolean = true + copyBtn.isDisable = true + userBtn.isDisable = true + pathName.isDisable = true + userName.isDisable = true + + val startAlert: Alert = Alert(Alert.AlertType.INFORMATION) + startAlert.title = "Копирование" + startAlert.headerText = null + startAlert.contentText = "Копирование началось! Не закрывайте программу до окончания копирования. Это может привести к невообразимым последствиям..." + startAlert.show() + + val path = pathName.text val dest = File("C:\\Users\\${userName.text}\\Zomboid") val queue = Semaphore(2) val folder = File(path) - //val modsCount: Double = folder.list().size.toDouble() - //val progressPerMod: Double = 100.0 / modsCount + val modsCount: Double = folder.list().size.toDouble() + val progressPerMod: Double = 1.0 / modsCount - //var i: Long = 0 val lst = folder.list() lst.forEach { Thread { @@ -37,18 +61,35 @@ class CopierController { val subfolder = File("$path\\$it") subfolder.copyRecursively(dest, true) - - if (it == lst.last()) { - progress.progress = 100.0 + if (isCopying) { + progress.progress += progressPerMod + println(progress.progress) } - queue.release() + + if (progress.progress >= 1.0) { + Platform.runLater { + if (isCopying) { + isCopying = false + copyBtn.isDisable = false + userBtn.isDisable = false + pathName.isDisable = false + progress.progress = 0.0 + val doneAlert: Alert = Alert(Alert.AlertType.INFORMATION) + doneAlert.title = "Копирование" + doneAlert.headerText = null + doneAlert.contentText = "Копирование завершено! Программу можно закрыть." + doneAlert.show() + } + } + } }.start() } } fun initialize() { progress.progress = 0.0 + userName.text = System.getProperty("user.name") } } \ No newline at end of file diff --git a/src/main/resources/me/mestima/zomboidmodscopier/main.fxml b/src/main/resources/me/mestima/zomboidmodscopier/main.fxml index 5636881..2630dd2 100644 --- a/src/main/resources/me/mestima/zomboidmodscopier/main.fxml +++ b/src/main/resources/me/mestima/zomboidmodscopier/main.fxml @@ -5,18 +5,25 @@ + - + -