author | zecke <zecke> | 2004-02-06 12:28:33 (UTC) |
---|---|---|
committer | zecke <zecke> | 2004-02-06 12:28:33 (UTC) |
commit | c0207d7284d0f91a3a20f4abda2c6846c8dd8595 (patch) (side-by-side diff) | |
tree | c95157ef87c805d870a68400858ff65b1ded03ac | |
parent | 0c74629e8f5c12a9b5a282b817f884fa10dee491 (diff) | |
download | opie-c0207d7284d0f91a3a20f4abda2c6846c8dd8595.zip opie-c0207d7284d0f91a3a20f4abda2c6846c8dd8595.tar.gz opie-c0207d7284d0f91a3a20f4abda2c6846c8dd8595.tar.bz2 |
Merge with Qtopia sources
-rw-r--r-- | noncore/games/minesweep/minefield.cpp | 144 | ||||
-rw-r--r-- | noncore/games/minesweep/minefield.h | 7 | ||||
-rw-r--r-- | noncore/games/minesweep/minesweep.cpp | 34 |
3 files changed, 110 insertions, 75 deletions
diff --git a/noncore/games/minesweep/minefield.cpp b/noncore/games/minesweep/minefield.cpp index 04cfb97..1790110 100644 --- a/noncore/games/minesweep/minefield.cpp +++ b/noncore/games/minesweep/minefield.cpp @@ -1,5 +1,5 @@ /********************************************************************** -** Copyright (C) 2000 Trolltech AS. All rights reserved. +** Copyright (C) 2000-2002 Trolltech AS. All rights reserved. ** -** This file is part of Qtopia Environment. +** This file is part of the Qtopia Environment. ** @@ -21,3 +21,4 @@ -#include <qpe/config.h> +#include <qtopia/config.h> +#include <qtopia/qpeapplication.h> @@ -71,3 +72,3 @@ static const char *pix_mine[]={ static const int maxGrid = 28; -static const int minGrid = 9; +static const int minGrid = 12; @@ -186,3 +187,5 @@ void Mine::paint( QPainter* p, const QColorGroup &cg, const QRect& cr ) int y = cr.y(); - if ( !knownField ) { + if ( !knownField || knownField->width() != cr.width() || + knownField->height() != cr.height() ) { + delete knownField; knownField = new QPixmap( cr.width(), cr.height() ); @@ -190,3 +193,3 @@ void Mine::paint( QPainter* p, const QColorGroup &cg, const QRect& cr ) QBrush br( cg.button().dark(115) ); - qDrawWinButton( &pp, cr, cg, TRUE, &br ); + qDrawWinButton( &pp, QRect( 0, 0, cr.width(), cr.height() ), cg, TRUE, &br ); } @@ -195,3 +198,5 @@ void Mine::paint( QPainter* p, const QColorGroup &cg, const QRect& cr ) - if ( !unknownField ) { + if ( !unknownField || unknownField->width() != cr.width() || + unknownField->height() != cr.height() ) { + delete unknownField; unknownField = new QPixmap( cr.width(), cr.height() ); @@ -199,6 +204,8 @@ void Mine::paint( QPainter* p, const QColorGroup &cg, const QRect& cr ) QBrush br( cg.button() ); - qDrawWinButton( &pp, cr, cg, FALSE, &br ); + qDrawWinButton( &pp, QRect( 0, 0, cr.width(), cr.height() ), cg, FALSE, &br ); } - if ( !flag_pix ) { + if ( !flag_pix || flag_pix->width() != cr.width()-pmmarg*2 || + flag_pix->height() != cr.height()-pmmarg*2 ) { + delete flag_pix; flag_pix = new QPixmap( cr.width()-pmmarg*2, cr.height()-pmmarg*2 ); @@ -207,3 +214,5 @@ void Mine::paint( QPainter* p, const QColorGroup &cg, const QRect& cr ) - if ( !mine_pix ) { + if ( !mine_pix || mine_pix->width() != cr.width()-pmmarg*2 || + mine_pix->height() != cr.height()-pmmarg*2 ) { + delete mine_pix; mine_pix = new QPixmap( cr.width()-pmmarg*2, cr.height()-pmmarg*2 ); @@ -285,2 +294,3 @@ MineField::MineField( QWidget* parent, const char* name ) { + viewport()->setBackgroundMode( NoBackground ); setState( GameOver ); @@ -288,3 +298,3 @@ MineField::MineField( QWidget* parent, const char* name ) setSizePolicy( QSizePolicy( QSizePolicy::Maximum, QSizePolicy::Maximum ) ); - + setFocusPolicy( QWidget::NoFocus ); @@ -301,3 +311,5 @@ MineField::MineField( QWidget* parent, const char* name ) cellSize = -1; - mines = 0; + + numRows = numCols = 0; + mines = NULL; } @@ -306,11 +318,5 @@ MineField::~MineField() { - int i; - if ( mines ) - { - for ( i = 0; i < numCols*numRows; i++ ) - { - delete mines[i]; - } - delete[] mines; - } + for ( int i = 0; i < numCols*numRows; i++ ) + delete mines[i]; + delete[] mines; } @@ -329,10 +335,5 @@ void MineField::setup( int level ) int i; - if ( mines ) - { - for ( i = 0; i < numCols*numRows; i++ ) - { - delete mines[i]; - } - delete[] mines; - } + for ( i = 0; i < numCols*numRows; i++ ) + delete mines[i]; + delete[] mines; @@ -345,5 +346,5 @@ void MineField::setup( int level ) case 2: - numRows = 16; - numCols = 16; - minecount = 45; + numRows = 13; + numCols = 13; + minecount = 33; break; @@ -355,3 +356,3 @@ void MineField::setup( int level ) } - mines = new Mine*[numRows*numCols]; + mines = new Mine* [numRows*numCols]; for ( i = 0; i < numCols*numRows; i++ ) @@ -359,3 +360,3 @@ void MineField::setup( int level ) - + nonminecount = numRows*numCols - minecount; @@ -373,3 +374,3 @@ void MineField::setup( int level ) -void MineField::drawContents( QPainter * p, int clipx, int clipy, int clipw, int cliph ) +void MineField::drawContents( QPainter * p, int clipx, int clipy, int clipw, int cliph ) { @@ -379,3 +380,3 @@ void MineField::drawContents( QPainter * p, int clipx, int clipy, int clipw, int int r2 = ( clipy + cliph - 1 ) / cellSize; - + for ( int c = c1; c <= c2 ; c++ ) { @@ -399,3 +400,7 @@ void MineField::setAvailableRect( const QRect &r ) int newCellSize = findCellSize(); - if ( newCellSize != cellSize ) { + + + if ( newCellSize == cellSize ) { + setCellSize( cellSize ); + } else { viewport()->setUpdatesEnabled( FALSE ); @@ -409,6 +414,6 @@ int MineField::findCellSize() { - int w = availableRect.width() - 1; - int h = availableRect.height() - 1; + int w = availableRect.width() - 2; + int h = availableRect.height() - 2; int cellsize; - + cellsize = QMIN( w/numCols, h/numRows ); @@ -421,17 +426,25 @@ void MineField::setCellSize( int cellsize ) { - cellSize = cellsize; - - int w = availableRect.width(); - int h = availableRect.height(); - + int b = 2; + int w2 = cellsize*numCols; int h2 = cellsize*numRows; - - resizeContents( w2, h2 ); - - int b = 5; - - setGeometry( availableRect.x() + (w-w2)/2, availableRect.y() + (h-h2)/2, - w2+b, h2+b ); -// QMIN(w,w2+b), QMIN(h,h2+b) ); + + int w = QMIN( availableRect.width(), w2+b ); + int h = QMIN( availableRect.height(), h2+b ); + + // + // Don't rely on the change in cellsize to force a resize, + // as it's possible to have the same size cells when going + // from a large play area to a small one. + // + resizeContents(w2, h2); + + if ( availableRect.height() < h2 && + availableRect.width() - w > style().scrollBarExtent().width() ) { + w += style().scrollBarExtent().width(); + } + + setGeometry( availableRect.x() + (availableRect.width()-w)/2, + availableRect.y() + (availableRect.height()-h)/2, w, h ); + cellSize = cellsize; } @@ -615,6 +628,10 @@ void MineField::updateMine( int row, int col ) if ( m->state() == Mine::Flagged ) { - --mineguess; - emit mineCount( mineguess ); - if ( m->isMined() ) - --minecount; + if (mineguess > 0) { + --mineguess; + emit mineCount( mineguess ); + if ( m->isMined() ) + --minecount; + } else { + m->setState(Mine::Hidden); + } } else if ( wasFlagged ) { @@ -683,2 +700,3 @@ void MineField::readConfig(Config& cfg) QString grid = cfg.readEntry("Grid"); + int x; if ( !grid.isEmpty() ) { @@ -687,3 +705,3 @@ void MineField::readConfig(Config& cfg) mineguess=0; - for ( int x = 0; x < numCols; x++ ) { + for ( x = 0; x < numCols; x++ ) { for ( int y = 0; y < numRows; y++ ) { @@ -713,3 +731,3 @@ void MineField::readConfig(Config& cfg) } - for ( int x = 0; x < numCols; x++ ) { + for ( x = 0; x < numCols; x++ ) { for ( int y = 0; y < numRows; y++ ) { @@ -725 +743,9 @@ void MineField::readConfig(Config& cfg) +QSize MineField::sizeHint() const +{ + if ( qApp->desktop()->width() >= 240 ) + return QSize(200,200); + else + return QSize(160, 160); +} + diff --git a/noncore/games/minesweep/minefield.h b/noncore/games/minesweep/minefield.h index 1349c35..e243d77 100644 --- a/noncore/games/minesweep/minefield.h +++ b/noncore/games/minesweep/minefield.h @@ -1,5 +1,5 @@ /********************************************************************** -** Copyright (C) 2000 Trolltech AS. All rights reserved. +** Copyright (C) 2000-2002 Trolltech AS. All rights reserved. ** -** This file is part of Qtopia Environment. +** This file is part of the Qtopia Environment. ** @@ -44,2 +44,5 @@ public: void setAvailableRect( const QRect & ); + + QSize sizeHint() const; + public slots: diff --git a/noncore/games/minesweep/minesweep.cpp b/noncore/games/minesweep/minesweep.cpp index 7214a73..d707dab 100644 --- a/noncore/games/minesweep/minesweep.cpp +++ b/noncore/games/minesweep/minesweep.cpp @@ -1,5 +1,5 @@ /********************************************************************** -** Copyright (C) 2000 Trolltech AS. All rights reserved. +** Copyright (C) 2000-2002 Trolltech AS. All rights reserved. ** -** This file is part of Qtopia Environment. +** This file is part of the Qtopia Environment. ** @@ -23,7 +23,7 @@ -#include <qpe/qpeapplication.h> -#include <qpe/resource.h> -#include <qpe/config.h> +#include <qtopia/qpeapplication.h> +#include <qtopia/resource.h> +#include <qtopia/config.h> -#include <qpe/qpetoolbar.h> +#include <qtoolbar.h> #include <qmenubar.h> @@ -200,2 +200,3 @@ void ResultIndicator::center() QSize s = sizeHint()*3; + s.setWidth( QMIN(s.width(), w->width()) ); pp = QPoint( pp.x() + w->width()/2 - s.width()/2, @@ -226,4 +227,7 @@ public: MineFrame( QWidget *parent, const char *name = 0 ) - :QFrame( parent, name ) {} - void setField( MineField *f ) { field = f; } + :QFrame( parent, name ), field(0) {} + void setField( MineField *f ) { + field = f; + setMinimumSize( field->sizeHint() ); + } protected: @@ -242,6 +246,6 @@ MineSweep::MineSweep( QWidget* parent, const char* name, WFlags f ) { - QPEApplication::setInputMethodHint(this, QPEApplication::AlwaysOff ); srand(::time(0)); setCaption( tr("Mine Hunt") ); - setIcon( Resource::loadPixmap( "minesweep_icon" ) ); + QPEApplication::setInputMethodHint(this, QPEApplication::AlwaysOff ); + setIcon( Resource::loadPixmap( "minesweep/MineHunt" ) ); @@ -255,3 +259,6 @@ MineSweep::MineSweep( QWidget* parent, const char* name, WFlags f ) gameMenu->insertItem( tr("Advanced"), this, SLOT( advanced() ) ); - gameMenu->insertItem( tr("Expert"), this, SLOT( expert() ) ); + + if (qApp->desktop()->width() >= 240) { + gameMenu->insertItem( tr("Expert"), this, SLOT( expert() ) ); + } @@ -301,4 +308,4 @@ MineSweep::MineSweep( QWidget* parent, const char* name, WFlags f ) - connect( field, SIGNAL( gameOver( bool ) ), this, SLOT( gameOver( bool ) ) ); - connect( field, SIGNAL( mineCount( int ) ), this, SLOT( setCounter( int ) ) ); + connect( field, SIGNAL( gameOver(bool) ), this, SLOT( gameOver(bool) ) ); + connect( field, SIGNAL( mineCount(int) ), this, SLOT( setCounter(int) ) ); connect( field, SIGNAL( gameStarted()), this, SLOT( startPlaying() ) ); @@ -306,3 +313,2 @@ MineSweep::MineSweep( QWidget* parent, const char* name, WFlags f ) timer = new QTimer( this ); - connect( timer, SIGNAL( timeout() ), this, SLOT( updateTime() ) ); |