File indexing completed on 2024-05-12 16:21:15
0001 // SPDX-FileCopyrightText: 2021 Jonah BrĂ¼chert <jbb@kaidan.im> 0002 // 0003 // SPDX-License-Identifier: GPL-2.0-only OR GPL-3.0-only OR LicenseRef-KDE-Accepted-GPL 0004 0005 #pragma once 0006 0007 #include <QAbstractListModel> 0008 #include <QUrl> 0009 0010 #include "asyncytmusic.h" 0011 #include "abstractytmusicmodel.h" 0012 0013 class AlbumModel : public AbstractYTMusicModel 0014 { 0015 Q_OBJECT 0016 Q_PROPERTY(QString browseId READ browseId WRITE setBrowseId NOTIFY browseIdChanged REQUIRED) 0017 0018 Q_PROPERTY(QString title READ title NOTIFY titleChanged) 0019 Q_PROPERTY(QString artists READ artists NOTIFY artistsChanged) 0020 Q_PROPERTY(QUrl thumbnailUrl READ thumbnailUrl NOTIFY thumbnailUrlChanged) 0021 Q_PROPERTY(QString playlistId READ playlistId NOTIFY playlistIdChanged) 0022 Q_PROPERTY(QUrl webUrl READ webUrl NOTIFY playlistIdChanged) 0023 0024 public: 0025 enum Role { 0026 Title = Qt::UserRole + 1, 0027 VideoId, 0028 Artists, 0029 ThumbnailUrl, 0030 ArtistsDisplayString 0031 }; 0032 0033 explicit AlbumModel(QObject *parent = nullptr); 0034 0035 int rowCount(const QModelIndex &parent) const override; 0036 QVariant data(const QModelIndex &index, int role) const override; 0037 QHash<int, QByteArray> roleNames() const override; 0038 0039 QString browseId() const; 0040 void setBrowseId(const QString &value); 0041 Q_SIGNAL void browseIdChanged(); 0042 0043 QString title() const; 0044 Q_SIGNAL void titleChanged(); 0045 0046 QString artists() const; 0047 Q_SIGNAL void artistsChanged(); 0048 QUrl thumbnailUrl() const; 0049 Q_SIGNAL void thumbnailUrlChanged(); 0050 0051 QString playlistId() const; 0052 Q_SIGNAL void playlistIdChanged(); 0053 0054 QUrl webUrl() const; 0055 0056 const album::Album &album() const; 0057 0058 private: 0059 QString m_browseId; 0060 0061 album::Album m_album; 0062 };