From f48b597451050a19cdd1dc28ff6d357901b998ee Mon Sep 17 00:00:00 2001 From: Levin Oehlmann Date: Mon, 29 May 2023 19:34:05 +0200 Subject: [PATCH 01/11] Refactor Tools menu to use a map instead of an array for future maintainability. --- include/MainWindow.h | 53 +++++++++++++++++++++--------------------- src/gui/MainWindow.cpp | 31 +++++++++++++----------- 2 files changed, 43 insertions(+), 41 deletions(-) diff --git a/include/MainWindow.h b/include/MainWindow.h index c4bbb676735..0c5829612ab 100644 --- a/include/MainWindow.h +++ b/include/MainWindow.h @@ -65,11 +65,11 @@ class MainWindow : public QMainWindow return m_toolBar; } - int addWidgetToToolBar( QWidget * _w, int _row = -1, int _col = -1 ); + int addWidgetToToolBar( QWidget* _w, int _row = -1, int _col = -1 ); void addSpacingToToolBar( int _size ); // wrap the widget with a window decoration and add it to the workspace - LMMS_EXPORT SubWindow* addWindowedWidget(QWidget *w, Qt::WindowFlags windowFlags = QFlag(0)); + LMMS_EXPORT SubWindow* addWindowedWidget(QWidget* w, Qt::WindowFlags windowFlags = QFlag(0)); /// @@ -140,8 +140,8 @@ class MainWindow : public QMainWindow return m_keyMods.m_shift; } - static void saveWidgetState( QWidget * _w, QDomElement & _de ); - static void restoreWidgetState( QWidget * _w, const QDomElement & _de ); + static void saveWidgetState( QWidget* _w, QDomElement& _de ); + static void restoreWidgetState( QWidget* _w, const QDomElement& _de ); bool eventFilter(QObject* watched, QEvent* event) override; @@ -180,32 +180,32 @@ private slots: void onExportProjectMidi(); protected: - void closeEvent( QCloseEvent * _ce ) override; - void focusOutEvent( QFocusEvent * _fe ) override; - void keyPressEvent( QKeyEvent * _ke ) override; - void keyReleaseEvent( QKeyEvent * _ke ) override; - void timerEvent( QTimerEvent * _ev ) override; + void closeEvent( QCloseEvent* _ce ) override; + void focusOutEvent( QFocusEvent* _fe ) override; + void keyPressEvent( QKeyEvent* _ke ) override; + void keyReleaseEvent( QKeyEvent* _ke ) override; + void timerEvent( QTimerEvent* _ev ) override; private: MainWindow(); - MainWindow( const MainWindow & ); + MainWindow( const MainWindow& ); ~MainWindow() override; void finalize(); - void toggleWindow( QWidget *window, bool forceShow = false ); + void toggleWindow( QWidget* window, bool forceShow = false ); void refocus(); void exportProject(bool multiExport = false); - void handleSaveResult(QString const & filename, bool songSavedSuccessfully); + void handleSaveResult(const QString& filename, bool songSavedSuccessfully); bool guiSaveProject(); - bool guiSaveProjectAs( const QString & filename ); + bool guiSaveProjectAs( const QString& filename ); - QMdiArea * m_workspace; + QMdiArea* m_workspace; - QWidget * m_toolBar; - QGridLayout * m_toolBarLayout; + QWidget* m_toolBar; + QGridLayout* m_toolBarLayout; struct keyModifiers { @@ -220,30 +220,29 @@ private slots: bool m_alt; } m_keyMods; - QMenu * m_toolsMenu; - QAction * m_undoAction; - QAction * m_redoAction; - QList m_tools; - + QMenu* m_toolsMenu; + QAction* m_undoAction; + QAction* m_redoAction; + QMap m_tools; QBasicTimer m_updateTimer; QTimer m_autoSaveTimer; int m_autoSaveInterval; friend class GuiApplication; - QMenu * m_viewMenu; + QMenu* m_viewMenu; - ToolButton * m_metronomeToggle; + ToolButton* m_metronomeToggle; SessionState m_session; - + bool maximized; private slots: void browseHelp(); - void showTool( QAction * _idx ); + void showPluginTool( const QString& which ); void updateViewMenu(); - void updateConfig( QAction * _who ); + void updateConfig( QAction* _who ); void onToggleMetronome(); void onExportProject(); void onExportProjectTracks(); @@ -254,7 +253,7 @@ private slots: signals: void periodicUpdate(); - void initProgress(const QString &msg); + void initProgress(const QString& msg); } ; diff --git a/src/gui/MainWindow.cpp b/src/gui/MainWindow.cpp index 40c8334bab1..54c4cf3ec01 100644 --- a/src/gui/MainWindow.cpp +++ b/src/gui/MainWindow.cpp @@ -379,16 +379,16 @@ void MainWindow::finalize() m_toolsMenu = new QMenu( this ); for( const Plugin::Descriptor* desc : getPluginFactory()->descriptors(Plugin::Tool) ) { - m_toolsMenu->addAction( desc->logo->pixmap(), desc->displayName ); - m_tools.push_back( ToolPlugin::instantiate( desc->name, /*this*/nullptr ) - ->createView(this) ); - } - if( !m_toolsMenu->isEmpty() ) - { - menuBar()->addMenu( m_toolsMenu )->setText( tr( "&Tools" ) ); - connect( m_toolsMenu, SIGNAL(triggered(QAction*)), - this, SLOT(showTool(QAction*))); + auto objectName = QString("ToolsMenuAction") + desc->displayName; + m_tools[objectName] = ToolPlugin::instantiate(desc->name, nullptr)->createView(this); + + //GUI + auto* action = m_toolsMenu->addAction( desc->logo->pixmap(), desc->displayName ); + action->setObjectName(objectName); + connect(action, &QAction::triggered, + this, [this, action]{ this->showPluginTool(action->objectName()); }); } + menuBar()->addMenu( m_toolsMenu )->setText( tr( "&Tools" ) ); // help-popup-menu @@ -1376,12 +1376,15 @@ void MainWindow::timerEvent( QTimerEvent * _te) -void MainWindow::showTool( QAction * _idx ) +void MainWindow::showPluginTool( const QString& which ) { - PluginView * p = m_tools[m_toolsMenu->actions().indexOf( _idx )]; - p->show(); - p->parentWidget()->show(); - p->setFocus(); + if (m_tools.contains(which)) + { + PluginView* p = m_tools[which]; + p->show(); + p->parentWidget()->show(); + p->setFocus(); + } } From c08ec5c63ac7551a22df320cfebb4893f5d9caa4 Mon Sep 17 00:00:00 2001 From: Levin Oehlmann Date: Tue, 30 May 2023 13:12:34 +0200 Subject: [PATCH 02/11] Update include/MainWindow.h formatting Co-authored-by: saker --- include/MainWindow.h | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/include/MainWindow.h b/include/MainWindow.h index 0c5829612ab..c58c2bbf02f 100644 --- a/include/MainWindow.h +++ b/include/MainWindow.h @@ -65,7 +65,7 @@ class MainWindow : public QMainWindow return m_toolBar; } - int addWidgetToToolBar( QWidget* _w, int _row = -1, int _col = -1 ); + int addWidgetToToolBar(QWidget* _w, int _row = -1, int _col = -1); void addSpacingToToolBar( int _size ); // wrap the widget with a window decoration and add it to the workspace From 46bed9aad21962604a3c3a5ab32137deb54078a2 Mon Sep 17 00:00:00 2001 From: Levin Oehlmann Date: Tue, 30 May 2023 13:12:52 +0200 Subject: [PATCH 03/11] Update include/MainWindow.h formatting Co-authored-by: saker --- include/MainWindow.h | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/include/MainWindow.h b/include/MainWindow.h index c58c2bbf02f..7235351cc30 100644 --- a/include/MainWindow.h +++ b/include/MainWindow.h @@ -140,7 +140,7 @@ class MainWindow : public QMainWindow return m_keyMods.m_shift; } - static void saveWidgetState( QWidget* _w, QDomElement& _de ); + static void saveWidgetState(QWidget* _w, QDomElement& _de); static void restoreWidgetState( QWidget* _w, const QDomElement& _de ); bool eventFilter(QObject* watched, QEvent* event) override; From 7f3c9ec6cc11346e580ba2a57911a4e32716d9b5 Mon Sep 17 00:00:00 2001 From: Levin Oehlmann Date: Tue, 30 May 2023 13:13:02 +0200 Subject: [PATCH 04/11] Update include/MainWindow.h formatting Co-authored-by: saker --- include/MainWindow.h | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/include/MainWindow.h b/include/MainWindow.h index 7235351cc30..3b67576db90 100644 --- a/include/MainWindow.h +++ b/include/MainWindow.h @@ -141,7 +141,7 @@ class MainWindow : public QMainWindow } static void saveWidgetState(QWidget* _w, QDomElement& _de); - static void restoreWidgetState( QWidget* _w, const QDomElement& _de ); + static void restoreWidgetState(QWidget* _w, const QDomElement& _de); bool eventFilter(QObject* watched, QEvent* event) override; From 2c2df52e9408cc52f848b6355a4f06cadfeb5080 Mon Sep 17 00:00:00 2001 From: Levin Oehlmann Date: Tue, 30 May 2023 13:13:11 +0200 Subject: [PATCH 05/11] Update include/MainWindow.h formatting Co-authored-by: saker --- include/MainWindow.h | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/include/MainWindow.h b/include/MainWindow.h index 3b67576db90..f69fb1d1f2a 100644 --- a/include/MainWindow.h +++ b/include/MainWindow.h @@ -189,7 +189,7 @@ private slots: private: MainWindow(); - MainWindow( const MainWindow& ); + MainWindow(const MainWindow&); ~MainWindow() override; void finalize(); From d0330cf905542aa7e9ff0be710a0e14edc38e7f7 Mon Sep 17 00:00:00 2001 From: Levin Oehlmann Date: Tue, 30 May 2023 13:13:26 +0200 Subject: [PATCH 06/11] Update src/gui/MainWindow.cpp formatting Co-authored-by: saker --- src/gui/MainWindow.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/gui/MainWindow.cpp b/src/gui/MainWindow.cpp index 54c4cf3ec01..2bc8baa9bf5 100644 --- a/src/gui/MainWindow.cpp +++ b/src/gui/MainWindow.cpp @@ -388,7 +388,7 @@ void MainWindow::finalize() connect(action, &QAction::triggered, this, [this, action]{ this->showPluginTool(action->objectName()); }); } - menuBar()->addMenu( m_toolsMenu )->setText( tr( "&Tools" ) ); + menuBar()->addMenu(m_toolsMenu)->setText(tr("&Tools")); // help-popup-menu From 7f9c750ada3e914f7aa43154358fc22c0e18a1bb Mon Sep 17 00:00:00 2001 From: Levin Oehlmann Date: Tue, 30 May 2023 13:14:21 +0200 Subject: [PATCH 07/11] Update include/MainWindow.h formatting Co-authored-by: saker --- include/MainWindow.h | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/include/MainWindow.h b/include/MainWindow.h index f69fb1d1f2a..4e52cb5efdf 100644 --- a/include/MainWindow.h +++ b/include/MainWindow.h @@ -180,11 +180,11 @@ private slots: void onExportProjectMidi(); protected: - void closeEvent( QCloseEvent* _ce ) override; - void focusOutEvent( QFocusEvent* _fe ) override; - void keyPressEvent( QKeyEvent* _ke ) override; - void keyReleaseEvent( QKeyEvent* _ke ) override; - void timerEvent( QTimerEvent* _ev ) override; + void closeEvent(QCloseEvent* _ce) override; + void focusOutEvent(QFocusEvent* _fe) override; + void keyPressEvent(QKeyEvent* _ke) override; + void keyReleaseEvent(QKeyEvent* _ke) override; + void timerEvent(QTimerEvent* _ev) override; private: From ff56d29e28db6bfd38106899f76f4b797182c5ef Mon Sep 17 00:00:00 2001 From: Levin Oehlmann Date: Tue, 30 May 2023 13:17:24 +0200 Subject: [PATCH 08/11] Update src/gui/MainWindow.cpp explicit constness of read-only local variable Co-authored-by: saker --- src/gui/MainWindow.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/gui/MainWindow.cpp b/src/gui/MainWindow.cpp index 2bc8baa9bf5..f18b59427e9 100644 --- a/src/gui/MainWindow.cpp +++ b/src/gui/MainWindow.cpp @@ -379,7 +379,7 @@ void MainWindow::finalize() m_toolsMenu = new QMenu( this ); for( const Plugin::Descriptor* desc : getPluginFactory()->descriptors(Plugin::Tool) ) { - auto objectName = QString("ToolsMenuAction") + desc->displayName; + const auto objectName = QString("ToolsMenuAction") + desc->displayName; m_tools[objectName] = ToolPlugin::instantiate(desc->name, nullptr)->createView(this); //GUI From d4c920cb4e43a6fae5a526555eba4ad37f1ee235 Mon Sep 17 00:00:00 2001 From: Levin Oehlmann Date: Tue, 30 May 2023 13:17:54 +0200 Subject: [PATCH 09/11] Update include/MainWindow.h use explicit window flag name Co-authored-by: saker --- include/MainWindow.h | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/include/MainWindow.h b/include/MainWindow.h index 4e52cb5efdf..86ccca1de0c 100644 --- a/include/MainWindow.h +++ b/include/MainWindow.h @@ -69,7 +69,7 @@ class MainWindow : public QMainWindow void addSpacingToToolBar( int _size ); // wrap the widget with a window decoration and add it to the workspace - LMMS_EXPORT SubWindow* addWindowedWidget(QWidget* w, Qt::WindowFlags windowFlags = QFlag(0)); + LMMS_EXPORT SubWindow* addWindowedWidget(QWidget* w, Qt::WindowFlags windowFlags = Qt::Widget); /// From 2e4fee1e1d6d8bd3ec969628d065d611f1937d18 Mon Sep 17 00:00:00 2001 From: Levin Oehlmann Date: Tue, 30 May 2023 13:21:55 +0200 Subject: [PATCH 10/11] Apply suggestions from code review formatting Co-authored-by: saker --- include/MainWindow.h | 8 ++++---- src/gui/MainWindow.cpp | 2 +- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/include/MainWindow.h b/include/MainWindow.h index 86ccca1de0c..f2ec82eeb30 100644 --- a/include/MainWindow.h +++ b/include/MainWindow.h @@ -194,13 +194,13 @@ private slots: void finalize(); - void toggleWindow( QWidget* window, bool forceShow = false ); + void toggleWindow(QWidget* window, bool forceShow = false); void refocus(); void exportProject(bool multiExport = false); void handleSaveResult(const QString& filename, bool songSavedSuccessfully); bool guiSaveProject(); - bool guiSaveProjectAs( const QString& filename ); + bool guiSaveProjectAs(const QString& filename); QMdiArea* m_workspace; @@ -240,9 +240,9 @@ private slots: private slots: void browseHelp(); - void showPluginTool( const QString& which ); + void showPluginTool(const QString& which); void updateViewMenu(); - void updateConfig( QAction* _who ); + void updateConfig(QAction* _who); void onToggleMetronome(); void onExportProject(); void onExportProjectTracks(); diff --git a/src/gui/MainWindow.cpp b/src/gui/MainWindow.cpp index f18b59427e9..af0c14f4e83 100644 --- a/src/gui/MainWindow.cpp +++ b/src/gui/MainWindow.cpp @@ -1376,7 +1376,7 @@ void MainWindow::timerEvent( QTimerEvent * _te) -void MainWindow::showPluginTool( const QString& which ) +void MainWindow::showPluginTool(const QString& which) { if (m_tools.contains(which)) { From 14d590f15741e7202bb63666672ecc89cf50146f Mon Sep 17 00:00:00 2001 From: Levin Oehlmann Date: Tue, 30 May 2023 13:33:13 +0200 Subject: [PATCH 11/11] Better variable naming in showPluginTool() --- src/gui/MainWindow.cpp | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/src/gui/MainWindow.cpp b/src/gui/MainWindow.cpp index af0c14f4e83..19f093bf823 100644 --- a/src/gui/MainWindow.cpp +++ b/src/gui/MainWindow.cpp @@ -1380,10 +1380,10 @@ void MainWindow::showPluginTool(const QString& which) { if (m_tools.contains(which)) { - PluginView* p = m_tools[which]; - p->show(); - p->parentWidget()->show(); - p->setFocus(); + auto* pluginView = m_tools[which]; + pluginView->show(); + pluginView->parentWidget()->show(); + pluginView->setFocus(); } }