mirror of
https://github.com/subsurface/subsurface.git
synced 2025-02-19 22:16:15 +00:00
profile: automatically enter edit mode
The edit mode was hidden in a context-menu. With fine-grained undo there seems to be no need to explicitly exit edit mode. Therefore, always switch to edit mode when displaying a manually added dive. Signed-off-by: Berthold Stoeger <bstoeger@mail.tuwien.ac.at>
This commit is contained in:
parent
63664061eb
commit
dea58bd67c
4 changed files with 13 additions and 16 deletions
|
@ -119,7 +119,6 @@ ProfileWidget::ProfileWidget() : originalDive(nullptr), placingCommand(false)
|
|||
|
||||
connect(&diveListNotifier, &DiveListNotifier::divesChanged, this, &ProfileWidget::divesChanged);
|
||||
connect(&diveListNotifier, &DiveListNotifier::settingsChanged, view.get(), &ProfileWidget2::settingsChanged);
|
||||
connect(view.get(), &ProfileWidget2::editCurrentDive, this, &ProfileWidget::editDive);
|
||||
connect(view.get(), &ProfileWidget2::stopAdded, this, &ProfileWidget::stopAdded);
|
||||
connect(view.get(), &ProfileWidget2::stopRemoved, this, &ProfileWidget::stopRemoved);
|
||||
connect(view.get(), &ProfileWidget2::stopMoved, this, &ProfileWidget::stopMoved);
|
||||
|
@ -185,11 +184,21 @@ void ProfileWidget::setDive(const struct dive *d)
|
|||
void ProfileWidget::plotCurrentDive()
|
||||
{
|
||||
// Exit edit mode if the dive changed
|
||||
if (editedDive && originalDive != current_dive)
|
||||
if (editedDive && (originalDive != current_dive || editedDc != dc_number))
|
||||
exitEditMode();
|
||||
|
||||
// If this is a manually added dive and we are not in the planner
|
||||
// or already editing the dive, switch to edit mode.
|
||||
if (current_dive && !editedDive &&
|
||||
DivePlannerPointsModel::instance()->currentMode() == DivePlannerPointsModel::NOTHING) {
|
||||
struct divecomputer *dc = get_dive_dc(current_dive, dc_number);
|
||||
if (dc && same_string(dc->model, "manually added dive") && dc->samples)
|
||||
editDive();
|
||||
}
|
||||
|
||||
setEnabledToolbar(current_dive != nullptr);
|
||||
if (editedDive) {
|
||||
setDive(current_dive);
|
||||
view->plotDive(editedDive.get(), editedDc);
|
||||
} else if (current_dive) {
|
||||
setDive(current_dive);
|
||||
|
@ -244,21 +253,13 @@ void ProfileWidget::unsetProfTissues()
|
|||
|
||||
void ProfileWidget::editDive()
|
||||
{
|
||||
// We only allow editing of the profile for manually added dives
|
||||
// and when no other editing is in progress.
|
||||
if (!current_dive ||
|
||||
(!same_string(current_dive->dc.model, "manually added dive") && current_dive->dc.samples) ||
|
||||
(DivePlannerPointsModel::instance()->currentMode() != DivePlannerPointsModel::NOTHING) ||
|
||||
editedDive)
|
||||
return;
|
||||
|
||||
editedDive.reset(alloc_dive());
|
||||
editedDc = dc_number;
|
||||
copy_dive(current_dive, editedDive.get()); // Work on a copy of the dive
|
||||
originalDive = current_dive;
|
||||
DivePlannerPointsModel::instance()->setPlanMode(DivePlannerPointsModel::ADD);
|
||||
DivePlannerPointsModel::instance()->loadFromDive(editedDive.get());
|
||||
view->setEditState(editedDive.get(), 0);
|
||||
view->setEditState(editedDive.get(), editedDc);
|
||||
}
|
||||
|
||||
void ProfileWidget::exitEditMode()
|
||||
|
|
|
@ -48,7 +48,7 @@ private:
|
|||
void editDive();
|
||||
void exitEditMode();
|
||||
std::unique_ptr<dive, DiveDeleter> editedDive;
|
||||
int editedDc;
|
||||
unsigned int editedDc;
|
||||
dive *originalDive;
|
||||
bool placingCommand;
|
||||
};
|
||||
|
|
|
@ -589,9 +589,6 @@ void ProfileWidget2::contextMenuEvent(QContextMenuEvent *event)
|
|||
changeMode->addAction(gettextFromC::tr(divemode_text_ui[PSCR]),
|
||||
[this, seconds](){ addDivemodeSwitch(seconds, PSCR); });
|
||||
|
||||
if (same_string(get_dive_dc_const(d, dc)->model, "manually added dive") || !get_dive_dc_const(d, dc)->samples)
|
||||
m.addAction(tr("Edit the profile"), this, &ProfileWidget2::editCurrentDive);
|
||||
|
||||
if (DiveEventItem *item = dynamic_cast<DiveEventItem *>(sceneItem)) {
|
||||
m.addAction(tr("Remove event"), [this,item] { removeEvent(item); });
|
||||
m.addAction(tr("Hide similar events"), [this, item] { hideEvents(item); });
|
||||
|
|
|
@ -65,7 +65,6 @@ public:
|
|||
State currentState;
|
||||
|
||||
signals:
|
||||
void editCurrentDive();
|
||||
void stopAdded(); // only emitted in edit mode
|
||||
void stopRemoved(int count); // only emitted in edit mode
|
||||
void stopMoved(int count); // only emitted in edit mode
|
||||
|
|
Loading…
Add table
Reference in a new issue