1
0
Fork 0

set user-entered values

This commit is contained in:
Kevin Matz 2021-09-02 13:23:58 -04:00
parent de786159ff
commit c11f6c0510
1 changed files with 48 additions and 5 deletions

View File

@ -124,12 +124,55 @@ QVariant UniverseModel::data(const QModelIndex &index, int role) const
bool UniverseModel::setData(const QModelIndex &index, const QVariant &value,
int role)
{
if (data(index, role) != value) {
// FIXME: Implement me!
emit dataChanged(index, index, QVector<int>() << role);
return true;
}
if (data(index, role) == value)
return false;
uint16_t slot = (index.row() * 10) + (index.column() + 1);
uint8_t data;
switch (data_mode_) {
case Decimal:
{
QVariant val = value;
val.convert(QVariant::UInt);
if (val.isNull())
return false;
uint d = val.toUInt();
if (d > 255)
return false;
data = d;
}
break;
case Hex:
{
QVariant val = value;
val.convert(QVariant::String);
if (val.isNull())
return false;
bool ok;
uint d = val.toString().toInt(&ok, 16);
if (!ok)
return false;
if (d > 255)
return false;
data = d;
}
break;
case Percent:
{
QVariant val = value;
val.convert(QVariant::Double);
if (val.isNull())
return false;
data = 255 * (val.toDouble() / 100);
}
break;
}
universe_->setValue(slot, data);
emit dataChanged(index, index, QVector<int>() << role);
return true;
}