Skip to content
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
3 changes: 2 additions & 1 deletion src/application/LayoutCanvasRendering.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -85,7 +85,8 @@ bool LayoutCanvasCamera::handleKeyRelease(QKeyEvent* event) {
}

bool LayoutCanvasCamera::beginPan(QMouseEvent* event) {
if (event->button() != Qt::MiddleButton && !(event->button() == Qt::LeftButton && spacePressed_)) {
const auto primaryPan = event->button() == Qt::LeftButton && (spacePressed_ || primaryButtonPanEnabled_);
if (event->button() != Qt::MiddleButton && !primaryPan) {
return false;
}

Expand Down
5 changes: 5 additions & 0 deletions src/application/LayoutCanvasRendering.h
Original file line number Diff line number Diff line change
Expand Up @@ -76,6 +76,10 @@ class LayoutCanvasCamera {
panOffset_ = panOffset;
}

void setPrimaryButtonPanEnabled(bool enabled) noexcept {
primaryButtonPanEnabled_ = enabled;
}

bool panning() const noexcept {
return panning_;
}
Expand All @@ -87,6 +91,7 @@ class LayoutCanvasCamera {
Qt::MouseButton panButton_{Qt::NoButton};
bool panning_{false};
bool spacePressed_{false};
bool primaryButtonPanEnabled_{false};
};

void includeLayoutCanvasPoint(LayoutCanvasBounds& bounds, const safecrowd::domain::Point2D& point);
Expand Down
63 changes: 48 additions & 15 deletions src/application/MainWindow.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -152,6 +152,11 @@ void MainWindow::saveCurrentProject() {
QMessageBox::warning(this, "Save Project", errorMessage);
return;
}
} else if (auto* authoringWidget = dynamic_cast<ScenarioAuthoringWidget*>(centralWidget())) {
if (!ProjectPersistence::saveScenarioAuthoringState(currentProject_, authoringWidget->currentState(), &errorMessage)) {
QMessageBox::warning(this, "Save Project", errorMessage);
return;
}
}

currentProject_ = ProjectPersistence::loadProject(currentProject_.folderPath);
Expand Down Expand Up @@ -197,6 +202,13 @@ void MainWindow::showLayoutReview(const ProjectMetadata& metadata, safecrowd::do
showProjectNavigator();
},
[this](const safecrowd::domain::ImportResult& approvedImportResult) {
if (!currentProject_.isBuiltInDemo()) {
QString errorMessage;
if (!ProjectPersistence::saveProjectReview(currentProject_, approvedImportResult, &errorMessage)) {
QMessageBox::warning(this, "Approve Layout", errorMessage);
return;
}
}
lastApprovedImportResult_ = approvedImportResult;
showScenarioAuthoring(approvedImportResult);
},
Expand All @@ -209,26 +221,47 @@ void MainWindow::showScenarioAuthoring(const safecrowd::domain::ImportResult& im
return;
}

ScenarioAuthoringWidget::InitialState initialState;
const bool hasSavedScenarioState = ProjectPersistence::loadScenarioAuthoringState(
currentProject_,
*importResult.layout,
&initialState);
lastApprovedImportResult_ = importResult;

auto saveHandler = [this]() {
saveCurrentProject();
};
auto openProjectHandler = [this]() {
hasCurrentProject_ = false;
currentProject_ = {};
showProjectNavigator();
};
auto backToLayoutReviewHandler = [this]() {
if (lastApprovedImportResult_.has_value()) {
showLayoutReview(currentProject_, *lastApprovedImportResult_);
} else {
showLayoutReview(currentProject_);
}
};

if (hasSavedScenarioState) {
setCentralWidget(new ScenarioAuthoringWidget(
currentProject_.name,
*importResult.layout,
std::move(initialState),
saveHandler,
openProjectHandler,
backToLayoutReviewHandler,
this));
return;
}

setCentralWidget(new ScenarioAuthoringWidget(
currentProject_.name,
*importResult.layout,
[this]() {
saveCurrentProject();
},
[this]() {
hasCurrentProject_ = false;
currentProject_ = {};
showProjectNavigator();
},
[this]() {
if (lastApprovedImportResult_.has_value()) {
showLayoutReview(currentProject_, *lastApprovedImportResult_);
} else {
showLayoutReview(currentProject_);
}
},
saveHandler,
openProjectHandler,
backToLayoutReviewHandler,
this));
}

Expand Down
Loading
Loading