X-Git-Url: http://git.maemo.org/git/?a=blobdiff_plain;f=src%2Flibraryform.cpp;h=0db0ebd6796f6855e0d320e3bb119201c64effc8;hb=bd0e545d4cfd3809624a3ac57bb9ee0b14afec84;hp=6882a445a610cd1f2578965a61d3de92ffb644a4;hpb=e1ad9ba325c1e8e23b7d484d967fc04626883524;p=someplayer diff --git a/src/libraryform.cpp b/src/libraryform.cpp index 6882a44..0db0ebd 100644 --- a/src/libraryform.cpp +++ b/src/libraryform.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 "libraryform.h" #include "ui_libraryform.h" #include "library.h" @@ -7,9 +26,9 @@ #include #include "track.h" #include "playlist.h" -#include #include #include +#include using namespace SomePlayer::DataObjects; @@ -46,13 +65,14 @@ LibraryForm::LibraryForm(Library *lib, QWidget *parent) : _lib = lib; _model = new QStandardItemModel(this); _state = STATE_NONE; - ui->setupUi(this); + ui->setupUi(this); connect(ui->playerButton, SIGNAL(clicked()), this, SLOT(_player())); connect(ui->viewButton, SIGNAL(clicked()), this, SLOT(_view_button())); connect(ui->playlistsButton, SIGNAL(clicked()), this, SLOT(_playlists_button())); connect(ui->dynamicButton, SIGNAL(clicked()), this, SLOT(_dynamic_button())); connect(ui->listView, SIGNAL(clicked(QModelIndex)), this, SLOT(_process_list_click(QModelIndex))); connect(ui->addButton, SIGNAL(clicked()), this, SLOT(_add_button())); + connect(ui->selectAllButton, SIGNAL(clicked()), this, SLOT(_toggle_select_all_button())); connect(ui->backButton, SIGNAL(clicked()), this, SLOT(_back_button())); connect(ui->deleteButton, SIGNAL(clicked()), this, SLOT(_delete_button())); connect(ui->useButton, SIGNAL(clicked()), this, SLOT(_use_button())); @@ -258,14 +278,15 @@ void LibraryForm::_delete_button() { ui->listView->selectionModel()->clearSelection(); QQueue to_delete; foreach (QModelIndex id, selected) { - _delete_track(_current_tracks.at(id.row())); to_delete.append(id.row()); } qSort(to_delete); int count = to_delete.count(); for (int i = count-1; i >= 0; i--) { - _current_tracks.removeAt(to_delete.at(i)); + _current_playlist.removeTrackAt(to_delete.at(i)); } + _current_tracks = _current_playlist.tracks(); + _lib->savePlaylist(_current_playlist); __fill_model_tracks(_model, _current_tracks); } else if (_state == STATE_PLAYLIST) { QModelIndexList selected = ui->listView->selectionModel()->selectedIndexes(); @@ -278,7 +299,6 @@ void LibraryForm::_delete_button() { for (int i = count-1; i >= 0; i--) { QString name = _model->item(to_delete.at(i))->text(); if (name != _CURRENT_PLAYLIST_SUBST_) { - qDebug() << "deleting " << name; _lib->removePlaylist(name); _model->removeRow(to_delete.at(i)); } @@ -294,6 +314,7 @@ void LibraryForm::_delete_track(Track track) { void LibraryForm::_use_button() { _lib->saveCurrentPlaylist(_current_playlist); + _current_playlist = _lib->getCurrentPlaylist(); } void LibraryForm::search(QString &pattern) { @@ -336,3 +357,40 @@ void LibraryForm::cancelSearch() { _search_pattern = ""; ui->listView->selectionModel()->clearSelection(); } + +void LibraryForm::refresh() { + switch (_state) { + case STATE_ARTIST: + _view_button(); + break; + case STATE_ALBUM: + __fill_model(_model, _lib->getAlbumsForArtist(_current_artist)); + break; + case STATE_PLAYLIST: + _playlists_button(); + break; + case STATE_DYNAMIC: + _dynamic_button(); + break; + case STATE_PLAYLIST_TRACK: + _current_playlist = _lib->getPlaylist(_current_playlist.name()); + _current_tracks = _current_playlist.tracks(); + __fill_model_tracks(_model, _current_tracks); + break; + case STATE_TRACK: + _current_tracks = _lib->getTracksForAlbum(_current_album, _current_artist); + __fill_model_tracks(_model, _current_tracks); + break; + } +} + +void LibraryForm::_toggle_select_all_button() { + if (ui->listView->selectionModel()->selectedIndexes().count() == ui->listView->model()->rowCount()) { + ui->listView->selectionModel()->clearSelection(); + ui->selectAllButton->setIcon(QIcon(":/icons/select_all.png")); + } else { + ui->listView->selectAll(); + ui->selectAllButton->setIcon(QIcon(":/icons/deselect_all.png")); + } +} +