From 82af1b2377cec03a989f86b8009d4ac226c6541e Mon Sep 17 00:00:00 2001 From: Berthold Stoeger Date: Sun, 3 Mar 2019 15:12:22 +0100 Subject: Undo: make undo-system dive site-aware As opposed to dive trips, dive sites were always directly added to the global table, even on import. Instead, parse the divesites into a distinct table and merge them on import. Currently, this does not do any merging of dive sites, i.e. dive sites are considered as either equal or different. Nevertheless, merging of data should be rather easy to implement and simply follow the code of the dive merging. Signed-off-by: Berthold Stoeger --- qt-models/diveimportedmodel.cpp | 8 +++++--- qt-models/diveimportedmodel.h | 3 ++- 2 files changed, 7 insertions(+), 4 deletions(-) (limited to 'qt-models') diff --git a/qt-models/diveimportedmodel.cpp b/qt-models/diveimportedmodel.cpp index 2001f031e..5de0f7cb4 100644 --- a/qt-models/diveimportedmodel.cpp +++ b/qt-models/diveimportedmodel.cpp @@ -4,7 +4,8 @@ DiveImportedModel::DiveImportedModel(QObject *o) : QAbstractTableModel(o), firstIndex(0), lastIndex(-1), - diveTable(nullptr) + diveTable(nullptr), + sitesTable(nullptr) { } @@ -127,11 +128,12 @@ void DiveImportedModel::clearTable() endRemoveRows(); } -void DiveImportedModel::repopulate(dive_table_t *table) +void DiveImportedModel::repopulate(dive_table_t *table, struct dive_site_table *sites) { beginResetModel(); diveTable = table; + sitesTable = sites; firstIndex = 0; lastIndex = diveTable->nr - 1; checkStates.resize(diveTable->nr); @@ -158,7 +160,7 @@ void DiveImportedModel::recordDives() } // TODO: Might want to let the user select IMPORT_ADD_TO_NEW_TRIP - add_imported_dives(diveTable, nullptr, IMPORT_PREFER_IMPORTED | IMPORT_IS_DOWNLOADED); + add_imported_dives(diveTable, nullptr, sitesTable, IMPORT_PREFER_IMPORTED | IMPORT_IS_DOWNLOADED); } QHash DiveImportedModel::roleNames() const { diff --git a/qt-models/diveimportedmodel.h b/qt-models/diveimportedmodel.h index 0c5ba34cd..8b0038478 100644 --- a/qt-models/diveimportedmodel.h +++ b/qt-models/diveimportedmodel.h @@ -20,7 +20,7 @@ public: Qt::ItemFlags flags(const QModelIndex &index) const; Q_INVOKABLE void clearTable(); QHash roleNames() const; - Q_INVOKABLE void repopulate(dive_table_t *table); + Q_INVOKABLE void repopulate(dive_table_t *table, dive_site_table_t *sites); Q_INVOKABLE void recordDives(); public slots: @@ -34,6 +34,7 @@ private: int lastIndex; std::vector checkStates; // char instead of bool to avoid silly pessimization of std::vector. struct dive_table *diveTable; + struct dive_site_table *sitesTable; }; #endif -- cgit v1.2.3-70-g09d2