summaryrefslogtreecommitdiff
path: root/noncore/games/tetrix/qtetrix.cpp
Unidiff
Diffstat (limited to 'noncore/games/tetrix/qtetrix.cpp') (more/less context) (show whitespace changes)
-rw-r--r--noncore/games/tetrix/qtetrix.cpp58
1 files changed, 46 insertions, 12 deletions
diff --git a/noncore/games/tetrix/qtetrix.cpp b/noncore/games/tetrix/qtetrix.cpp
index 20cf1a7..a6a5f34 100644
--- a/noncore/games/tetrix/qtetrix.cpp
+++ b/noncore/games/tetrix/qtetrix.cpp
@@ -23,12 +23,13 @@
23 23
24#include <qpe/resource.h> 24#include <qpe/resource.h>
25 25
26#include <qlabel.h> 26#include <qlabel.h>
27#include <qdatetime.h> 27#include <qdatetime.h>
28#include <qlayout.h> 28#include <qlayout.h>
29#include <qtimer.h>
29 30
30#include "ohighscoredlg.h" 31#include "ohighscoredlg.h"
31 32
32 33
33void drawTetrixButton( QPainter *p, int x, int y, int w, int h, 34void drawTetrixButton( QPainter *p, int x, int y, int w, int h,
34 const QColor *color ) 35 const QColor *color )
@@ -104,12 +105,14 @@ QTetrix::QTetrix( QWidget *parent, const char *name, WFlags f )
104 (24+60+60) ); 105 (24+60+60) );
105 106
106 QWidget *gameArea = new QWidget( this ); 107 QWidget *gameArea = new QWidget( this );
107 setCentralWidget( gameArea ); 108 setCentralWidget( gameArea );
108 109
109 QGridLayout *gl = new QGridLayout( gameArea, 5, 3, 8 ); 110 QGridLayout *gl = new QGridLayout( gameArea, 5, 3, 8 );
111 gl->setColStretch( 1, 5 );
112 gl->setColStretch( 2, 10 );
110 113
111 QLabel *l; 114 QLabel *l;
112 l = new QLabel( tr("Next"), gameArea ); 115 l = new QLabel( tr("Next"), gameArea );
113 gl->addWidget( l, 0, 0 ); 116 gl->addWidget( l, 0, 0 );
114 showNext = new ShowNextPiece(gameArea); 117 showNext = new ShowNextPiece(gameArea);
115 showNext->setBackgroundColor(QColor(0,0,0)); 118 showNext->setBackgroundColor(QColor(0,0,0));
@@ -127,39 +130,39 @@ QTetrix::QTetrix( QWidget *parent, const char *name, WFlags f )
127 gl->addWidget( l, 3, 0 ); 130 gl->addWidget( l, 3, 0 );
128 showLines = new QLabel(gameArea); 131 showLines = new QLabel(gameArea);
129 gl->addWidget( showLines, 3, 1 ); 132 gl->addWidget( showLines, 3, 1 );
130 133
131 board = new QTetrixBoard(gameArea); 134 board = new QTetrixBoard(gameArea);
132 board->setBackgroundColor(QColor(0,0,0)); 135 board->setBackgroundColor(QColor(0,0,0));
133 board->setFixedWidth( 124 );
134 gl->addMultiCellWidget( board, 0, 4, 2, 2 ); 136 gl->addMultiCellWidget( board, 0, 4, 2, 2 );
135 gl->addColSpacing( 2, 100 );
136 gl->addColSpacing( 1, 35 );
137 gl->addRowSpacing( 0, 35 );
138 137
139 QPushButton *pb = new QPushButton( tr("Start"), gameArea ); 138 QPushButton *pb = new QPushButton( tr("Start"), gameArea );
140 pb->setFocusPolicy( NoFocus ); 139 pb->setFocusPolicy( NoFocus );
141 connect( pb, SIGNAL( clicked() ), board, SLOT( start() ) ); 140 connect( pb, SIGNAL( clicked() ), board, SLOT( start() ) );
142 gl->addMultiCellWidget( pb, 4, 4, 0, 1 ); 141 gl->addMultiCellWidget( pb, 4, 4, 0, 1 );
143 142
144 connect( board, SIGNAL(gameOverSignal()), SLOT(gameOver()) ); 143 connect( board, SIGNAL(gameOverSignal()), SLOT(gameOver()) );
145 connect( board, SIGNAL(drawNextSquareSignal(int,int,QColor*)), showNext, 144 connect( board, SIGNAL(drawNextSquareSignal(int,int,QColor*)), this,
146 SLOT(drawNextSquare(int,int,QColor*)) ); 145 SLOT(setNext(int,int,QColor*)) );
147 connect( showNext, SIGNAL(update()), board, SLOT(updateNext()) ); 146 connect( showNext, SIGNAL(update()), board, SLOT(updateNext()) );
148 connect( board, SIGNAL(updateScoreSignal(int)), showScore, 147 connect( board, SIGNAL(updateScoreSignal(int)), showScore, SLOT(setNum(int)) );
149 SLOT(setNum(int)) ); 148 connect( board, SIGNAL(updateLevelSignal(int)), showLevel, SLOT(setNum(int)) );
150 connect( board, SIGNAL(updateLevelSignal(int)), showLevel, 149 connect( board, SIGNAL(updateRemovedSignal(int)), showLines, SLOT(setNum(int)) );
151 SLOT(setNum(int)));
152 connect( board, SIGNAL(updateRemovedSignal(int)), showLines,
153 SLOT(setNum(int)));
154 150
155 showScore->setNum( 0 ); 151 showScore->setNum( 0 );
156 showLevel->setNum( 0 ); 152 showLevel->setNum( 0 );
157 showLines->setNum( 0 ); 153 showLines->setNum( 0 );
158 board->revealNextPiece(TRUE); 154 board->revealNextPiece(TRUE);
159 board->setFocusPolicy( StrongFocus ); 155 board->setFocusPolicy( StrongFocus );
156
157 QTimer::singleShot( -1, this, SLOT(setup()) );
158}
159
160void QTetrix::setup()
161{
162 resizeEvent( 0x0 );
160} 163}
161 164
162void QTetrix::gameOver() 165void QTetrix::gameOver()
163{ 166{
164 OHighscore *hs = new OHighscore( showScore->text().toInt() , showLevel->text().toInt() ); 167 OHighscore *hs = new OHighscore( showScore->text().toInt() , showLevel->text().toInt() );
165 if ( hs->isNewhighscore ) 168 if ( hs->isNewhighscore )
@@ -169,6 +172,37 @@ void QTetrix::gameOver()
169} 172}
170 173
171void QTetrix::quit() 174void QTetrix::quit()
172{ 175{
173 close(); 176 close();
174} 177}
178
179void QTetrix::setNext( int x, int y, QColor *color )
180{
181 resizeEvent( 0x0 );
182 showNext->drawNextSquare( x, y, color );
183}
184
185void QTetrix::resizeEvent( QResizeEvent * )
186{
187 // Set size of board
188 int widthFactor = board->QFrame::width() / board->boardWidth();
189 if ( widthFactor < 1 )
190 widthFactor = 1;
191 int heightFactor = board->QFrame::height() / board->boardHeight();
192 if ( heightFactor < 1 )
193 heightFactor = 1;
194 widthFactor > heightFactor ? board->resize( heightFactor * board->boardWidth() + 2,
195 heightFactor * board->boardHeight() + 2 )
196 : board->resize( widthFactor * board->boardWidth() + 2,
197 widthFactor * board->boardHeight() + 2 );
198
199 // Set size of preview widget
200 widthFactor = showNext->width() / 5;
201 if ( widthFactor < 1 )
202 widthFactor = 1;
203 heightFactor = showNext->height() / 6;
204 if ( heightFactor < 1 )
205 heightFactor = 1;
206 widthFactor > heightFactor ? showNext->resize( heightFactor * 5 + 2, heightFactor * 6 + 2 )
207 : showNext->resize( widthFactor * 5 + 2, widthFactor * 6 + 2 );
208}