X-Git-Url: http://git.maemo.org/git/?a=blobdiff_plain;f=src%2Fplayerform.cpp;h=945e380f3b110ac9a6b7ea677e1cc3e818d1c213;hb=2a1cf9a16d15506f9693338a8cd1d174e5e98805;hp=5f9c089d048bae0bc6ec6f7b1001481cd3b848ee;hpb=3a11ef7a36432b543d66a1d55324dd2d4ba52401;p=someplayer diff --git a/src/playerform.cpp b/src/playerform.cpp index 5f9c089..945e380 100644 --- a/src/playerform.cpp +++ b/src/playerform.cpp @@ -148,6 +148,8 @@ PlayerForm::PlayerForm(Library* lib, QWidget *parent) : connect(ui->cfavButton, SIGNAL(clicked()), this, SLOT(_c_add_to_favorites())); connect(ui->ctagButton, SIGNAL(clicked()), this, SLOT(_c_edit_tags())); connect(_cover, SIGNAL(clicked()), this, SLOT(_toggle_extra_buttons())); + connect(_player, SIGNAL(startPlaylist()), this, SLOT(_start_playlist())); + connect(_player, SIGNAL(saveLastPlayed(LastPlayed)), _lib, SLOT(saveLastPlayedForCurPlaylist(LastPlayed))); ui->viewButton->setIcon(QIcon(":/icons/"+_icons_theme+"/playback.png")); _top_gradient = ui->topWidget->styleSheet(); _bottom_gradient = ui->bottomWidget->styleSheet(); @@ -209,7 +211,6 @@ void PlayerForm::_toggle_view() { void PlayerForm::_process_click(QModelIndex index) { if (index.column() == 1) { int id = index.row(); - _player->stop(); _player->setTrackId(id); _player->play(); _track_renderer->setActiveRow(id); @@ -227,6 +228,8 @@ void PlayerForm::_track_changed(Track track) { ui->playlistView->hide(); ui->playlistView->show(); _display_track(track); + _context_menu->actions().at(2)->setText(_lib->isFavorite(track) ? tr("Remove from favorites") : tr("Add to favorites")); + emit trackChanged(); } void PlayerForm::_display_track(Track track) { @@ -241,7 +244,7 @@ void PlayerForm::_display_track(Track track) { ui->seekSlider->setMaximum(track.metadata().length()); _tick(0, track.metadata().length()); _coverfinder->find(track); - ui->cfavButton->setChecked(_lib->isFavorite(track)); + ui->cfavButton->setChecked(_lib->isFavorite(track) && !ui->cfavButton->icon().isNull()); } void PlayerForm::_tick(int done, int all) { @@ -261,6 +264,7 @@ void PlayerForm::_custom_context_menu_requested(const QPoint &pos) { } void PlayerForm::_delete_track() { + CONFIRM_ACTION(this, tr("Delete track?")) QList idx = ui->playlistView->selectionModel()->selectedIndexes(); if (idx.isEmpty()) return; @@ -289,12 +293,19 @@ void PlayerForm::_add_to_favorites() { if (idx.isEmpty()) return; int id = idx.first().row(); - if (ui->cfavButton->isChecked()) { - _lib->addToFavorites(_current_playlist.tracks().at(id)); - } else { - _lib->removeFromFavorites(_current_playlist.tracks().at(id)); + Track cur = _current_playlist.tracks().at(id); + if (!cur.source().isEmpty()) { + bool isf = _lib->isFavorite(cur); + if (!isf) { + _lib->addToFavorites(cur); + } else { + _lib->removeFromFavorites(cur); + } + isf = _lib->isFavorite(cur); + ui->cfavButton->setChecked(isf && !ui->cfavButton->icon().isNull()); + _context_menu->actions().at(2)->setText(isf ? tr("Remove from favorites") : tr("Add to favorites")); } - ui->cfavButton->setChecked(_lib->isFavorite(_current_playlist.tracks().at(id))); + } void PlayerForm::_state_changed(PlayerState state) { @@ -435,6 +446,9 @@ void PlayerForm::_dirview() { void PlayerForm::landscapeMode() { landscape = true; + ui->topWidget->hide(); + ui->bottomWidget->hide(); + ui->widget->layout()->removeItem(ui->coverLayout); ui->widget->layout()->removeItem(ui->controlLayout); ui->controlLayout->removeItem(ui->countHLayout); @@ -460,9 +474,6 @@ void PlayerForm::landscapeMode() { ((QGridLayout *)ui->widget->layout())->addItem(ui->coverLayout, 0, 0); ((QGridLayout *)ui->widget->layout())->addItem(ui->controlLayout, 0, 1); - ui->topWidget->hide(); - ui->bottomWidget->hide(); - ui->bhorizontalLayout->removeItem(ui->chorizontalSpacer_0); ui->bhorizontalLayout->removeItem(ui->chorizontalSpacer_1); ui->bhorizontalLayout->removeItem(ui->chorizontalSpacer_2); @@ -485,6 +496,8 @@ void PlayerForm::landscapeMode() { ui->bhorizontalLayout->addItem(ui->chorizontalSpacer_4); ui->bhorizontalLayout->addWidget(ui->dirButton); + ui->bhorWidget->show(); + if (_tools_widget->isVisible()) { ui->moreButton->setIcon(QIcon(":/icons/"+_icons_theme+"/unmore.png")); } else { @@ -493,11 +506,10 @@ void PlayerForm::landscapeMode() { } void PlayerForm::portraitMode() { - ui->topWidget->show(); - ui->bottomWidget->show(); - landscape = false; + ui->bhorWidget->hide(); + ui->widget->layout()->removeItem(ui->coverLayout); ui->widget->layout()->removeItem(ui->controlLayout); @@ -558,6 +570,9 @@ void PlayerForm::portraitMode() { ui->bottomWidget->layout()->addItem(ui->bhorizontalSpacer_3); ui->bottomWidget->layout()->addWidget(ui->dirButton); + ui->topWidget->show(); + ui->bottomWidget->show(); + if (_tools_widget->isVisible()) { ui->moreButton->setIcon(QIcon(":/icons/"+_icons_theme+"/unmore.png")); } else { @@ -721,6 +736,7 @@ void PlayerForm::_toggle_extra_buttons() { ui->caddButton->setEnabled(false); ui->cdeleteButton->setEnabled(false); ui->cfavButton->setEnabled(false); + ui->cfavButton->setChecked(false); ui->ctagButton->setEnabled(false); ui->caddButton->setIcon(QIcon()); ui->cdeleteButton->setIcon(QIcon()); @@ -746,3 +762,27 @@ void PlayerForm::updateTrackColor() { ui->playlistView->hide(); ui->playlistView->show(); } + +void PlayerForm::next() { + _player->next(); +} + +void PlayerForm::prev() { + _player->prev(); +} + +QString PlayerForm::playerCaption() { + TrackMetadata meta = _player->current().metadata(); + return QString("%1 - %2").arg(meta.artist()).arg(meta.title()); +} + +void PlayerForm::_start_playlist() { + Config config; + if (config.getValue("playback/autoresume_off").toBool()) { + _player->next(); + return; + } + LastPlayed lp = _lib->getLastPlayedForCurPlaylist(); + _player->setTrackId(lp.trackId); + _player->setAwaitingSeek(lp.position); +}