summaryrefslogtreecommitdiff
path: root/noncore/games/solitaire/canvascardwindow.cpp
Unidiff
Diffstat (limited to 'noncore/games/solitaire/canvascardwindow.cpp') (more/less context) (ignore whitespace changes)
-rw-r--r--noncore/games/solitaire/canvascardwindow.cpp53
1 files changed, 53 insertions, 0 deletions
diff --git a/noncore/games/solitaire/canvascardwindow.cpp b/noncore/games/solitaire/canvascardwindow.cpp
index 4c365a5..e1c021e 100644
--- a/noncore/games/solitaire/canvascardwindow.cpp
+++ b/noncore/games/solitaire/canvascardwindow.cpp
@@ -12,24 +12,26 @@
12** WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. 12** WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.
13** 13**
14** See http://www.trolltech.com/gpl/ for GPL licensing information. 14** See http://www.trolltech.com/gpl/ for GPL licensing information.
15** 15**
16** Contact info@trolltech.com if any conditions of this licensing are 16** Contact info@trolltech.com if any conditions of this licensing are
17** not clear to you. 17** not clear to you.
18** 18**
19**********************************************************************/ 19**********************************************************************/
20 20
21#include "canvascardwindow.h" 21#include "canvascardwindow.h"
22#include "patiencecardgame.h" 22#include "patiencecardgame.h"
23#include "freecellcardgame.h" 23#include "freecellcardgame.h"
24#include "chicanecardgame.h"
25#include "harpcardgame.h"
24 26
25#include <qpe/resource.h> 27#include <qpe/resource.h>
26 28
27#include <qmainwindow.h> 29#include <qmainwindow.h>
28#include <qpopupmenu.h> 30#include <qpopupmenu.h>
29#include <qstyle.h> 31#include <qstyle.h>
30 32
31 33
32CanvasCardWindow::CanvasCardWindow(QWidget* parent, const char* name, WFlags f) : 34CanvasCardWindow::CanvasCardWindow(QWidget* parent, const char* name, WFlags f) :
33 QMainWindow(parent, name, f), canvas(230, 260), snapOn(TRUE), cardBack(4), gameType(0), 35 QMainWindow(parent, name, f), canvas(230, 260), snapOn(TRUE), cardBack(4), gameType(0),
34 cardGame(NULL) 36 cardGame(NULL)
35{ 37{
@@ -50,46 +52,50 @@ CanvasCardWindow::CanvasCardWindow(QWidget* parent, const char* name, WFlags f)
50 canvas.setAdvancePeriod(70); 52 canvas.setAdvancePeriod(70);
51#else 53#else
52 canvas.setAdvancePeriod(30); 54 canvas.setAdvancePeriod(30);
53#endif 55#endif
54 56
55 57
56#ifdef _PATIENCE_USE_ACCELS_ 58#ifdef _PATIENCE_USE_ACCELS_
57 QPEMenuBar* menu = menuBar(); 59 QPEMenuBar* menu = menuBar();
58 60
59 QPopupMenu* file = new QPopupMenu; 61 QPopupMenu* file = new QPopupMenu;
60 file->insertItem(tr("Patience"), this, SLOT(initPatience()), CTRL+Key_F); 62 file->insertItem(tr("Patience"), this, SLOT(initPatience()), CTRL+Key_F);
61 file->insertItem(tr("Freecell"), this, SLOT(initFreecell()), CTRL+Key_F); 63 file->insertItem(tr("Freecell"), this, SLOT(initFreecell()), CTRL+Key_F);
64 file->insertItem(tr("Chicane"), this, SLOT(initChicane()), CTRL+Key_F);
65 file->insertItem(tr("Harp"), this, SLOT(initHarp()), CTRL+Key_F);
62 menu->insertItem(tr("&Game"), file); 66 menu->insertItem(tr("&Game"), file);
63 67
64 menu->insertSeparator(); 68 menu->insertSeparator();
65 69
66 settings = new QPopupMenu; 70 settings = new QPopupMenu;
67 settings->insertItem(tr("&Change Card Backs"), this, SLOT(changeCardBacks()), Key_F2); 71 settings->insertItem(tr("&Change Card Backs"), this, SLOT(changeCardBacks()), Key_F2);
68 snap_id = settings->insertItem(tr("&Snap To Position"), this, SLOT(snapToggle()), Key_F3); 72 snap_id = settings->insertItem(tr("&Snap To Position"), this, SLOT(snapToggle()), Key_F3);
69 settings->setCheckable(TRUE); 73 settings->setCheckable(TRUE);
70 menu->insertItem(tr("&Settings"),settings); 74 menu->insertItem(tr("&Settings"),settings);
71 75
72 menu->insertSeparator(); 76 menu->insertSeparator();
73 77
74 QPopupMenu* help = new QPopupMenu; 78 QPopupMenu* help = new QPopupMenu;
75 help->insertItem(tr("&About"), this, SLOT(help()), Key_F1); 79 help->insertItem(tr("&About"), this, SLOT(help()), Key_F1);
76 help->setItemChecked(dbf_id, TRUE); 80 help->setItemChecked(dbf_id, TRUE);
77 menu->insertItem(tr("&Help"),help); 81 menu->insertItem(tr("&Help"),help);
78#else 82#else
79 QMenuBar* menu = menuBar(); 83 QMenuBar* menu = menuBar();
80 84
81 QPopupMenu* file = new QPopupMenu; 85 QPopupMenu* file = new QPopupMenu;
82 file->insertItem(tr("Patience"), this, SLOT(initPatience())); 86 file->insertItem(tr("Patience"), this, SLOT(initPatience()));
83 file->insertItem(tr("Freecell"), this, SLOT(initFreecell())); 87 file->insertItem(tr("Freecell"), this, SLOT(initFreecell()));
88 file->insertItem(tr("Chicane"), this, SLOT(initChicane()));
89 file->insertItem(tr("Harp"), this, SLOT(initHarp()));
84 menu->insertItem(tr("Play"), file); 90 menu->insertItem(tr("Play"), file);
85 91
86 menu->insertSeparator(); 92 menu->insertSeparator();
87 93
88 settings = new QPopupMenu; 94 settings = new QPopupMenu;
89 settings->setCheckable(TRUE); 95 settings->setCheckable(TRUE);
90 settings->insertItem(tr("Change Card Backs"), this, SLOT(changeCardBacks())); 96 settings->insertItem(tr("Change Card Backs"), this, SLOT(changeCardBacks()));
91 snap_id = settings->insertItem(tr("Snap To Position"), this, SLOT(snapToggle())); 97 snap_id = settings->insertItem(tr("Snap To Position"), this, SLOT(snapToggle()));
92 QString m; 98 QString m;
93 99
94 drawId = settings->insertItem(tr("Turn One Card"), this, SLOT(drawnToggle())); 100 drawId = settings->insertItem(tr("Turn One Card"), this, SLOT(drawnToggle()));
95 menu->insertItem(tr("Settings"),settings); 101 menu->insertItem(tr("Settings"),settings);
@@ -109,24 +115,40 @@ CanvasCardWindow::CanvasCardWindow(QWidget* parent, const char* name, WFlags f)
109 cardGame->setNumberToDraw(drawThree ? 3 : 1); 115 cardGame->setNumberToDraw(drawThree ? 3 : 1);
110 setCaption(tr("Patience")); 116 setCaption(tr("Patience"));
111 setCentralWidget(cardGame); 117 setCentralWidget(cardGame);
112 cardGame->readConfig( cfg ); 118 cardGame->readConfig( cfg );
113 setCardBacks(); 119 setCardBacks();
114 } else if ( gameType == 1 ) { 120 } else if ( gameType == 1 ) {
115 cardGame = new FreecellCardGame( &canvas, snapOn, this ); 121 cardGame = new FreecellCardGame( &canvas, snapOn, this );
116 setCaption(tr("Freecell")); 122 setCaption(tr("Freecell"));
117 setCentralWidget(cardGame); 123 setCentralWidget(cardGame);
118 //cardGame->newGame(); // Until we know how to handle reading freecell config 124 //cardGame->newGame(); // Until we know how to handle reading freecell config
119 cardGame->readConfig( cfg ); 125 cardGame->readConfig( cfg );
120 setCardBacks(); 126 setCardBacks();
127 } else if ( gameType == 2 ) {
128 cardGame = new ChicaneCardGame( &canvas, snapOn, this );
129 cardGame->setNumberToDraw(1);
130 setCaption(tr("Chicane"));
131 setCentralWidget(cardGame);
132 //cardGame->newGame(); // Until we know how to handle reading freecell config
133 cardGame->readConfig( cfg );
134 setCardBacks();
135 } else if ( gameType == 3 ) {
136 cardGame = new HarpCardGame( &canvas, snapOn, this );
137 cardGame->setNumberToDraw(1);
138 setCaption(tr("Harp"));
139 setCentralWidget(cardGame);
140 //cardGame->newGame(); // Until we know how to handle reading freecell config
141 cardGame->readConfig( cfg );
142 setCardBacks();
121 } else { 143 } else {
122 // Probably there isn't a config file or it is broken 144 // Probably there isn't a config file or it is broken
123 // Start a new game 145 // Start a new game
124 initPatience(); 146 initPatience();
125 } 147 }
126 148
127 updateDraw(); 149 updateDraw();
128} 150}
129 151
130 152
131CanvasCardWindow::~CanvasCardWindow() 153CanvasCardWindow::~CanvasCardWindow()
132{ 154{
@@ -172,24 +194,55 @@ void CanvasCardWindow::initFreecell()
172 if ( cardGame ) { 194 if ( cardGame ) {
173 delete cardGame; 195 delete cardGame;
174 } 196 }
175 cardGame = new FreecellCardGame( &canvas, snapOn, this ); 197 cardGame = new FreecellCardGame( &canvas, snapOn, this );
176 gameType = 1; 198 gameType = 1;
177 setCaption(tr("Freecell")); 199 setCaption(tr("Freecell"));
178 setCentralWidget(cardGame); 200 setCentralWidget(cardGame);
179 cardGame->newGame(); 201 cardGame->newGame();
180 setCardBacks(); 202 setCardBacks();
181} 203}
182 204
183 205
206void CanvasCardWindow::initChicane()
207{
208 // Create New Game
209 if ( cardGame ) {
210 delete cardGame;
211 }
212 cardGame = new ChicaneCardGame( &canvas, snapOn, this );
213 cardGame->setNumberToDraw(1);
214 gameType = 2;
215 setCaption(tr("Chicane"));
216 setCentralWidget(cardGame);
217 cardGame->newGame();
218 setCardBacks();
219}
220
221void CanvasCardWindow::initHarp()
222{
223 // Create New Game
224 if ( cardGame ) {
225 delete cardGame;
226 }
227 cardGame = new HarpCardGame( &canvas, snapOn, this );
228 cardGame->setNumberToDraw(1);
229 gameType = 3;
230 setCaption(tr("Harp"));
231 setCentralWidget(cardGame);
232 cardGame->newGame();
233 setCardBacks();
234}
235
236
184void CanvasCardWindow::snapToggle() 237void CanvasCardWindow::snapToggle()
185{ 238{
186 snapOn = !snapOn; 239 snapOn = !snapOn;
187 settings->setItemChecked(snap_id, snapOn); 240 settings->setItemChecked(snap_id, snapOn);
188 cardGame->toggleSnap(); 241 cardGame->toggleSnap();
189} 242}
190 243
191 244
192void CanvasCardWindow::drawnToggle() 245void CanvasCardWindow::drawnToggle()
193{ 246{
194 cardGame->toggleCardsDrawn(); 247 cardGame->toggleCardsDrawn();
195 updateDraw(); 248 updateDraw();