From: timoph Date: Sat, 23 Jan 2010 21:11:27 +0000 (+0000) Subject: Piece place numbers, temporary random image fix and changelog update X-Git-Tag: 0.7.2~24 X-Git-Url: http://git.maemo.org/git/?p=impuzzle;a=commitdiff_plain;h=3fffc1c138902d3bebc6c27c9354436541e29383 Piece place numbers, temporary random image fix and changelog update git-svn-id: file:///svnroot/impuzzle/trunk@10 e6bec12f-0854-4cc4-ad26-6875f1509f77 --- diff --git a/debian/changelog b/debian/changelog index 149fe01..f015f99 100644 --- a/debian/changelog +++ b/debian/changelog @@ -1,8 +1,15 @@ +impuzzle (0.3-1maemo0) unstable; urgency=low + + * Implemented: Show location numbers on the pieces + * Fixes: Random image not random after first game + + -- Timo Härkönen Sat, 23 Jan 2010 22:59:42 +0200 + impuzzle (0.2-1maemo0) unstable; urgency=low - * Implements: User specified image used in puzzle - * Implements: Random image used in puzzle - * Implements: Difficulty settings + * Implemented: User specified image used in puzzle + * Implemented: Random image used in puzzle + * Implemented: Difficulty settings * Fixes: All pieces movable after shuffle -- Timo Härkönen Sun, 3 Jan 2010 10:32:42 +0200 diff --git a/src/imageimporter.cpp b/src/imageimporter.cpp index dab504b..ab341e9 100644 --- a/src/imageimporter.cpp +++ b/src/imageimporter.cpp @@ -75,11 +75,15 @@ QList ImageImporter::newPieces(const QPixmap &pixmap, const int co int verticalStep = IMAGE_HEIGHT / verticalCount; int horizontalStep = IMAGE_WIDTH / horizontalCount; + int pieceNo = 1; + for(int i = 0; i < verticalCount; ++i) { for(int j = 0; j < horizontalCount; ++j) { PuzzleItem *item = new PuzzleItem; item->setPixmap(tmp.copy(QRect(QPoint(j * horizontalStep, i * verticalStep), QPoint(horizontalStep + j * horizontalStep, verticalStep + i * verticalStep)))); + item->setPieceNumber(pieceNo); + pieceNo++; list.append(item); } } diff --git a/src/mainwindow.cpp b/src/mainwindow.cpp index b728d4d..2f1f644 100644 --- a/src/mainwindow.cpp +++ b/src/mainwindow.cpp @@ -34,6 +34,7 @@ MainWindow::MainWindow(QWidget *parent) : createMenu(); setCentralWidget(GameView::instance()); + settingsDialog_ = new SettingsDialog(this); } void MainWindow::createMenu() @@ -63,8 +64,9 @@ void MainWindow::importClicked() void MainWindow::newGameClicked() { - SettingsDialog dialog(this); - dialog.exec(); + //SettingsDialog dialog(this); + //dialog.exec(); + settingsDialog_->exec(); GameView::instance()->setPieces(ImageImporter::instance()->newPieces(Settings::instance()->image(), Settings::instance()->pieceCount())); } diff --git a/src/mainwindow.h b/src/mainwindow.h index f101b5b..df704e4 100644 --- a/src/mainwindow.h +++ b/src/mainwindow.h @@ -23,6 +23,7 @@ class QAction; class QMenu; +class SettingsDialog; class MainWindow : public QMainWindow { @@ -45,5 +46,7 @@ private: QAction *settingsAction_; QMenu *menu_; + + SettingsDialog *settingsDialog_; }; #endif diff --git a/src/puzzleitem.cpp b/src/puzzleitem.cpp index 500b475..ccf0b33 100644 --- a/src/puzzleitem.cpp +++ b/src/puzzleitem.cpp @@ -21,6 +21,9 @@ #include #include +#include +#include +#include int PuzzleItem::moveCount_ = 0; @@ -29,6 +32,7 @@ PuzzleItem::PuzzleItem(QGraphicsItem *parent) : { movable_ = true; moveAnimation_ = new QPropertyAnimation(this, "pos", this); + pieceNumber_ = 0; } QPointF PuzzleItem::correctPlace() const @@ -109,3 +113,38 @@ void PuzzleItem::resetMoveCount() { moveCount_ = 0; } + +void PuzzleItem::paint(QPainter *painter, const QStyleOptionGraphicsItem *option, QWidget *widget) +{ + QGraphicsPixmapItem::paint(painter, option, widget); + + 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; +} diff --git a/src/puzzleitem.h b/src/puzzleitem.h index 8cf4819..af4aca3 100644 --- a/src/puzzleitem.h +++ b/src/puzzleitem.h @@ -40,6 +40,9 @@ public: void moveMeTo(const QPointF &location); static int moveCount(); static void resetMoveCount(); + void paint(QPainter *painter, const QStyleOptionGraphicsItem *option, QWidget *widget); + void setPieceNumber(const int pieceNumber); + int pieceNumber() const; protected: void mousePressEvent(QGraphicsSceneMouseEvent *event); @@ -51,5 +54,6 @@ private: bool movable_; QPropertyAnimation *moveAnimation_; static int moveCount_; + int pieceNumber_; }; #endif diff --git a/src/settingsdialog.cpp b/src/settingsdialog.cpp index 985dfb6..6507153 100644 --- a/src/settingsdialog.cpp +++ b/src/settingsdialog.cpp @@ -51,6 +51,16 @@ SettingsDialog::SettingsDialog(QWidget *parent) : connect(imageCombo_, SIGNAL(currentIndexChanged(QString)), this, SLOT(imageSelectionChanged(QString))); } +int SettingsDialog::exec() +{ + // Making sure that a random image is picked when starting a new game after the first game (fix me) + if(imageCombo_->currentText() == RANDOM_IMAGE_TXT) { + imageSelectionChanged(RANDOM_IMAGE_TXT); + } + + return QDialog::exec(); +} + void SettingsDialog::difficultySelectionChanged(bool value) { if(value) { diff --git a/src/settingsdialog.h b/src/settingsdialog.h index 6d2babc..757a489 100644 --- a/src/settingsdialog.h +++ b/src/settingsdialog.h @@ -17,6 +17,9 @@ class SettingsDialog : public QDialog public: SettingsDialog(QWidget *parent = 0); +public slots: + int exec(); + private slots: void difficultySelectionChanged(bool value); void imageSelectionChanged(const QString &txt);