From fceb3691d9b4ccccf1ebb76f83fb7d58067251d7 Mon Sep 17 00:00:00 2001 From: Berthold Stoeger Date: Sat, 19 Dec 2020 12:32:32 +0100 Subject: profile: move picture removal from DivePictureItem to ProfileWidget2 On clicking the DivePictureItem "trash" icon, the item would delete the picture it represents in the currently displayed dive. This needed an access to the global "displayed_dive" variable, which we want to get rid of to make the profile more flexible. For example, we want to render the profile for printing without messing with global state. One solution would be to save the dive with every DivePictureItem. This commit follows a more Qt-ish strategy by handling this via signals: The close button emits a signal that is recast by the DivePictureItem and ultimately handled by the ProfileWidget2, which knows which dive it represents. Signed-off-by: Berthold Stoeger --- profile-widget/divepixmapitem.cpp | 18 +++--------------- 1 file changed, 3 insertions(+), 15 deletions(-) (limited to 'profile-widget/divepixmapitem.cpp') diff --git a/profile-widget/divepixmapitem.cpp b/profile-widget/divepixmapitem.cpp index 0e46519b6..91b7ac469 100644 --- a/profile-widget/divepixmapitem.cpp +++ b/profile-widget/divepixmapitem.cpp @@ -5,13 +5,9 @@ #include "core/qthelper.h" #include "core/settings/qPrefDisplay.h" #include "core/subsurface-qt/divelistnotifier.h" -#ifndef SUBSURFACE_MOBILE -#include "core/dive.h" // for displayed_dive -#include "commands/command.h" -#endif #include -#include +#include #include #include @@ -28,7 +24,7 @@ CloseButtonItem::CloseButtonItem(QGraphicsItem *parent): DivePixmapItem(parent) void CloseButtonItem::mousePressEvent(QGraphicsSceneMouseEvent *) { - qgraphicsitem_cast(parentItem())->removePicture(); + emit clicked(); } DivePictureItem::DivePictureItem(QGraphicsItem *parent): DivePixmapItem(parent), @@ -41,6 +37,7 @@ DivePictureItem::DivePictureItem(QGraphicsItem *parent): DivePixmapItem(parent), setAcceptHoverEvents(true); setScale(0.2); connect(&diveListNotifier, &DiveListNotifier::settingsChanged, this, &DivePictureItem::settingsChanged); + connect(button, &CloseButtonItem::clicked, [this] () { emit removePicture(fileUrl); }); canvas->setPen(Qt::NoPen); canvas->setBrush(QColor(Qt::white)); @@ -108,12 +105,3 @@ void DivePictureItem::mousePressEvent(QGraphicsSceneMouseEvent *event) if (event->button() == Qt::LeftButton) QDesktopServices::openUrl(QUrl::fromLocalFile(localFilePath(fileUrl))); } - -void DivePictureItem::removePicture() -{ -#ifndef SUBSURFACE_MOBILE - struct dive *d = get_dive_by_uniq_id(displayed_dive.id); - if (d) - Command::removePictures({ { d, { fileUrl.toStdString() } } }); -#endif -} -- cgit v1.2.3-70-g09d2