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