diff options
Diffstat (limited to 'qt-models/weightmodel.cpp')
-rw-r--r-- | qt-models/weightmodel.cpp | 35 |
1 files changed, 24 insertions, 11 deletions
diff --git a/qt-models/weightmodel.cpp b/qt-models/weightmodel.cpp index dafd9d277..ceac7617c 100644 --- a/qt-models/weightmodel.cpp +++ b/qt-models/weightmodel.cpp @@ -15,6 +15,8 @@ WeightModel::WeightModel(QObject *parent) : CleanerTableModel(parent), //enum Column {REMOVE, TYPE, WEIGHT}; setHeaderDataStrings(QStringList() << tr("") << tr("Type") << tr("Weight")); connect(&diveListNotifier, &DiveListNotifier::weightsystemsReset, this, &WeightModel::weightsystemsReset); + connect(&diveListNotifier, &DiveListNotifier::weightAdded, this, &WeightModel::weightAdded); + connect(&diveListNotifier, &DiveListNotifier::weightRemoved, this, &WeightModel::weightRemoved); } weightsystem_t *WeightModel::weightSystemAt(const QModelIndex &index) @@ -146,17 +148,6 @@ int WeightModel::rowCount(const QModelIndex&) const return rows; } -void WeightModel::add() -{ - int row = rows; - weightsystem_t ws { {0}, "" }; - beginInsertRows(QModelIndex(), row, row); - add_cloned_weightsystem(&d->weightsystems, ws); - rows++; - changed = true; - endInsertRows(); -} - void WeightModel::updateDive(dive *dIn) { beginResetModel(); @@ -175,3 +166,25 @@ void WeightModel::weightsystemsReset(const QVector<dive *> &dives) // And update the model.. updateDive(d); } + +void WeightModel::weightAdded(struct dive *changed, int pos) +{ + if (d != changed) + return; + + // The last row was already inserted by the undo command. Just inform the model. + beginInsertRows(QModelIndex(), pos, pos); + rows++; + endInsertRows(); +} + +void WeightModel::weightRemoved(struct dive *changed, int pos) +{ + if (d != changed) + return; + + // The row was already deleted by the undo command. Just inform the model. + beginRemoveRows(QModelIndex(), pos, pos); + rows--; + endRemoveRows(); +} |