From 4dc7e3946d08432d4f9dfe234baa8c5955a848d6 Mon Sep 17 00:00:00 2001 From: Nikolay Tischenko Date: Sun, 31 Oct 2010 14:45:05 +0600 Subject: [PATCH] Added 'All tracks' (by artist) item to library --- src/library.cpp | 9 +++++++++ src/library.h | 1 + src/libraryform.cpp | 16 +++++++++++++++- 3 files changed, 25 insertions(+), 1 deletion(-) diff --git a/src/library.cpp b/src/library.cpp index 58dbf24..6e116bd 100644 --- a/src/library.cpp +++ b/src/library.cpp @@ -65,6 +65,15 @@ QList Library::getTracksForAlbum(QString album, QString artist) { return _library_storage->getTracksForAlbum(album, artist); } +QList Library::getAllTracksForArtist(QString artist) { + QList all; + QMap albumsmap = getAlbumsForArtist(artist); + QList albums = albumsmap.keys(); + foreach (QString album, albums) { + all.append(getTracksForAlbum(album, artist)); + } + return all; +} // dynamic: diff --git a/src/library.h b/src/library.h index 36741e0..e3d07b9 100644 --- a/src/library.h +++ b/src/library.h @@ -54,6 +54,7 @@ namespace SomePlayer { QList getArtists(); QMap getAlbumsForArtist(QString artist); QList getTracksForAlbum(QString album, QString artist); + QList getAllTracksForArtist(QString artist); QList search(QString pattern); diff --git a/src/libraryform.cpp b/src/libraryform.cpp index f25bd74..248db20 100644 --- a/src/libraryform.cpp +++ b/src/libraryform.cpp @@ -58,9 +58,12 @@ inline void __fill_model(QStandardItemModel *model, QList data, QString inline void __fill_model_album(QStandardItemModel *model, QMap data, QString icons_theme) { model->clear(); int count = data.count(); - model->setRowCount(count); + model->setRowCount(count+1); int i = 0; Config config; + model->setItem(i, 0, new QStandardItem(QIcon(":/icons/"+icons_theme+"/deselect_all.png"), "")); + model->setItem(i, 1, new QStandardItem(QObject::tr("All tracks"))); + i++; if (config.getValue("ui/albumsorting").toString() == "date") { QMap > years; foreach (QString name, data.keys()) { @@ -231,6 +234,17 @@ void LibraryForm::_process_list_click(QModelIndex index) { ui->backButton->setEnabled(true); ui->backButton->setIcon(QIcon(":/icons/"+_icons_theme+"/back.png")); ui->listLabel->setText(QString("Tracks from \"%1\" by \"%2\"").arg(_current_album).arg(_current_artist)); + } else { + if (index.row() == 0) { // all tracks + _current_tracks = _lib->getAllTracksForArtist(_current_artist); + __fill_model_tracks(_model, _current_tracks, _icons_theme); + ui->listView->setColumnWidth(0, 70); + ui->listView->scrollToTop(); + _state = STATE_TRACK; + ui->backButton->setEnabled(true); + ui->backButton->setIcon(QIcon(":/icons/"+_icons_theme+"/back.png")); + ui->listLabel->setText(QString("All tracks by \"%1\"").arg(_current_artist)); + } } break; case STATE_PLAYLIST: -- 1.7.9.5