Make stopFactor accessible to QML
This commit is contained in:
parent
028f492c32
commit
c58697b126
3 changed files with 30 additions and 8 deletions
|
@ -119,6 +119,11 @@ ApplicationWindow {
|
|||
font.pixelSize: 14
|
||||
}
|
||||
|
||||
Text {
|
||||
text: "Stop Factor: " + factorizationController.stopFactor
|
||||
font.pixelSize: 14
|
||||
}
|
||||
|
||||
ProgressBar {
|
||||
Layout.fillWidth: true
|
||||
from: 0
|
||||
|
|
|
@ -3,7 +3,7 @@
|
|||
#include <cmath>
|
||||
|
||||
FactorizationController::FactorizationController(QObject* parent) :
|
||||
QObject{parent}, m_isRunning(false), m_useSqrtOptimization(true), m_iterationsPerCycle(1), m_currentFactNumber(0), m_currentFactor(2) {
|
||||
QObject{parent}, m_isRunning(false), m_useSqrtOptimization(true), m_iterationsPerCycle(1), m_currentFactNumber(0), m_currentFactor(0), m_stopFactor(0) {
|
||||
assert(connect(&m_timer, &QTimer::timeout, this, &FactorizationController::onTimerTick));
|
||||
}
|
||||
|
||||
|
@ -70,6 +70,10 @@ long long FactorizationController::currentFactor() const {
|
|||
return m_currentFactor;
|
||||
}
|
||||
|
||||
long long FactorizationController::stopFactor() const {
|
||||
return m_stopFactor;
|
||||
}
|
||||
|
||||
QList<long long> FactorizationController::factors() const {
|
||||
return m_factors;
|
||||
}
|
||||
|
@ -81,6 +85,12 @@ void FactorizationController::start(long long number) {
|
|||
m_isRunning = true;
|
||||
m_isFinished = false;
|
||||
m_factors.clear();
|
||||
if (m_useSqrtOptimization) {
|
||||
// we could also just compute this every time, but sqrt is pretty expensive
|
||||
m_stopFactor = static_cast<long long>(std::sqrt(m_currentFactNumber));
|
||||
} else {
|
||||
m_stopFactor = m_currentFactNumber - 1;
|
||||
}
|
||||
emit isRunningChanged();
|
||||
emit isFinishedChanged();
|
||||
emit numberChanged();
|
||||
|
@ -88,13 +98,7 @@ void FactorizationController::start(long long number) {
|
|||
emit progressChanged();
|
||||
emit factorsChanged();
|
||||
emit curFactNumberChanged();
|
||||
|
||||
if (m_useSqrtOptimization) {
|
||||
// we could also just compute this every time, but sqrt is pretty expensive
|
||||
m_stopFactor = static_cast<long long>(std::sqrt(m_currentFactNumber));
|
||||
} else {
|
||||
m_stopFactor = m_currentFactNumber - 1;
|
||||
}
|
||||
emit stopFactorChanged();
|
||||
|
||||
m_timer.start(0);
|
||||
}
|
||||
|
@ -193,6 +197,7 @@ void FactorizationController::factorize() {
|
|||
} else {
|
||||
m_stopFactor = m_currentFactNumber - 1;
|
||||
}
|
||||
emit stopFactorChanged();
|
||||
emit progressChanged();
|
||||
|
||||
// Don't increase current factor, keep dividing by it until no longer divisible
|
||||
|
|
|
@ -29,6 +29,7 @@ class FactorizationController : public QObject {
|
|||
Q_PROPERTY(long long number READ number NOTIFY numberChanged)
|
||||
Q_PROPERTY(long long curFactNumber READ curFactNumber NOTIFY curFactNumberChanged)
|
||||
Q_PROPERTY(long long currentFactor READ currentFactor NOTIFY currentFactorChanged)
|
||||
Q_PROPERTY(long long stopFactor READ stopFactor NOTIFY stopFactorChanged)
|
||||
Q_PROPERTY(int progress READ progress NOTIFY progressChanged)
|
||||
Q_PROPERTY(QList<long long> factors READ factors NOTIFY factorsChanged)
|
||||
|
||||
|
@ -112,6 +113,16 @@ class FactorizationController : public QObject {
|
|||
*/
|
||||
long long currentFactor() const;
|
||||
|
||||
/**
|
||||
* @brief Get the number at which the factorization process will stop
|
||||
* @return The current stop factor.
|
||||
*
|
||||
* The stop factor determines at which factor will the factorization process be stopped.
|
||||
* If sqrt optimizations are enabled, this will generally be the square root of the number
|
||||
* currently being factorized. If not, it will be the number being factorized - 1.
|
||||
*/
|
||||
long long stopFactor() const;
|
||||
|
||||
/**
|
||||
* @brief Gets the list of discovered factors (may not be complete).
|
||||
* @return A QList of extracted prime factors.
|
||||
|
@ -203,6 +214,7 @@ class FactorizationController : public QObject {
|
|||
void factorsChanged();
|
||||
void progressChanged();
|
||||
void curFactNumberChanged();
|
||||
void stopFactorChanged();
|
||||
|
||||
private slots:
|
||||
void onTimerTick();
|
||||
|
|
Loading…
Add table
Reference in a new issue