File indexing completed on 2024-04-28 04:49:03
0001 /* 0002 SPDX-FileCopyrightText: 2018 (c) Matthieu Gallien <matthieu_gallien@yahoo.fr> 0003 0004 SPDX-License-Identifier: LGPL-3.0-or-later 0005 */ 0006 0007 #ifndef VIEWSMODEL_H 0008 #define VIEWSMODEL_H 0009 0010 #include "elisaLib_export.h" 0011 0012 #include "elisautils.h" 0013 #include "datatypes.h" 0014 0015 #include <QAbstractListModel> 0016 0017 #include <memory> 0018 0019 class ViewsModelPrivate; 0020 class ViewsListData; 0021 0022 class ELISALIB_EXPORT ViewsModel : public QAbstractListModel 0023 { 0024 Q_OBJECT 0025 0026 Q_PROPERTY(ViewsListData* viewsData READ viewsData WRITE setViewsData NOTIFY viewsDataChanged) 0027 0028 public: 0029 enum ColumnRoles { 0030 ImageNameRole = Qt::UserRole + 1, 0031 SecondTitleRole, 0032 UseSecondTitleRole, 0033 DatabaseIdRole, 0034 EntryTypeRole, 0035 EntryCategoryRole, 0036 DataTypeRole, 0037 }; 0038 0039 explicit ViewsModel(QObject *parent = nullptr); 0040 0041 ~ViewsModel() override; 0042 0043 [[nodiscard]] QHash<int, QByteArray> roleNames() const override; 0044 0045 [[nodiscard]] Qt::ItemFlags flags(const QModelIndex &index) const override; 0046 0047 [[nodiscard]] int rowCount(const QModelIndex &parent = QModelIndex()) const override; 0048 0049 [[nodiscard]] QVariant data(const QModelIndex &index, int role = Qt::DisplayRole) const override; 0050 0051 [[nodiscard]] QModelIndex index(int row, int column, const QModelIndex &parent = QModelIndex()) const override; 0052 0053 [[nodiscard]] QModelIndex parent(const QModelIndex &child) const override; 0054 0055 [[nodiscard]] ViewsListData* viewsData() const; 0056 0057 Q_SIGNALS: 0058 0059 void viewsDataChanged(); 0060 0061 public Q_SLOTS: 0062 0063 void setViewsData(ViewsListData* viewsData); 0064 0065 private Q_SLOTS: 0066 0067 void dataAboutToBeAdded(int startIndex, int lastIndex); 0068 0069 void dataAdded(); 0070 0071 void dataAboutToBeRemoved(int startIndex, int lastIndex); 0072 0073 void dataRemoved(); 0074 0075 void dataModified(int currentIndex); 0076 0077 void dataAboutToBeReset(); 0078 0079 void dataReset(); 0080 0081 private: 0082 0083 std::unique_ptr<ViewsModelPrivate> d; 0084 }; 0085 0086 #endif // VIEWSMODEL_H