diff --git a/src/analyzer/analyzercontainer.cpp b/src/analyzer/analyzercontainer.cpp index ff0c4a763..1c341e5aa 100644 --- a/src/analyzer/analyzercontainer.cpp +++ b/src/analyzer/analyzercontainer.cpp @@ -23,13 +23,12 @@ #include #include #include -#include -#include -#include #include #include #include -#include +#include +#include +#include #include #include #include @@ -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(); AddAnalyzerType(); - 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); } ); } diff --git a/src/analyzer/analyzercontainer.h b/src/analyzer/analyzercontainer.h index 17872ddcf..25b835b0e 100644 --- a/src/analyzer/analyzercontainer.h +++ b/src/analyzer/analyzercontainer.h @@ -24,7 +24,6 @@ #include -#include #include #include #include @@ -32,12 +31,10 @@ #include #include #include -#include -#include -#include #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 analyzer_types_; QList framerate_list_; @@ -110,14 +105,16 @@ signals: template 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 diff --git a/src/collection/collectionfilterwidget.cpp b/src/collection/collectionfilterwidget.cpp index 2f6194db3..efd151a72 100644 --- a/src/collection/collectionfilterwidget.cpp +++ b/src/collection/collectionfilterwidget.cpp @@ -37,7 +37,6 @@ #include #include #include -#include #include #include @@ -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()) { diff --git a/src/collection/collectionfilterwidget.h b/src/collection/collectionfilterwidget.h index 0b6aacdfd..508fb87dd 100644 --- a/src/collection/collectionfilterwidget.h +++ b/src/collection/collectionfilterwidget.h @@ -28,17 +28,17 @@ #include #include +#include #include -#include -#include -#include -#include -#include #include #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 filter_ages_; QTimer *filter_delay_; @@ -129,6 +129,7 @@ signals: QString settings_group_; QString settings_prefix_; + }; #endif // COLLECTIONFILTERWIDGET_H diff --git a/src/globalshortcuts/globalshortcuts.h b/src/globalshortcuts/globalshortcuts.h index aba480d82..2f84e7c39 100644 --- a/src/globalshortcuts/globalshortcuts.h +++ b/src/globalshortcuts/globalshortcuts.h @@ -32,7 +32,6 @@ #include #include #include -#include #include #include diff --git a/src/organise/organisedialog.cpp b/src/organise/organisedialog.cpp index 5ce4d8e8b..4b36c6c82 100644 --- a/src/organise/organisedialog.cpp +++ b/src/organise/organisedialog.cpp @@ -46,7 +46,6 @@ #include #include #include -#include #include #include #include @@ -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; diff --git a/src/playlist/playlistheader.cpp b/src/playlist/playlistheader.cpp index e303b1f3e..1278982e9 100644 --- a/src/playlist/playlistheader.cpp +++ b/src/playlist/playlistheader.cpp @@ -23,13 +23,11 @@ #include #include -#include #include -#include -#include #include #include #include +#include #include #include #include @@ -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); } ); } diff --git a/src/playlist/playlistheader.h b/src/playlist/playlistheader.h index c1191d538..ef58e6de9 100644 --- a/src/playlist/playlistheader.h +++ b/src/playlist/playlistheader.h @@ -28,14 +28,13 @@ #include #include #include -#include -#include -#include -#include #include #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 show_actions_; - QSignalMapper *show_mapper_; }; #endif // PLAYLISTHEADER_H diff --git a/src/widgets/fancytabwidget.cpp b/src/widgets/fancytabwidget.cpp index 87dad0c18..32ff7e2d3 100644 --- a/src/widgets/fancytabwidget.cpp +++ b/src/widgets/fancytabwidget.cpp @@ -32,22 +32,22 @@ #include #include #include -#include #include #include #include #include -#include #include #include #include #include -#include -#include #include #include #include +#include #include +#include +#include +#include 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()); diff --git a/src/widgets/fancytabwidget.h b/src/widgets/fancytabwidget.h index c6d440530..42d77ab5d 100644 --- a/src/widgets/fancytabwidget.h +++ b/src/widgets/fancytabwidget.h @@ -24,18 +24,16 @@ #include -#include #include -#include -#include -#include -#include +#include #include #include #include #include #include +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_; diff --git a/src/widgets/loginstatewidget.h b/src/widgets/loginstatewidget.h index 7a5d7354a..a55ccf6ef 100644 --- a/src/widgets/loginstatewidget.h +++ b/src/widgets/loginstatewidget.h @@ -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(); diff --git a/src/widgets/playingwidget.cpp b/src/widgets/playingwidget.cpp index a7aae7c3c..4b5495318 100644 --- a/src/widgets/playingwidget.cpp +++ b/src/widgets/playingwidget.cpp @@ -35,7 +35,6 @@ #include #include #include -#include #include #include #include @@ -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); diff --git a/src/widgets/playingwidget.h b/src/widgets/playingwidget.h index 33a7b5be8..70a07f3f9 100644 --- a/src/widgets/playingwidget.h +++ b/src/widgets/playingwidget.h @@ -31,24 +31,24 @@ #include #include #include +#include #include #include -#include #include -#include -#include -#include -#include -#include #include #include -#include #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 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);