/** * @RDE_HEADER@ * DBUpdate * $Id$ * $HeadURL$ * $Author$ * Created by Iuliana Ojog, 2021-02-17 */ #pragma once #include "logger.h" #include #include #include namespace DBUpdate { struct HistoryUpdate { qint64 id; QString schema; QString version; QString description; qint64 updated; bool success; QString message; }; class HistoryModel : public QAbstractTableModel { Q_OBJECT public: enum Columns { Id, Schema, Version, Description, Updated, Success, Message }; explicit HistoryModel(QObject *parent = nullptr); ~HistoryModel(); bool initModel(const QSqlDatabase &db, const QString &schema); QVariant data(const QModelIndex &, int) 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; HistoryUpdate getRowData(int row) const; bool insertRow(const HistoryUpdate &item); friend class HistoryProxyModel; private: QVector m_vecData; LOGGER_T m_logger; }; class HistoryProxyModel 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: HistoryModel *m_sourceModel = nullptr; }; }