refactor: Replace ApplicationController singleton with dependency injection

Co-authored-by: aider (gemini/gemini-2.5-pro) <aider@aider.chat>
This commit is contained in:
2026-02-13 17:33:17 -07:00
parent 1ded863b10
commit d51e7127af
5 changed files with 23 additions and 25 deletions

View File

@@ -18,8 +18,9 @@
#include <QInputDialog>
#include <QStringList>
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()