From d285ae5124803fce2de27673e35193f61f06a93e Mon Sep 17 00:00:00 2001 From: Kubat <mael.martin31@gmail.com> Date: Tue, 6 Jul 2021 22:24:49 +0200 Subject: [PATCH] UI: Reduce the number of virtual methods of the DocumentView class --- CMakeLists.txt | 12 +++++++++++- src/UI/DocumentView.cc | 17 ++++++++++++++++- src/UI/DocumentView.hh | 13 +++++++++---- src/UI/DocumentViews/TimingBar.hh | 1 - src/UI/ScriptDocumentView.cc | 8 +------- src/UI/ScriptDocumentView.hh | 3 --- src/UI/VivyDocumentView.cc | 8 +------- src/UI/VivyDocumentView.hh | 3 +-- 8 files changed, 39 insertions(+), 26 deletions(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index f1c0438c..161c798e 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -55,7 +55,17 @@ target_link_libraries(Vivy PRIVATE ${AVFORMAT_LIBRARY}) # Headers related things target_include_directories(Vivy PRIVATE ${CMAKE_CURRENT_SOURCE_DIR}/inc) -target_precompile_headers(Vivy PRIVATE ${Vivy_INC}) +target_precompile_headers(Vivy PRIVATE + # Private Vivy headers + ${Vivy_INC} + + # Qt headers + <QString> + <QList> + <QMap> + <QWidget> + <QIcon> +) # More options and warnings target_compile_options(Vivy PRIVATE diff --git a/src/UI/DocumentView.cc b/src/UI/DocumentView.cc index 4fbabf42..dce1e4da 100644 --- a/src/UI/DocumentView.cc +++ b/src/UI/DocumentView.cc @@ -6,8 +6,9 @@ using namespace Vivy; -DocumentView::DocumentView(QWidget *parent) noexcept +DocumentView::DocumentView(DocumentView::Type type, QWidget *parent) noexcept : QMainWindow(parent) + , documentType(type) { setStatusBar(nullptr); setMenuBar(nullptr); @@ -31,3 +32,17 @@ DocumentView::deleteAllContent() noexcept delete layout(); } } + +// Returns actions that must be placed in the view actions to show/hide some of +// the document's widgets +const QList<QAction *> & +DocumentView::getViewsActions() const noexcept +{ + return viewsActions; +} + +DocumentView::Type +DocumentView::getType() const noexcept +{ + return documentType; +} diff --git a/src/UI/DocumentView.hh b/src/UI/DocumentView.hh index a8c3eaaa..e4acccf4 100644 --- a/src/UI/DocumentView.hh +++ b/src/UI/DocumentView.hh @@ -8,8 +8,7 @@ #include "../Lib/Utils.hh" #include <QMainWindow> #include <QDockWidget> -#include <QString> -#include <QIcon> +#include <QAction> namespace Vivy { @@ -26,7 +25,7 @@ public: }; public: - explicit DocumentView(QWidget *parent = nullptr) noexcept; + explicit DocumentView(Type, QWidget *parent = nullptr) noexcept; virtual ~DocumentView() noexcept = default; virtual void closeDocument() noexcept = 0; @@ -34,11 +33,17 @@ public: virtual QString getDocumentTabName() const noexcept = 0; virtual QString getDocumentTabToolTip() const noexcept = 0; - virtual Type getType() const noexcept = 0; virtual QIcon getDocumentTabIcon() const noexcept = 0; + Type getType() const noexcept; + const QList<QAction *> &getViewsActions() const noexcept; + protected: void deleteAllContent() noexcept; + QList<QAction *> viewsActions{}; + +private: + const Type documentType; }; } diff --git a/src/UI/DocumentViews/TimingBar.hh b/src/UI/DocumentViews/TimingBar.hh index 3dcd5fd0..6edf64ee 100644 --- a/src/UI/DocumentViews/TimingBar.hh +++ b/src/UI/DocumentViews/TimingBar.hh @@ -5,7 +5,6 @@ #error "This is a C++ header" #endif -#include <QWidget> #include <QGraphicsItem> #include <QGraphicsLineItem> diff --git a/src/UI/ScriptDocumentView.cc b/src/UI/ScriptDocumentView.cc index fd4c6e3d..2107cc4b 100644 --- a/src/UI/ScriptDocumentView.cc +++ b/src/UI/ScriptDocumentView.cc @@ -3,7 +3,7 @@ using namespace Vivy; ScriptDocumentView::ScriptDocumentView(QWidget *parent) noexcept - : DocumentView(parent) + : DocumentView(DocumentView::Type::Script, parent) { } @@ -30,12 +30,6 @@ ScriptDocumentView::getDocumentTabIcon() const noexcept return QIcon::fromTheme("text-x-script"); } -DocumentView::Type -ScriptDocumentView::getType() const noexcept -{ - return DocumentView::Type::Script; -} - void ScriptDocumentView::openProperties() noexcept { diff --git a/src/UI/ScriptDocumentView.hh b/src/UI/ScriptDocumentView.hh index 9dfb89d1..d6e1c937 100644 --- a/src/UI/ScriptDocumentView.hh +++ b/src/UI/ScriptDocumentView.hh @@ -27,9 +27,6 @@ public: QString getDocumentTabName() const noexcept override; QString getDocumentTabToolTip() const noexcept override; QIcon getDocumentTabIcon() const noexcept override; - Type getType() const noexcept override; - -private: }; } diff --git a/src/UI/VivyDocumentView.cc b/src/UI/VivyDocumentView.cc index bad8c3c6..2903b313 100644 --- a/src/UI/VivyDocumentView.cc +++ b/src/UI/VivyDocumentView.cc @@ -11,7 +11,7 @@ using namespace Vivy; VivyDocumentView::VivyDocumentView(std::shared_ptr<VivyDocument> doc, QWidget *parent) noexcept - : DocumentView(parent) + : DocumentView(DocumentView::Type::Vivy, parent) , document(doc) { qDebug() << "Create view for document" << doc->getName() << "with capabilities" @@ -84,12 +84,6 @@ VivyDocumentView::loadAudioView() noexcept } } -DocumentView::Type -VivyDocumentView::getType() const noexcept -{ - return DocumentView::Type::Vivy; -} - void VivyDocumentView::closeDocument() noexcept { diff --git a/src/UI/VivyDocumentView.hh b/src/UI/VivyDocumentView.hh index 28d991b8..3de381e6 100644 --- a/src/UI/VivyDocumentView.hh +++ b/src/UI/VivyDocumentView.hh @@ -31,13 +31,12 @@ public: QString getDocumentTabName() const noexcept override; QString getDocumentTabToolTip() const noexcept override; QIcon getDocumentTabIcon() const noexcept override; - Type getType() const noexcept override; private: std::shared_ptr<VivyDocument> document; + std::unique_ptr<PropertyModel> propertyModel; QDockWidget *visualizer{ nullptr }; QDockWidget *property{ nullptr }; - std::unique_ptr<PropertyModel> propertyModel; void loadAudioView() noexcept; }; -- GitLab