mirror of
https://github.com/subsurface/subsurface.git
synced 2025-02-19 22:16:15 +00:00
profile: port basic dive editing to QtQuick
This needed a bit of refactoring of the ChartItem code, because we have to be signaled on drag start. Currently only one handle can be selected at a time. This was (implicitly) the case anyway, as far as I can tell. Signed-off-by: Berthold Stoeger <bstoeger@mail.tuwien.ac.at>
This commit is contained in:
parent
ea0085fef6
commit
bece0a0652
21 changed files with 597 additions and 477 deletions
|
@ -17,6 +17,7 @@
|
|||
#include <QMimeData>
|
||||
#include <QQmlEngine>
|
||||
#include <QQuickWidget>
|
||||
#include <QSignalBlocker>
|
||||
#include <QStackedWidget>
|
||||
#include <QToolBar>
|
||||
|
||||
|
@ -201,15 +202,6 @@ ProfileWidget::ProfileWidget() : d(nullptr), dc(0), placingCommand(false)
|
|||
ui.profTissues->setChecked(qPrefTechnicalDetails::percentagegraph());
|
||||
ui.profScaled->setChecked(qPrefTechnicalDetails::zoomed_plot());
|
||||
ui.profInfobox->setChecked(qPrefTechnicalDetails::infobox());
|
||||
|
||||
//connect(&diveListNotifier, &DiveListNotifier::settingsChanged, view.get(), &ProfileWidget2::settingsChanged);
|
||||
//connect(&diveListNotifier, &DiveListNotifier::cylinderAdded, this, &ProfileWidget::cylindersChanged);
|
||||
//connect(&diveListNotifier, &DiveListNotifier::cylinderRemoved, this, &ProfileWidget::cylindersChanged);
|
||||
//connect(&diveListNotifier, &DiveListNotifier::cylinderEdited, this, &ProfileWidget::cylindersChanged);
|
||||
//connect(view.get(), &ProfileWidget2::stopAdded, this, &ProfileWidget::stopAdded);
|
||||
//connect(view.get(), &ProfileWidget2::stopRemoved, this, &ProfileWidget::stopRemoved);
|
||||
//connect(view.get(), &ProfileWidget2::stopMoved, this, &ProfileWidget::stopMoved);
|
||||
//connect(view.get(), &ProfileWidget2::stopEdited, this, &ProfileWidget::stopEdited);
|
||||
}
|
||||
|
||||
ProfileWidget::~ProfileWidget()
|
||||
|
@ -229,6 +221,16 @@ ProfileView *ProfileWidget::getView()
|
|||
viewWidget->engine()->setObjectOwnership(view, QQmlEngine::CppOwnership);
|
||||
view->setParent(this);
|
||||
view->setVisible(isVisible()); // Synchronize visibility of widget and QtQuick-view.
|
||||
|
||||
if (!view->initialized) {
|
||||
view->setPlannerModel(*DivePlannerPointsModel::instance());
|
||||
|
||||
//connect(&diveListNotifier, &DiveListNotifier::settingsChanged, view.get(), &ProfileWidget2::settingsChanged);
|
||||
connect(view, &ProfileView::stopAdded, this, &ProfileWidget::stopAdded);
|
||||
connect(view, &ProfileView::stopRemoved, this, &ProfileWidget::stopRemoved);
|
||||
connect(view, &ProfileView::stopMoved, this, &ProfileWidget::stopMoved);
|
||||
view->initialized = true;
|
||||
}
|
||||
}
|
||||
return view;
|
||||
}
|
||||
|
@ -303,7 +305,7 @@ void ProfileWidget::plotDive(dive *dIn, int dcIn)
|
|||
auto view = getView();
|
||||
setEnabledToolbar(d != nullptr);
|
||||
if (editedDive) {
|
||||
view->plotDive(editedDive.get(), dc);
|
||||
view->plotDive(editedDive.get(), dc, ProfileView::RenderFlags::EditMode);
|
||||
setDive(editedDive.get(), dc);
|
||||
} else if (d) {
|
||||
//view->setProfileState(d, dc);
|
||||
|
@ -404,9 +406,14 @@ void ProfileWidget::editDive()
|
|||
{
|
||||
editedDive = std::make_unique<dive>();
|
||||
copy_dive(d, editedDive.get()); // Work on a copy of the dive
|
||||
|
||||
// We don't want the DivePlannerPointsModel send signals while reloading,
|
||||
// because that would reload the just deleted dive. And we will be reloading
|
||||
// the dive anyway. Control-flow here is truly horrible.
|
||||
QSignalBlocker blocker(DivePlannerPointsModel::instance());
|
||||
DivePlannerPointsModel::instance()->setPlanMode(DivePlannerPointsModel::EDIT);
|
||||
DivePlannerPointsModel::instance()->loadFromDive(editedDive.get(), dc);
|
||||
//view->setEditState(editedDive.get(), dc);
|
||||
//view->setEditState(editedDive.get(), editedDc);
|
||||
}
|
||||
|
||||
void ProfileWidget::exitEditMode()
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue