File indexing completed on 2024-05-05 04:47:13

0001 #pragma once
0002 
0003 #include <QObject>
0004 #include <QStringList>
0005 
0006 #include <MauiKit3/Core/fmh.h>
0007 
0008 class vvave : public QObject
0009 {
0010     Q_OBJECT
0011     Q_PROPERTY(QVariantList sources READ sourcesModel NOTIFY sourcesChanged FINAL)
0012     Q_PROPERTY(QList<QUrl> folders READ folders NOTIFY sourcesChanged FINAL)
0013     Q_PROPERTY(bool fetchArtwork READ fetchArtwork WRITE setFetchArtwork NOTIFY fetchArtworkChanged)
0014     Q_PROPERTY(bool scanning READ scanning NOTIFY scanningChanged FINAL)
0015 
0016 public:
0017     static vvave *instance()
0018     {
0019         static vvave vvave;
0020         return &vvave;
0021     }
0022 
0023     vvave(const vvave &) = delete;
0024     vvave &operator=(const vvave &) = delete;
0025     vvave(vvave &&) = delete;
0026     vvave &operator=(vvave &&) = delete;
0027 
0028     bool fetchArtwork() const;
0029 
0030     QList<QUrl> folders();
0031 
0032     bool scanning() const;
0033 
0034 public Q_SLOTS:
0035     void addSources(const QList<QUrl> &paths);
0036     bool removeSource(const QString &source);
0037 
0038     void scanDir(const QList<QUrl> &paths);
0039     void rescan();
0040 
0041     static QStringList sources();
0042     static QVariantList sourcesModel();
0043 
0044     void setFetchArtwork(bool fetchArtwork);
0045     static FMH::MODEL trackInfo(const QUrl &url);
0046 
0047     QString artworkUrl(const QString &artist, const QString &album);
0048 
0049     /**
0050      * @brief Get the tracks resulting from looking up the DB with a given query
0051      * @param query The querystring
0052      * @return A list of tracks
0053      */
0054     QVariantList getTracks(const QString &query);
0055 
0056 private:
0057     explicit vvave(QObject *parent = nullptr);
0058 
0059     bool m_fetchArtwork = false;
0060     bool m_scanning = false;
0061 
0062 Q_SIGNALS:
0063     void sourceAdded(QUrl source);
0064     void sourceRemoved(QUrl source);
0065 
0066     void sourcesChanged();
0067     void fetchArtworkChanged(bool fetchArtwork);
0068     void scanningChanged(bool scanning);
0069 };