From 62d8f5a039fd40c144c21861032ecb9fe29f2f8b Mon Sep 17 00:00:00 2001 From: Zach H Date: Tue, 25 Apr 2017 14:05:25 -0400 Subject: [PATCH] change cards from sb<->mb with double-click (#2606) --- cockatrice/src/deckview.cpp | 34 ++++++++++++++++++++++++++++++++++ cockatrice/src/deckview.h | 3 ++- cockatrice/src/tab_game.cpp | 2 +- 3 files changed, 37 insertions(+), 2 deletions(-) diff --git a/cockatrice/src/deckview.cpp b/cockatrice/src/deckview.cpp index 5b68a687..066ac706 100644 --- a/cockatrice/src/deckview.cpp +++ b/cockatrice/src/deckview.cpp @@ -1,5 +1,6 @@ #include #include +#include #include #include "deckview.h" #include "decklist.h" @@ -116,6 +117,39 @@ void DeckViewCard::mouseMoveEvent(QGraphicsSceneMouseEvent *event) setCursor(Qt::OpenHandCursor); } +void DeckView::mouseDoubleClickEvent(QMouseEvent *event) +{ + if (static_cast(scene())->getLocked()) + return; + + if (event->button() == Qt::LeftButton) + { + QList result; + QList sel = scene()->selectedItems(); + + for (int i = 0; i < sel.size(); i++) { + DeckViewCard *c = static_cast(sel.at(i)); + DeckViewCardContainer *zone = static_cast(c->parentItem()); + MoveCard_ToZone m; + m.set_card_name(c->getName().toStdString()); + m.set_start_zone(zone->getName().toStdString()); + + if (zone->getName() == "main") + m.set_target_zone("side"); + else if (zone->getName() == "side") + m.set_target_zone("main"); + else // Trying to move from another zone + m.set_target_zone(zone->getName().toStdString()); + + result.append(m); + } + + deckViewScene->applySideboardPlan(result); + deckViewScene->rearrangeItems(); + emit deckViewScene->sideboardPlanChanged(); + } +} + void DeckViewCard::hoverEnterEvent(QGraphicsSceneHoverEvent *event) { event->accept(); diff --git a/cockatrice/src/deckview.h b/cockatrice/src/deckview.h index 080f80c1..18a90fc6 100644 --- a/cockatrice/src/deckview.h +++ b/cockatrice/src/deckview.h @@ -83,7 +83,6 @@ private: qreal optimalAspectRatio; void clearContents(); void rebuildTree(); - void applySideboardPlan(const QList &plan); public: DeckViewScene(QObject *parent = 0); ~DeckViewScene(); @@ -95,6 +94,7 @@ public: void updateContents(); QList getSideboardPlan() const; void resetSideboardPlan(); + void applySideboardPlan(const QList &plan); }; class DeckView : public QGraphicsView { @@ -113,6 +113,7 @@ public: void setDeck(const DeckList &_deck); void setLocked(bool _locked) { deckViewScene->setLocked(_locked); } QList getSideboardPlan() const { return deckViewScene->getSideboardPlan(); } + void mouseDoubleClickEvent(QMouseEvent *event); void resetSideboardPlan(); }; diff --git a/cockatrice/src/tab_game.cpp b/cockatrice/src/tab_game.cpp index f7411559..dcc87cac 100644 --- a/cockatrice/src/tab_game.cpp +++ b/cockatrice/src/tab_game.cpp @@ -277,7 +277,7 @@ void DeckViewContainer::sideboardPlanChanged() Command_SetSideboardPlan cmd; const QList &newPlan = deckView->getSideboardPlan(); for (int i = 0; i < newPlan.size(); ++i) - cmd.add_move_list()->CopyFrom(newPlan[i]); + cmd.add_move_list()->CopyFrom(newPlan.at(i)); parentGame->sendGameCommand(cmd, playerId); }