Version bump
[someplayer] / src / libraryform.cpp
index 2406b4c..96afd2b 100644 (file)
@@ -281,6 +281,7 @@ void LibraryForm::_process_list_click(QModelIndex index) {
                        case 2: //never played
                                _current_playlist = _lib->getNeverPlayed();
                                _is_favorites = false;
+                               break;
                        case 3: //recently added
                                _current_playlist = _lib->getRecentlyAdded();
                                _is_favorites = false;
@@ -305,6 +306,8 @@ void LibraryForm::_process_list_click(QModelIndex index) {
        }
        ui->addButton->setEnabled(false);
        ui->addButton->setIcon(QIcon());
+       ui->useButton->setEnabled(false);
+       ui->useButton->setIcon(QIcon());
        ui->deleteButton->setEnabled(false);
        ui->deleteButton->setIcon(QIcon());
        QTimer::singleShot(100, ui->listView, SLOT(clearSelection())); // workaround
@@ -347,6 +350,9 @@ void LibraryForm::_add_button() {
                _lib->saveCurrentPlaylist(cur);
                emit refreshPlayer();
                break;
+       case STATE_DYNAMIC:
+
+               break;
        case STATE_PLAYLIST_TRACK:
                foreach (QModelIndex id, selected) {
                        _add_track(&cur, _current_tracks.at(id.row()));
@@ -496,9 +502,62 @@ void LibraryForm::_delete_track(Track track) {
 }
 
 void LibraryForm::_use_button() {
-       _lib->saveCurrentPlaylist(_current_playlist);
-       emit refreshPlayer();
-       _current_playlist = _lib->getCurrentPlaylist();
+       if (_state == STATE_PLAYLIST_TRACK) {
+               _lib->saveCurrentPlaylist(_current_playlist);
+               emit refreshPlayer();
+               _current_playlist = _lib->getCurrentPlaylist();
+               return;
+       }
+
+       if (_state == STATE_NONE) return;
+       QModelIndexList selected = ui->listView->selectionModel()->selectedIndexes();
+       ui->listView->selectionModel()->clearSelection();
+       Playlist cur;
+       QRegExp regexp("\\[\\d+\\]\\ (.*)");
+       switch (_state) {
+       case STATE_ARTIST:
+               foreach (QModelIndex id, selected) {
+                       _add_artist(&cur, id.data().toString());
+               }
+               _lib->saveCurrentPlaylist(cur);
+               emit refreshPlayer();
+               break;
+       case STATE_ALBUM:
+               foreach (QModelIndex id, selected) {
+                       if (regexp.indexIn(id.data().toString()) != -1) {
+                               _add_album(&cur, _current_artist, regexp.cap(1).trimmed());
+                       }
+               }
+               _lib->saveCurrentPlaylist(cur);
+               emit refreshPlayer();
+               break;
+       case STATE_TRACK:
+               foreach (QModelIndex id, selected) {
+                       _add_track(&cur, _current_tracks.at(id.row()));
+               }
+               _lib->saveCurrentPlaylist(cur);
+               emit refreshPlayer();
+               break;
+       case STATE_PLAYLIST:
+               foreach (QModelIndex id, selected) {
+                       _add_playlist(&cur, id.data().toString());
+               }
+               _lib->saveCurrentPlaylist(cur);
+               emit refreshPlayer();
+               break;
+       case STATE_DYNAMIC:
+
+               break;
+       case STATE_SEARCH:
+               foreach (QModelIndex id, selected) {
+                       _add_track(&cur, _current_tracks.at(id.row()));
+               }
+               _lib->saveCurrentPlaylist(cur);
+               emit refreshPlayer();
+               break;
+       default:
+               return;
+       }
 }
 
 void LibraryForm::search(QString pattern) {
@@ -587,8 +646,13 @@ void LibraryForm::_toggle_select_all_button() {
                connect(ui->listView->selectionModel(), SIGNAL(selectionChanged(QItemSelection,QItemSelection)),
                           this, SLOT(_process_selection(QItemSelection,QItemSelection)));
                ui->selectAllButton->setIcon(QIcon(":/icons/"+_icons_theme+"/deselect_all.png"));
-               ui->addButton->setIcon(QIcon(":/icons/"+_icons_theme+"/add.png"));
-               ui->addButton->setEnabled(true);
+               if (_state != STATE_DYNAMIC) {
+                       ui->addButton->setIcon(QIcon(":/icons/"+_icons_theme+"/add.png"));
+                       ui->addButton->setEnabled(true);
+                       ui->useButton->setEnabled(true);
+                       ui->useButton->setIcon(QIcon(":/icons/"+_icons_theme+"/use.png"));
+               }
+
                if (_state == STATE_PLAYLIST || (_state == STATE_PLAYLIST_TRACK && !_is_dynamic)
                        || (_state == STATE_PLAYLIST_TRACK && _is_favorites)) {
                        ui->deleteButton->setEnabled(true);
@@ -630,6 +694,9 @@ void LibraryForm::landscapeMode() {
        ui->rverticalLayout->addItem(ui->rverticalSpacer_3);
        ui->rverticalLayout->addWidget(ui->playlistsButton);
 
+       ui->lverticalWidget->show();
+       ui->rverticalWidget->show();
+
        if (_tools_widget->isVisible()) {
                ui->moreButton->setIcon(QIcon(":/icons/"+_icons_theme+"/more_l.png"));
        } else {
@@ -640,8 +707,8 @@ void LibraryForm::landscapeMode() {
 void LibraryForm::portraitMode() {
        landscape = false;
 
-       ui->topWidget->show();
-       ui->bottomWidget->show();
+       ui->lverticalWidget->hide();
+       ui->rverticalWidget->hide();
 
        ui->lverticalLayout->removeItem(ui->lverticalSpacer_0);
        ui->lverticalLayout->removeItem(ui->lverticalSpacer_1);
@@ -681,6 +748,9 @@ void LibraryForm::portraitMode() {
        ui->bottomWidget->layout()->addItem(ui->bhorizontalSpacer_2);
        ui->bottomWidget->layout()->addWidget(ui->playlistsButton);
 
+       ui->topWidget->show();
+       ui->bottomWidget->show();
+
        if (_tools_widget->isVisible()) {
                ui->moreButton->setIcon(QIcon(":/icons/"+_icons_theme+"/unmore.png"));
        } else {
@@ -766,9 +836,14 @@ void LibraryForm::_process_selection(QItemSelection selected, QItemSelection des
                }
                ui->listView->selectionModel()->select(id, QItemSelectionModel::Deselect);
        }
-       if (ui->listView->selectionModel()->selectedRows().count() > 0) {
+       if (ui->listView->selectionModel()->selectedRows().count() > 0 ) {
+               if (_state == STATE_DYNAMIC) {
+                       return;
+               }
                ui->addButton->setEnabled(true);
                ui->addButton->setIcon(QIcon(":/icons/"+_icons_theme+"/add.png"));
+               ui->useButton->setEnabled(true);
+               ui->useButton->setIcon(QIcon(":/icons/"+_icons_theme+"/use.png"));
                if (_state == STATE_PLAYLIST || (_state == STATE_PLAYLIST_TRACK && !_is_dynamic)
                        || (_state == STATE_PLAYLIST_TRACK && _is_favorites)) {
                        ui->deleteButton->setEnabled(true);
@@ -777,6 +852,10 @@ void LibraryForm::_process_selection(QItemSelection selected, QItemSelection des
        } else {
                ui->addButton->setEnabled(false);
                ui->addButton->setIcon(QIcon());
+               if (_state != STATE_PLAYLIST_TRACK) {
+                       ui->useButton->setEnabled(false);
+                       ui->useButton->setIcon(QIcon());
+               }
                ui->deleteButton->setEnabled(false);
                ui->deleteButton->setIcon(QIcon());
        }