1 #pragma once 2 3 #include <QSqlDatabase> 4 #include <QUrl> 5 6 class BansheeDbConnection 7 { 8 public: 9 10 struct Playlist { 11 QString playlistId; 12 QString name; 13 }; 14 15 struct Track { 16 QString title; 17 QUrl uri; 18 int duration; 19 int year; 20 int rating; 21 QString genre; 22 QString grouping; 23 int tracknumber; 24 int dateadded; 25 int bpm; 26 int bitrate; 27 QString comment; 28 int playcount; 29 QString composer; 30 }; 31 32 struct Artist { 33 QString name; 34 }; 35 36 struct Album { 37 QString title; 38 }; 39 40 struct PlaylistEntry { 41 int trackId; 42 int viewOrder; 43 struct Track* pTrack; 44 struct Artist* pArtist; 45 struct Album* pAlbum; 46 struct Artist* pAlbumArtist; 47 }; 48 49 BansheeDbConnection(); 50 virtual ~BansheeDbConnection(); 51 52 static QString getDatabaseFile(); 53 54 bool open(const QString& databaseFile); 55 int getSchemaVersion(); 56 QList<Playlist> getPlaylists(); 57 QList<PlaylistEntry> getPlaylistEntries(int playlistId); 58 59 private: 60 QSqlDatabase m_database; 61 QMap<int, Track> m_trackMap; 62 QMap<int, Artist> m_artistMap; 63 QMap<int, Album> m_albumMap; 64 65 }; 66