Implemented search
[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(const Playlist &playlist);
50                         void removePlaylist(const Playlist &playlist);
51                         void removePlaylist(QString name);
52
53                         Playlist getCurrentPlaylist();
54                         void saveCurrentPlaylist(const Playlist &playlist);
55
56                 signals:
57                         void done();
58                         void busy(QString);
59
60                 private:
61                         DbStorage *_library_storage;
62                         FileStorage *_playlist_storage;
63                         MediaScanner *_scanner;
64                         TagResolver *_resolver;
65
66                 public slots:
67                         void removeTrack(Track);
68                         void addTrack(Track);
69                         void addToFavorites(Track);
70                         void updateTrackCount(Track);
71                 };
72
73         };
74 };
75
76 #endif