File indexing completed on 2024-03-24 04:51:46
0001 /* 0002 SPDX-FileCopyrightText: 2020 (c) Matthieu Gallien <matthieu_gallien@yahoo.fr> 0003 0004 SPDX-License-Identifier: LGPL-3.0-or-later 0005 */ 0006 0007 #ifndef VIEWCONFIGURATIONDATA_H 0008 #define VIEWCONFIGURATIONDATA_H 0009 0010 #include "elisaLib_export.h" 0011 0012 #include "elisautils.h" 0013 #include "datatypes.h" 0014 #include "viewmanager.h" 0015 0016 #include <QObject> 0017 #include <QString> 0018 #include <QUrl> 0019 #include <QAbstractProxyModel> 0020 0021 #include <memory> 0022 0023 class ViewConfigurationDataPrivate; 0024 class QAbstractItemModel; 0025 0026 class ELISALIB_EXPORT ViewConfigurationData : public QObject 0027 { 0028 Q_OBJECT 0029 0030 Q_PROPERTY(ElisaUtils::FilterType filterType 0031 READ filterType 0032 CONSTANT) 0033 0034 Q_PROPERTY(int expectedDepth 0035 READ expectedDepth 0036 CONSTANT) 0037 0038 Q_PROPERTY(QString mainTitle 0039 READ mainTitle 0040 CONSTANT) 0041 0042 Q_PROPERTY(QString secondaryTitle 0043 READ secondaryTitle 0044 CONSTANT) 0045 0046 Q_PROPERTY(QUrl imageUrl 0047 READ imageUrl 0048 CONSTANT) 0049 0050 Q_PROPERTY(ElisaUtils::PlayListEntryType dataType 0051 READ dataType 0052 CONSTANT) 0053 0054 Q_PROPERTY(QAbstractItemModel *model 0055 READ model 0056 CONSTANT) 0057 0058 Q_PROPERTY(QAbstractProxyModel *associatedProxyModel 0059 READ associatedProxyModel 0060 CONSTANT) 0061 0062 Q_PROPERTY(QUrl viewDefaultIcon 0063 READ viewDefaultIcon 0064 CONSTANT) 0065 0066 Q_PROPERTY(DataTypes::DataType dataFilter 0067 READ dataFilter 0068 CONSTANT) 0069 0070 Q_PROPERTY(ViewManager::ViewCanBeRated viewShowRating 0071 READ viewShowRating 0072 CONSTANT) 0073 0074 Q_PROPERTY(ViewManager::DelegateUseSecondaryText viewDelegateDisplaySecondaryText 0075 READ viewDelegateDisplaySecondaryText 0076 CONSTANT) 0077 0078 Q_PROPERTY(int sortRole 0079 READ sortRole 0080 CONSTANT) 0081 0082 Q_PROPERTY(QVector<int> sortRoles 0083 READ sortRoles 0084 CONSTANT) 0085 0086 Q_PROPERTY(QVector<QString> sortRoleNames 0087 READ sortRoleNames 0088 CONSTANT) 0089 0090 Q_PROPERTY(Qt::SortOrder sortOrder 0091 READ sortOrder 0092 CONSTANT) 0093 0094 Q_PROPERTY(QVector<QString> sortOrderNames 0095 READ sortOrderNames 0096 CONSTANT) 0097 0098 Q_PROPERTY(ViewManager::AlbumCardinality displaySingleAlbum 0099 READ displaySingleAlbum 0100 CONSTANT) 0101 0102 Q_PROPERTY(ViewManager::AlbumViewStyle showDiscHeaders 0103 READ showDiscHeaders 0104 CONSTANT) 0105 0106 Q_PROPERTY(ViewManager::RadioSpecificStyle radioCase 0107 READ radioCase 0108 CONSTANT) 0109 0110 public: 0111 explicit ViewConfigurationData(QObject *parent = nullptr); 0112 0113 explicit ViewConfigurationData(ElisaUtils::FilterType filterType, int expectedDepth, 0114 QString mainTitle, QString secondaryTitle, QUrl imageUrl, 0115 ElisaUtils::PlayListEntryType dataType, QAbstractItemModel *model, 0116 QAbstractProxyModel *associatedProxyModel, QUrl viewDefaultIcon, 0117 DataTypes::DataType dataFilter, 0118 int sortRole, QVector<int> sortRoles, QVector<QString> sortRoleNames, 0119 Qt::SortOrder sortOrder, QVector<QString> sortOrderNames, 0120 ViewManager::ViewCanBeRated viewShowRating, 0121 ViewManager::DelegateUseSecondaryText viewDelegateDisplaySecondaryText, 0122 QObject *parent = nullptr); 0123 0124 explicit ViewConfigurationData(ElisaUtils::FilterType filterType, int expectedDepth, 0125 QString mainTitle, QString secondaryTitle, 0126 QUrl imageUrl, ElisaUtils::PlayListEntryType dataType, QAbstractItemModel *model, 0127 QAbstractProxyModel *associatedProxyModel, DataTypes::DataType dataFilter, 0128 int sortRole, QVector<int> sortRoles, QVector<QString> sortRoleNames, 0129 Qt::SortOrder sortOrder, QVector<QString> sortOrderNames, 0130 ViewManager::AlbumCardinality displaySingleAlbum, 0131 ViewManager::AlbumViewStyle showDiscHeaders, ViewManager::RadioSpecificStyle radioCase, 0132 QObject *parent = nullptr); 0133 0134 ~ViewConfigurationData() override; 0135 0136 [[nodiscard]] ElisaUtils::FilterType filterType() const; 0137 0138 [[nodiscard]] int expectedDepth() const; 0139 0140 [[nodiscard]] QString mainTitle() const; 0141 0142 [[nodiscard]] QString secondaryTitle() const; 0143 0144 [[nodiscard]] QUrl imageUrl() const; 0145 0146 [[nodiscard]] ElisaUtils::PlayListEntryType dataType() const; 0147 0148 [[nodiscard]] QAbstractItemModel * model() const; 0149 0150 [[nodiscard]] QAbstractProxyModel * associatedProxyModel() const; 0151 0152 [[nodiscard]] QUrl viewDefaultIcon() const; 0153 0154 [[nodiscard]] DataTypes::DataType dataFilter() const; 0155 0156 [[nodiscard]] ViewManager::ViewCanBeRated viewShowRating() const; 0157 0158 [[nodiscard]] ViewManager::DelegateUseSecondaryText viewDelegateDisplaySecondaryText() const; 0159 0160 [[nodiscard]] int sortRole() const; 0161 0162 [[nodiscard]] QVector<int> sortRoles() const; 0163 0164 [[nodiscard]] QVector<QString> sortRoleNames() const; 0165 0166 [[nodiscard]] Qt::SortOrder sortOrder() const; 0167 0168 [[nodiscard]] QVector<QString> sortOrderNames() const; 0169 0170 [[nodiscard]] ViewManager::AlbumCardinality displaySingleAlbum() const; 0171 0172 [[nodiscard]] ViewManager::AlbumViewStyle showDiscHeaders() const; 0173 0174 [[nodiscard]] ViewManager::RadioSpecificStyle radioCase() const; 0175 0176 Q_SIGNALS: 0177 0178 private: 0179 0180 std::unique_ptr<ViewConfigurationDataPrivate> d; 0181 }; 0182 0183 #endif // VIEWCONFIGURATIONDATA_H