+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 <timop.harkonen@gmail.com> 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 <timop.harkonen@gmail.com> Sun, 3 Jan 2010 10:32:42 +0200
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);
}
}
createMenu();
setCentralWidget(GameView::instance());
+ settingsDialog_ = new SettingsDialog(this);
}
void MainWindow::createMenu()
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()));
}
class QAction;
class QMenu;
+class SettingsDialog;
class MainWindow : public QMainWindow
{
QAction *settingsAction_;
QMenu *menu_;
+
+ SettingsDialog *settingsDialog_;
};
#endif
#include <QGraphicsSceneMouseEvent>
#include <QPropertyAnimation>
+#include <QPainter>
+#include <QFont>
+#include <QFontMetrics>
int PuzzleItem::moveCount_ = 0;
{
movable_ = true;
moveAnimation_ = new QPropertyAnimation(this, "pos", this);
+ pieceNumber_ = 0;
}
QPointF PuzzleItem::correctPlace() const
{
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;
+}
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);
bool movable_;
QPropertyAnimation *moveAnimation_;
static int moveCount_;
+ int pieceNumber_;
};
#endif
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) {
public:
SettingsDialog(QWidget *parent = 0);
+public slots:
+ int exec();
+
private slots:
void difficultySelectionChanged(bool value);
void imageSelectionChanged(const QString &txt);