#include <QFontMetrics>
int PuzzleItem::moveCount_ = 0;
+bool PuzzleItem::manuallyMovable_ = false;
PuzzleItem::PuzzleItem(QGraphicsItem *parent) :
QGraphicsPixmapItem(parent)
movable_ = true;
moveAnimation_ = new QPropertyAnimation(this, "pos", this);
pieceNumber_ = 0;
+ drawNumber_ = true;
}
QPointF PuzzleItem::correctPlace() const
void PuzzleItem::mousePressEvent(QGraphicsSceneMouseEvent *event)
{
- if(movable_) {
+ if(movable_ && manuallyMovable_) {
moveMeTo(GameView::instance()->emptyPlace());
QPointF tmp = currentPlace();
setCurrentPlace(GameView::instance()->emptyPlace());
moveCount_ = 0;
}
+void PuzzleItem::setManuallyMovable(const bool manuallyMovable)
+{
+ manuallyMovable_ = manuallyMovable;
+}
+
void PuzzleItem::paint(QPainter *painter, const QStyleOptionGraphicsItem *option, QWidget *widget)
{
QGraphicsPixmapItem::paint(painter, option, widget);
- painter->save();
+ if(drawNumber_) {
+ painter->save();
- QFont font = painter->font();
- QFontMetrics metrics(font);
- QRect numberRect(0, 0, metrics.height(), metrics.height());
+ QFont font = painter->font();
+ QFontMetrics metrics(font);
+ QRect numberRect(0, 0, metrics.height(), metrics.height());
- painter->setPen(Qt::NoPen);
+ painter->setPen(Qt::NoPen);
- painter->setBrush(QColor(255, 255, 255, 192));
- painter->drawRect(numberRect);
+ painter->setBrush(QColor(255, 255, 255, 192));
+ painter->drawRect(numberRect);
- painter->setPen(Qt::black);
+ painter->setPen(Qt::black);
- QTextOption textOption;
- textOption.setAlignment(Qt::AlignCenter);
+ QTextOption textOption;
+ textOption.setAlignment(Qt::AlignCenter);
- painter->drawText(numberRect, QString::number(pieceNumber_), textOption);
+ painter->drawText(numberRect, QString::number(pieceNumber_), textOption);
- painter->restore();
+ painter->restore();
+ }
}
int PuzzleItem::pieceNumber() const
{
pieceNumber_ = pieceNumber;
}
+
+void PuzzleItem::setDrawNumber(bool value)
+{
+ if(value != drawNumber_) {
+ drawNumber_ = value;
+ update();
+ }
+}
+
+bool PuzzleItem::drawNumber() const
+{
+ return drawNumber_;
+}
+
+void PuzzleItem::setMoveCount(int count)
+{
+ moveCount_ = count;
+}