Diffstat (limited to 'noncore/games/fifteen/fifteen.cpp') (more/less context) (ignore whitespace changes)
-rw-r--r-- | noncore/games/fifteen/fifteen.cpp | 83 |
1 files changed, 55 insertions, 28 deletions
diff --git a/noncore/games/fifteen/fifteen.cpp b/noncore/games/fifteen/fifteen.cpp index 2e4ed94..b4e0308 100644 --- a/noncore/games/fifteen/fifteen.cpp +++ b/noncore/games/fifteen/fifteen.cpp | |||
@@ -1,6 +1,6 @@ | |||
1 | /********************************************************************** | 1 | /********************************************************************** |
2 | ** Copyright (C) 2000 Trolltech AS. All rights reserved. | 2 | ** Copyright (C) 2000-2002 Trolltech AS. All rights reserved. |
3 | ** | 3 | ** |
4 | ** This file is part of Qtopia Environment. | 4 | ** This file is part of the Qtopia Environment. |
5 | ** | 5 | ** |
6 | ** This file may be distributed and/or modified under the terms of the | 6 | ** This file may be distributed and/or modified under the terms of the |
@@ -21,6 +21,6 @@ | |||
21 | #include "fifteen.h" | 21 | #include "fifteen.h" |
22 | 22 | ||
23 | #include <qpe/resource.h> | 23 | #include <qtopia/resource.h> |
24 | #include <qpe/config.h> | 24 | #include <qtopia/config.h> |
25 | 25 | ||
26 | #include <qvbox.h> | 26 | #include <qvbox.h> |
@@ -30,30 +30,24 @@ | |||
30 | #include <qpopupmenu.h> | 30 | #include <qpopupmenu.h> |
31 | #include <qmessagebox.h> | 31 | #include <qmessagebox.h> |
32 | #include <qpe/qpetoolbar.h> | 32 | #include <qtoolbar.h> |
33 | #include <qmenubar.h> | 33 | #include <qmenubar.h> |
34 | #include <qstringlist.h> | 34 | #include <qstringlist.h> |
35 | #include <qapplication.h> | 35 | #include <qapplication.h> |
36 | #include <qtoolbutton.h> | ||
36 | 37 | ||
37 | #include <stdlib.h> | 38 | #include <stdlib.h> |
38 | #include <time.h> | 39 | #include <time.h> |
39 | 40 | ||
40 | FifteenMainWindow::FifteenMainWindow(QWidget *parent, const char* name) | 41 | FifteenMainWindow::FifteenMainWindow(QWidget *parent, const char* name, WFlags fl) |
41 | : QMainWindow( parent, name ) | 42 | : QMainWindow( parent, name, fl ) |
42 | { | 43 | { |
43 | // random seed | 44 | // random seed |
44 | srand(time(0)); | 45 | srand(time(0)); |
45 | 46 | setCaption( tr("Fifteen Pieces") ); | |
46 | setToolBarsMovable( FALSE ); | ||
47 | QVBox *vbox = new QVBox( this ); | ||
48 | PiecesTable *table = new PiecesTable( vbox ); | ||
49 | setCentralWidget(vbox); | ||
50 | 47 | ||
51 | QToolBar *toolbar = new QToolBar(this); | 48 | QToolBar *toolbar = new QToolBar(this); |
52 | toolbar->setHorizontalStretchable( TRUE ); | 49 | toolbar->setHorizontalStretchable( FALSE ); |
53 | addToolBar(toolbar); | ||
54 | |||
55 | QMenuBar *menubar = new QMenuBar( toolbar ); | 50 | QMenuBar *menubar = new QMenuBar( toolbar ); |
56 | menubar->setMargin(0); | 51 | menubar->setMargin(0); |
57 | |||
58 | QPopupMenu *game = new QPopupMenu( this ); | 52 | QPopupMenu *game = new QPopupMenu( this ); |
59 | 53 | ||
@@ -62,4 +56,12 @@ FifteenMainWindow::FifteenMainWindow(QWidget *parent, const char* name) | |||
62 | toolbar->setStretchableWidget( spacer ); | 56 | toolbar->setStretchableWidget( spacer ); |
63 | 57 | ||
58 | |||
59 | setToolBarsMovable( FALSE ); | ||
60 | QVBox *vbox = new QVBox( this ); | ||
61 | PiecesTable *table = new PiecesTable( vbox ); | ||
62 | setCentralWidget(vbox); | ||
63 | |||
64 | |||
65 | |||
64 | QAction *a = new QAction( tr( "Randomize" ), Resource::loadPixmap( "new" ), | 66 | QAction *a = new QAction( tr( "Randomize" ), Resource::loadPixmap( "new" ), |
65 | QString::null, 0, this, 0 ); | 67 | QString::null, 0, this, 0 ); |
@@ -68,10 +70,11 @@ FifteenMainWindow::FifteenMainWindow(QWidget *parent, const char* name) | |||
68 | a->addTo( toolbar ); | 70 | a->addTo( toolbar ); |
69 | 71 | ||
70 | a = new QAction( tr( "Solve" ), Resource::loadPixmap( "repeat" ), | 72 | /* This is pointless and confusing. |
73 | a = new QAction( tr( "Solve" ), Resource::loadIconSet( "repeat" ), | ||
71 | QString::null, 0, this, 0 ); | 74 | QString::null, 0, this, 0 ); |
72 | connect( a, SIGNAL( activated() ), table, SLOT( slotReset() ) ); | 75 | connect( a, SIGNAL( activated() ), table, SLOT( slotReset() ) ); |
73 | a->addTo( game ); | 76 | a->addTo( game ); |
74 | a->addTo( toolbar ); | 77 | a->addTo( toolbar ); |
75 | 78 | */ | |
76 | menubar->insertItem( tr( "Game" ), game ); | 79 | menubar->insertItem( tr( "Game" ), game ); |
77 | } | 80 | } |
@@ -110,5 +113,5 @@ void PiecesTable::writeConfig() | |||
110 | cfg.setGroup("Game"); | 113 | cfg.setGroup("Game"); |
111 | QStringList map; | 114 | QStringList map; |
112 | for (unsigned int i = 0; i < 16; i++) | 115 | for (int i = 0; i < 16; i++) |
113 | map.append( QString::number( _map[i] ) ); | 116 | map.append( QString::number( _map[i] ) ); |
114 | cfg.writeEntry("Map", map, '-'); | 117 | cfg.writeEntry("Map", map, '-'); |
@@ -122,5 +125,5 @@ void PiecesTable::readConfig() | |||
122 | QStringList map = cfg.readListEntry("Map", '-'); | 125 | QStringList map = cfg.readListEntry("Map", '-'); |
123 | _randomized = cfg.readBoolEntry( "Randomized", FALSE ); | 126 | _randomized = cfg.readBoolEntry( "Randomized", FALSE ); |
124 | unsigned int i = 0; | 127 | int i = 0; |
125 | for ( QStringList::Iterator it = map.begin(); it != map.end(); ++it ) { | 128 | for ( QStringList::Iterator it = map.begin(); it != map.end(); ++it ) { |
126 | _map[i] = (*it).toInt(); | 129 | _map[i] = (*it).toInt(); |
@@ -147,16 +150,16 @@ void PiecesTable::paintCell(QPainter *p, int row, int col) | |||
147 | p->drawRect(0, 0, w, h); | 150 | p->drawRect(0, 0, w, h); |
148 | 151 | ||
152 | if (number == 16) return; | ||
153 | |||
149 | // draw borders | 154 | // draw borders |
150 | if (height() > 40) { | 155 | if (height() > 40) { |
151 | p->setPen(colorGroup().text()); | 156 | p->setBrush(_colors[number-1].light(130)); |
152 | if(col < numCols()-1) | 157 | p->drawPolygon(light_border); |
153 | p->drawLine(x2, 0, x2, y2); // right border line | ||
154 | 158 | ||
155 | if(row < numRows()-1) | 159 | p->setBrush(_colors[number-1].dark(130)); |
156 | p->drawLine(0, y2, x2, y2); // bottom boder line | 160 | p->drawPolygon(dark_border); |
157 | } | 161 | } |
158 | 162 | ||
159 | // draw number | 163 | // draw number |
160 | if (number == 16) return; | ||
161 | p->setPen(black); | 164 | p->setPen(black); |
162 | p->drawText(0, 0, x2, y2, AlignHCenter | AlignVCenter, QString::number(number)); | 165 | p->drawText(0, 0, x2, y2, AlignHCenter | AlignVCenter, QString::number(number)); |
@@ -169,4 +172,28 @@ void PiecesTable::resizeEvent(QResizeEvent *e) | |||
169 | setCellWidth(contentsRect().width()/ numRows()); | 172 | setCellWidth(contentsRect().width()/ numRows()); |
170 | setCellHeight(contentsRect().height() / numCols()); | 173 | setCellHeight(contentsRect().height() / numCols()); |
174 | |||
175 | // | ||
176 | // Calculate 3d-effect borders | ||
177 | // | ||
178 | intcell_w = cellWidth(); | ||
179 | intcell_h = cellHeight(); | ||
180 | int x_offset = cell_w - int(cell_w * 0.9);// 10% should be enough | ||
181 | inty_offset = cell_h - int(cell_h * 0.9); | ||
182 | |||
183 | light_border.setPoints(6, | ||
184 | 0, 0, | ||
185 | cell_w, 0, | ||
186 | cell_w - x_offset, y_offset, | ||
187 | x_offset, y_offset, | ||
188 | x_offset, cell_h - y_offset, | ||
189 | 0, cell_h); | ||
190 | |||
191 | dark_border.setPoints(6, | ||
192 | cell_w, 0, | ||
193 | cell_w, cell_h, | ||
194 | 0, cell_h, | ||
195 | x_offset, cell_h - y_offset, | ||
196 | cell_w - x_offset, cell_h - y_offset, | ||
197 | cell_w - x_offset, y_offset); | ||
171 | } | 198 | } |
172 | 199 | ||
@@ -182,5 +209,5 @@ void PiecesTable::initMap() | |||
182 | { | 209 | { |
183 | _map.resize(16); | 210 | _map.resize(16); |
184 | for (unsigned int i = 0; i < 16; i++) | 211 | for ( int i = 0; i < 16; i++) |
185 | _map[i] = i; | 212 | _map[i] = i; |
186 | 213 | ||
@@ -242,6 +269,6 @@ void PiecesTable::randomizeMap() | |||
242 | // move free cell to click position | 269 | // move free cell to click position |
243 | _map[pos=(col + row * numCols())] = 15; | 270 | _map[pos=(col + row * numCols())] = 15; |
244 | repaint(); | ||
245 | } | 271 | } |
272 | repaint(); | ||
246 | } | 273 | } |
247 | 274 | ||