From 12caef0a51bc1e444b8a885a0ddabcfb78a9b9a2 Mon Sep 17 00:00:00 2001 From: ItsDrike Date: Wed, 26 Feb 2025 14:58:24 +0100 Subject: [PATCH] Fix resetting logc & progress bar --- src/FactorizationController.cpp | 16 ++++++++++++---- 1 file changed, 12 insertions(+), 4 deletions(-) diff --git a/src/FactorizationController.cpp b/src/FactorizationController.cpp index 88b7dea..dc66497 100644 --- a/src/FactorizationController.cpp +++ b/src/FactorizationController.cpp @@ -3,7 +3,7 @@ #include FactorizationController::FactorizationController(QObject* parent) : - QObject{parent}, m_isRunning(false), m_useSqrtOptimization(true), m_iterationsPerCycle(1), m_currentFactNumber(0), m_currentFactor(0), m_stopFactor(0) { + QObject{parent}, m_isRunning(false), m_useSqrtOptimization(true), m_iterationsPerCycle(1), m_currentFactNumber(0), m_originalNumber(0), m_currentFactor(0), m_stopFactor(0) { assert(connect(&m_timer, &QTimer::timeout, this, &FactorizationController::onTimerTick)); } @@ -16,6 +16,10 @@ long long FactorizationController::curFactNumber() const { } int FactorizationController::progress() const { + // If the original number is set to 0, the computation wasn't yet initialized / was reset. + if (m_originalNumber == 0) + return 0; + // If current factor is at or below 2 already, we must be done, // stopFactor can never be less than 2, that makes no sense. if (m_currentFactNumber == 1 || m_currentFactor <= 2 || m_currentFactor > m_stopFactor) @@ -138,13 +142,17 @@ void FactorizationController::reset() { return; m_isPaused = false; - m_currentFactNumber = m_originalNumber; - m_currentFactor = 2; + m_originalNumber = 0; + m_currentFactNumber = 0; + m_currentFactor = 0; + m_stopFactor = 0; m_factors.clear(); emit isPausedChanged(); emit currentFactorChanged(); - emit progressChanged(); + emit curFactNumberChanged(); emit factorsChanged(); + emit stopFactorChanged(); + emit progressChanged(); } void FactorizationController::onTimerTick() {