Implemented Database storage for library.
[someplayer] / src / library.h
1 #ifndef LIBRARY
2 #define LIBRARY
3
4 #include "someplayer.h"
5 #include "track.h"
6 #include "playlist.h"
7 #include "dbstorage.h"
8 #include "filestorage.h"
9
10 // represents media library: tracks, playlists
11 // it uses different media storages for tracks and playlists
12 // but dynamic playlits will be stored with tracks into the same storage
13
14 using SomePlayer::DataObjects::Track;
15 using SomePlayer::DataObjects::Playlist;
16 using SomePlayer::Storage::DbStorage;
17 using SomePlayer::Storage::FileStorage;
18
19 namespace SomePlayer {
20         namespace DataObjects {
21
22                 class Library {
23                 public:
24                         Library(QString databasePath, QString playlistsPath);
25                         ~Library();
26
27                         void addDirectory(QString path);
28                         void addFile(QString path);
29
30                         QList<QString> getArtists();
31                         QList<QString> getAlbumsForArtist(QString artist);
32                         QList<Track> getTracksForAlbum(QString album, QString artist);
33
34                         Playlist getFavorites();
35                         Playlist getMostPlayed();
36                         Playlist getNeverPlayed();
37                         Playlist getRecentlyAdded();
38
39                         void removeTrack(Track);
40                         void addTrack(Track);
41                         void addToFavorites(Track);
42
43                         void updateTrack(Track);
44
45                         QList<Playlist> getPlaylists();
46                         void savePlaylist(Playlist playlist);
47                         void removePlaylist(Playlist playlist);
48
49                         Playlist getCurrentPlaylist();
50                         void saveCurrentPlaylist(Playlist playlist);
51
52                 private:
53                         DbStorage *_library_storage;
54                         FileStorage *_playlist_storage;
55                 };
56
57         };
58 };
59
60 #endif