54 const std::shared_ptr<core::ports::diagnostics::IErrorReporter>& errorReporter,
55 std::shared_ptr<core::ports::analysis::IAnalysisRunner> analysisRunner,
56 std::shared_ptr<core::ports::annual::IAnnualRunner> annualRunner,
57 std::shared_ptr<core::ports::exporting::IExportRunner> exportRunner,
58 std::shared_ptr<core::ports::importing::IImportRunner> importRunner) {
65 workspaceStore->setWorkspacePorts(&workspaceWriter, &workspaceReader);
67 if (workspaceCommands) {
68 workspaceCommands->setBeforeStorageSaveCallback({});
77 QObject::connect(workspaceCommands,
84 const auto workspaceSnapshotProvider = [&workspaceReader]() {
88 auto analysisAdapter = std::make_shared<ui::adapters::AnalysisAdapter>(
89 std::move(analysisRunner));
90 auto* analysisWorkflow =
95 std::make_shared<ui::adapters::AnnualAdapter>(std::move(annualRunner));
96 auto* annualWorkflow =
100 std::make_shared<ui::adapters::ExportAdapter>(std::move(exportRunner));
101 auto* exportWorkflow =
107 languageService = appContext->languageService();
109 if (!languageService) {
113 appContext->setLanguageService(languageService);
121 std::make_shared<ui::adapters::ImportAdapter>(std::move(importRunner));
123 importAdapter, errorReporter,
125 return workspaceStore ? workspaceStore->snapshot()
128 workspaceCommands, workspaceSelectors, &w);
129 if (workspaceCommands) {
130 QPointer<ui::ImportWorkflow> activeImportWorkflow(importWorkflow);
131 workspaceCommands->setBeforeStorageSaveCallback([activeImportWorkflow]() {
132 if (activeImportWorkflow) {
133 activeImportWorkflow->flushActiveDraftToWorkspace();
139 auto* actorViewModel =
141 workspaceSelection, workspaceSelectors, &w);
142 appContext->setActorViewModel(actorViewModel);
144 auto* bookingViewModel =
146 workspaceSelection, workspaceSelectors, &w);
147 appContext->setBookingViewModel(bookingViewModel);
149 auto* contractViewModel =
151 workspaceSelection, workspaceSelectors, &w);
152 appContext->setContractViewModel(contractViewModel);
154 auto* propertyViewModel =
156 workspaceSelection, workspaceSelectors, &w);
157 appContext->setPropertyViewModel(propertyViewModel);
160 analysisViewModel->setWorkspaceRoles(workspaceStore, workspaceCommands,
163 analysisViewModel->setAnalysisWorkflow(analysisWorkflow);
164 analysisViewModel->setSettings(settings);
165 appContext->setAnalysisViewModel(analysisViewModel);
168 annualViewModel->setWorkspaceRoles(workspaceStore, workspaceCommands,
169 workspaceSelection, workspaceSelectors);
170 annualViewModel->setAnnualWorkflow(annualWorkflow);
171 appContext->setAnnualViewModel(annualViewModel);
174 exportViewModel->setWorkspaceRoles(workspaceStore, workspaceCommands,
176 exportViewModel->setExportWorkflow(exportWorkflow);
177 exportViewModel->setActions(appContext->actions());
178 exportViewModel->setFileSystemBrowser(appContext->fileSystemBrowser());
179 exportViewModel->setSettings(settings);
180 appContext->setExportViewModel(exportViewModel);
183 importViewModel->setImportWorkflow(importWorkflow);
184 importViewModel->setNavigation(appContext->navigation());
185 importViewModel->setWorkspaceRoles(workspaceStore, workspaceCommands,
186 workspaceSelection, workspaceSelectors);
187 importViewModel->setSettings(settings);
188 importViewModel->setActions(appContext->actions());
189 importViewModel->setStatus(appContext->status());
190 appContext->setImportViewModel(importViewModel);
193 settingsViewModel->setNavigation(appContext->navigation());
194 settingsViewModel->setSettings(settings);
195 settingsViewModel->setActions(appContext->actions());
196 settingsViewModel->setLanguageService(languageService);
197 appContext->setSettingsViewModel(settingsViewModel);
Declares the QML application context object.
Main window declaration for the UI application.
void openFileRequested(const QString &path)
ui::WorkspaceSelectors * workspaceSelectors() const noexcept
void handleStorageOperationFailed(const QString &operation, const QString &error)
void newFileRequested(const QString &path)
ui::WorkspaceStore * workspaceStore() const noexcept
ui::Settings * settings() const noexcept
ui::bootstrap::AppContext * appContext() const noexcept
void saveFileAsRequested(const QString &path)
ui::WorkspaceCommands * workspaceCommands() const noexcept
ui::WorkspaceSelection * workspaceSelection() const noexcept
void createComposition(QApplication &app, MainWindow &w, core::ports::workspace::IWorkspaceReader &workspaceReader, core::ports::workspace::IWorkspaceWriter &workspaceWriter, const std::shared_ptr< core::ports::diagnostics::IErrorReporter > &errorReporter, std::shared_ptr< core::ports::analysis::IAnalysisRunner > analysisRunner, std::shared_ptr< core::ports::annual::IAnnualRunner > annualRunner, std::shared_ptr< core::ports::exporting::IExportRunner > exportRunner, std::shared_ptr< core::ports::importing::IImportRunner > importRunner)
Creates and wires QML-facing workflows and view models.