mirror of
https://github.com/subsurface/subsurface.git
synced 2025-02-19 22:16:15 +00:00
profile: move checking for DiveTextItem into its own function
When creating the context menu, a special menu is created for the dive computer name. This was checked in a loop, that set a flag and exited early. This can all be simplified by moving the loop into its own function. No more flag, less indentation. Overall better. Signed-off-by: Berthold Stoeger <bstoeger@mail.tuwien.ac.at>
This commit is contained in:
parent
78f4d7b2b9
commit
c34f0b88a2
1 changed files with 23 additions and 23 deletions
|
@ -1342,6 +1342,16 @@ static QString printCylinderDescription(int i, const cylinder_t *cylinder)
|
||||||
return label;
|
return label;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static bool isDiveTextItem(const QGraphicsItem *item, const DiveTextItem *textItem)
|
||||||
|
{
|
||||||
|
while (item) {
|
||||||
|
if (item == textItem)
|
||||||
|
return true;
|
||||||
|
item = item->parentItem();
|
||||||
|
}
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
void ProfileWidget2::contextMenuEvent(QContextMenuEvent *event)
|
void ProfileWidget2::contextMenuEvent(QContextMenuEvent *event)
|
||||||
{
|
{
|
||||||
if (currentState == ADD || currentState == PLAN) {
|
if (currentState == ADD || currentState == PLAN) {
|
||||||
|
@ -1349,36 +1359,26 @@ void ProfileWidget2::contextMenuEvent(QContextMenuEvent *event)
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
QMenu m;
|
QMenu m;
|
||||||
bool isDCName = false;
|
|
||||||
if (!d)
|
if (!d)
|
||||||
return;
|
return;
|
||||||
// figure out if we are ontop of the dive computer name in the profile
|
// figure out if we are ontop of the dive computer name in the profile
|
||||||
QGraphicsItem *sceneItem = itemAt(mapFromGlobal(event->globalPos()));
|
QGraphicsItem *sceneItem = itemAt(mapFromGlobal(event->globalPos()));
|
||||||
if (sceneItem) {
|
if (isDiveTextItem(sceneItem, diveComputerText)) {
|
||||||
QGraphicsItem *parentItem = sceneItem;
|
if (dc == 0 && number_of_computers(d) == 1)
|
||||||
while (parentItem) {
|
// nothing to do, can't delete or reorder
|
||||||
if (parentItem == diveComputerText) {
|
|
||||||
isDCName = true;
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
parentItem = parentItem->parentItem();
|
|
||||||
}
|
|
||||||
if (isDCName) {
|
|
||||||
if (dc == 0 && number_of_computers(d) == 1)
|
|
||||||
// nothing to do, can't delete or reorder
|
|
||||||
return;
|
|
||||||
// create menu to show when right clicking on dive computer name
|
|
||||||
if (dc > 0)
|
|
||||||
m.addAction(tr("Make first dive computer"), this, &ProfileWidget2::makeFirstDC);
|
|
||||||
if (number_of_computers(d) > 1) {
|
|
||||||
m.addAction(tr("Delete this dive computer"), this, &ProfileWidget2::deleteCurrentDC);
|
|
||||||
m.addAction(tr("Split this dive computer into own dive"), this, &ProfileWidget2::splitCurrentDC);
|
|
||||||
}
|
|
||||||
m.exec(event->globalPos());
|
|
||||||
// don't show the regular profile context menu
|
|
||||||
return;
|
return;
|
||||||
|
// create menu to show when right clicking on dive computer name
|
||||||
|
if (dc > 0)
|
||||||
|
m.addAction(tr("Make first dive computer"), this, &ProfileWidget2::makeFirstDC);
|
||||||
|
if (number_of_computers(d) > 1) {
|
||||||
|
m.addAction(tr("Delete this dive computer"), this, &ProfileWidget2::deleteCurrentDC);
|
||||||
|
m.addAction(tr("Split this dive computer into own dive"), this, &ProfileWidget2::splitCurrentDC);
|
||||||
}
|
}
|
||||||
|
m.exec(event->globalPos());
|
||||||
|
// don't show the regular profile context menu
|
||||||
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
// create the profile context menu
|
// create the profile context menu
|
||||||
QPointF scenePos = mapToScene(mapFromGlobal(event->globalPos()));
|
QPointF scenePos = mapToScene(mapFromGlobal(event->globalPos()));
|
||||||
qreal sec_val = timeAxis->valueAt(scenePos);
|
qreal sec_val = timeAxis->valueAt(scenePos);
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue