From d806420d21f5b3d6da2f6fd88472f2afb91576a1 Mon Sep 17 00:00:00 2001 From: Persson-dev Date: Sun, 2 Feb 2025 11:01:10 +0100 Subject: [PATCH] Fixes #32 --- .../main/java/gui/widget/SmoothProgressBar.java | 15 ++++++++++++--- app/src/main/java/gui/widget/SudokuSelector.java | 6 ++++++ 2 files changed, 18 insertions(+), 3 deletions(-) diff --git a/app/src/main/java/gui/widget/SmoothProgressBar.java b/app/src/main/java/gui/widget/SmoothProgressBar.java index 9db2971..ef0a49c 100644 --- a/app/src/main/java/gui/widget/SmoothProgressBar.java +++ b/app/src/main/java/gui/widget/SmoothProgressBar.java @@ -9,13 +9,22 @@ public class SmoothProgressBar { private final float speed = 2.0f; private final float clipConstant = 0.001f; - public void render(String label, ImVec2 size, float progress) { - float delta = progress - lastProgress; + private void updateProgress(float newProgress) { + float delta = newProgress - lastProgress; if (Math.abs(delta) < clipConstant) - lastProgress = progress; + lastProgress = newProgress; else lastProgress = lastProgress + delta * ImGui.getIO().getDeltaTime() * speed; + } + + public void render(String label, ImVec2 size, float progress) { + updateProgress(progress); ImGui.progressBar(lastProgress, size, label); } + public void render(float progress) { + updateProgress(progress); + ImGui.progressBar(lastProgress); + } + } diff --git a/app/src/main/java/gui/widget/SudokuSelector.java b/app/src/main/java/gui/widget/SudokuSelector.java index ce446ce..07d932a 100644 --- a/app/src/main/java/gui/widget/SudokuSelector.java +++ b/app/src/main/java/gui/widget/SudokuSelector.java @@ -37,10 +37,13 @@ public class SudokuSelector { private Thread genThread = null; + private final SmoothProgressBar genProgressBar; + public SudokuSelector(boolean canGenEmptyGrid, String confirmMessage) { this.canGenEmptyGrid = canGenEmptyGrid; this.confirmMessage = confirmMessage; initConstraints(); + this.genProgressBar = new SmoothProgressBar(); } private List getConstraints() { @@ -68,6 +71,9 @@ public class SudokuSelector { private void renderGenProgress() { if (ImGui.beginPopup("genProgress")) { ImGui.text("Loading ..."); + int filled = this.doku.getFilledCells().size(); + int total = this.doku.getCells().size(); + this.genProgressBar.render(filled / (float) total); ImGui.endPopup(); } else { stopGenThread();