/** * @RDE_HEADER@ * DBUpdate - Global updates model * $Id$ * $HeadURL$ * $Author$ * Created by Iuliana Ojog, 2021-02-17 */ #pragma once #include "logger.h" #include #include #include namespace DBUpdate { //TODO: when a new global schema is defined, should be also added here. Or dynamic collect the schemas. Current status: 2022.10.06 static const QStringList &global_schemas = { QStringLiteral("AES"), QStringLiteral("ASM"), QStringLiteral("AVM"), QStringLiteral("CORE"), QStringLiteral("EXM"), QStringLiteral("FLM"), QStringLiteral("FLT"), QStringLiteral("GNA"), QStringLiteral("ISM"), QStringLiteral("MDM"), QStringLiteral("MSG"), QStringLiteral("NOM"), QStringLiteral("OPM"), QStringLiteral("PDM"), QStringLiteral("PPM"), QStringLiteral("SOM"), QStringLiteral("SRM"), QStringLiteral("TAB"), QStringLiteral("WHG"), QStringLiteral("PUBLIC") }; struct GlobalUpdate { QString schema; QString version = QStringLiteral("0.000"); QString description = QStringLiteral("no available information"); qint64 updated = 0; bool isChecked = false; }; class GlobalUpdatesModel : public QAbstractTableModel { Q_OBJECT public: enum Columns { Schema, Version, Description, Updated }; explicit GlobalUpdatesModel(QObject *parent = nullptr); ~GlobalUpdatesModel(); bool initModel(const QSqlDatabase &db, const QString &version = QStringLiteral("0.00"), QStringList schemas = global_schemas); QVariant data(const QModelIndex &, int) const override final; bool setData(const QModelIndex &index, const QVariant &value, int role) override final; Qt::ItemFlags flags(const QModelIndex &index) const override final; int rowCount(const QModelIndex &parent) const override final; int columnCount(const QModelIndex &parent) const override final; QVariant headerData(int section, Qt::Orientation orientation, int role) const override final; GlobalUpdate getRowData(int row) const; bool insertRow(const GlobalUpdate &item); QStringList getSchemasToUpdate(); const QString getLastUpdate() { return m_lastUpdate; } friend class GlobalUpdatesProxyModel; private: QString m_lastUpdate = QStringLiteral("0.000"); QVector m_vecData; LOGGER_T m_logger; }; class GlobalUpdatesProxyModel final : public QSortFilterProxyModel { Q_OBJECT public: using QSortFilterProxyModel::QSortFilterProxyModel; void setSourceModel(QAbstractItemModel *sourceModel) override; protected: bool lessThan(const QModelIndex &source_left, const QModelIndex &source_right) const override; private: GlobalUpdatesModel *m_sourceModel = nullptr; }; }