Minor bugfixes
[someplayer] / src / libraryform.cpp
index ef93660..178f7df 100644 (file)
@@ -215,6 +215,7 @@ void LibraryForm::_process_list_click(QModelIndex index) {
        QRegExp regexp("\\[\\d+\\]\\ (.*)");
        switch (_state) {
        case STATE_ARTIST:
+               _artist_row_for_scroll_to = index.row();
                __fill_model_album(_model, _lib->getAlbumsForArtist(data), _icons_theme);
                ui->listView->setColumnWidth(0, 70);
                ui->listView->scrollToTop();
@@ -225,6 +226,7 @@ void LibraryForm::_process_list_click(QModelIndex index) {
                ui->listLabel->setText(QString(tr("Albums by \"%1\"")).arg(_current_artist));
                break;
        case STATE_ALBUM:
+               _album_row_for_scroll_to = index.row();
                if (regexp.indexIn(data) != -1) {
                        _current_album = regexp.cap(1).trimmed();
                        _current_tracks = _lib->getTracksForAlbum(_current_album, _current_artist);
@@ -250,6 +252,7 @@ void LibraryForm::_process_list_click(QModelIndex index) {
                break;
        case STATE_PLAYLIST:
                {
+                       _playlist_row_for_scroll_to = index.row();
                        _current_playlist = _lib->getPlaylist(data);
                        _current_tracks = _current_playlist.tracks();
                        __fill_model_tracks(_model, _current_tracks, _icons_theme);
@@ -278,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;
@@ -344,6 +348,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()));
@@ -394,12 +401,16 @@ void LibraryForm::_back_button() {
        switch (_state) {
        case STATE_ALBUM:
                _view_button();
-               ui->listView->scrollToTop();
+               if (_model->rowCount() != 0) {
+                       ui->listView->scrollTo(_model->index(_artist_row_for_scroll_to, 1), QAbstractItemView::PositionAtCenter);
+               }
                break;
        case STATE_TRACK:
                __fill_model_album(_model, _lib->getAlbumsForArtist(_current_artist), _icons_theme);
                ui->listView->setColumnWidth(0, 70);
-               ui->listView->scrollToTop();
+               if (_model->rowCount() != 0) {
+                       ui->listView->scrollTo(_model->index(_album_row_for_scroll_to, 1), QAbstractItemView::PositionAtCenter);
+               }
                _state = STATE_ALBUM;
                ui->listLabel->setText(QString(tr("Albums by \"%1\"")).arg(_current_artist));
                break;
@@ -410,7 +421,9 @@ void LibraryForm::_back_button() {
                } else {
                        _playlists_button();
                }
-               ui->listView->scrollToTop();
+               if (_model->rowCount() != 0 && !_is_dynamic) {
+                       ui->listView->scrollTo(_model->index(_playlist_row_for_scroll_to, 1), QAbstractItemView::PositionAtCenter);
+               }
        default:
                return;
        }
@@ -510,7 +523,7 @@ void LibraryForm::nextItem() {
        QModelIndex id = _model->index(_search_current_id, 1);
        ui->listView->selectionModel()->clearSelection();
        ui->listView->selectRow(id.row());
-       ui->listView->scrollTo(id);
+       ui->listView->scrollTo(id, QAbstractItemView::PositionAtCenter);
 }
 
 void LibraryForm::prevItem() {
@@ -525,7 +538,7 @@ void LibraryForm::prevItem() {
        QModelIndex id = _model->index(_search_current_id, 1);
        ui->listView->selectionModel()->clearSelection();
        ui->listView->selectRow(id.row());
-       ui->listView->scrollTo(id);
+       ui->listView->scrollTo(id, QAbstractItemView::PositionAtCenter);
 }
 
 void LibraryForm::cancelSearch() {
@@ -621,6 +634,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 {
@@ -631,8 +647,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);
@@ -672,6 +688,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 {