From 087d24e7b65b6fb4f599fc2546cae5c6f8ee7053 Mon Sep 17 00:00:00 2001 From: Hamed Masafi Date: Sun, 12 Feb 2023 20:07:30 +0330 Subject: [PATCH] Fix compile with cmake (#132) * fix workflow on push * Change qt versions * add PhraseData::DatePartDayOfWeek * Ready for Qt 6.4.2 --- .cmake.conf | 2 +- CMakeLists.txt | 6 +++--- src/nut/CMakeLists.txt | 1 + src/nut/core/abstracttableset.cpp | 32 +++++++++++++++---------------- src/nut/core/query.h | 6 ++---- src/nut/models/databasemodel.cpp | 13 +++++++------ src/nut/phrases/phrasedata.h | 3 ++- 7 files changed, 31 insertions(+), 32 deletions(-) diff --git a/.cmake.conf b/.cmake.conf index 5060cd2..5917b21 100644 --- a/.cmake.conf +++ b/.cmake.conf @@ -1 +1 @@ -set(QT_REPO_MODULE_VERSION "0.7.0") +set(QT_REPO_MODULE_VERSION "6.4.2") diff --git a/CMakeLists.txt b/CMakeLists.txt index d9e7851..48edf87 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -5,9 +5,9 @@ cmake_minimum_required(VERSION 3.16) set(CMAKE_AUTOMOC ON) include(.cmake.conf) -project(Nut - VERSION "0.7.0" - DESCRIPTION "Nut" +project(QtNut + VERSION "${QT_REPO_MODULE_VERSION}" + DESCRIPTION "Qt orm library" HOMEPAGE_URL "https://github.com/HamedMasafi/Nut" LANGUAGES CXX C ) diff --git a/src/nut/CMakeLists.txt b/src/nut/CMakeLists.txt index bb2b7c9..6eeb0c5 100644 --- a/src/nut/CMakeLists.txt +++ b/src/nut/CMakeLists.txt @@ -49,6 +49,7 @@ qt_internal_add_module(Nut NUT_SHARED_POINTER QT_DEPRECATED_WARNINGS INCLUDE_DIRECTORIES + . config core generators diff --git a/src/nut/core/abstracttableset.cpp b/src/nut/core/abstracttableset.cpp index 5a1e574..2733fff 100644 --- a/src/nut/core/abstracttableset.cpp +++ b/src/nut/core/abstracttableset.cpp @@ -19,6 +19,8 @@ **************************************************************************/ #include +#include +#include #include "table.h" #include "database.h" @@ -57,19 +59,16 @@ int AbstractTableSet::save(Database *db) masterModel = db->model().tableByClassName( QString::fromUtf8(data->table->metaObject()->className())); - QMutableListIterator> weaks(data->weakChildren); - while (weaks.hasNext()) { - auto &row = weaks.next(); + //TODO: find a better replacement for QMutableListIterator + auto tmp = data->weakChildren; + data->weakChildren.clear(); + for (auto &w: tmp) { - if (!row) { - weaks.remove(); + if (!w) continue; - } - auto t = row.lock(); - if (t.isNull()) { - weaks.remove(); + auto t = w.lock(); + if (t.isNull()) continue; - } if (data->table) t->setParentTable(data->table, @@ -81,16 +80,15 @@ int AbstractTableSet::save(Database *db) || t->status() == Table::Deleted) { rowsAffected += t->save(db); } + data->weakChildren << w; } - QMutableListIterator> childs(data->children); + auto tmp2 = data->children; + data->children.clear(); - while (childs.hasNext()) { - auto &row = childs.next(); - if (!row) { - childs.remove(); + for (auto &row : tmp2) { + if (!row) continue; - } if (data->table) row->setParentTable(data->table, @@ -103,9 +101,9 @@ int AbstractTableSet::save(Database *db) rowsAffected += row->save(db); data->weakChildren.append(row.toWeakRef()); - childs.remove(); continue; } + data->children << row; } // data->children.clear(); diff --git a/src/nut/core/query.h b/src/nut/core/query.h index 6fe8a2d..91d438e 100644 --- a/src/nut/core/query.h +++ b/src/nut/core/query.h @@ -30,6 +30,7 @@ #include #include #include +#include #ifndef NUT_RAW_POINTER #include @@ -293,10 +294,7 @@ Q_OUTOFLINE_TEMPLATE RowList Query::toList(int count) for (int j = 0; j < levels.count(); ++j) { LevelData &dt = levels[j]; - QHashIterator it(masters); - while (it.hasNext()) { - it.next(); - + for (auto it = masters.constBegin(); it != masters.constEnd(); ++it) { if (dt.table->name() == it.key()) { data.masters.append(j); data.masterFields.append(it.value()); diff --git a/src/nut/models/databasemodel.cpp b/src/nut/models/databasemodel.cpp index 50af8fc..d5104a4 100644 --- a/src/nut/models/databasemodel.cpp +++ b/src/nut/models/databasemodel.cpp @@ -227,12 +227,13 @@ DatabaseModel *DatabaseModel::modelByName(const QString &name) void DatabaseModel::deleteAllModels() { - QMapIterator i(_models); - while (i.hasNext()) { - i.next(); -// cout << i.key() << ": " << i.value() << endl; -// qDeleteAll(i.value()); - } + //TODO: recheck this +// QMapIterator i(_models); +// while (i.hasNext()) { +// i.next(); +//// cout << i.key() << ": " << i.value() << endl; +//// qDeleteAll(i.value()); +// } // qDeleteAll(_models.values()); _models.clear(); } diff --git a/src/nut/phrases/phrasedata.h b/src/nut/phrases/phrasedata.h index bd1dde6..92acf51 100644 --- a/src/nut/phrases/phrasedata.h +++ b/src/nut/phrases/phrasedata.h @@ -80,7 +80,8 @@ public: DatePartHour, DatePartMinute, DatePartSecond, - DatePartMilisecond + DatePartMilisecond, + DatePartDayOfWeek // // special types // Distance };