diff --git a/src/ApplicationController.cpp b/src/ApplicationController.cpp index b4796c6..9238762 100644 --- a/src/ApplicationController.cpp +++ b/src/ApplicationController.cpp @@ -9,12 +9,6 @@ #include #include -ApplicationController* ApplicationController::instance() -{ - static ApplicationController instance; - return &instance; -} - ApplicationController::ApplicationController(QObject *parent) : QObject(parent) { diff --git a/src/ApplicationController.h b/src/ApplicationController.h index 3bfc099..108038c 100644 --- a/src/ApplicationController.h +++ b/src/ApplicationController.h @@ -12,7 +12,8 @@ class ApplicationController : public QObject { Q_OBJECT public: - static ApplicationController* instance(); + explicit ApplicationController(QObject *parent = nullptr); + ~ApplicationController(); void setMainWindow(MainWindow* mainWindow); Document* document() const; @@ -33,8 +34,6 @@ signals: void currentFileChanged(const QString& path); private: - explicit ApplicationController(QObject *parent = nullptr); - ~ApplicationController(); ApplicationController(const ApplicationController&) = delete; ApplicationController& operator=(const ApplicationController&) = delete; diff --git a/src/MainWindow.cpp b/src/MainWindow.cpp index 2ce9c84..ac1472c 100644 --- a/src/MainWindow.cpp +++ b/src/MainWindow.cpp @@ -18,8 +18,9 @@ #include #include -MainWindow::MainWindow(QWidget *parent) +MainWindow::MainWindow(ApplicationController* appController, QWidget *parent) : QMainWindow(parent) + , m_appController(appController) { setWindowTitle("OpenCAD"); resize(1920, 1080); @@ -117,50 +118,50 @@ MainWindow::MainWindow(QWidget *parent) m_viewport = new ViewportWidget; setCentralWidget(m_viewport); - ApplicationController::instance()->setMainWindow(this); - Document* document = ApplicationController::instance()->document(); + m_appController->setMainWindow(this); + Document* document = m_appController->document(); m_viewport->setDocument(document); connect(document, &Document::featureAdded, m_viewport, QOverload<>::of(&QWidget::update)); connect(document, &Document::cleared, m_viewport, QOverload<>::of(&QWidget::update)); - connect(ApplicationController::instance(), &ApplicationController::sketchModeStarted, this, &MainWindow::enterSketchMode); - connect(ApplicationController::instance(), &ApplicationController::sketchModeEnded, this, &MainWindow::exitSketchMode); - connect(ApplicationController::instance(), &ApplicationController::sketchModeStarted, m_viewport, &ViewportWidget::onSketchModeStarted); - connect(ApplicationController::instance(), &ApplicationController::sketchModeEnded, m_viewport, &ViewportWidget::onSketchModeEnded); - connect(ApplicationController::instance(), &ApplicationController::currentFileChanged, this, &MainWindow::updateWindowTitle); + connect(m_appController, &ApplicationController::sketchModeStarted, this, &MainWindow::enterSketchMode); + connect(m_appController, &ApplicationController::sketchModeEnded, this, &MainWindow::exitSketchMode); + connect(m_appController, &ApplicationController::sketchModeStarted, m_viewport, &ViewportWidget::onSketchModeStarted); + connect(m_appController, &ApplicationController::sketchModeEnded, m_viewport, &ViewportWidget::onSketchModeEnded); + connect(m_appController, &ApplicationController::currentFileChanged, this, &MainWindow::updateWindowTitle); updateWindowTitle(QString()); } void MainWindow::createSketch() { - ApplicationController::instance()->beginSketchCreation(); + m_appController->beginSketchCreation(); } void MainWindow::saveSketch() { - ApplicationController::instance()->endSketch(); + m_appController->endSketch(); } void MainWindow::newFile() { - ApplicationController::instance()->newDocument(); + m_appController->newDocument(); } void MainWindow::open() { - ApplicationController::instance()->openDocument(); + m_appController->openDocument(); } bool MainWindow::save() { - return ApplicationController::instance()->saveDocument(); + return m_appController->saveDocument(); } bool MainWindow::saveAs() { - return ApplicationController::instance()->saveDocumentAs(); + return m_appController->saveDocumentAs(); } void MainWindow::enterSketchMode() diff --git a/src/MainWindow.h b/src/MainWindow.h index bd9a8da..34a207d 100644 --- a/src/MainWindow.h +++ b/src/MainWindow.h @@ -8,13 +8,14 @@ class Document; class Feature; class QTabWidget; class QWidget; +class ApplicationController; class MainWindow : public QMainWindow { Q_OBJECT public: - explicit MainWindow(QWidget *parent = nullptr); + explicit MainWindow(ApplicationController* appController, QWidget *parent = nullptr); private slots: void newFile(); @@ -29,6 +30,7 @@ private slots: void updateWindowTitle(const QString& filePath); private: + ApplicationController* m_appController; ViewportWidget *m_viewport; QTabWidget *m_tabWidget; diff --git a/src/main.cpp b/src/main.cpp index 22cf605..0b2ef98 100644 --- a/src/main.cpp +++ b/src/main.cpp @@ -1,11 +1,13 @@ #include #include "MainWindow.h" +#include "ApplicationController.h" int main(int argc, char *argv[]) { QApplication app(argc, argv); - MainWindow window; + ApplicationController appController; + MainWindow window(&appController); window.show(); return app.exec();