set user-entered values
This commit is contained in:
parent
de786159ff
commit
c11f6c0510
|
@ -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;
|
||||
}
|
||||
|
||||
|
||||
|
|
Loading…
Reference in New Issue