From 16631712c728f42d7f38e651a67df8272dee60f9 Mon Sep 17 00:00:00 2001 From: Max-Wilhelm Bruker Date: Fri, 3 Apr 2009 14:50:06 +0200 Subject: [PATCH] Drag from grave/rfg implemented --- cockatrice/src/gravezone.cpp | 34 ++++++++++++++++++++++++++++++++++ cockatrice/src/gravezone.h | 4 ++++ cockatrice/src/rfgzone.cpp | 34 ++++++++++++++++++++++++++++++++++ cockatrice/src/rfgzone.h | 4 ++++ 4 files changed, 76 insertions(+) diff --git a/cockatrice/src/gravezone.cpp b/cockatrice/src/gravezone.cpp index 8e9d3d87..0107cda3 100644 --- a/cockatrice/src/gravezone.cpp +++ b/cockatrice/src/gravezone.cpp @@ -2,6 +2,7 @@ #include "gravezone.h" #include "player.h" #include "client.h" +#include "carddragitem.h" #include "zoneviewzone.h" GraveZone::GraveZone(Player *_p, QGraphicsItem *parent) @@ -56,3 +57,36 @@ void GraveZone::reorganizeCards() { update(boundingRect()); } + +void GraveZone::mousePressEvent(QGraphicsSceneMouseEvent *event) +{ + CardZone::mousePressEvent(event); + if (event->isAccepted()) + return; + + if (event->button() == Qt::LeftButton) { + setCursor(Qt::ClosedHandCursor); + event->accept(); + } else + event->ignore(); +} + +void GraveZone::mouseMoveEvent(QGraphicsSceneMouseEvent *event) +{ + if ((event->screenPos() - event->buttonDownScreenPos(Qt::LeftButton)).manhattanLength() < QApplication::startDragDistance()) + return; + + if (cards->empty()) + return; + + CardItem *card = cards->at(0); + CardDragItem *drag = card->createDragItem(this, card->getId(), event->pos(), event->scenePos()); + drag->grabMouse(); + setCursor(Qt::OpenHandCursor); +} + +void GraveZone::mouseReleaseEvent(QGraphicsSceneMouseEvent *event) +{ + Q_UNUSED(event); + setCursor(Qt::OpenHandCursor); +} diff --git a/cockatrice/src/gravezone.h b/cockatrice/src/gravezone.h index 99f8ddd5..81cfa58f 100644 --- a/cockatrice/src/gravezone.h +++ b/cockatrice/src/gravezone.h @@ -12,6 +12,10 @@ public: void addCard(CardItem *card, bool reorganize = true, int x = 0, int y = -1); void reorganizeCards(); void handleDropEvent(int cardId, CardZone *startZone, const QPoint &dropPoint); +protected: + void mousePressEvent(QGraphicsSceneMouseEvent *event); + void mouseMoveEvent(QGraphicsSceneMouseEvent *event); + void mouseReleaseEvent(QGraphicsSceneMouseEvent *event); }; #endif diff --git a/cockatrice/src/rfgzone.cpp b/cockatrice/src/rfgzone.cpp index fc9670fe..11edd4d7 100644 --- a/cockatrice/src/rfgzone.cpp +++ b/cockatrice/src/rfgzone.cpp @@ -2,6 +2,7 @@ #include "rfgzone.h" #include "player.h" #include "client.h" +#include "carddragitem.h" #include "zoneviewzone.h" RfgZone::RfgZone(Player *_p, QGraphicsItem *parent) @@ -56,3 +57,36 @@ void RfgZone::reorganizeCards() { update(boundingRect()); } + +void RfgZone::mousePressEvent(QGraphicsSceneMouseEvent *event) +{ + CardZone::mousePressEvent(event); + if (event->isAccepted()) + return; + + if (event->button() == Qt::LeftButton) { + setCursor(Qt::ClosedHandCursor); + event->accept(); + } else + event->ignore(); +} + +void RfgZone::mouseMoveEvent(QGraphicsSceneMouseEvent *event) +{ + if ((event->screenPos() - event->buttonDownScreenPos(Qt::LeftButton)).manhattanLength() < QApplication::startDragDistance()) + return; + + if (cards->empty()) + return; + + CardItem *card = cards->at(0); + CardDragItem *drag = card->createDragItem(this, card->getId(), event->pos(), event->scenePos()); + drag->grabMouse(); + setCursor(Qt::OpenHandCursor); +} + +void RfgZone::mouseReleaseEvent(QGraphicsSceneMouseEvent *event) +{ + Q_UNUSED(event); + setCursor(Qt::OpenHandCursor); +} diff --git a/cockatrice/src/rfgzone.h b/cockatrice/src/rfgzone.h index 0b6e7f41..be07194f 100644 --- a/cockatrice/src/rfgzone.h +++ b/cockatrice/src/rfgzone.h @@ -12,6 +12,10 @@ public: void addCard(CardItem *card, bool reorganize = true, int x = 0, int y = -1); void reorganizeCards(); void handleDropEvent(int cardId, CardZone *startZone, const QPoint &dropPoint); +protected: + void mousePressEvent(QGraphicsSceneMouseEvent *event); + void mouseMoveEvent(QGraphicsSceneMouseEvent *event); + void mouseReleaseEvent(QGraphicsSceneMouseEvent *event); }; #endif