summaryrefslogtreecommitdiff
path: root/noncore
authordrw <drw>2004-12-20 14:49:49 (UTC)
committer drw <drw>2004-12-20 14:49:49 (UTC)
commit29b27cf61a7cb862a0236c8b319ff1843669142c (patch) (unidiff)
treea2dee12e4241103259840385020ae317c8814d69 /noncore
parent480a3ae1b4ed502fbd75e345c41ad4c469eff140 (diff)
downloadopie-29b27cf61a7cb862a0236c8b319ff1843669142c.zip
opie-29b27cf61a7cb862a0236c8b319ff1843669142c.tar.gz
opie-29b27cf61a7cb862a0236c8b319ff1843669142c.tar.bz2
Reapply fix for bug #1017 - Tetrix on high resolution screens
Diffstat (limited to 'noncore') (more/less context) (ignore whitespace changes)
-rw-r--r--noncore/games/tetrix/qtetrix.cpp58
-rw-r--r--noncore/games/tetrix/qtetrix.h8
-rw-r--r--noncore/games/tetrix/qtetrixb.cpp4
3 files changed, 58 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
@@ -17,24 +17,25 @@
17** not clear to you. 17** not clear to you.
18** 18**
19**********************************************************************/ 19**********************************************************************/
20 20
21 21
22#include "qtetrix.h" 22#include "qtetrix.h"
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 )
35{ 36{
36 QColor fc; 37 QColor fc;
37 if ( color ) { 38 if ( color ) {
38 QPointArray a; 39 QPointArray a;
39 a.setPoints( 3, x,y+h-1, x,y, x+w-1,y ); 40 a.setPoints( 3, x,y+h-1, x,y, x+w-1,y );
40 p->setPen( color->light() ); 41 p->setPen( color->light() );
@@ -98,77 +99,110 @@ QTetrix::QTetrix( QWidget *parent, const char *name, WFlags f )
98{ 99{
99 setIcon( Resource::loadPixmap( "tetrix_icon" ) ); 100 setIcon( Resource::loadPixmap( "tetrix_icon" ) );
100 setCaption( tr("Tetrix" ) ); 101 setCaption( tr("Tetrix" ) );
101 102
102 QTime t = QTime::currentTime(); 103 QTime t = QTime::currentTime();
103 TetrixPiece::setRandomSeed( (((double)t.hour())+t.minute()+t.second())/ 104 TetrixPiece::setRandomSeed( (((double)t.hour())+t.minute()+t.second())/
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));
116 gl->addWidget( showNext, 0, 1 ); 119 gl->addWidget( showNext, 0, 1 );
117 120
118 l = new QLabel( tr("Score"), gameArea ); 121 l = new QLabel( tr("Score"), gameArea );
119 gl->addWidget( l, 1, 0 ); 122 gl->addWidget( l, 1, 0 );
120 showScore = new QLabel(gameArea); 123 showScore = new QLabel(gameArea);
121 gl->addWidget( showScore, 1, 1 ); 124 gl->addWidget( showScore, 1, 1 );
122 l = new QLabel( tr("Level"), gameArea ); 125 l = new QLabel( tr("Level"), gameArea );
123 gl->addWidget( l, 2, 0 ); 126 gl->addWidget( l, 2, 0 );
124 showLevel = new QLabel(gameArea); 127 showLevel = new QLabel(gameArea);
125 gl->addWidget( showLevel, 2, 1 ); 128 gl->addWidget( showLevel, 2, 1 );
126 l = new QLabel( tr("Removed"), gameArea ); 129 l = new QLabel( tr("Removed"), gameArea );
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 )
166 hs->insertData( hs->getName(), showScore->text().toInt() , showLevel->text().toInt() ); 169 hs->insertData( hs->getName(), showScore->text().toInt() , showLevel->text().toInt() );
167 OHighscoreDialog hscdlg( hs, this, "OHighscoreDialog", true ); 170 OHighscoreDialog hscdlg( hs, this, "OHighscoreDialog", true );
168 hscdlg.exec(); 171 hscdlg.exec();
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}
diff --git a/noncore/games/tetrix/qtetrix.h b/noncore/games/tetrix/qtetrix.h
index c8959c5..8c44b77 100644
--- a/noncore/games/tetrix/qtetrix.h
+++ b/noncore/games/tetrix/qtetrix.h
@@ -48,28 +48,36 @@ private:
48}; 48};
49 49
50 50
51class QTetrix : public QMainWindow 51class QTetrix : public QMainWindow
52{ 52{
53 Q_OBJECT 53 Q_OBJECT
54public: 54public:
55 static QString appName() { return QString::fromLatin1("tetrix"); } 55 static QString appName() { return QString::fromLatin1("tetrix"); }
56 QTetrix( QWidget *parent=0, const char *name=0, WFlags f=0 ); 56 QTetrix( QWidget *parent=0, const char *name=0, WFlags f=0 );
57 void startGame() { board->startGame(); } 57 void startGame() { board->startGame(); }
58 58
59public slots: 59public slots:
60 void setup();
60 void gameOver(); 61 void gameOver();
61 void quit(); 62 void quit();
63
64 void setNext( int x, int y, QColor *color );
65// void setScore( int score );
66// void setLevel( int level );
67// void setLines( int lines );
68
62private: 69private:
63 void keyPressEvent( QKeyEvent *e ) { board->keyPressEvent(e); } 70 void keyPressEvent( QKeyEvent *e ) { board->keyPressEvent(e); }
71 void resizeEvent( QResizeEvent * );
64 72
65 QTetrixBoard *board; 73 QTetrixBoard *board;
66 ShowNextPiece *showNext; 74 ShowNextPiece *showNext;
67 QLabel *showScore; 75 QLabel *showScore;
68 QLabel *showLevel; 76 QLabel *showLevel;
69 QLabel *showLines; 77 QLabel *showLines;
70}; 78};
71 79
72 80
73void drawTetrixButton( QPainter *, int x, int y, int w, int h, 81void drawTetrixButton( QPainter *, int x, int y, int w, int h,
74 const QColor *color ); 82 const QColor *color );
75 83
diff --git a/noncore/games/tetrix/qtetrixb.cpp b/noncore/games/tetrix/qtetrixb.cpp
index 3c179df..8c41fb2 100644
--- a/noncore/games/tetrix/qtetrixb.cpp
+++ b/noncore/games/tetrix/qtetrixb.cpp
@@ -47,24 +47,25 @@ QTetrixBoard::QTetrixBoard( QWidget *p, const char *name )
47 blockHeight = 20; 47 blockHeight = 20;
48 noGame = TRUE; 48 noGame = TRUE;
49 isPaused = FALSE; 49 isPaused = FALSE;
50 waitingAfterLine = FALSE; 50 waitingAfterLine = FALSE;
51 updateTimeoutTime(); // Sets timeoutTime 51 updateTimeoutTime(); // Sets timeoutTime
52} 52}
53 53
54void QTetrixBoard::startGame(int gameType,int fillRandomLines) 54void QTetrixBoard::startGame(int gameType,int fillRandomLines)
55{ 55{
56 if ( isPaused ) 56 if ( isPaused )
57 return; // ignore if game is paused 57 return; // ignore if game is paused
58 noGame = FALSE; 58 noGame = FALSE;
59
59 GenericTetrix::startGame( gameType, fillRandomLines ); 60 GenericTetrix::startGame( gameType, fillRandomLines );
60 // Note that the timer is started by updateLevel! 61 // Note that the timer is started by updateLevel!
61} 62}
62 63
63 64
64void QTetrixBoard::pause() 65void QTetrixBoard::pause()
65{ 66{
66 if ( noGame ) // game not active 67 if ( noGame ) // game not active
67 return; 68 return;
68 isPaused = !isPaused; 69 isPaused = !isPaused;
69 if ( isPaused ) { 70 if ( isPaused ) {
70 timer->stop(); 71 timer->stop();
@@ -197,26 +198,29 @@ void QTetrixBoard::drawContents( QPainter *p )
197 y2 = 0; 198 y2 = 0;
198 if (y2 >= boardHeight()) 199 if (y2 >= boardHeight())
199 y2 = boardHeight() - 1; 200 y2 = boardHeight() - 1;
200 201
201 updateBoard( x1, y1, x2, y2, TRUE ); 202 updateBoard( x1, y1, x2, y2, TRUE );
202 paint = 0; // reset widget painter 203 paint = 0; // reset widget painter
203 return; 204 return;
204} 205}
205 206
206void QTetrixBoard::resizeEvent(QResizeEvent *e) 207void QTetrixBoard::resizeEvent(QResizeEvent *e)
207{ 208{
208 QSize sz = e->size(); 209 QSize sz = e->size();
210
209 blockWidth = (sz.width() - 2)/10; 211 blockWidth = (sz.width() - 2)/10;
210 blockHeight = (sz.height() - 2)/22; 212 blockHeight = (sz.height() - 2)/22;
213/* blockWidth > blockHeight ? blockWidth = blockHeight
214 : blockHeight = blockWidth;*/
211 xOffset = 1; 215 xOffset = 1;
212 //yOffset = 1; 216 //yOffset = 1;
213 yOffset = (sz.height() - 2) - (blockHeight *22); 217 yOffset = (sz.height() - 2) - (blockHeight *22);
214} 218}
215 219
216void QTetrixBoard::keyPressEvent( QKeyEvent *e ) 220void QTetrixBoard::keyPressEvent( QKeyEvent *e )
217{ 221{
218 if ( noGame || isPaused || waitingAfterLine ) 222 if ( noGame || isPaused || waitingAfterLine )
219 return; 223 return;
220 switch( e->key() ) { 224 switch( e->key() ) {
221 case Key_Left : 225 case Key_Left :
222 moveLeft(); 226 moveLeft();