File indexing completed on 2024-05-19 04:48:26
0001 #pragma once 0002 0003 #include <QObject> 0004 0005 #include <MauiKit3/Core/fmh.h> 0006 #include <MauiKit3/Core/mauilist.h> 0007 0008 class FM; 0009 class AbstractMusicProvider; 0010 class Cloud : public MauiList 0011 { 0012 Q_OBJECT 0013 Q_PROPERTY(Cloud::SORTBY sortBy READ getSortBy WRITE setSortBy NOTIFY sortByChanged) 0014 Q_PROPERTY(QVariantList artists READ getArtists NOTIFY artistsChanged) 0015 Q_PROPERTY(QVariantList albums READ getAlbums NOTIFY albumsChanged) 0016 0017 public: 0018 enum SORTBY : uint_fast8_t { 0019 ADDDATE = FMH::MODEL_KEY::ADDDATE, 0020 RELEASEDATE = FMH::MODEL_KEY::RELEASEDATE, 0021 FORMAT = FMH::MODEL_KEY::FORMAT, 0022 ARTIST = FMH::MODEL_KEY::ARTIST, 0023 TITLE = FMH::MODEL_KEY::TITLE, 0024 ALBUM = FMH::MODEL_KEY::ALBUM, 0025 RATE = FMH::MODEL_KEY::RATE, 0026 FAV = FMH::MODEL_KEY::FAV, 0027 TRACK = FMH::MODEL_KEY::TRACK, 0028 COUNT = FMH::MODEL_KEY::COUNT, 0029 NONE 0030 0031 }; 0032 Q_ENUM(SORTBY) 0033 0034 explicit Cloud(QObject *parent = nullptr); 0035 void componentComplete() override final; 0036 0037 const FMH::MODEL_LIST &items() const override; 0038 0039 void setSortBy(const Cloud::SORTBY &sort); 0040 Cloud::SORTBY getSortBy() const; 0041 0042 QVariantList getAlbums() const; 0043 QVariantList getArtists() const; 0044 0045 private: 0046 AbstractMusicProvider *provider; 0047 FMH::MODEL_LIST list; 0048 void sortList(); 0049 void setList(); 0050 0051 Cloud::SORTBY sort = Cloud::SORTBY::ARTIST; 0052 0053 public Q_SLOTS: 0054 void upload(const QUrl &url); 0055 0056 void getFileUrl(const QString &id); 0057 void getFileUrl(const int &index); 0058 0059 Q_SIGNALS: 0060 void sortByChanged(); 0061 void fileReady(QVariantMap track); 0062 void warning(QString error); 0063 0064 void artistsChanged(); 0065 void albumsChanged(); 0066 };