X-Git-Url: http://git.maemo.org/git/?p=impuzzle;a=blobdiff_plain;f=src%2Fpuzzleitem.cpp;h=fd5ff88b9cfa48ed971d7cd590bda85c971e88d9;hp=500b47507ce0e408e62acdec3bc5c1543f98d558;hb=197445a53351096fc3d487eccfaaaa2fda10abc1;hpb=a27dea60eebff3d5bd0068f31e7d042e8c7d0048 diff --git a/src/puzzleitem.cpp b/src/puzzleitem.cpp index 500b475..fd5ff88 100644 --- a/src/puzzleitem.cpp +++ b/src/puzzleitem.cpp @@ -21,14 +21,20 @@ #include #include +#include +#include +#include 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 @@ -70,7 +76,7 @@ void PuzzleItem::moveMeTo(const QPointF &location) void PuzzleItem::mousePressEvent(QGraphicsSceneMouseEvent *event) { - if(movable_) { + if(movable_ && manuallyMovable_) { moveMeTo(GameView::instance()->emptyPlace()); QPointF tmp = currentPlace(); setCurrentPlace(GameView::instance()->emptyPlace()); @@ -109,3 +115,63 @@ void PuzzleItem::resetMoveCount() { 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); + + if(drawNumber_) { + painter->save(); + + QFont font = painter->font(); + QFontMetrics metrics(font); + QRect numberRect(0, 0, metrics.height(), metrics.height()); + + painter->setPen(Qt::NoPen); + + painter->setBrush(QColor(255, 255, 255, 192)); + painter->drawRect(numberRect); + + painter->setPen(Qt::black); + + QTextOption textOption; + textOption.setAlignment(Qt::AlignCenter); + + painter->drawText(numberRect, QString::number(pieceNumber_), textOption); + + painter->restore(); + } +} + +int PuzzleItem::pieceNumber() const +{ + return pieceNumber_; +} + +void PuzzleItem::setPieceNumber(const int pieceNumber) +{ + 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; +}