X-Git-Url: https://vcs.maemo.org/git/?a=blobdiff_plain;f=src%2Flibrary.cpp;h=58dbf24c91b8f79c824203f97fa02d99ca53efd3;hb=6d75a8b2ab5c0addae2c5baad06687e8f4fc088d;hp=7f8165b265de93909185c9dd439831a77670c43a;hpb=68e7e55646f7caf47dd678a5f2f51644ddacd751;p=someplayer diff --git a/src/library.cpp b/src/library.cpp index 7f8165b..58dbf24 100644 --- a/src/library.cpp +++ b/src/library.cpp @@ -18,13 +18,13 @@ */ #include "library.h" -#include using namespace SomePlayer::DataObjects; using namespace SomePlayer::Storage; #include "mediascanner.h" #include +#include Library::Library(QString databasePath, QString playlistsPath) : QObject(0) { _library_storage = new DbStorage(databasePath); @@ -32,6 +32,7 @@ Library::Library(QString databasePath, QString playlistsPath) : QObject(0) { _scanner = new MediaScanner(); _resolver = new TagResolver(this); connect(_scanner, SIGNAL(scanFinish(QStringList)), this, SLOT(_scanned(QStringList))); + connect(_resolver, SIGNAL(started()), this, SIGNAL(started())); connect(_resolver, SIGNAL(done()), this, SIGNAL(done())); connect(_resolver, SIGNAL(decoded(Track)), this, SLOT(_decoded(Track))); } @@ -41,9 +42,10 @@ Library::~Library() { delete _playlist_storage; } -void Library::addDirectory(QString path) { +void Library::addDirectory(QString path, bool async) { _scanner->init(path); - _scanner->start(QThread::LowestPriority); + if (async) _scanner->start(QThread::LowestPriority); + else _scanner->run(); } void Library::addFile(QString path) { @@ -55,7 +57,7 @@ QList Library::getArtists() { return _library_storage->getArtists(); } -QList Library::getAlbumsForArtist(QString artist) { +QMap Library::getAlbumsForArtist(QString artist) { return _library_storage->getAlbumsForArtist(artist); } @@ -135,20 +137,17 @@ void Library::saveCurrentPlaylist(const Playlist &playlist) { } void Library::_decoded(Track track) { - emit trackAdded(); + emit tick(); addTrack(track); } void Library::_scanned(QStringList files) { - emit addingTracks(files.count()); + emit allCount(files.count()); _resolver->decode(files); } void Library::updateTrackMetadata(Track track) { - Track ntrack = track; - if (track.id() > 0) { - ntrack = _library_storage->updateTrack(track); - } + Track ntrack = _library_storage->updateTrack(track); // update all playlists QList playlists = getPlaylistsNames(); foreach (QString name, playlists) { @@ -162,3 +161,61 @@ void Library::updateTrackMetadata(Track track) { } _resolver->updateTags(ntrack); } + +QList Library::search(QString pattern) { + return _library_storage->search(pattern); +} + +QList Library::getDirectories() { + return _library_storage->getDirectories(); +} + +int Library::getArtistsCount() { + return _library_storage->getArtistsCount(); +} + +int Library::getAlbumsCount() { + return _library_storage->getAlbumsCount(); +} + +int Library::getTracksCount() { + return _library_storage->getTracksCount(); +} + +void Library::updateAll() { + QList directories = _library_storage->getDirectories(); + updateDirectories(directories); +} + +void Library::updateDirectories(QList directories) { + foreach (QString directory, directories) { + _library_storage->checkTracksFrom(directory); + addDirectory(directory, false); + } +} + +void Library::deleteDirectories(QList directories) { + foreach (QString directory, directories) { + _library_storage->deleteTracksFrom(directory); + } +} + +void Library::updatePlaylists() { + emit started(); + QList playlists = getPlaylistsNames(); + emit allCount(playlists.count()); + foreach (QString name, playlists) { + Playlist playlist = getPlaylist(name); + QList tracks = playlist.tracks(); + QList ntracks; + foreach (const Track &track, tracks) { + if (QFile::exists(track.source())) { + ntracks.append(track); + } + } + playlist.setTracks(ntracks); + savePlaylist(playlist); + emit tick(); + } + emit done(); +}