diff --git a/src/library.cpp b/src/library.cpp index 407423b6d..01a70edfa 100644 --- a/src/library.cpp +++ b/src/library.cpp @@ -27,15 +27,15 @@ #include -Library::Library(EngineBase* engine, QObject* parent) +Library::Library(QObject* parent, const QString& table) : SimpleTreeModel(new LibraryItem(this), parent), - engine_(engine), backend_factory_(new BackgroundThreadFactoryImplementation), watcher_factory_(new BackgroundThreadFactoryImplementation), backend_(NULL), watcher_(NULL), dir_model_(new LibraryDirectoryModel(this)), waiting_for_threads_(2), + query_options_(table), artist_icon_(":artist.png"), album_icon_(":album.png"), no_cover_icon_(":nocover.png") @@ -97,8 +97,6 @@ void Library::WatcherInitialised() { connect(watcher_->Worker().get(), SIGNAL(ScanStarted()), SIGNAL(ScanStarted())); connect(watcher_->Worker().get(), SIGNAL(ScanFinished()), SIGNAL(ScanFinished())); - watcher_->Worker()->SetEngine(engine_); - if (--waiting_for_threads_ == 0) Initialise(); } diff --git a/src/library.h b/src/library.h index 6ba6e7b39..d672615e2 100644 --- a/src/library.h +++ b/src/library.h @@ -38,7 +38,7 @@ class Library : public SimpleTreeModel { Q_ENUMS(GroupBy); public: - Library(EngineBase* engine, QObject* parent = 0); + Library(QObject* parent = 0, const QString& table = QueryOptions::kLibraryTable); ~Library(); enum { @@ -176,7 +176,6 @@ class Library : public SimpleTreeModel { bool CompareItems(const LibraryItem* a, const LibraryItem* b) const; private: - EngineBase* engine_; boost::scoped_ptr > backend_factory_; boost::scoped_ptr > watcher_factory_; BackgroundThread* backend_; diff --git a/src/libraryquery.cpp b/src/libraryquery.cpp index d3c694ceb..82c4a648c 100644 --- a/src/libraryquery.cpp +++ b/src/libraryquery.cpp @@ -21,17 +21,17 @@ #include #include -QueryOptions::QueryOptions() - : max_age(-1) +const char* QueryOptions::kLibraryTable = "songs"; + +QueryOptions::QueryOptions(const QString& _table) + : table(_table), + max_age(-1) { } -LibraryQuery::LibraryQuery() -{ -} - LibraryQuery::LibraryQuery(const QueryOptions& options) + : table_(options.table) { if (!options.filter.isEmpty()) { where_clauses_ << "(" @@ -73,7 +73,7 @@ void LibraryQuery::AddCompilationRequirement(bool compilation) { } QSqlError LibraryQuery::Exec(QSqlDatabase db) { - QString sql = QString("SELECT %1 FROM songs").arg(column_spec_); + QString sql = QString("SELECT %1 FROM %2").arg(column_spec_, table_); if (!where_clauses_.isEmpty()) sql += " WHERE " + where_clauses_.join(" AND "); diff --git a/src/libraryquery.h b/src/libraryquery.h index 46a7a1a33..6f61263c8 100644 --- a/src/libraryquery.h +++ b/src/libraryquery.h @@ -26,17 +26,20 @@ class Song; struct QueryOptions { - QueryOptions(); + static const char* kLibraryTable; + + QueryOptions(const QString& _table = kLibraryTable); bool Matches(const Song& song) const; + + QString table; QString filter; int max_age; }; class LibraryQuery { public: - LibraryQuery(); - LibraryQuery(const QueryOptions& options); + LibraryQuery(const QueryOptions& options = QueryOptions()); void SetColumnSpec(const QString& spec) { column_spec_ = spec; } void SetOrderBy(const QString& order_by) { order_by_ = order_by; } @@ -51,6 +54,7 @@ class LibraryQuery { operator const QSqlQuery& () const { return query_; } private: + QString table_; QString column_spec_; QString order_by_; QStringList where_clauses_; diff --git a/src/librarywatcher.cpp b/src/librarywatcher.cpp index 78eb921f5..d46c5e191 100644 --- a/src/librarywatcher.cpp +++ b/src/librarywatcher.cpp @@ -16,7 +16,6 @@ #include "librarywatcher.h" #include "librarybackend.h" -#include "engines/enginebase.h" #include #include diff --git a/src/librarywatcher.h b/src/librarywatcher.h index 88021e176..be5d6afe6 100644 --- a/src/librarywatcher.h +++ b/src/librarywatcher.h @@ -19,7 +19,6 @@ #include "directory.h" #include "song.h" -#include "engines/engine_fwd.h" #include #include @@ -39,7 +38,6 @@ class LibraryWatcher : public QObject { LibraryWatcher(QObject* parent = 0); void SetBackend(boost::shared_ptr backend) { backend_ = backend; } - void SetEngine(EngineBase* engine) { engine_ = engine; } // TODO: shared_ptr void Stop() { stop_requested_ = true; } @@ -122,7 +120,6 @@ class LibraryWatcher : public QObject { QFileSystemWatcher* watcher; }; - EngineBase* engine_; boost::shared_ptr backend_; bool stop_requested_; diff --git a/src/mainwindow.cpp b/src/mainwindow.cpp index fcb4ef2ac..1533a44dd 100644 --- a/src/mainwindow.cpp +++ b/src/mainwindow.cpp @@ -93,7 +93,7 @@ MainWindow::MainWindow(QNetworkAccessManager* network, Engine::Type engine, QWid radio_model_(new RadioModel(this)), playlist_(new Playlist(this)), player_(new Player(playlist_, radio_model_->GetLastFMService(), engine, this)), - library_(new Library(player_->GetEngine(), this)), + library_(new Library(this)), global_shortcuts_(new GlobalShortcuts(this)), settings_dialog_(new SettingsDialog), add_stream_dialog_(new AddStreamDialog),