File indexing completed on 2024-04-28 08:41:11

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