mirror of
https://github.com/subsurface/subsurface.git
synced 2025-02-19 22:16:15 +00:00
Allow the CylindersModel delegate to pass data in without unit conversions
With this we should have tank editing mostly done. See #122 (it's not quite fixed, we need the equivalent code for weight systems) Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
This commit is contained in:
parent
87d3cd5234
commit
d273694954
3 changed files with 27 additions and 4 deletions
|
@ -77,16 +77,16 @@ void TankInfoDelegate::setEditorData(QWidget* editor, const QModelIndex& index)
|
||||||
void TankInfoDelegate::setModelData(QWidget* editor, QAbstractItemModel* model, const QModelIndex& index) const
|
void TankInfoDelegate::setModelData(QWidget* editor, QAbstractItemModel* model, const QModelIndex& index) const
|
||||||
{
|
{
|
||||||
QComboBox *c = static_cast<QComboBox*>(editor);
|
QComboBox *c = static_cast<QComboBox*>(editor);
|
||||||
|
CylindersModel *mymodel = qobject_cast<CylindersModel *>(model);
|
||||||
TankInfoModel *tanks = TankInfoModel::instance();
|
TankInfoModel *tanks = TankInfoModel::instance();
|
||||||
QModelIndex tankIndex = tanks->match(tanks->index(0,0), Qt::DisplayRole, c->currentText()).first();
|
QModelIndex tankIndex = tanks->match(tanks->index(0,0), Qt::DisplayRole, c->currentText()).first();
|
||||||
|
|
||||||
int tankSize = tanks->data(tanks->index(tankIndex.row(), TankInfoModel::ML)).toInt();
|
int tankSize = tanks->data(tanks->index(tankIndex.row(), TankInfoModel::ML)).toInt();
|
||||||
int tankPressure = tanks->data(tanks->index(tankIndex.row(), TankInfoModel::BAR)).toInt();
|
int tankPressure = tanks->data(tanks->index(tankIndex.row(), TankInfoModel::BAR)).toInt();
|
||||||
|
|
||||||
model->setData(index, c->currentText(), Qt::EditRole);
|
mymodel->setData(index, c->currentText(), Qt::EditRole);
|
||||||
model->setData(model->index(index.row(), CylindersModel:: SIZE), tankSize );
|
mymodel->passInData(model->index(index.row(), CylindersModel::WORKINGPRESS), tankPressure);
|
||||||
model->setData(model->index(index.row(), CylindersModel::WORKINGPRESS), tankPressure);
|
mymodel->passInData(model->index(index.row(), CylindersModel::SIZE), tankSize);
|
||||||
}
|
}
|
||||||
|
|
||||||
TankInfoDelegate::TankInfoDelegate(QObject* parent): QStyledItemDelegate(parent)
|
TankInfoDelegate::TankInfoDelegate(QObject* parent): QStyledItemDelegate(parent)
|
||||||
|
|
|
@ -111,6 +111,28 @@ QVariant CylindersModel::data(const QModelIndex& index, int role) const
|
||||||
return ret;
|
return ret;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// this is our magic 'pass data in' function that allows the delegate to get
|
||||||
|
// the data here without silly unit conversions;
|
||||||
|
// so we only implement the two columns we care about
|
||||||
|
void CylindersModel::passInData(const QModelIndex& index, const QVariant& value)
|
||||||
|
{
|
||||||
|
cylinder_t *cyl = ¤t->cylinder[index.row()];
|
||||||
|
switch(index.column()) {
|
||||||
|
case SIZE:
|
||||||
|
if (cyl->type.size.mliter != value.toInt()) {
|
||||||
|
cyl->type.size.mliter = value.toInt();
|
||||||
|
mark_divelist_changed(TRUE);
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
case WORKINGPRESS:
|
||||||
|
if (cyl->type.workingpressure.mbar != value.toInt()) {
|
||||||
|
cyl->type.workingpressure.mbar = value.toInt();
|
||||||
|
mark_divelist_changed(TRUE);
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
#define CHANGED(_t,_u1,_u2) value._t() != data(index, role).toString().replace(_u1,"").replace(_u2,"")._t()
|
#define CHANGED(_t,_u1,_u2) value._t() != data(index, role).toString().replace(_u1,"").replace(_u2,"")._t()
|
||||||
|
|
||||||
bool CylindersModel::setData(const QModelIndex& index, const QVariant& value, int role)
|
bool CylindersModel::setData(const QModelIndex& index, const QVariant& value, int role)
|
||||||
|
|
|
@ -51,6 +51,7 @@ public:
|
||||||
/*reimp*/ Qt::ItemFlags flags(const QModelIndex& index) const;
|
/*reimp*/ Qt::ItemFlags flags(const QModelIndex& index) const;
|
||||||
/*reimp*/ bool setData(const QModelIndex& index, const QVariant& value, int role = Qt::EditRole);
|
/*reimp*/ bool setData(const QModelIndex& index, const QVariant& value, int role = Qt::EditRole);
|
||||||
|
|
||||||
|
void passInData(const QModelIndex& index, const QVariant& value);
|
||||||
void add();
|
void add();
|
||||||
void clear();
|
void clear();
|
||||||
void update();
|
void update();
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue