From fc4b78664d2ee3f049240185e48863a8bd8711ec Mon Sep 17 00:00:00 2001 From: Kubat <mael.martin31@gmail.com> Date: Fri, 25 Jun 2021 18:58:01 +0200 Subject: [PATCH] APP: The main window must be constructed from the application object --- src/Document/VivyDocumentStore.cc | 4 ++-- src/Document/VivyDocumentStore.hh | 2 +- src/Document/VivyDocumentView.cc | 3 ++- src/MainWindow.cc | 11 +++-------- src/MainWindow.hh | 7 +++---- src/VivyApplication.cc | 3 +-- 6 files changed, 12 insertions(+), 18 deletions(-) diff --git a/src/Document/VivyDocumentStore.cc b/src/Document/VivyDocumentStore.cc index 92342328..361a4b4c 100644 --- a/src/Document/VivyDocumentStore.cc +++ b/src/Document/VivyDocumentStore.cc @@ -17,7 +17,7 @@ VivyDocumentStore::loadDocument(const QString &file) if (VivyDocument *ret = VivyDocument::fromPath(file)) { qDebug() << "Register ument " << baseName; documents[baseName] = std::shared_ptr<VivyDocument>(ret); - return std::weak_ptr{documents[baseName]}; + return std::weak_ptr{ documents[baseName] }; } else { qDebug() << "Failed to create document from " << file; throw std::runtime_error("Failed to create the document"); @@ -50,5 +50,5 @@ VivyDocumentStore::getDocument(const QString &name) const qCritical() << "Couldn't find the document " << name; throw std::runtime_error("Can't find the document"); } - return std::weak_ptr<VivyDocument>{documents.value(name)}; + return std::weak_ptr<VivyDocument>{ documents.value(name) }; } diff --git a/src/Document/VivyDocumentStore.hh b/src/Document/VivyDocumentStore.hh index a4965c27..72d6299b 100644 --- a/src/Document/VivyDocumentStore.hh +++ b/src/Document/VivyDocumentStore.hh @@ -11,7 +11,7 @@ class VivyDocumentStore final { public: explicit VivyDocumentStore() noexcept = default; - ~VivyDocumentStore() noexcept = default; + ~VivyDocumentStore() noexcept = default; /* Don't move this object around */ VivyDocumentStore(const VivyDocumentStore &) = delete; // Copy diff --git a/src/Document/VivyDocumentView.cc b/src/Document/VivyDocumentView.cc index 2a459ab5..380702d3 100644 --- a/src/Document/VivyDocumentView.cc +++ b/src/Document/VivyDocumentView.cc @@ -5,7 +5,8 @@ #include <QVBoxLayout> VivyDocumentView::VivyDocumentView(std::weak_ptr<VivyDocument> docWeak, QWidget *parent) noexcept - : QWidget(parent), document(docWeak) + : QWidget(parent) + , document(docWeak) { if (auto doc = document.lock()) { AudioDocument *const audioDocument = doc->getAudioSubDocument(); diff --git a/src/MainWindow.cc b/src/MainWindow.cc index 4641010c..640dbdd6 100644 --- a/src/MainWindow.cc +++ b/src/MainWindow.cc @@ -16,8 +16,9 @@ #include <QToolBar> #include <QTabWidget> -MainWindow::MainWindow(QWidget *parent) noexcept - : QMainWindow(parent) +MainWindow::MainWindow(VivyApplication *app) noexcept + : QMainWindow(nullptr) + , application(app) { /* Some ugly stuff going on here with the toolbars and the menues */ #include "MainWindow.xdef" @@ -99,9 +100,3 @@ MainWindow::openDocument() noexcept throw; } } - -void -MainWindow::registerApplication(VivyApplication *app) noexcept -{ - application = app; -} diff --git a/src/MainWindow.hh b/src/MainWindow.hh index 0d8c09bf..3cf48823 100644 --- a/src/MainWindow.hh +++ b/src/MainWindow.hh @@ -18,15 +18,13 @@ class MainWindow final : public QMainWindow { Q_OBJECT VivyDocumentStore documentStore{}; - VivyApplication *application{ nullptr }; + VivyApplication *application; QTabWidget *documents{ nullptr }; public: - explicit MainWindow(QWidget *parent = nullptr) noexcept; + explicit MainWindow(VivyApplication *) noexcept; ~MainWindow() noexcept = default; - void registerApplication(VivyApplication *) noexcept; - private slots: void openDocument() noexcept; void closeDocument(int index) noexcept; @@ -35,4 +33,5 @@ private slots: void saveFile() noexcept; void saveFileAs() noexcept; }; + #endif // VIVY_MAINWINDOW_H diff --git a/src/VivyApplication.cc b/src/VivyApplication.cc index 5cb26f87..b5c470b1 100644 --- a/src/VivyApplication.cc +++ b/src/VivyApplication.cc @@ -8,14 +8,13 @@ extern char *vivy_xpm[]; VivyApplication::VivyApplication(int argc, char **argv) : QApplication(argc, argv) - , mainWindow(new MainWindow) , applicationIcon(QPixmap(vivy_xpm).scaled(100, 100, Qt::KeepAspectRatio, Qt::SmoothTransformation)) { if (singletonInstance) throw std::runtime_error("A single instance of the VivyApplication can be created"); singletonInstance = this; - mainWindow->registerApplication(this); + mainWindow = std::make_unique<MainWindow>(this); } int -- GitLab