Replace all uses of QSignalMapper with lambda expressions

This commit is contained in:
Jonas Kvinge 2019-07-08 22:27:45 +02:00
parent f3e852c042
commit 8ebcb71e6e
13 changed files with 70 additions and 102 deletions

View File

@ -23,13 +23,12 @@
#include <QWidget>
#include <QVariant>
#include <QString>
#include <QMenu>
#include <QAction>
#include <QActionGroup>
#include <QTimer>
#include <QBoxLayout>
#include <QLayout>
#include <QSignalMapper>
#include <QMenu>
#include <QAction>
#include <QActionGroup>
#include <QSettings>
#include <QtEvents>
#include <QtDebug>
@ -60,8 +59,6 @@ AnalyzerContainer::AnalyzerContainer(QWidget *parent)
context_menu_framerate_(new QMenu(tr("Framerate"), this)),
group_(new QActionGroup(this)),
group_framerate_(new QActionGroup(this)),
mapper_(new QSignalMapper(this)),
mapper_framerate_(new QSignalMapper(this)),
visualisation_action_(nullptr),
double_click_timer_(new QTimer(this)),
ignore_next_click_(false),
@ -77,7 +74,6 @@ AnalyzerContainer::AnalyzerContainer(QWidget *parent)
AddFramerate(tr("Medium (%1 fps)").arg(kMediumFramerate), kMediumFramerate);
AddFramerate(tr("High (%1 fps)").arg(kHighFramerate), kHighFramerate);
AddFramerate(tr("Super high (%1 fps)").arg(kSuperHighFramerate), kSuperHighFramerate);
connect(mapper_framerate_, SIGNAL(mapped(int)), SLOT(ChangeFramerate(int)));
context_menu_->addMenu(context_menu_framerate_);
context_menu_->addSeparator();
@ -87,7 +83,6 @@ AnalyzerContainer::AnalyzerContainer(QWidget *parent)
AddAnalyzerType<Rainbow::NyanCatAnalyzer>();
AddAnalyzerType<Rainbow::RainbowDashAnalyzer>();
connect(mapper_, SIGNAL(mapped(int)), SLOT(ChangeAnalyzer(int)));
disable_action_ = context_menu_->addAction(tr("No analyzer"), this, SLOT(DisableAnalyzer()));
disable_action_->setCheckable(true);
group_->addAction(disable_action_);
@ -250,10 +245,10 @@ void AnalyzerContainer::Save() {
void AnalyzerContainer::AddFramerate(const QString& name, int framerate) {
QAction *action = context_menu_framerate_->addAction(name, mapper_framerate_, SLOT(map()));
mapper_framerate_->setMapping(action, framerate);
QAction *action = context_menu_framerate_->addAction(name);
group_framerate_->addAction(action);
framerate_list_ << framerate;
action->setCheckable(true);
connect(action, &QAction::triggered, [this, framerate]() { ChangeFramerate(framerate); } );
}

View File

@ -24,7 +24,6 @@
#include <stdbool.h>
#include <QObject>
#include <QWidget>
#include <QList>
#include <QString>
@ -32,12 +31,10 @@
#include <QMenu>
#include <QAction>
#include <QActionGroup>
#include <QSignalMapper>
#include <QTimer>
#include <QtEvents>
#include "engine/engine_fwd.h"
class QTimer;
class QMouseEvent;
class QWheelEvent;
@ -90,8 +87,6 @@ signals:
QMenu *context_menu_framerate_;
QActionGroup *group_;
QActionGroup *group_framerate_;
QSignalMapper *mapper_;
QSignalMapper *mapper_framerate_;
QList<const QMetaObject*> analyzer_types_;
QList<int> framerate_list_;
@ -110,14 +105,16 @@ signals:
template <typename T>
void AnalyzerContainer::AddAnalyzerType() {
int id = analyzer_types_.count();
analyzer_types_ << &T::staticMetaObject;
QAction *action = context_menu_->addAction(tr(T::kName), mapper_, SLOT(map()));
QAction *action = context_menu_->addAction(tr(T::kName));
group_->addAction(action);
mapper_->setMapping(action, id);
action->setCheckable(true);
actions_ << action;
connect(action, &QAction::triggered, [this, id]() { ChangeAnalyzer(id); } );
}
#endif // ANALYZERCONTAINER_H

View File

@ -37,7 +37,6 @@
#include <QTimer>
#include <QMenu>
#include <QSettings>
#include <QSignalMapper>
#include <QToolButton>
#include <QtEvents>
@ -87,20 +86,12 @@ CollectionFilterWidget::CollectionFilterWidget(QWidget *parent)
filter_age_menu_ = new QMenu(tr("Show"), this);
filter_age_menu_->addActions(filter_age_group->actions());
filter_age_mapper_ = new QSignalMapper(this);
filter_age_mapper_->setMapping(ui_->filter_age_all, -1);
filter_age_mapper_->setMapping(ui_->filter_age_today, 60 * 60 * 24);
filter_age_mapper_->setMapping(ui_->filter_age_week, 60 * 60 * 24 * 7);
filter_age_mapper_->setMapping(ui_->filter_age_month, 60 * 60 * 24 * 30);
filter_age_mapper_->setMapping(ui_->filter_age_three_months, 60 * 60 * 24 * 30 * 3);
filter_age_mapper_->setMapping(ui_->filter_age_year, 60 * 60 * 24 * 365);
connect(ui_->filter_age_all, SIGNAL(triggered()), filter_age_mapper_, SLOT(map()));
connect(ui_->filter_age_today, SIGNAL(triggered()), filter_age_mapper_, SLOT(map()));
connect(ui_->filter_age_week, SIGNAL(triggered()), filter_age_mapper_, SLOT(map()));
connect(ui_->filter_age_month, SIGNAL(triggered()), filter_age_mapper_, SLOT(map()));
connect(ui_->filter_age_three_months, SIGNAL(triggered()), filter_age_mapper_, SLOT(map()));
connect(ui_->filter_age_year, SIGNAL(triggered()), filter_age_mapper_, SLOT(map()));
filter_ages_[ui_->filter_age_all] = -1;
filter_ages_[ui_->filter_age_today] = 60 * 60 * 24;
filter_ages_[ui_->filter_age_week] = 60 * 60 * 24 * 7;
filter_ages_[ui_->filter_age_month] = 60 * 60 * 24 * 30;
filter_ages_[ui_->filter_age_three_months] = 60 * 60 * 24 * 30 * 3;
filter_ages_[ui_->filter_age_year] = 60 * 60 * 24 * 365;
// "Group by ..."
group_by_group_ = CreateGroupByActions(this);
@ -244,7 +235,9 @@ void CollectionFilterWidget::SetCollectionModel(CollectionModel *model) {
disconnect(model_, 0, this, 0);
disconnect(model_, 0, group_by_dialog_.get(), 0);
disconnect(group_by_dialog_.get(), 0, model_, 0);
disconnect(filter_age_mapper_, 0, model_, 0);
for (QAction *action : filter_ages_.keys()) {
disconnect(action, &QAction::triggered, model_, 0);
}
}
model_ = model;
@ -253,7 +246,11 @@ void CollectionFilterWidget::SetCollectionModel(CollectionModel *model) {
connect(model_, SIGNAL(GroupingChanged(CollectionModel::Grouping)), group_by_dialog_.get(), SLOT(CollectionGroupingChanged(CollectionModel::Grouping)));
connect(model_, SIGNAL(GroupingChanged(CollectionModel::Grouping)), SLOT(GroupingChanged(CollectionModel::Grouping)));
connect(group_by_dialog_.get(), SIGNAL(Accepted(CollectionModel::Grouping)), model_, SLOT(SetGroupBy(CollectionModel::Grouping)));
connect(filter_age_mapper_, SIGNAL(mapped(int)), model_, SLOT(SetFilterAge(int)));
for (QAction *action : filter_ages_.keys()) {
int age = filter_ages_[action];
connect(action, &QAction::triggered, [this, age]() { model_->SetFilterAge(age); } );
}
// Load settings
if (!settings_group_.isEmpty()) {

View File

@ -28,17 +28,17 @@
#include <QWidget>
#include <QObject>
#include <QMap>
#include <QString>
#include <QMenu>
#include <QSignalMapper>
#include <QTimer>
#include <QAction>
#include <QActionGroup>
#include <QtEvents>
#include "collectionquery.h"
#include "collectionmodel.h"
class QTimer;
class QMenu;
class QAction;
class QActionGroup;
class QKeyEvent;
class GroupByDialog;
@ -120,7 +120,7 @@ signals:
QMenu *group_by_menu_;
QMenu *collection_menu_;
QActionGroup *group_by_group_;
QSignalMapper *filter_age_mapper_;
QMap<QAction*, int> filter_ages_;
QTimer *filter_delay_;
@ -129,6 +129,7 @@ signals:
QString settings_group_;
QString settings_prefix_;
};
#endif // COLLECTIONFILTERWIDGET_H

View File

@ -32,7 +32,6 @@
#include <QString>
#include <QAction>
#include <QShortcut>
#include <QSignalMapper>
#include <QKeySequence>
#include <QSettings>

View File

@ -46,7 +46,6 @@
#include <QGroupBox>
#include <QListWidget>
#include <QPushButton>
#include <QSignalMapper>
#include <QStackedWidget>
#include <QToolButton>
#include <QFlags>
@ -124,14 +123,12 @@ OrganiseDialog::OrganiseDialog(TaskManager *task_manager, CollectionBackend *bac
// Build the insert menu
QMenu *tag_menu = new QMenu(this);
QSignalMapper *tag_mapper = new QSignalMapper(this);
for (const QString &title : tag_titles) {
QAction *action = tag_menu->addAction(title, tag_mapper, SLOT(map()));
tag_mapper->setMapping(action, tags[title]);
QAction *action = tag_menu->addAction(title);
QString tag = tags[title];
connect(action, &QAction::triggered, [this, tag]() { InsertTag(tag); } );
}
connect(tag_mapper, SIGNAL(mapped(QString)), SLOT(InsertTag(QString)));
ui_->insert->setMenu(tag_menu);
QSettings s;

View File

@ -23,13 +23,11 @@
#include <stdbool.h>
#include <QWidget>
#include <QAbstractItemModel>
#include <QFlags>
#include <QMenu>
#include <QSignalMapper>
#include <QVariant>
#include <QString>
#include <QtAlgorithms>
#include <QMenu>
#include <QAction>
#include <QActionGroup>
#include <QContextMenuEvent>
@ -41,9 +39,7 @@
PlaylistHeader::PlaylistHeader(Qt::Orientation orientation, PlaylistView *view, QWidget *parent)
: StretchHeaderView(orientation, parent),
view_(view),
menu_(new QMenu(this)),
show_mapper_(new QSignalMapper(this))
{
menu_(new QMenu(this)) {
hide_action_ = menu_->addAction(tr("&Hide..."), this, SLOT(HideCurrent()));
stretch_action_ = menu_->addAction(tr("&Stretch columns to fit window"), this, SLOT(ToggleStretchEnabled()));
@ -69,7 +65,6 @@ PlaylistHeader::PlaylistHeader(Qt::Orientation orientation, PlaylistView *view,
stretch_action_->setCheckable(true);
stretch_action_->setChecked(is_stretch_enabled());
connect(show_mapper_, SIGNAL(mapped(int)), SLOT(ToggleVisible(int)));
connect(this, SIGNAL(StretchEnabledChanged(bool)), stretch_action_, SLOT(setChecked(bool)));
}
@ -112,12 +107,12 @@ void PlaylistHeader::AddColumnAction(int index) {
QString title(model()->headerData(index, Qt::Horizontal).toString());
QAction *action = menu_->addAction(title, show_mapper_, SLOT(map()));
QAction *action = menu_->addAction(title);
action->setCheckable(true);
action->setChecked(!isSectionHidden(index));
show_actions_ << action;
show_mapper_->setMapping(action, index);
connect(action, &QAction::triggered, [this, index]() { ToggleVisible(index); } );
}

View File

@ -28,14 +28,13 @@
#include <QObject>
#include <QWidget>
#include <QList>
#include <QAction>
#include <QMenu>
#include <QSignalMapper>
#include <QString>
#include <QtEvents>
#include "widgets/stretchheaderview.h"
class QMenu;
class QAction;
class PlaylistView;
class PlaylistHeader : public StretchHeaderView {
@ -74,7 +73,6 @@ class PlaylistHeader : public StretchHeaderView {
QAction *align_right_action_;
QList<QAction*> show_actions_;
QSignalMapper *show_mapper_;
};
#endif // PLAYLISTHEADER_H

View File

@ -32,22 +32,22 @@
#include <QHash>
#include <QString>
#include <QIcon>
#include <QMenu>
#include <QPainter>
#include <QColor>
#include <QRect>
#include <QFont>
#include <QSignalMapper>
#include <QStylePainter>
#include <QTimer>
#include <QLayout>
#include <QVBoxLayout>
#include <QMouseEvent>
#include <QSettings>
#include <QSize>
#include <QPoint>
#include <QTransform>
#include <QMenu>
#include <QAction>
#include <QActionGroup>
#include <QSettings>
#include <QMouseEvent>
const QSize FancyTabWidget::IconSize_LargeSidebar = QSize(24, 24);
const QSize FancyTabWidget::IconSize_SmallSidebar = QSize(22, 22);
@ -536,12 +536,11 @@ void FancyTabWidget::SetMode(FancyTabWidget::Mode mode) {
}
void FancyTabWidget::addMenuItem(QSignalMapper* mapper, QActionGroup* group, const QString& text, Mode mode) {
void FancyTabWidget::addMenuItem(QActionGroup* group, const QString& text, Mode mode) {
QAction* action = group->addAction(text);
action->setCheckable(true);
mapper->setMapping(action, mode);
connect(action, SIGNAL(triggered()), mapper, SLOT(map()));
connect(action, &QAction::triggered, [this, mode]() { SetMode(mode); } );
if (mode == mode_) action->setChecked(true);
@ -550,18 +549,14 @@ void FancyTabWidget::addMenuItem(QSignalMapper* mapper, QActionGroup* group, con
void FancyTabWidget::contextMenuEvent(QContextMenuEvent* e) {
if (!menu_) {
menu_ = new QMenu(this);
QSignalMapper* mapper = new QSignalMapper(this);
QActionGroup* group = new QActionGroup(this);
addMenuItem(mapper, group, tr("Large sidebar"), Mode_LargeSidebar);
addMenuItem(mapper, group, tr("Small sidebar"), Mode_SmallSidebar);
addMenuItem(mapper, group, tr("Plain sidebar"), Mode_PlainSidebar);
addMenuItem(mapper, group, tr("Tabs on top"), Mode_Tabs);
addMenuItem(mapper, group, tr("Icons on top"), Mode_IconOnlyTabs);
addMenuItem(group, tr("Large sidebar"), Mode_LargeSidebar);
addMenuItem(group, tr("Small sidebar"), Mode_SmallSidebar);
addMenuItem(group, tr("Plain sidebar"), Mode_PlainSidebar);
addMenuItem(group, tr("Tabs on top"), Mode_Tabs);
addMenuItem(group, tr("Icons on top"), Mode_IconOnlyTabs);
menu_->addActions(group->actions());
connect(mapper, SIGNAL(mapped(int)), SLOT(SetMode(int)));
}
menu_->popup(e->globalPos());

View File

@ -24,18 +24,16 @@
#include <memory>
#include <QObject>
#include <QTabWidget>
#include <QWidget>
#include <QActionGroup>
#include <QMenu>
#include <QSignalMapper>
#include <QMap>
#include <QString>
#include <QIcon>
#include <QPixmap>
#include <QSize>
#include <QtEvents>
class QMenu;
class QActionGroup;
class TabData;
namespace Core {
@ -95,7 +93,7 @@ class FancyTabWidget : public QTabWidget {
void paintEvent(QPaintEvent *);
void contextMenuEvent(QContextMenuEvent* e);
private:
void addMenuItem(QSignalMapper* mapper, QActionGroup* group, const QString& text, Mode mode);
void addMenuItem(QActionGroup* group, const QString& text, Mode mode);
QPixmap background_pixmap_;
QMenu* menu_;

View File

@ -50,7 +50,7 @@ class LoginStateWidget : public QWidget {
public slots:
// Changes the "You are logged in/out" label, shows/hides any QGroupBoxes added with AddCredentialGroup.
void SetLoggedIn(State state, const QString &account_name = QString::null);
void SetLoggedIn(State state, const QString &account_name = QString());
// Hides the "You are logged in/out" label completely.
void HideLoggedInState();

View File

@ -35,7 +35,6 @@
#include <QPainter>
#include <QPalette>
#include <QBrush>
#include <QSignalMapper>
#include <QTextDocument>
#include <QTimeLine>
#include <QAction>
@ -101,10 +100,8 @@ PlayingWidget::PlayingWidget(QWidget *parent)
// Context menu
QActionGroup *mode_group = new QActionGroup(this);
QSignalMapper *mode_mapper = new QSignalMapper(this);
connect(mode_mapper, SIGNAL(mapped(int)), SLOT(SetMode(int)));
CreateModeAction(SmallSongDetails, tr("Small album cover"), mode_group, mode_mapper);
CreateModeAction(LargeSongDetails, tr("Large album cover"), mode_group, mode_mapper);
CreateModeAction(SmallSongDetails, tr("Small album cover"), mode_group);
CreateModeAction(LargeSongDetails, tr("Large album cover"), mode_group);
menu_->addActions(mode_group->actions());
fit_cover_width_action_ = menu_->addAction(tr("Fit cover to width"));
@ -200,12 +197,11 @@ QSize PlayingWidget::sizeHint() const {
return QSize(cover_loader_options_.desired_height_, total_height_);
}
void PlayingWidget::CreateModeAction(Mode mode, const QString &text, QActionGroup *group, QSignalMapper *mapper) {
void PlayingWidget::CreateModeAction(Mode mode, const QString &text, QActionGroup *group) {
QAction *action = new QAction(text, group);
action->setCheckable(true);
mapper->setMapping(action, mode);
connect(action, SIGNAL(triggered()), mapper, SLOT(map()));
connect(action, &QAction::triggered, [this, mode]() { SetMode(mode); } );
if (mode == mode_) action->setChecked(true);
@ -287,7 +283,7 @@ void PlayingWidget::SetImage(const QImage &image) {
QSize psize(size());
if (size().height() <= 0) psize.setHeight(total_height_);
pixmap_previous_track_ = QPixmap(psize);
pixmap_previous_track_.fill(palette().background().color());
pixmap_previous_track_.fill(palette().window().color());
pixmap_previous_track_opacity_ = 1.0;
QPainter p(&pixmap_previous_track_);
DrawContents(&p);

View File

@ -31,24 +31,24 @@
#include <QObject>
#include <QWidget>
#include <QString>
#include <QUrl>
#include <QImage>
#include <QPixmap>
#include <QPainter>
#include <QSize>
#include <QSignalMapper>
#include <QTextDocument>
#include <QTimeLine>
#include <QAction>
#include <QActionGroup>
#include <QMenu>
#include <QMovie>
#include <QtEvents>
#include "core/song.h"
#include "covermanager/albumcoverloaderoptions.h"
using std::unique_ptr;
class QTimeLine;
class QTextDocument;
class QPainter;
class QMenu;
class QAction;
class QActionGroup;
class QContextMenuEvent;
class QDragEnterEvent;
class QDropEvent;
@ -148,7 +148,7 @@ class PlayingWidget : public QWidget {
std::unique_ptr<QMovie> spinner_animation_;
void SetVisible(bool visible);
void CreateModeAction(Mode mode, const QString &text, QActionGroup *group, QSignalMapper *mapper);
void CreateModeAction(Mode mode, const QString &text, QActionGroup *group);
void UpdateDetailsText();
void UpdateHeight();
void SetImage(const QImage &image);