X-Git-Url: https://vcs.maemo.org/git/?a=blobdiff_plain;f=src%2Fplayerform.cpp;h=a0ffb3783fa9c818969f1fe741d5011fedffdea8;hb=refs%2Ftags%2F1.4.0;hp=9120ee322d8fef540648d01062e75fba2bf790af;hpb=edb4adc24fa94669db0637d171a9d22a5e91a5ab;p=someplayer diff --git a/src/playerform.cpp b/src/playerform.cpp index 9120ee3..a0ffb37 100644 --- a/src/playerform.cpp +++ b/src/playerform.cpp @@ -81,7 +81,6 @@ PlayerForm::PlayerForm(Library* lib, QWidget *parent) : _fscreen_button->setSizePolicy(QSizePolicy::Fixed, QSizePolicy::Fixed); _fscreen_button->hide(); - ui->progressLayout->removeItem(ui->seekSpacer); _tools_widget = new ToolsWidget(this); ui->toolsLayout->insertWidget(0, _tools_widget); _tools_widget->hide(); @@ -102,6 +101,14 @@ PlayerForm::PlayerForm(Library* lib, QWidget *parent) : ui->playlistView->setItemDelegateForColumn(0, _track_renderer); _tag_resolver = new TagResolver(this); + _coverfinder = new CoverFinder(this); + + _cover = new ClickableLabel(this); + _cover->setMinimumSize(300, 300); + _cover->setMaximumSize(300, 300); + _cover->setSizePolicy(QSizePolicy::Fixed, QSizePolicy::Fixed); + _cover->setScaledContents(true); + _cover->setPixmap(QPixmap::fromImage(_coverfinder->defaultCover())); connect(ui->libraryButton, SIGNAL(clicked()), this, SLOT(_library())); connect(ui->viewButton, SIGNAL(clicked()), this, SLOT(_toggle_view())); @@ -134,16 +141,35 @@ PlayerForm::PlayerForm(Library* lib, QWidget *parent) : connect(_tools_widget, SIGNAL(toggleFullscreen(bool)), _fscreen_button, SLOT(setChecked(bool))); connect(_fscreen_button, SIGNAL(clicked(bool)), this, SIGNAL(fullscreen(bool))); connect(_fscreen_button, SIGNAL(clicked(bool)), _tools_widget, SLOT(setFullscreenState(bool))); + connect(_coverfinder, SIGNAL(found(QImage)), this, SLOT(_display_cover(QImage))); + connect(ui->caddButton, SIGNAL(clicked()), this, SLOT(_c_add_to_playlists())); + connect(ui->cdeleteButton, SIGNAL(clicked()), this, SLOT(_c_delete_track())); + 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())); ui->viewButton->setIcon(QIcon(":/icons/"+_icons_theme+"/playback.png")); _top_gradient = ui->topWidget->styleSheet(); _bottom_gradient = ui->bottomWidget->styleSheet(); ui->countdownWidget->hide(); + // constructing cover layout + ui->coverLayout->removeItem(ui->clverticalLayout_0); + ui->coverLayout->removeItem(ui->clverticalLayout_1); + ui->coverLayout->removeItem(ui->cbverticalSpacer); + ui->coverLayout->removeItem(ui->ctverticalSpacer); + ((QGridLayout *)ui->coverLayout)->addItem(ui->ctverticalSpacer, 0, 1); + ((QGridLayout *)ui->coverLayout)->addItem(ui->cbverticalSpacer, 2, 1); + ((QGridLayout *)ui->coverLayout)->addItem(ui->clverticalLayout_0, 1, 0); + ((QGridLayout *)ui->coverLayout)->addItem(ui->clverticalLayout_1, 1, 2); + ((QGridLayout *)ui->coverLayout)->addWidget(_cover, 1, 1); + // + // dbus _dbusadaptor = new DBusAdaptop(_player); QDBusConnection connection = QDBusConnection::sessionBus(); bool ret = connection.registerService(_SERVICE_NAME_); ret = connection.registerObject("/", _player); + _show_extra_buttons = false; } PlayerForm::~PlayerForm() @@ -213,6 +239,7 @@ void PlayerForm::_display_track(Track track) { ui->seekSlider->setMinimum(0); ui->seekSlider->setMaximum(track.metadata().length()); _tick(0, track.metadata().length()); + _coverfinder->find(QFileInfo(track.source()).absolutePath()); } void PlayerForm::_tick(int done, int all) { @@ -399,12 +426,33 @@ void PlayerForm::_dirview() { } void PlayerForm::landscapeMode() { - ui->progressLayout->removeItem(ui->seekSpacer); - ui->progressLayout->insertWidget(1, ui->seekSlider); - ui->progressWidget->setVisible(false); - landscape = true; + ui->widget->layout()->removeItem(ui->coverLayout); + ui->widget->layout()->removeItem(ui->controlLayout); + ui->controlLayout->removeItem(ui->countHLayout); + ui->controlLayout->removeItem(ui->cverticalSpacer_0); + ui->controlLayout->removeItem(ui->titleLayout); + ui->controlLayout->removeItem(ui->coverLayout); + ui->controlLayout->removeItem(ui->cverticalSpacer_1); + ui->controlLayout->removeItem(ui->seekLayout); + ui->controlLayout->removeItem(ui->progressLayout); + ui->controlLayout->removeItem(ui->cverticalSpacer_2); + ui->controlLayout->removeItem(ui->artistAlbumLayout); + ui->controlLayout->removeItem(ui->cverticalSpacer_3); + ui->controlLayout->addItem(ui->countHLayout); + ui->controlLayout->addItem(ui->cverticalSpacer_0); + ui->controlLayout->addItem(ui->titleLayout); + ui->controlLayout->addItem(ui->cverticalSpacer_1); + ui->controlLayout->addItem(ui->progressLayout); + ui->controlLayout->addItem(ui->seekLayout); + ui->controlLayout->addItem(ui->cverticalSpacer_2); + ui->controlLayout->addItem(ui->artistAlbumLayout); + ui->controlLayout->addItem(ui->cverticalSpacer_3); + + ((QGridLayout *)ui->widget->layout())->addItem(ui->coverLayout, 0, 0); + ((QGridLayout *)ui->widget->layout())->addItem(ui->controlLayout, 0, 1); + ui->topWidget->hide(); ui->bottomWidget->hide(); @@ -438,15 +486,37 @@ void PlayerForm::landscapeMode() { } void PlayerForm::portraitMode() { - ui->progressLayout->insertSpacerItem(1, ui->seekSpacer); - ui->progressWidget->layout()->addWidget(ui->seekSlider); - ui->progressWidget->setVisible(true); - ui->topWidget->show(); ui->bottomWidget->show(); landscape = false; + ui->widget->layout()->removeItem(ui->coverLayout); + ui->widget->layout()->removeItem(ui->controlLayout); + + ui->controlLayout->removeItem(ui->countHLayout); + ui->controlLayout->removeItem(ui->cverticalSpacer_0); + ui->controlLayout->removeItem(ui->titleLayout); + ui->controlLayout->removeItem(ui->coverLayout); + ui->controlLayout->removeItem(ui->cverticalSpacer_1); + ui->controlLayout->removeItem(ui->seekLayout); + ui->controlLayout->removeItem(ui->progressLayout); + ui->controlLayout->removeItem(ui->cverticalSpacer_2); + ui->controlLayout->removeItem(ui->artistAlbumLayout); + ui->controlLayout->removeItem(ui->cverticalSpacer_3); + + ui->controlLayout->addItem(ui->countHLayout); + ui->controlLayout->addItem(ui->progressLayout); + ui->controlLayout->addItem(ui->seekLayout); + ui->controlLayout->addItem(ui->cverticalSpacer_0); + ui->controlLayout->addItem(ui->titleLayout); + ui->controlLayout->addItem(ui->coverLayout); + ui->controlLayout->addItem(ui->artistAlbumLayout); + ui->controlLayout->addItem(ui->cverticalSpacer_1); + ui->controlLayout->invalidate(); + + ui->widget->layout()->addItem(ui->controlLayout); + ui->topWidget->layout()->removeItem(ui->thorizontalSpacer_0); ui->topWidget->layout()->removeItem(ui->thorizontalSpacer_1); ui->topWidget->layout()->removeItem(ui->thorizontalSpacer_2); @@ -506,6 +576,21 @@ void PlayerForm::updateIcons() { _icons_theme = config.getValue("ui/iconstheme").toString(); _tools_widget->updateIcons(); _track_renderer->updateIcons(); + if (_show_extra_buttons) { + ui->caddButton->setIcon(QIcon(":/icons/"+_icons_theme+"/add.png")); + ui->cdeleteButton->setIcon(QIcon(":/icons/"+_icons_theme+"/delete.png")); + ui->cfavButton->setIcon(QIcon(":/icons/"+_icons_theme+"/fav.png")); + ui->ctagButton->setIcon(QIcon(":/icons/"+_icons_theme+"/tags.png")); + } else { + ui->caddButton->setIcon(QIcon()); + ui->cdeleteButton->setIcon(QIcon()); + ui->cfavButton->setIcon(QIcon()); + ui->ctagButton->setIcon(QIcon()); + ui->caddButton->setEnabled(false); + ui->cdeleteButton->setEnabled(false); + ui->cfavButton->setEnabled(false); + ui->ctagButton->setEnabled(false); + } ui->libraryButton->setIcon(QIcon(":/icons/"+_icons_theme+"/library.png")); if (_tools_widget->isVisible()) { ui->moreButton->setIcon(QIcon(landscape ? ":/icons/" + _icons_theme + "/unmore.png" : ":/icons/" + _icons_theme + "/more.png")); @@ -516,6 +601,7 @@ void PlayerForm::updateIcons() { ui->stopButton->setIcon(QIcon(":/icons/"+_icons_theme+"/stop.png")); ui->prevButton->setIcon(QIcon(":/icons/"+_icons_theme+"/prev.png")); ui->dirButton->setIcon(QIcon(":/icons/"+_icons_theme+"/directory.png")); + if (_player->state() == PLAYER_PLAYING) { ui->playpauseButton->setIcon(QIcon(":/icons/"+_icons_theme+"/pause.png")); } else { @@ -574,3 +660,62 @@ void PlayerForm::showCountdown(QString text) { void PlayerForm::hideCountdown() { ui->countdownWidget->hide(); } + +void PlayerForm::_display_cover(QImage image) { + _cover->setPixmap(QPixmap::fromImage(image)); +} + +void PlayerForm::_c_add_to_favorites() { + int id = _track_renderer->activeRow(); + if (id >= 0 && id < _current_playlist.tracks().count()) { + ui->playlistView->selectRow(id); + _add_to_favorites(); + } +} + +void PlayerForm::_c_delete_track() { + int id = _track_renderer->activeRow(); + if (id >= 0 && id < _current_playlist.tracks().count()) { + ui->playlistView->selectRow(id); + _delete_track(); + } +} + +void PlayerForm::_c_add_to_playlists() { + int id = _track_renderer->activeRow(); + if (id >= 0 && id < _current_playlist.tracks().count()) { + ui->playlistView->selectRow(id); + _add_to_playlists(); + } +} + +void PlayerForm::_c_edit_tags() { + int id = _track_renderer->activeRow(); + if (id >= 0 && id < _current_playlist.tracks().count()) { + ui->playlistView->selectRow(id); + _edit_tags(); + } +} + +void PlayerForm::_toggle_extra_buttons() { + _show_extra_buttons = !_show_extra_buttons; + if (_show_extra_buttons) { + ui->caddButton->setEnabled(true); + ui->cdeleteButton->setEnabled(true); + ui->cfavButton->setEnabled(true); + ui->ctagButton->setEnabled(true); + ui->caddButton->setIcon(QIcon(":/icons/"+_icons_theme+"/add.png")); + ui->cdeleteButton->setIcon(QIcon(":/icons/"+_icons_theme+"/delete.png")); + ui->cfavButton->setIcon(QIcon(":/icons/"+_icons_theme+"/fav.png")); + ui->ctagButton->setIcon(QIcon(":/icons/"+_icons_theme+"/tags.png")); + } else { + ui->caddButton->setEnabled(false); + ui->cdeleteButton->setEnabled(false); + ui->cfavButton->setEnabled(false); + ui->ctagButton->setEnabled(false); + ui->caddButton->setIcon(QIcon()); + ui->cdeleteButton->setIcon(QIcon()); + ui->cfavButton->setIcon(QIcon()); + ui->ctagButton->setIcon(QIcon()); + } +}