summaryrefslogtreecommitdiff
path: root/noncore/games/fifteen/fifteen.cpp
authorzecke <zecke>2004-02-06 10:33:09 (UTC)
committer zecke <zecke>2004-02-06 10:33:09 (UTC)
commit46ce5afcfbe7be19f4d5ac0fed6886a0759f1a25 (patch) (unidiff)
treeab868f654bd296d693b74c43e166a8403aa9ede4 /noncore/games/fifteen/fifteen.cpp
parent5b2b3a4147742e7053539d3c58a2a552eb830815 (diff)
downloadopie-46ce5afcfbe7be19f4d5ac0fed6886a0759f1a25.zip
opie-46ce5afcfbe7be19f4d5ac0fed6886a0759f1a25.tar.gz
opie-46ce5afcfbe7be19f4d5ac0fed6886a0759f1a25.tar.bz2
Update from Qtopia1.7 (borders on the items)
make it quicklaunchable
Diffstat (limited to 'noncore/games/fifteen/fifteen.cpp') (more/less context) (ignore whitespace changes)
-rw-r--r--noncore/games/fifteen/fifteen.cpp83
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,7 +1,7 @@
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
7** GNU General Public License version 2 as published by the Free Software 7** GNU General Public License version 2 as published by the Free Software
@@ -20,8 +20,8 @@
20 20
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>
27#include <qaction.h> 27#include <qaction.h>
@@ -29,50 +29,53 @@
29#include <qpainter.h> 29#include <qpainter.h>
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
40FifteenMainWindow::FifteenMainWindow(QWidget *parent, const char* name) 41FifteenMainWindow::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
60 QWidget *spacer = new QWidget( toolbar ); 54 QWidget *spacer = new QWidget( toolbar );
61 spacer->setBackgroundMode( PaletteButton ); 55 spacer->setBackgroundMode( PaletteButton );
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 );
66 connect( a, SIGNAL( activated() ), table, SLOT( slotRandomize() ) ); 68 connect( a, SIGNAL( activated() ), table, SLOT( slotRandomize() ) );
67 a->addTo( game ); 69 a->addTo( game );
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}
78 81
@@ -109,7 +112,7 @@ void PiecesTable::writeConfig()
109 Config cfg("Fifteen"); 112 Config cfg("Fifteen");
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, '-');
115 cfg.writeEntry("Randomized", _randomized ); 118 cfg.writeEntry("Randomized", _randomized );
@@ -121,7 +124,7 @@ void PiecesTable::readConfig()
121 cfg.setGroup("Game"); 124 cfg.setGroup("Game");
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();
127 i++; 130 i++;
@@ -146,18 +149,18 @@ void PiecesTable::paintCell(QPainter *p, int row, int col)
146 p->setPen(NoPen); 149 p->setPen(NoPen);
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));
163} 166}
@@ -168,6 +171,30 @@ void PiecesTable::resizeEvent(QResizeEvent *e)
168 171
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
173void PiecesTable::initColors() 200void PiecesTable::initColors()
@@ -181,7 +208,7 @@ void PiecesTable::initColors()
181void PiecesTable::initMap() 208void 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
187 _randomized = false; 214 _randomized = false;
@@ -241,8 +268,8 @@ void PiecesTable::randomizeMap()
241 } 268 }
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
248void PiecesTable::checkwin() 275void PiecesTable::checkwin()