X-Git-Url: https://vcs.maemo.org/git/?a=blobdiff_plain;f=src%2Flibrary.cpp;h=d175f5a7ab61ab46cb658eca52808234178ced0a;hb=1d213a9db9b725dc285e92021f35e2f83a813080;hp=9a530e8207e9e61907ac24f78c00c801d98be742;hpb=9b9a0afe9de46239e64fbf7738f1be9161fa5e00;p=someplayer diff --git a/src/library.cpp b/src/library.cpp index 9a530e8..d175f5a 100644 --- a/src/library.cpp +++ b/src/library.cpp @@ -1,3 +1,22 @@ +/* + * SomePlayer - An alternate music player for Maemo 5 + * Copyright (C) 2010 Nikolay (somebody) Tischenko + * + * This program is free software; you can redistribute it and/or + * modify it under the terms of the GNU General Public License + * as published by the Free Software Foundation; either version 2 + * of the License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + */ + #include "library.h" using namespace SomePlayer::DataObjects; @@ -11,8 +30,9 @@ Library::Library(QString databasePath, QString playlistsPath) : QObject(0) { _playlist_storage = new FileStorage(playlistsPath); _scanner = new MediaScanner(); _resolver = new TagResolver(this); - connect(_scanner, SIGNAL(scanFinish(QStringList)), _resolver, SLOT(decode(QStringList))); - connect(_resolver, SIGNAL(decoded(Track)), this, SLOT(addTrack(Track))); + connect(_scanner, SIGNAL(scanFinish(QStringList)), this, SLOT(_scanned(QStringList))); + connect(_resolver, SIGNAL(done()), this, SIGNAL(done())); + connect(_resolver, SIGNAL(decoded(Track)), this, SLOT(_decoded(Track))); } Library::~Library() { @@ -93,11 +113,11 @@ Playlist Library::getPlaylist(QString name) { return _playlist_storage->getPlaylist(name); } -void Library::savePlaylist(Playlist playlist) { +void Library::savePlaylist(const Playlist &playlist) { _playlist_storage->savePlaylist(playlist); } -void Library::removePlaylist(Playlist playlist) { +void Library::removePlaylist(const Playlist &playlist) { _playlist_storage->removePlaylist(playlist); } @@ -109,6 +129,35 @@ Playlist Library::getCurrentPlaylist() { return _playlist_storage->getCurrentPlaylist(); } -void Library::saveCurrentPlaylist(Playlist playlist) { +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 playlists = getPlaylistsNames(); + foreach (QString name, playlists) { + Playlist pl = getPlaylist(name); + QList 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); +}