Fix viewer load termination

Handle streamer success, failure, and cancellation as distinct terminal states so failed or cancelled loads do not finalize as successful models. Clean up partial model/UI state in the full and minimal viewer apps when a load is cancelled or fails.

Generated with the assistance of an AI coding tool.
This commit is contained in:
Dion Moult
2026-04-22 11:27:53 +10:00
parent 29f5132510
commit 4e4553201b
8 changed files with 103 additions and 4 deletions
+7
View File
@@ -45,6 +45,8 @@ MinimalWindow::MinimalWindow(QWidget* parent)
this, &MinimalWindow::onLoadedFromSidecar);
connect(loader_, &SceneLoader::loadedFromStream,
this, &MinimalWindow::onLoadedFromStream);
connect(loader_, &SceneLoader::loadCancelled,
this, &MinimalWindow::onLoadCancelled);
connect(loader_, &SceneLoader::loadError,
this, &MinimalWindow::onLoadError);
connect(loader_, &SceneLoader::allLoadsFinished,
@@ -100,6 +102,11 @@ void MinimalWindow::onLoadedFromStream(uint32_t mid, qint64 elapsed_ms) {
.arg(formatElapsed(elapsed_ms)));
}
void MinimalWindow::onLoadCancelled(uint32_t mid) {
status_label_->setText(QString("%1 load cancelled")
.arg(loader_->displayName(mid)));
}
void MinimalWindow::onLoadError(uint32_t /*mid*/, QString message) {
qWarning("IfcViewerMinimal error: %s", qPrintable(message));
status_label_->setText("Error: " + message);
+1
View File
@@ -40,6 +40,7 @@ private slots:
void onLoadStarted(uint32_t mid, QString display_name);
void onLoadedFromSidecar(uint32_t mid, qint64 elapsed_ms);
void onLoadedFromStream(uint32_t mid, qint64 elapsed_ms);
void onLoadCancelled(uint32_t mid);
void onLoadError(uint32_t mid, QString message);
void onAllLoadsFinished();