c9e460abf2ba3d49a1d57cf4b743316166973aa1
[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 #include "mediascanner.h"
10 #include "tagresolver.h"
11
12 #define _DATABASE_PATH_ "/tmp"
13 #define _PLAYLISTS_PATH_ "/tmp"
14
15 // represents media library: tracks, playlists
16 // it uses different media storages for tracks and playlists
17 // but dynamic playlits will be stored with tracks into the same storage
18
19 using SomePlayer::DataObjects::Track;
20 using SomePlayer::DataObjects::Playlist;
21 using SomePlayer::Storage::DbStorage;
22 using SomePlayer::Storage::FileStorage;
23 using SomePlayer::Storage::MediaScanner;
24
25 namespace SomePlayer {
26         namespace DataObjects {
27
28                 class Library : public QObject {
29                         Q_OBJECT
30                 public:
31                         Library(QString databasePath, QString playlistsPath);
32                         ~Library();
33
34                         void addDirectory(QString path);
35                         void addFile(QString path);
36
37                         QList<QString> getArtists();
38                         QList<QString> getAlbumsForArtist(QString artist);
39                         QList<Track> getTracksForAlbum(QString album, QString artist);
40
41                         Playlist getFavorites();
42                         Playlist getMostPlayed();
43                         Playlist getNeverPlayed();
44                         Playlist getRecentlyAdded();
45
46                         QList<Playlist> getPlaylists();
47                         QStringList getPlaylistsNames();
48                         Playlist getPlaylist(QString name);
49                         void savePlaylist(Playlist playlist);
50                         void removePlaylist(Playlist playlist);
51                         void removePlaylist(QString name);
52
53                         Playlist getCurrentPlaylist();
54                         void saveCurrentPlaylist(Playlist playlist);
55
56                 private:
57                         DbStorage *_library_storage;
58                         FileStorage *_playlist_storage;
59                         MediaScanner *_scanner;
60                         TagResolver *_resolver;
61
62                 public slots:
63                         void removeTrack(Track);
64                         void addTrack(Track);
65                         void addToFavorites(Track);
66                         void updateTrackCount(Track);
67                 };
68
69         };
70 };
71
72 #endif