show hand context menu when hand counter is rightclicked

This commit is contained in:
Max-Wilhelm Bruker 2011-10-16 11:51:06 +02:00
parent 683c57bb88
commit 3211801e39
5 changed files with 26 additions and 3 deletions

View file

@ -86,13 +86,21 @@ void CardZone::mouseDoubleClickEvent(QGraphicsSceneMouseEvent */*event*/)
doubleClickAction->trigger();
}
bool CardZone::showContextMenu(const QPoint &screenPos)
{
if (menu) {
menu->exec(screenPos);
return true;
}
return false;
}
void CardZone::mousePressEvent(QGraphicsSceneMouseEvent *event)
{
if (event->button() == Qt::RightButton) {
if (menu) {
menu->exec(event->screenPos());
if (showContextMenu(event->screenPos()))
event->accept();
} else
else
event->ignore();
} else
event->ignore();

View file

@ -32,6 +32,7 @@ signals:
void cardCountChanged();
public slots:
void moveAllToZone();
bool showContextMenu(const QPoint &screenPos);
public:
enum { Type = typeZone };
int type() const { return Type; }

View file

@ -1,6 +1,7 @@
#include <QPainter>
#include <QSvgRenderer>
#include <QPixmapCache>
#include <QGraphicsSceneMouseEvent>
#include "handcounter.h"
#include "cardzone.h"
@ -48,3 +49,11 @@ void HandCounter::paint(QPainter *painter, const QStyleOptionGraphicsItem * /*op
paintNumberEllipse(number, 24, Qt::white, -1, -1, painter);
}
void HandCounter::mousePressEvent(QGraphicsSceneMouseEvent *event)
{
if (event->button() == Qt::RightButton) {
emit showContextMenu(event->screenPos());
event->accept();
}
}

View file

@ -11,8 +11,12 @@ class HandCounter : public AbstractGraphicsItem {
Q_OBJECT
private:
int number;
protected:
void mousePressEvent(QGraphicsSceneMouseEvent *event);
public slots:
void updateNumber();
signals:
void showContextMenu(const QPoint &screenPos);
public:
enum { Type = typeOther };
int type() const { return Type; }

View file

@ -90,6 +90,7 @@ Player::Player(ServerInfo_User *info, int _id, bool _local, TabGame *_parent)
hand = new HandZone(this, _local || (_parent->getSpectator() && _parent->getSpectatorsSeeEverything()), (int) table->boundingRect().height(), this);
connect(hand, SIGNAL(cardCountChanged()), handCounter, SLOT(updateNumber()));
connect(handCounter, SIGNAL(showContextMenu(const QPoint &)), hand, SLOT(showContextMenu(const QPoint &)));
updateBoundingRect();