diff options
author | Berthold Stoeger <bstoeger@mail.tuwien.ac.at> | 2020-02-26 22:32:04 +0100 |
---|---|---|
committer | Berthold Stoeger <bstoeger@mail.tuwien.ac.at> | 2020-04-07 00:13:35 +0200 |
commit | 04ce908e8ed6239b8f143b3892da0dcdaa6e8262 (patch) | |
tree | caddf0b570a6b24cfffeabb5932bcbcaf672ec6b | |
parent | 75f37a7d10b4c650552a344770c92a2038e9db34 (diff) | |
download | subsurface-04ce908e8ed6239b8f143b3892da0dcdaa6e8262.tar.gz |
CylindersModel: listen and react to signals
React to signals from the undo-commands and update the
model accordingly.
Signed-off-by: Berthold Stoeger <bstoeger@mail.tuwien.ac.at>
-rw-r--r-- | qt-models/cylindermodel.cpp | 31 | ||||
-rw-r--r-- | qt-models/cylindermodel.h | 3 |
2 files changed, 34 insertions, 0 deletions
diff --git a/qt-models/cylindermodel.cpp b/qt-models/cylindermodel.cpp index 7864da76c..8938bfbff 100644 --- a/qt-models/cylindermodel.cpp +++ b/qt-models/cylindermodel.cpp @@ -19,6 +19,9 @@ CylindersModel::CylindersModel(QObject *parent) : CleanerTableModel(parent), << tr("Deco switch at") <<tr("Bot. MOD") <<tr("MND") << tr("Use")); connect(&diveListNotifier, &DiveListNotifier::cylindersReset, this, &CylindersModel::cylindersReset); + connect(&diveListNotifier, &DiveListNotifier::cylinderAdded, this, &CylindersModel::cylinderAdded); + connect(&diveListNotifier, &DiveListNotifier::cylinderRemoved, this, &CylindersModel::cylinderRemoved); + connect(&diveListNotifier, &DiveListNotifier::cylinderEdited, this, &CylindersModel::cylinderEdited); } QVariant CylindersModel::headerData(int section, Qt::Orientation orientation, int role) const @@ -521,6 +524,34 @@ void CylindersModel::remove(QModelIndex index) changed = true; } +void CylindersModel::cylinderAdded(struct dive *changed, int pos) +{ + if (d != changed) + return; + + // The row was already inserted by the undo command. Just inform the model. + beginInsertRows(QModelIndex(), pos, pos); + endInsertRows(); +} + +void CylindersModel::cylinderRemoved(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); + endRemoveRows(); +} + +void CylindersModel::cylinderEdited(struct dive *changed, int pos) +{ + if (d != changed) + return; + + dataChanged(index(pos, TYPE), index(pos, USE)); +} + void CylindersModel::moveAtFirst(int cylid) { if (!d) diff --git a/qt-models/cylindermodel.h b/qt-models/cylindermodel.h index 40eaf98a1..85a59c9f5 100644 --- a/qt-models/cylindermodel.h +++ b/qt-models/cylindermodel.h @@ -54,6 +54,9 @@ public slots: void remove(QModelIndex index); void cylindersReset(const QVector<dive *> &dives); + void cylinderAdded(dive *d, int pos); + void cylinderRemoved(dive *d, int pos); + void cylinderEdited(dive *d, int pos); private: dive *d; |