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