summaryrefslogtreecommitdiffstats
path: root/examples/itemviews/puzzle
diff options
context:
space:
mode:
Diffstat (limited to 'examples/itemviews/puzzle')
-rw-r--r--examples/itemviews/puzzle/main.cpp4
-rw-r--r--examples/itemviews/puzzle/mainwindow.cpp20
-rw-r--r--examples/itemviews/puzzle/piecesmodel.cpp8
-rw-r--r--examples/itemviews/puzzle/piecesmodel.h4
-rw-r--r--examples/itemviews/puzzle/puzzle.desktop11
-rw-r--r--examples/itemviews/puzzle/puzzle.pro2
-rw-r--r--examples/itemviews/puzzle/puzzlewidget.cpp26
-rw-r--r--examples/itemviews/puzzle/puzzlewidget.h6
8 files changed, 59 insertions, 22 deletions
diff --git a/examples/itemviews/puzzle/main.cpp b/examples/itemviews/puzzle/main.cpp
index 60341948ab..bdba2874f3 100644
--- a/examples/itemviews/puzzle/main.cpp
+++ b/examples/itemviews/puzzle/main.cpp
@@ -49,6 +49,10 @@ int main(int argc, char *argv[])
QApplication app(argc, argv);
MainWindow window;
window.openImage(":/images/example.jpg");
+#if defined(Q_OS_SYMBIAN)
+ window.showMaximized();
+#else
window.show();
+#endif
return app.exec();
}
diff --git a/examples/itemviews/puzzle/mainwindow.cpp b/examples/itemviews/puzzle/mainwindow.cpp
index 4d6da116bf..6fd5d63987 100644
--- a/examples/itemviews/puzzle/mainwindow.cpp
+++ b/examples/itemviews/puzzle/mainwindow.cpp
@@ -50,7 +50,7 @@ MainWindow::MainWindow(QWidget *parent)
{
setupMenus();
setupWidgets();
- model = new PiecesModel(this);
+ model = new PiecesModel(puzzleWidget->pieceSize(), this);
piecesList->setModel(model);
setSizePolicy(QSizePolicy(QSizePolicy::Fixed, QSizePolicy::Fixed));
@@ -92,8 +92,8 @@ void MainWindow::setupPuzzle()
{
int size = qMin(puzzleImage.width(), puzzleImage.height());
puzzleImage = puzzleImage.copy((puzzleImage.width() - size)/2,
- (puzzleImage.height() - size)/2, size, size).scaled(400,
- 400, Qt::IgnoreAspectRatio, Qt::SmoothTransformation);
+ (puzzleImage.height() - size)/2, size, size).scaled(puzzleWidget->imageSize(),
+ puzzleWidget->imageSize(), Qt::IgnoreAspectRatio, Qt::SmoothTransformation);
qsrand(QCursor::pos().x() ^ QCursor::pos().y());
@@ -125,21 +125,25 @@ void MainWindow::setupWidgets()
QFrame *frame = new QFrame;
QHBoxLayout *frameLayout = new QHBoxLayout(frame);
+#if defined(Q_OS_SYMBIAN) || defined(Q_WS_SIMULATOR)
+ puzzleWidget = new PuzzleWidget(260);
+#else
+ puzzleWidget = new PuzzleWidget(400);
+#endif
+
piecesList = new QListView;
piecesList->setDragEnabled(true);
piecesList->setViewMode(QListView::IconMode);
- piecesList->setIconSize(QSize(60, 60));
- piecesList->setGridSize(QSize(80, 80));
+ piecesList->setIconSize(QSize(puzzleWidget->pieceSize() - 20, puzzleWidget->pieceSize() - 20));
+ piecesList->setGridSize(QSize(puzzleWidget->pieceSize(), puzzleWidget->pieceSize()));
piecesList->setSpacing(10);
piecesList->setMovement(QListView::Snap);
piecesList->setAcceptDrops(true);
piecesList->setDropIndicatorShown(true);
- PiecesModel *model = new PiecesModel(this);
+ PiecesModel *model = new PiecesModel(puzzleWidget->pieceSize(), this);
piecesList->setModel(model);
- puzzleWidget = new PuzzleWidget;
-
connect(puzzleWidget, SIGNAL(puzzleCompleted()),
this, SLOT(setCompleted()), Qt::QueuedConnection);
diff --git a/examples/itemviews/puzzle/piecesmodel.cpp b/examples/itemviews/puzzle/piecesmodel.cpp
index 4235050d9d..520b571f0a 100644
--- a/examples/itemviews/puzzle/piecesmodel.cpp
+++ b/examples/itemviews/puzzle/piecesmodel.cpp
@@ -42,8 +42,8 @@
#include "piecesmodel.h"
-PiecesModel::PiecesModel(QObject *parent)
- : QAbstractListModel(parent)
+PiecesModel::PiecesModel(int pieceSize, QObject *parent)
+ : QAbstractListModel(parent), m_PieceSize(pieceSize)
{
}
@@ -53,7 +53,7 @@ QVariant PiecesModel::data(const QModelIndex &index, int role) const
return QVariant();
if (role == Qt::DecorationRole)
- return QIcon(pixmaps.value(index.row()).scaled(60, 60,
+ return QIcon(pixmaps.value(index.row()).scaled(m_PieceSize, m_PieceSize,
Qt::KeepAspectRatio, Qt::SmoothTransformation));
else if (role == Qt::UserRole)
return pixmaps.value(index.row());
@@ -196,7 +196,7 @@ void PiecesModel::addPieces(const QPixmap& pixmap)
endRemoveRows();
for (int y = 0; y < 5; ++y) {
for (int x = 0; x < 5; ++x) {
- QPixmap pieceImage = pixmap.copy(x*80, y*80, 80, 80);
+ QPixmap pieceImage = pixmap.copy(x*m_PieceSize, y*m_PieceSize, m_PieceSize, m_PieceSize);
addPiece(pieceImage, QPoint(x, y));
}
}
diff --git a/examples/itemviews/puzzle/piecesmodel.h b/examples/itemviews/puzzle/piecesmodel.h
index 30bbdf83b2..40079fe1c1 100644
--- a/examples/itemviews/puzzle/piecesmodel.h
+++ b/examples/itemviews/puzzle/piecesmodel.h
@@ -56,7 +56,7 @@ class PiecesModel : public QAbstractListModel
Q_OBJECT
public:
- PiecesModel(QObject *parent = 0);
+ PiecesModel(int pieceSize, QObject *parent = 0);
QVariant data(const QModelIndex &index, int role = Qt::DisplayRole) const;
Qt::ItemFlags flags(const QModelIndex &index) const;
@@ -75,6 +75,8 @@ public:
private:
QList<QPoint> locations;
QList<QPixmap> pixmaps;
+
+ int m_PieceSize;
};
#endif
diff --git a/examples/itemviews/puzzle/puzzle.desktop b/examples/itemviews/puzzle/puzzle.desktop
new file mode 100644
index 0000000000..d493e7dd41
--- /dev/null
+++ b/examples/itemviews/puzzle/puzzle.desktop
@@ -0,0 +1,11 @@
+[Desktop Entry]
+Encoding=UTF-8
+Version=1.0
+Type=Application
+Terminal=false
+Name=Item Views Puzzle
+Exec=/opt/usr/bin/puzzle
+Icon=puzzle
+X-Window-Icon=
+X-HildonDesk-ShowInToolbar=true
+X-Osso-Type=application/x-executable
diff --git a/examples/itemviews/puzzle/puzzle.pro b/examples/itemviews/puzzle/puzzle.pro
index 16cbc5e72c..08e7efb65f 100644
--- a/examples/itemviews/puzzle/puzzle.pro
+++ b/examples/itemviews/puzzle/puzzle.pro
@@ -19,3 +19,5 @@ wince* {
DEPLOYMENT_PLUGIN += qjpeg qgif qtiff
}
+maemo5: include($$QT_SOURCE_TREE/examples/maemo5pkgrules.pri)
+
diff --git a/examples/itemviews/puzzle/puzzlewidget.cpp b/examples/itemviews/puzzle/puzzlewidget.cpp
index a0d769d20a..261e0080a2 100644
--- a/examples/itemviews/puzzle/puzzlewidget.cpp
+++ b/examples/itemviews/puzzle/puzzlewidget.cpp
@@ -42,12 +42,12 @@
#include "puzzlewidget.h"
-PuzzleWidget::PuzzleWidget(QWidget *parent)
- : QWidget(parent)
+PuzzleWidget::PuzzleWidget(int imageSize, QWidget *parent)
+ : QWidget(parent), m_ImageSize(imageSize)
{
setAcceptDrops(true);
- setMinimumSize(400, 400);
- setMaximumSize(400, 400);
+ setMinimumSize(m_ImageSize, m_ImageSize);
+ setMaximumSize(m_ImageSize, m_ImageSize);
}
void PuzzleWidget::clear()
@@ -116,7 +116,7 @@ void PuzzleWidget::dropEvent(QDropEvent *event)
event->setDropAction(Qt::MoveAction);
event->accept();
- if (location == QPoint(square.x()/80, square.y()/80)) {
+ if (location == QPoint(square.x()/pieceSize(), square.y()/pieceSize())) {
inPlace++;
if (inPlace == 25)
emit puzzleCompleted();
@@ -151,7 +151,7 @@ void PuzzleWidget::mousePressEvent(QMouseEvent *event)
piecePixmaps.removeAt(found);
pieceRects.removeAt(found);
- if (location == QPoint(square.x()/80, square.y()/80))
+ if (location == QPoint(square.x()/pieceSize(), square.y()/pieceSize()))
inPlace--;
update(square);
@@ -175,7 +175,7 @@ void PuzzleWidget::mousePressEvent(QMouseEvent *event)
pieceRects.insert(found, square);
update(targetSquare(event->pos()));
- if (location == QPoint(square.x()/80, square.y()/80))
+ if (location == QPoint(square.x()/pieceSize(), square.y()/pieceSize()))
inPlace++;
}
}
@@ -200,5 +200,15 @@ void PuzzleWidget::paintEvent(QPaintEvent *event)
const QRect PuzzleWidget::targetSquare(const QPoint &position) const
{
- return QRect(position.x()/80 * 80, position.y()/80 * 80, 80, 80);
+ return QRect(position.x()/pieceSize() * pieceSize(), position.y()/pieceSize() * pieceSize(), pieceSize(), pieceSize());
+}
+
+int PuzzleWidget::pieceSize() const
+{
+ return m_ImageSize / 5;
+}
+
+int PuzzleWidget::imageSize() const
+{
+ return m_ImageSize;
}
diff --git a/examples/itemviews/puzzle/puzzlewidget.h b/examples/itemviews/puzzle/puzzlewidget.h
index e0356b48fd..2cc789c292 100644
--- a/examples/itemviews/puzzle/puzzlewidget.h
+++ b/examples/itemviews/puzzle/puzzlewidget.h
@@ -57,9 +57,12 @@ class PuzzleWidget : public QWidget
Q_OBJECT
public:
- PuzzleWidget(QWidget *parent = 0);
+ PuzzleWidget(int imageSize, QWidget *parent = 0);
void clear();
+ int pieceSize() const;
+ int imageSize() const;
+
signals:
void puzzleCompleted();
@@ -80,6 +83,7 @@ private:
QList<QPoint> pieceLocations;
QRect highlightedRect;
int inPlace;
+ int m_ImageSize;
};
#endif