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 };