Enable the 'Remove Event' callback.

Based on the code in the Gtk branch.

[Dirk Hohndel: whitespace cleanup and changed the message text]

Signed-off-by: Tomaz Canabrava <tcanabrava@kde.org>
Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
This commit is contained in:
Tomaz Canabrava 2013-11-19 23:37:45 -02:00 committed by Dirk Hohndel
parent 4c2e6c4658
commit e8d1f14c90
2 changed files with 26 additions and 9 deletions

View file

@ -17,6 +17,7 @@
#include <QMouseEvent>
#include <QToolBar>
#include <qtextdocument.h>
#include <QMessageBox>
#include <limits>
#include "../color.h"
@ -137,7 +138,7 @@ void ProfileGraphicsView::contextMenuEvent(QContextMenuEvent* event)
continue;
QAction *action = new QAction(&m);
action->setText("Remove Event");
action->setData(event->globalPos()); // so we know what to remove.
action->setData(QVariant::fromValue<void*>(item)); // so we know what to remove.
connect(action, SIGNAL(triggered(bool)), this, SLOT(removeEvent()));
m.addAction(action);
action = new QAction(&m);
@ -181,12 +182,28 @@ void ProfileGraphicsView::hideEvents()
void ProfileGraphicsView::removeEvent()
{
QAction *action = qobject_cast<QAction*>(sender());
QPoint globalPos = action->data().toPoint();
QPoint viewPos = mapFromGlobal(globalPos);
QPointF scenePos = mapToScene(viewPos);
qDebug() << "Remove Event";
EventItem *item = static_cast<EventItem*>(action->data().value<void*>());
struct event *event = item->ev;
if (QMessageBox::question(mainWindow(),
tr("Remove the selected event?"),
tr("%1 @ %2:%3").arg(event->name)
.arg(event->time.seconds / 60)
.arg(event->time.seconds % 60, 2, 10, QChar('0')),
QMessageBox::Ok | QMessageBox::Cancel) == QMessageBox::Ok){
struct event **ep = &current_dc->events;
while (ep && *ep != event)
ep = &(*ep)->next;
if (ep) {
*ep = event->next;
free(event);
}
mark_divelist_changed(TRUE);
}
plot(current_dive, TRUE);
}
void ProfileGraphicsView::mouseMoveEvent(QMouseEvent* event)
{
if (!toolTip)
@ -903,7 +920,7 @@ void ProfileGraphicsView::plot_one_event(struct event *ev)
int x = SCALEXGC(ev->time.seconds);
int y = SCALEYGC(entry->depth);
EventItem *item = new EventItem(0, isGrayscale);
EventItem *item = new EventItem(ev, 0, isGrayscale);
item->setPos(x, y);
scene()->addItem(item);
@ -1536,9 +1553,8 @@ QColor EventItem::getColor(const color_indice_t i)
return profile_color[i].at((isGrayscale) ? 1 : 0);
}
EventItem::EventItem(QGraphicsItem* parent, bool grayscale): QGraphicsPolygonItem(parent)
EventItem::EventItem(struct event *ev, QGraphicsItem* parent, bool grayscale): QGraphicsPolygonItem(parent), isGrayscale(grayscale), ev(ev)
{
isGrayscale = grayscale;
setFlag(ItemIgnoresTransformations);
setFlag(ItemIsFocusable);
setAcceptHoverEvents(true);

View file

@ -100,7 +100,8 @@ private:
class EventItem : public QGraphicsPolygonItem
{
public:
explicit EventItem(QGraphicsItem* parent = 0, bool grayscale = FALSE);
explicit EventItem(struct event *ev, QGraphicsItem* parent = 0, bool grayscale = FALSE);
struct event* ev;
private:
ToolTipItem *controller;