author | kergoth <kergoth> | 2002-06-07 18:53:14 (UTC) |
---|---|---|
committer | kergoth <kergoth> | 2002-06-07 18:53:14 (UTC) |
commit | 640d964cfdc7467f6cacb513087cd3acda2c04f0 (patch) (side-by-side diff) | |
tree | 9a784686c1795f8b1f81eb344598f3b549d43467 /noncore/games/minesweep | |
parent | dfb9c76738bb68e235114c5ad43dbd26a59b98ab (diff) | |
download | opie-640d964cfdc7467f6cacb513087cd3acda2c04f0.zip opie-640d964cfdc7467f6cacb513087cd3acda2c04f0.tar.gz opie-640d964cfdc7467f6cacb513087cd3acda2c04f0.tar.bz2 |
Backing out unintentional merge from TT branch.
-rw-r--r-- | noncore/games/minesweep/minefield.h | 30 | ||||
-rw-r--r-- | noncore/games/minesweep/minesweep.cpp | 35 |
2 files changed, 47 insertions, 18 deletions
diff --git a/noncore/games/minesweep/minefield.h b/noncore/games/minesweep/minefield.h index 4ede435..1349c35 100644 --- a/noncore/games/minesweep/minefield.h +++ b/noncore/games/minesweep/minefield.h @@ -15,73 +15,87 @@ ** ** Contact info@trolltech.com if any conditions of this licensing are ** not clear to you. ** **********************************************************************/ #ifndef MINEFIELD_H #define MINEFIELD_H -#include <qtable.h> +#include <qscrollview.h> class Mine; class Config; -class MineField : public QTable +class MineField : public QScrollView { Q_OBJECT public: MineField( QWidget* parent = 0, const char* name = 0 ); ~MineField(); enum State { Waiting, Playing, GameOver }; State state() const { return stat; } void readConfig(Config&); void writeConfig(Config&) const; int level() const { return lev; } + void setAvailableRect( const QRect & ); public slots: void setup( int level ); void showMines(); signals: void gameOver( bool won ); void gameStarted(); void mineCount( int ); protected: - void paintFocus( QPainter*, const QRect& ); - void viewportMousePressEvent( QMouseEvent* ); - void viewportMouseReleaseEvent( QMouseEvent* ); + + void contentsMousePressEvent( QMouseEvent* ); + void contentsMouseReleaseEvent( QMouseEvent* ); void keyPressEvent( QKeyEvent* ); void keyReleaseEvent( QKeyEvent* ); - + void drawContents( QPainter * p, int clipx, int clipy, int clipw, int cliph ); + int getHint( int row, int col ); - void setHint( Mine* ); + void setHint( int r, int c ); void updateMine( int row, int col ); void paletteChange( const QPalette & ); - + void updateCell( int r, int c ); + bool onBoard( int r, int c ) const { return r >= 0 && r < numRows && c >= 0 && c < numCols; } + Mine *mine( int row, int col ) { return onBoard(row, col ) ? mines[row+numCols*col] : 0; } + const Mine *mine( int row, int col ) const { return onBoard(row, col ) ? mines[row+numCols*col] : 0; } + protected slots: void cellPressed( int row, int col ); void cellClicked( int row, int col ); void held(); private: + int findCellSize(); + void setCellSize( int ); + State stat; void MineField::setState( State st ); void MineField::placeMines(); enum FlagAction { NoAction, FlagOn, FlagNext }; FlagAction flagAction; bool ignoreClick; int currRow; int currCol; + int numRows, numCols; + int minecount; int mineguess; int nonminecount; int lev; + QRect availableRect; + int cellSize; QTimer *holdTimer; + Mine **mines; }; #endif // MINEFIELD_H diff --git a/noncore/games/minesweep/minesweep.cpp b/noncore/games/minesweep/minesweep.cpp index 6492462..c84fe53 100644 --- a/noncore/games/minesweep/minesweep.cpp +++ b/noncore/games/minesweep/minesweep.cpp @@ -214,35 +214,51 @@ void ResultIndicator::timerEvent( QTimerEvent *te ) twoStage = FALSE; timerId = startTimer( 1000 ); } else { delete this; } } +class MineFrame : public QFrame +{ +public: + MineFrame( QWidget *parent, const char *name = 0 ) + :QFrame( parent, name ) {} + void setField( MineField *f ) { field = f; } +protected: + void resizeEvent( QResizeEvent *e ) { + field->setAvailableRect( contentsRect()); + QFrame::resizeEvent(e); + } +private: + MineField *field; +}; + + + MineSweep::MineSweep( QWidget* parent, const char* name, WFlags f ) : QMainWindow( parent, name, f ) { srand(::time(0)); setCaption( tr("Mine Hunt") ); setIcon( Resource::loadPixmap( "minesweep_icon" ) ); - QPEToolBar *menuToolBar = new QPEToolBar( this ); - QPEMenuBar *menuBar = new QPEMenuBar( menuToolBar ); + QPEToolBar *toolBar = new QPEToolBar( this ); + toolBar->setHorizontalStretchable( TRUE ); + + QPEMenuBar *menuBar = new QPEMenuBar( toolBar ); QPopupMenu *gameMenu = new QPopupMenu( this ); gameMenu->insertItem( tr("Beginner"), this, SLOT( beginner() ) ); gameMenu->insertItem( tr("Advanced"), this, SLOT( advanced() ) ); gameMenu->insertItem( tr("Expert"), this, SLOT( expert() ) ); menuBar->insertItem( tr("Game"), gameMenu ); - - QPEToolBar *toolBar = new QPEToolBar( this ); - toolBar->setHorizontalStretchable( TRUE ); guessLCD = new QLCDNumber( toolBar ); toolBar->setStretchableWidget( guessLCD ); QPalette lcdPal( red ); lcdPal.setColor( QColorGroup::Background, QApplication::palette().active().background() ); lcdPal.setColor( QColorGroup::Button, QApplication::palette().active().button() ); @@ -260,27 +276,26 @@ MineSweep::MineSweep( QWidget* parent, const char* name, WFlags f ) // timeLCD->setPalette( lcdPal ); timeLCD->setSegmentStyle( QLCDNumber::Flat ); timeLCD->setFrameStyle( QFrame::NoFrame ); timeLCD->setNumDigits( 5 ); // "mm:ss" timeLCD->setBackgroundMode( PaletteButton ); setToolBarsMovable ( FALSE ); - addToolBar( menuToolBar ); addToolBar( toolBar ); - QFrame *mainframe = new QFrame( this ); + MineFrame *mainframe = new MineFrame( this ); mainframe->setFrameShape( QFrame::Box ); mainframe->setFrameShadow( QFrame::Raised ); - mainframe->setMargin(5); + mainframe->setLineWidth(2); - QBoxLayout *box = new QVBoxLayout( mainframe ); + field = new MineField( mainframe ); - box->addWidget( field, 0, AlignCenter ); + mainframe->setField( field ); QFont fnt = field->font(); fnt.setBold( TRUE ); field->setFont( QFont( fnt ) ); field->setFocus(); setCentralWidget( mainframe ); connect( field, SIGNAL( gameOver( bool ) ), this, SLOT( gameOver( bool ) ) ); connect( field, SIGNAL( mineCount( int ) ), this, SLOT( setCounter( int ) ) ); |