cartographer.cpp
1 #include "cartographer.hpp" 2 3 Cartographer::Cartographer() 4 : i_albums(QHash<QUuid, KotoAlbum*>()), 5 i_artists(QHash<QUuid, KotoArtist*>()), 6 i_artists_by_name(QHash<QString, KotoArtist*>()), 7 i_tracks(QHash<QUuid, KotoTrack*>()) {} 8 9 Cartographer& Cartographer::instance() { 10 static Cartographer _instance; 11 return _instance; 12 } 13 14 void Cartographer::addAlbum(KotoAlbum* album) { 15 this->i_albums.insert(album->uuid, album); 16 } 17 18 void Cartographer::addArtist(KotoArtist* artist) { 19 this->i_artists.insert(artist->uuid, artist); 20 this->i_artists_by_name.insert(artist->getName(), artist); 21 } 22 23 void Cartographer::addTrack(KotoTrack* track) { 24 this->i_tracks.insert(track->uuid, track); 25 } 26 27 std::optional<KotoAlbum*> Cartographer::getAlbum(QUuid uuid) { 28 auto album = this->i_albums.value(uuid, nullptr); 29 return album ? std::optional {album} : std::nullopt; 30 } 31 32 QList<KotoAlbum*> Cartographer::getAlbums() { 33 return this->i_albums.values(); 34 } 35 36 std::optional<KotoArtist*> Cartographer::getArtist(QUuid uuid) { 37 auto artist = this->i_artists.value(uuid, nullptr); 38 return artist ? std::optional {artist} : std::nullopt; 39 } 40 41 QList<KotoArtist*> Cartographer::getArtists() { 42 return this->i_artists.values(); 43 } 44 45 std::optional<KotoArtist*> Cartographer::getArtist(QString name) { 46 auto artist = this->i_artists_by_name.value(name, nullptr); 47 return artist ? std::optional {artist} : std::nullopt; 48 } 49 50 std::optional<KotoTrack*> Cartographer::getTrack(QUuid uuid) { 51 auto track = this->i_tracks.value(uuid, nullptr); 52 return track ? std::optional {track} : std::nullopt; 53 } 54 55 QList<KotoTrack*> Cartographer::getTracks() { 56 return this->i_tracks.values(); 57 }