Skip to content

Commit be91633

Browse files
committed
fix undesired changes
1 parent 94a363b commit be91633

4 files changed

Lines changed: 93 additions & 4 deletions

File tree

examples/calculator/DivisionModel.hpp

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -59,23 +59,23 @@ class DivisionModel : public MathOperationDataModel
5959
if (n2 && (n2->number() == 0.0)) {
6060
state._state = QtNodes::NodeValidationState::State::Error;
6161
state._stateMessage = QStringLiteral("Division by zero error");
62-
setValidatonState(state);
62+
setValidationState(state);
6363
_result.reset();
6464
} else if ( n2 && (n2->number() < 1e-5)) {
6565
state._state = QtNodes::NodeValidationState::State::Warning;
6666
state._stateMessage = QStringLiteral("Very small divident. Result might overflow");
67-
setValidatonState(state);
67+
setValidationState(state);
6868
if (n1) {
6969
_result = std::make_shared<DecimalData>(n1->number() / n2->number());
7070
} else {
7171
_result.reset();
7272
}
7373
} else if (n1 && n2) {
74-
setValidatonState(state);
74+
setValidationState(state);
7575
_result = std::make_shared<DecimalData>(n1->number() / n2->number());
7676
} else {
7777
QtNodes::NodeValidationState state;
78-
setValidatonState(state);
78+
setValidationState(state);
7979
_result.reset();
8080
}
8181

Lines changed: 83 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,83 @@
1+
#pragma once
2+
3+
#include <QtNodes/NodeDelegateModel>
4+
#include <QTimer>
5+
#include <QtCore/QObject>
6+
#include <QtWidgets/QLabel>
7+
#include <QtCore/QRandomGenerator64>
8+
9+
#include "MathOperationDataModel.hpp"
10+
#include "DecimalData.hpp"
11+
12+
/// The model generates a random value in a long processing schema,
13+
/// as it should demonstrate the usage of the NodeProcessingStatus.
14+
/// The random number is generate in the [n1, n2] interval.
15+
class RandomNumberModel : public MathOperationDataModel
16+
{
17+
public:
18+
RandomNumberModel() {
19+
this->setNodeProcessingStatus(QtNodes::NodeProcessingStatus::Empty);
20+
21+
22+
QObject::connect(this, &NodeDelegateModel::computingStarted, this, [this]() {
23+
if (_number1.lock() && _number2.lock()) {
24+
this->setNodeProcessingStatus(
25+
QtNodes::NodeProcessingStatus::Processing);
26+
}
27+
28+
emit requestNodeUpdate();
29+
});
30+
QObject::connect(this, &NodeDelegateModel::computingFinished, this, [this]() {
31+
this->setNodeProcessingStatus(
32+
QtNodes::NodeProcessingStatus::Updated);
33+
34+
emit requestNodeUpdate();
35+
});
36+
}
37+
virtual ~RandomNumberModel() {}
38+
39+
public:
40+
QString caption() const override { return QStringLiteral("Random Number"); }
41+
42+
QString name() const override { return QStringLiteral("Random Number"); }
43+
44+
private:
45+
void compute() override
46+
{
47+
Q_EMIT computingStarted();
48+
PortIndex const outPortIndex = 0;
49+
50+
auto n1 = _number1.lock();
51+
auto n2 = _number2.lock();
52+
53+
QTimer *timer = new QTimer(this);
54+
timer->start(1000);
55+
int secondsRemaining = 3;
56+
connect(timer, &QTimer::timeout, this, [=]() mutable {
57+
if (--secondsRemaining <= 0) {
58+
timer->stop();
59+
if (n1 && n2) {
60+
double a = n1->number();
61+
double b = n2->number();
62+
63+
if (a > b) {
64+
setNodeProcessingStatus(QtNodes::NodeProcessingStatus::Failed);
65+
66+
emit requestNodeUpdate();
67+
return;
68+
}
69+
70+
double upper = std::nextafter(b, std::numeric_limits<double>::max());
71+
double randomValue = QRandomGenerator::global()->generateDouble() * (upper - a) + a;
72+
73+
_result = std::make_shared<DecimalData>(randomValue);
74+
Q_EMIT computingFinished();
75+
} else {
76+
_result.reset();
77+
}
78+
79+
Q_EMIT dataUpdated(outPortIndex);
80+
}
81+
});
82+
}
83+
};

examples/calculator/headless_main.cpp

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
#include "AdditionModel.hpp"
22
#include "DivisionModel.hpp"
3+
#include "LongProcessingRandomNumber.hpp"
34
#include "MultiplicationModel.hpp"
45
#include "NumberDisplayDataModel.hpp"
56
#include "NumberSourceDataModel.hpp"
@@ -27,6 +28,8 @@ static std::shared_ptr<NodeDelegateModelRegistry> registerDataModels()
2728

2829
ret->registerModel<DivisionModel>("Operators");
2930

31+
ret->registerModel<RandomNumberModel>("Operators");
32+
3033
return ret;
3134
}
3235

examples/calculator/main.cpp

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -14,6 +14,7 @@
1414

1515
#include "AdditionModel.hpp"
1616
#include "DivisionModel.hpp"
17+
#include "LongProcessingRandomNumber.hpp"
1718
#include "MultiplicationModel.hpp"
1819
#include "NumberDisplayDataModel.hpp"
1920
#include "NumberSourceDataModel.hpp"
@@ -40,6 +41,8 @@ static std::shared_ptr<NodeDelegateModelRegistry> registerDataModels()
4041

4142
ret->registerModel<DivisionModel>("Operators");
4243

44+
ret->registerModel<RandomNumberModel>("Operators");
45+
4346
return ret;
4447
}
4548

0 commit comments

Comments
 (0)