final refactoring stage of cover changing code (common QAction*s)

reset URL in 'Cover from URL' dialog on reentrance
This commit is contained in:
Paweł Bara 2011-01-24 18:32:09 +00:00
parent ebfbdba8a9
commit 4a9d38bbdd
6 changed files with 72 additions and 51 deletions

View File

@ -53,6 +53,15 @@ AlbumCoverChoiceController::~AlbumCoverChoiceController()
{
}
QList<QAction*> AlbumCoverChoiceController::PrepareAlbumChoiceMenu(QObject* parent) {
return QList<QAction*>()
<< new QAction(IconLoader::Load("document-open"), tr("Load cover from disk..."), parent)
<< new QAction(IconLoader::Load("download"), tr("Load cover from URL..."), parent)
<< new QAction(IconLoader::Load("find"), tr("Search for album covers..."), parent)
<< new QAction(IconLoader::Load("list-remove"), tr("Unset cover"), parent)
<< new QAction(IconLoader::Load("zoom-in"), tr("Show fullsize..."), parent);
}
QString AlbumCoverChoiceController::LoadCoverFromFile(Song* song) {
QString dir;

View File

@ -18,6 +18,8 @@
#ifndef ALBUMCOVERCHOICECONTROLLER_H
#define ALBUMCOVERCHOICECONTROLLER_H
#include <QAction>
#include <QList>
#include <QWidget>
class AlbumCoverFetcher;
@ -26,12 +28,7 @@ class CoverFromURLDialog;
class LibraryBackend;
class Song;
// Controller for the common album cover related menu options. This includes:
// - loading cover from file
// - loading cover from URL
// - searching for cover using last.fm
// - unsetting the cover manually
// - showing the cover in original size
// Controller for the common album cover related menu options.
class AlbumCoverChoiceController : public QWidget {
Q_OBJECT
@ -42,6 +39,15 @@ class AlbumCoverChoiceController : public QWidget {
static const char* kImageFileFilter;
static const char* kAllFilesFilter;
// Returns QAction* for every operation implemented by this controller.
// The list contains QAction* for:
// 1. loading cover from file
// 2. loading cover from URL
// 3. searching for cover using last.fm
// 4. unsetting the cover manually
// 5. showing the cover in original size
QList<QAction*> PrepareAlbumChoiceMenu(QObject* parent);
// All of the methods below require a currently selected song as an
// input parameter. Also - LoadCoverFromFile, LoadCoverFromURL,
// SearchForCover, UnsetCover and SaveCover all update manual path

View File

@ -121,25 +121,26 @@ void AlbumCoverManager::Init() {
ui_->view->setMenu(view_menu);
// Context menu
cover_from_file_ = context_menu_->addAction(
IconLoader::Load("document-open"), tr("Load cover from disk..."),
this, SLOT(LoadCoverFromFile()));
cover_from_url_ = context_menu_->addAction(
IconLoader::Load("download"), tr("Load cover from URL..."),
this, SLOT(LoadCoverFromURL()));
search_for_cover_ = context_menu_->addAction(
IconLoader::Load("find"), tr("Search for album covers..."),
this, SLOT(SearchForCover()));
unset_cover_ = context_menu_->addAction(
IconLoader::Load("list-remove"), tr("Unset cover"),
this, SLOT(UnsetCover()));
show_cover_ = context_menu_->addAction(
IconLoader::Load("zoom-in"), tr("Show fullsize..."),
this, SLOT(ShowCover()));
QList<QAction*> actions = album_cover_choice_controller_->PrepareAlbumChoiceMenu(this);
cover_from_file_ = actions[0];
cover_from_url_ = actions[1];
search_for_cover_ = actions[2];
unset_cover_ = actions[3];
show_cover_ = actions[4];
connect(cover_from_file_, SIGNAL(triggered()), this, SLOT(LoadCoverFromFile()));
connect(cover_from_url_, SIGNAL(triggered()), this, SLOT(LoadCoverFromURL()));
connect(search_for_cover_, SIGNAL(triggered()), this, SLOT(SearchForCover()));
connect(unset_cover_, SIGNAL(triggered()), this, SLOT(UnsetCover()));
connect(show_cover_, SIGNAL(triggered()), this, SLOT(ShowCover()));
context_menu_->addActions(actions);
context_menu_->addSeparator();
context_menu_->addAction(ui_->action_load);
context_menu_->addAction(ui_->action_add_to_playlist);
ui_->albums->installEventFilter(this);
// Connections

View File

@ -39,7 +39,10 @@ CoverFromURLDialog::~CoverFromURLDialog() {
}
QImage CoverFromURLDialog::Exec() {
// reset state
ui_->url->setText("");;
last_image_ = QImage();
exec();
return last_image_;
}

View File

@ -132,21 +132,23 @@ EditTagDialog::EditTagDialog(QWidget* parent)
// Set up the album cover menu
cover_menu_ = new QMenu(this);
cover_from_file_ = cover_menu_->addAction(
IconLoader::Load("document-open"), tr("Load cover from disk..."),
this, SLOT(LoadCoverFromFile()));
cover_from_url_ = cover_menu_->addAction(
IconLoader::Load("download"), tr("Load cover from URL..."),
this, SLOT(LoadCoverFromURL()));
search_for_cover_ = cover_menu_->addAction(
IconLoader::Load("find"), tr("Search for album covers..."),
this, SLOT(SearchForCover()));
unset_cover_ = cover_menu_->addAction(
IconLoader::Load("list-remove"), tr("Unset cover"),
this, SLOT(UnsetCover()));
show_cover_ = cover_menu_->addAction(
IconLoader::Load("zoom-in"), tr("Show fullsize..."),
this, SLOT(ShowCover()));
QList<QAction*> actions = album_cover_choice_controller_->PrepareAlbumChoiceMenu(this);
cover_from_file_ = actions[0];
cover_from_url_ = actions[1];
search_for_cover_ = actions[2];
unset_cover_ = actions[3];
show_cover_ = actions[4];
connect(cover_from_file_, SIGNAL(triggered()), this, SLOT(LoadCoverFromFile()));
connect(cover_from_url_, SIGNAL(triggered()), this, SLOT(LoadCoverFromURL()));
connect(search_for_cover_, SIGNAL(triggered()), this, SLOT(SearchForCover()));
connect(unset_cover_, SIGNAL(triggered()), this, SLOT(UnsetCover()));
connect(show_cover_, SIGNAL(triggered()), this, SLOT(ShowCover()));
cover_menu_->addActions(actions);
ui_->summary_art_button->setMenu(cover_menu_);
ui_->art->installEventFilter(this);

View File

@ -93,24 +93,24 @@ NowPlayingWidget::NowPlayingWidget(QWidget *parent)
menu_->addActions(mode_group->actions());
menu_->addSeparator();
cover_from_file_ = menu_->addAction(
IconLoader::Load("document-open"), tr("Load cover from disk..."),
this, SLOT(LoadCoverFromFile()));
cover_from_url_ = menu_->addAction(
IconLoader::Load("download"), tr("Load cover from URL..."),
this, SLOT(LoadCoverFromURL()));
search_for_cover_ = menu_->addAction(
IconLoader::Load("find"), tr("Search for album covers..."),
this, SLOT(SearchForCover()));
unset_cover_ = menu_->addAction(
IconLoader::Load("list-remove"), tr("Unset cover"),
this, SLOT(UnsetCover()));
show_cover_ = menu_->addAction(
IconLoader::Load("zoom-in"), tr("Show fullsize..."),
this, SLOT(ShowCover()));
QList<QAction*> actions = album_cover_choice_controller_->PrepareAlbumChoiceMenu(this);
cover_from_file_ = actions[0];
cover_from_url_ = actions[1];
search_for_cover_ = actions[2];
unset_cover_ = actions[3];
show_cover_ = actions[4];
connect(cover_from_file_, SIGNAL(triggered()), this, SLOT(LoadCoverFromFile()));
connect(cover_from_url_, SIGNAL(triggered()), this, SLOT(LoadCoverFromURL()));
connect(search_for_cover_, SIGNAL(triggered()), this, SLOT(SearchForCover()));
connect(unset_cover_, SIGNAL(triggered()), this, SLOT(UnsetCover()));
connect(show_cover_, SIGNAL(triggered()), this, SLOT(ShowCover()));
menu_->addActions(actions);
menu_->addSeparator();
above_statusbar_action_ = menu_->addAction(tr("Show above status bar"));
above_statusbar_action_->setCheckable(true);
connect(above_statusbar_action_, SIGNAL(toggled(bool)), SLOT(ShowAboveStatusBar(bool)));
above_statusbar_action_->setChecked(s.value("above_status_bar", false).toBool());