File indexing completed on 2025-02-23 04:35:17
0001 // SPDX-FileCopyrightText: 2022-2023 Bart De Vries <bart@mogwai.be> 0002 // SPDX-FileCopyrightText: 2023 Joshua Goins <josh@redstrate.com> 0003 // SPDX-License-Identifier: LGPL-2.1-only OR LGPL-3.0-only OR LicenseRef-KDE-Accepted-LGPL 0004 0005 #pragma once 0006 0007 #include <QObject> 0008 #include <QString> 0009 #include <QUrl> 0010 0011 class MetaData : public QObject 0012 { 0013 Q_OBJECT 0014 0015 Q_PROPERTY(QString title READ title WRITE setTitle NOTIFY titleChanged) 0016 Q_PROPERTY(QString artist READ artist WRITE setArtist NOTIFY artistChanged) 0017 Q_PROPERTY(QString album READ album WRITE setAlbum NOTIFY albumChanged) 0018 Q_PROPERTY(QUrl artworkUrl READ artworkUrl WRITE setArtworkUrl NOTIFY artworkUrlChanged) 0019 0020 public: 0021 explicit MetaData(QObject *parent = nullptr); 0022 ~MetaData() override; 0023 0024 QString title() const; 0025 QString artist() const; 0026 QString album() const; 0027 QUrl artworkUrl() const; 0028 0029 Q_SIGNALS: 0030 void titleChanged(const QString &title); 0031 void artistChanged(const QString &artist); 0032 void albumChanged(const QString &album); 0033 void artworkUrlChanged(const QUrl &artworkUrl); 0034 0035 void metaDataChanged(MetaData *metaData); 0036 0037 public Q_SLOTS: 0038 void setTitle(const QString &title); 0039 void setArtist(const QString &artist); 0040 void setAlbum(const QString &album); 0041 void setArtworkUrl(const QUrl &artworkUrl); 0042 0043 Q_INVOKABLE void clear(); 0044 0045 private: 0046 QString m_title; 0047 QString m_artist; 0048 QString m_album; 0049 QUrl m_artworkUrl; 0050 0051 void signalMetaDataChanged(); 0052 };