diff --git a/qt-ui/profile/divepixmapitem.cpp b/qt-ui/profile/divepixmapitem.cpp index 372cbd169..3fb06adb9 100644 --- a/qt-ui/profile/divepixmapitem.cpp +++ b/qt-ui/profile/divepixmapitem.cpp @@ -45,7 +45,7 @@ void CloseButtonItem::show() DiveButtonItem::show(); } -DivePictureItem::DivePictureItem(int row, QObject *parent): DivePixmapItem(parent) +DivePictureItem::DivePictureItem(QObject *parent): DivePixmapItem(parent) { setFlag(ItemIgnoresTransformations); #if QT_VERSION < QT_VERSION_CHECK(5, 0, 0) @@ -53,7 +53,6 @@ DivePictureItem::DivePictureItem(int row, QObject *parent): DivePixmapItem(paren #else setAcceptHoverEvents(true); #endif - rowOnModel = row; setScale(0.2); connect(PreferencesDialog::instance(), SIGNAL(settingsChanged()), this, SLOT(settingsChanged())); setVisible(prefs.show_pictures_in_profile); @@ -100,6 +99,11 @@ void DivePictureItem::hoverEnterEvent(QGraphicsSceneHoverEvent *event) connect(button, SIGNAL(clicked()), this, SLOT(removePicture())); } +void DivePictureItem::setFileUrl(const QString &s) +{ + fileUrl = s; +} + void DivePictureItem::hoverLeaveEvent(QGraphicsSceneHoverEvent *event) { Animations::scaleTo(this, 0.2); @@ -110,15 +114,7 @@ void DivePictureItem::hoverLeaveEvent(QGraphicsSceneHoverEvent *event) void DivePictureItem::mousePressEvent(QGraphicsSceneMouseEvent *event) { - QGraphicsView *view = scene()->views().first(); - QList items = view->items(view->mapFromScene(event->scenePos())); - Q_FOREACH(QGraphicsItem *item, items){ - if (dynamic_cast(item)){ - return; - } - } - QString filePath = DivePictureModel::instance()->index(rowOnModel,0).data(Qt::ToolTipRole).toString(); - QDesktopServices::openUrl(QUrl::fromLocalFile(filePath)); + QDesktopServices::openUrl(QUrl::fromLocalFile(fileUrl)); } void DivePictureItem::removePicture() diff --git a/qt-ui/profile/divepixmapitem.h b/qt-ui/profile/divepixmapitem.h index b5bed37ce..d39f26db6 100644 --- a/qt-ui/profile/divepixmapitem.h +++ b/qt-ui/profile/divepixmapitem.h @@ -18,17 +18,18 @@ class DivePictureItem : public DivePixmapItem { Q_OBJECT Q_PROPERTY(qreal scale WRITE setScale READ scale) public: - DivePictureItem(int row, QObject *parent = 0); + DivePictureItem(QObject *parent = 0); void setPixmap(const QPixmap& pix); public slots: void settingsChanged(); void removePicture(); + void setFileUrl(const QString& s); protected: void hoverEnterEvent(QGraphicsSceneHoverEvent *event); void hoverLeaveEvent(QGraphicsSceneHoverEvent *event); void mousePressEvent(QGraphicsSceneMouseEvent *event); private: - int rowOnModel; + QString fileUrl; }; class DiveButtonItem : public DivePixmapItem { diff --git a/qt-ui/profile/profilewidget2.cpp b/qt-ui/profile/profilewidget2.cpp index b601af36e..21f0cb4e4 100644 --- a/qt-ui/profile/profilewidget2.cpp +++ b/qt-ui/profile/profilewidget2.cpp @@ -1366,8 +1366,9 @@ void ProfileWidget2::plotPictures() // information area. if (!pic->offset.seconds) continue; - DivePictureItem *item = new DivePictureItem(i); + DivePictureItem *item = new DivePictureItem(); item->setPixmap(m->index(i,0).data(Qt::DecorationRole).value()); + item->setFileUrl(m->index(i,0).data(Qt::DisplayPropertyRole).toString()); // let's put the picture at the correct time, but at a fixed "depth" on the profile // not sure this is ideal, but it seems to look right. x = timeAxis->posAtValue(pic->offset.seconds);