Files

117 lines
1.7 KiB
C++
Raw Permalink Normal View History

2016-08-21 19:20:29 +02:00
#include "NumberSourceDataModel.hpp"
2017-01-31 21:30:56 +01:00
#include <QtCore/QJsonValue>
2016-08-21 19:20:29 +02:00
#include <QtGui/QDoubleValidator>
#include "DecimalData.hpp"
2016-08-21 19:20:29 +02:00
NumberSourceDataModel::
NumberSourceDataModel()
: _lineEdit(new QLineEdit())
{
_lineEdit->setValidator(new QDoubleValidator());
_lineEdit->setMaximumSize(_lineEdit->sizeHint());
connect(_lineEdit, &QLineEdit::textChanged,
this, &NumberSourceDataModel::onTextEdited);
_lineEdit->setText("0.0");
}
2017-01-31 21:30:56 +01:00
QJsonObject
2016-09-23 09:45:07 +02:00
NumberSourceDataModel::
2017-01-31 21:30:56 +01:00
save() const
2016-09-23 09:45:07 +02:00
{
2017-01-31 21:30:56 +01:00
QJsonObject modelJson = NodeDataModel::save();
2016-09-23 09:45:07 +02:00
if (_number)
2017-01-31 21:30:56 +01:00
modelJson["number"] = QString::number(_number->number());
return modelJson;
2016-09-23 09:45:07 +02:00
}
void
NumberSourceDataModel::
2017-01-31 21:30:56 +01:00
restore(QJsonObject const &p)
2016-09-23 09:45:07 +02:00
{
2017-01-31 21:30:56 +01:00
QJsonValue v = p["number"];
2016-09-23 09:45:07 +02:00
2017-01-31 21:30:56 +01:00
if (!v.isUndefined())
2016-09-23 09:45:07 +02:00
{
2017-01-31 21:30:56 +01:00
QString strNum = v.toString();
bool ok;
double d = strNum.toDouble(&ok);
if (ok)
{
_number = std::make_shared<DecimalData>(d);
_lineEdit->setText(strNum);
}
2016-09-23 09:45:07 +02:00
}
}
2016-08-21 19:20:29 +02:00
unsigned int
NumberSourceDataModel::
nPorts(PortType portType) const
{
unsigned int result = 1;
switch (portType)
{
case PortType::In:
2016-08-21 19:20:29 +02:00
result = 0;
break;
case PortType::Out:
2016-08-21 19:20:29 +02:00
result = 1;
default:
break;
}
return result;
}
void
NumberSourceDataModel::
onTextEdited(QString const &string)
{
Q_UNUSED(string);
bool ok = false;
double number = _lineEdit->text().toDouble(&ok);
if (ok)
{
_number = std::make_shared<DecimalData>(number);
2016-08-21 19:20:29 +02:00
emit dataUpdated(0);
}
else
{
emit dataInvalidated(0);
}
}
NodeDataType
NumberSourceDataModel::
dataType(PortType, PortIndex) const
{
return DecimalData().type();
2016-08-21 19:20:29 +02:00
}
std::shared_ptr<NodeData>
NumberSourceDataModel::
outData(PortIndex)
{
return _number;
}