_playlist_storage = new FileStorage(playlistsPath);
_scanner = new MediaScanner();
_resolver = new TagResolver(this);
- connect(_scanner, SIGNAL(scanFinish(QStringList)), _resolver, SLOT(decode(QStringList)));
+ connect(_scanner, SIGNAL(scanFinish(QStringList)), this, SLOT(_scanned(QStringList)));
connect(_resolver, SIGNAL(done()), this, SIGNAL(done()));
- connect(_resolver, SIGNAL(decoded(Track)), this, SLOT(addTrack(Track)));
+ connect(_resolver, SIGNAL(decoded(Track)), this, SLOT(_decoded(Track)));
}
Library::~Library() {
void Library::saveCurrentPlaylist(const Playlist &playlist) {
_playlist_storage->saveCurrentPlaylist(playlist);
}
+
+void Library::_decoded(Track track) {
+ emit trackAdded();
+ addTrack(track);
+}
+
+void Library::_scanned(QStringList files) {
+ emit addingTracks(files.count());
+ _resolver->decode(files);
+}
+
+void Library::updateTrackMetadata(Track track) {
+ Track ntrack = track;
+ if (track.id() > 0) {
+ ntrack = _library_storage->updateTrack(track);
+ }
+ // update all playlists
+ QList<QString> playlists = getPlaylistsNames();
+ foreach (QString name, playlists) {
+ Playlist pl = getPlaylist(name);
+ QList<Track> tracks = pl.tracks();
+ int pos = tracks.indexOf(ntrack); // comparing using source
+ tracks.removeOne(ntrack); // comparing using source
+ tracks.insert(pos, ntrack);
+ pl.setTracks(tracks);
+ savePlaylist(pl);
+ }
+ _resolver->updateTags(ntrack);
+}