File indexing completed on 2025-02-02 05:02:35

0001 /*
0002     SPDX-FileCopyrightText: 2019 Volker Krause <vkrause@kde.org>
0003 
0004     SPDX-License-Identifier: LGPL-2.0-or-later
0005 */
0006 
0007 #ifndef STATISTICSTIMERANGEMODEL_H
0008 #define STATISTICSTIMERANGEMODEL_H
0009 
0010 #include <QAbstractListModel>
0011 
0012 class ReservationManager;
0013 
0014 /** Selectable time ranges for the statistics page. */
0015 class StatisticsTimeRangeModel : public QAbstractListModel
0016 {
0017     Q_OBJECT
0018     Q_PROPERTY(ReservationManager* reservationManager READ reservationManager WRITE setReservationManager NOTIFY setupChanged)
0019 
0020 public:
0021     explicit StatisticsTimeRangeModel(QObject *parent = nullptr);
0022     ~StatisticsTimeRangeModel() override;
0023 
0024     enum CustomRoles {
0025         BeginRole = Qt::UserRole,
0026         EndRole
0027     };
0028     Q_ENUM(CustomRoles);
0029 
0030     ReservationManager* reservationManager() const;
0031     void setReservationManager(ReservationManager *resMgr);
0032 
0033     int rowCount(const QModelIndex &parent = {}) const override;
0034     QVariant data(const QModelIndex &index, int role) const override;
0035     QHash<int, QByteArray> roleNames() const override;
0036 
0037 Q_SIGNALS:
0038     void setupChanged();
0039 
0040 private:
0041     ReservationManager *m_resMgr = nullptr;
0042     std::vector<int> m_years;
0043 };
0044 
0045 #endif // STATISTICSTIMERANGEMODEL_H