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