cartographer.hpp
1 #pragma once 2 3 #include <QHash> 4 #include <QString> 5 #include <QUuid> 6 #include <optional> 7 8 #include "structs.hpp" 9 10 class Cartographer { 11 public: 12 Cartographer(); 13 static Cartographer& instance(); 14 static Cartographer* create() { return &instance(); } 15 16 void addAlbum(KotoAlbum* album); 17 void addArtist(KotoArtist* artist); 18 void addTrack(KotoTrack* track); 19 std::optional<KotoAlbum*> getAlbum(QUuid uuid); 20 QList<KotoAlbum*> getAlbums(); 21 std::optional<KotoArtist*> getArtist(QUuid uuid); 22 QList<KotoArtist*> getArtists(); 23 std::optional<KotoArtist*> getArtist(QString name); 24 std::optional<KotoTrack*> getTrack(QUuid uuid); 25 QList<KotoTrack*> getTracks(); 26 27 private: 28 QHash<QUuid, KotoAlbum*> i_albums; 29 QHash<QUuid, KotoArtist*> i_artists; 30 QHash<QString, KotoArtist*> i_artists_by_name; 31 QHash<QUuid, KotoTrack*> i_tracks; 32 };