author | ar <ar> | 2004-02-14 16:06:45 (UTC) |
---|---|---|
committer | ar <ar> | 2004-02-14 16:06:45 (UTC) |
commit | 1ab6282d6869ca200133a0e47323ae9a760b3400 (patch) (side-by-side diff) | |
tree | a7f2b4fb6f34edb4b50f00b12cf649b9cf59b8ca | |
parent | c7cf5faa7f1512fa48fb298a75902d4557bc9cfa (diff) | |
download | opie-1ab6282d6869ca200133a0e47323ae9a760b3400.zip opie-1ab6282d6869ca200133a0e47323ae9a760b3400.tar.gz opie-1ab6282d6869ca200133a0e47323ae9a760b3400.tar.bz2 |
improve support for BigScreen
-rw-r--r-- | noncore/games/backgammon/aidialog.cpp | 3 | ||||
-rw-r--r-- | noncore/games/backgammon/filedialog.cpp | 3 | ||||
-rw-r--r-- | noncore/games/backgammon/playerdialog.cpp | 4 | ||||
-rw-r--r-- | noncore/games/backgammon/rulesdialog.cpp | 4 | ||||
-rw-r--r-- | noncore/games/backgammon/themedialog.cpp | 2 | ||||
-rw-r--r-- | noncore/games/sfcave/helpwindow.cpp | 4 | ||||
-rw-r--r-- | noncore/games/tetrix/ohighscoredlg.cpp | 3 | ||||
-rw-r--r-- | noncore/games/tictac/tictac.cpp | 4 |
8 files changed, 18 insertions, 9 deletions
diff --git a/noncore/games/backgammon/aidialog.cpp b/noncore/games/backgammon/aidialog.cpp index 7dfe403..32e9b52 100644 --- a/noncore/games/backgammon/aidialog.cpp +++ b/noncore/games/backgammon/aidialog.cpp @@ -1,127 +1,128 @@ #include "aidialog.h" #include <qgroupbox.h> +#include <qpe/qpeapplication.h> AI_Dialog::AI_Dialog(QWidget* parent,const char* name,bool modal,WFlags f) : QDialog(parent,name,modal,f) { setCaption("AI Configuration"); QGroupBox* settings=new QGroupBox(tr( "Settings" ),this); settings->setGeometry(10,5,220,170); QLabel* rescue_label=new QLabel(tr( "<b>Rescue</b>" ),settings); rescue_label->setGeometry(50,20,50,20); rescue=new QSpinBox(0,6,1,settings); rescue->setGeometry(100,20,40,20); QPushButton* rescuehelp=new QPushButton(tr( "?" ),settings); rescuehelp->setGeometry(140,20,20,20); connect(rescuehelp,SIGNAL(pressed()),this,SLOT(rescuehelp_pressed())); connect(rescuehelp,SIGNAL(released()),this,SLOT(rescuehelp_released())); QLabel* eliminate_label=new QLabel(tr( "<b>Eliminate</b>" ),settings); eliminate_label->setGeometry(50,40,50,20); eliminate=new QSpinBox(0,6,1,settings); eliminate->setGeometry(100,40,40,20); QPushButton* eliminatehelp=new QPushButton(tr( "?" ),settings); eliminatehelp->setGeometry(140,40,20,20); connect(eliminatehelp,SIGNAL(pressed()),this,SLOT(eliminatehelp_pressed())); connect(eliminatehelp,SIGNAL(released()),this,SLOT(eliminatehelp_released())); QLabel* expose_label=new QLabel(tr( "<b>Expose</b>" ),settings); expose_label->setGeometry(50,60,50,20); expose=new QSpinBox(0,6,1,settings); expose->setGeometry(100,60,40,20); QPushButton* exposeehelp=new QPushButton(tr( "?" ),settings); exposeehelp->setGeometry(140,60,20,20); connect(exposeehelp,SIGNAL(pressed()),this,SLOT(exposehelp_pressed())); connect(exposeehelp,SIGNAL(released()),this,SLOT(exposehelp_released())); QLabel* protect_label=new QLabel(tr( "<b>Protect</b>" ),settings); protect_label->setGeometry(50,80,50,20); protect=new QSpinBox(0,6,1,settings); protect->setGeometry(100,80,40,20); QPushButton* protecthelp=new QPushButton(tr( "?" ),settings); protecthelp->setGeometry(140,80,20,20); connect(protecthelp,SIGNAL(pressed()),this,SLOT(protecthelp_pressed())); connect(protecthelp,SIGNAL(released()),this,SLOT(protecthelp_released())); QLabel* safe_label=new QLabel(tr( "<b>Safe</b>" ),settings); safe_label->setGeometry(50,100,50,20); safe=new QSpinBox(0,6,1,settings); safe->setGeometry(100,100,40,20); QPushButton* safeehelp=new QPushButton(tr( "?" ),settings); safeehelp->setGeometry(140,100,20,20); connect(safeehelp,SIGNAL(pressed()),this,SLOT(safehelp_pressed())); connect(safeehelp,SIGNAL(released()),this,SLOT(safehelp_released())); QLabel* empty_label=new QLabel(tr( "<b>Empty</b>" ),settings); empty_label->setGeometry(50,120,50,20); empty=new QSpinBox(0,6,1,settings); empty->setGeometry(100,120,40,20); QPushButton* emptyhelp=new QPushButton(tr( "?" ),settings); emptyhelp->setGeometry(140,120,20,20); connect(emptyhelp,SIGNAL(pressed()),this,SLOT(emptyhelp_pressed())); connect(emptyhelp,SIGNAL(released()),this,SLOT(emptyhelp_released())); defaultvalues=new QPushButton(tr( "Default Values" ),settings); defaultvalues->setGeometry(60,140,90,20); connect(defaultvalues,SIGNAL(clicked()),this,SLOT(setDefaultValues())); QGroupBox* helpbox=new QGroupBox(tr( "Help" ),this); helpbox->setGeometry(10,185,220,90); help=new QLabel(helpbox); help->setGeometry(10,15,200,65); setHelpText(); - showMaximized(); + QPEApplication::showDialog( this ); } AI_Dialog::~AI_Dialog() { } void AI_Dialog::rescuehelp_pressed() { setHelpText("rescue"); } void AI_Dialog::rescuehelp_released() { setHelpText(); } void AI_Dialog::eliminatehelp_pressed() { setHelpText("eliminate"); } void AI_Dialog::eliminatehelp_released() { setHelpText(); } void AI_Dialog::exposehelp_pressed() { setHelpText("expose"); } void AI_Dialog::exposehelp_released() { setHelpText(); } void AI_Dialog::protecthelp_pressed() { setHelpText("protect"); } void AI_Dialog::protecthelp_released() { setHelpText(); } void AI_Dialog::safehelp_pressed() diff --git a/noncore/games/backgammon/filedialog.cpp b/noncore/games/backgammon/filedialog.cpp index 6c858a2..a5e71c9 100644 --- a/noncore/games/backgammon/filedialog.cpp +++ b/noncore/games/backgammon/filedialog.cpp @@ -1,64 +1,65 @@ #include "filedialog.h" #include <qdir.h> #include <qfileinfo.h> #include <qmessagebox.h> #include <qpixmap.h> #include <qpushbutton.h> #include <qpe/qpeapplication.h> FileDialog::FileDialog(QWidget* parent,QString header,QString extension,const char* name,bool modal,WFlags f) :QDialog(parent,name,modal,f) { setCaption(header); ext=extension; dirselector=new QListView(this); dirselector->setGeometry(1,10,235,200); dirselector->addColumn("Files"); connect(dirselector,SIGNAL(clicked(QListViewItem*)),this,SLOT(selectorclicked(QListViewItem*))); getCurrentDir(); file_name="user"; fileinput=new QLineEdit(file_name,this); fileinput->setGeometry(1,220,235,20); - showMaximized(); +
+ QPEApplication::showDialog( this );
} FileDialog::~FileDialog() {} void FileDialog::selectorclicked(QListViewItem* entry) { if(entry==NULL) return; file_name=entry->text(0); fileinput->setText(file_name); } void FileDialog::getCurrentDir() { dirselector->clear(); QDir dir(QPEApplication::qpeDir()+"/backgammon"); dir.setFilter(QDir::Files); QFileInfoListIterator it(*(dir.entryInfoList())); QFileInfo* fi; int ext_length=ext.length(); while((fi=it.current())) // go through all file and subdirs { QString file=fi->fileName(); if(file.right(ext_length)==ext && file) { file=file.left(file.length()-ext_length); new QListViewItem(dirselector,file); } ++it; } } QString FileDialog::filename() { return file_name; } diff --git a/noncore/games/backgammon/playerdialog.cpp b/noncore/games/backgammon/playerdialog.cpp index c16f202..0faf7e2 100644 --- a/noncore/games/backgammon/playerdialog.cpp +++ b/noncore/games/backgammon/playerdialog.cpp @@ -1,82 +1,84 @@ #include "playerdialog.h" #include <qgroupbox.h> +#include <qpe/qpeapplication.h> + PlayerDialog::PlayerDialog(QWidget* parent,const char* name,bool modal,WFlags f) :QDialog(parent,name,modal,f) { auto2=false; auto2=true; setCaption("Player Settings"); QGroupBox* player1_box=new QGroupBox("Player 1",this); player1_box->setGeometry(10,30,220,60); manual_button1=new QRadioButton("Human",player1_box); connect(manual_button1,SIGNAL(clicked()),this,SLOT(button_manual1())); manual_button1->setGeometry(10,20,100,20); auto_button1=new QRadioButton("Computer",player1_box); connect(auto_button1,SIGNAL(clicked()),this,SLOT(button_auto1())); auto_button1->setGeometry(110,20,100,20); button1_state(auto1); QGroupBox* player2_box=new QGroupBox("Player 2",this); player2_box->setGeometry(10,150,220,60); manual_button2=new QRadioButton("Human",player2_box); connect(manual_button2,SIGNAL(clicked()),this,SLOT(button_manual2())); manual_button2->setGeometry(10,20,100,20); auto_button2=new QRadioButton("Computer",player2_box); connect(auto_button2,SIGNAL(clicked()),this,SLOT(button_auto2())); auto_button2->setGeometry(110,20,100,20); button2_state(auto2); - showMaximized(); + QPEApplication::showDialog( this ); } PlayerDialog::~PlayerDialog() {} void PlayerDialog::button_manual1() { auto1=false; button1_state(auto1); } void PlayerDialog::button_auto1() { auto1=true; button1_state(auto1); } void PlayerDialog::button_manual2() { auto2=false; button2_state(auto2); } void PlayerDialog::button_auto2() { auto2=true; button2_state(auto2); } void PlayerDialog::button1_state(bool computer) { if(computer) { manual_button1->setChecked(false); auto_button1->setChecked(true); } else { manual_button1->setChecked(true); auto_button1->setChecked(false); } } void PlayerDialog::button2_state(bool computer) { if(computer) { diff --git a/noncore/games/backgammon/rulesdialog.cpp b/noncore/games/backgammon/rulesdialog.cpp index 85c3db3..5e17eeb 100644 --- a/noncore/games/backgammon/rulesdialog.cpp +++ b/noncore/games/backgammon/rulesdialog.cpp @@ -1,77 +1,79 @@ #include "rulesdialog.h" #include <qgroupbox.h> #include <qlabel.h> +#include <qpe/qpeapplication.h> + RulesDialog::RulesDialog(QWidget* parent,const char* name,bool modal,WFlags f) : QDialog(parent,name,modal,f) { setCaption("Rules Configuration"); QLabel* header=new QLabel("<b>Change the game rules here</b>",this); header->setGeometry(10,10,200,20); // QGroupBox* pieces_out_box=new QGroupBox("Movement",this); pieces_out_box->setGeometry(10,10,220,120); pieces_out=new QCheckBox("Don't care about others",pieces_out_box); pieces_out->setGeometry(10,20,200,20); connect(pieces_out,SIGNAL(clicked()),this,SLOT(pieces_out_clicked())); QLabel* pieces_out_help=new QLabel("allow movement of the pieses\neven if there are pieces knocked\nout by the opponent",pieces_out_box); pieces_out_help->setGeometry(10,40,200,60); // QGroupBox* nice_dice_box=new QGroupBox("Dice",this); nice_dice_box->setGeometry(10,140,220,120); nice_dice=new QCheckBox("Big dice for small numbers",nice_dice_box); nice_dice->setGeometry(10,20,200,20); connect(nice_dice,SIGNAL(clicked()),this,SLOT(nice_dice_clicked())); QLabel* nice_dice_help=new QLabel("allow to rescue pieces with dice\nvalues graeter than the distance\nto the players endzone.",nice_dice_box); nice_dice_help->setGeometry(10,40,200,60); - showMaximized(); + QPEApplication::showDialog( this ); } RulesDialog::~RulesDialog() { } void RulesDialog::pieces_out_clicked() { if(pieces_out->isChecked()) rules.move_with_pieces_out=true; else rules.move_with_pieces_out=false; } void RulesDialog::nice_dice_clicked() { if(nice_dice->isChecked()) rules.generous_dice=true; else rules.generous_dice=false; } void RulesDialog::setRules(const Rules& new_rules) { rules=new_rules; if(rules.move_with_pieces_out) pieces_out->setChecked(true); else pieces_out->setChecked(false); if(rules.generous_dice) nice_dice->setChecked(true); else nice_dice->setChecked(false); } Rules RulesDialog::getRules() { return rules; } diff --git a/noncore/games/backgammon/themedialog.cpp b/noncore/games/backgammon/themedialog.cpp index dcb957c..f342381 100644 --- a/noncore/games/backgammon/themedialog.cpp +++ b/noncore/games/backgammon/themedialog.cpp @@ -14,97 +14,97 @@ ThemeDialog::ThemeDialog(QWidget* parent,const char* name,bool modal,WFlags f) QLabel* labelname=new QLabel("name",this); labelname->setGeometry(0,5,40,20); lineName=new QLineEdit("user",this); lineName->setGeometry(40,5,195,20); QLabel* labelboard=new QLabel("board",this); labelboard->setGeometry(0,30,40,20); boxboard=new QComboBox(this,""); boxboard->setGeometry(40,30,195,20); fillBox("boards",boxboard); QLabel* labelpiecesA=new QLabel("pieces1",this); labelpiecesA->setGeometry(0,70,40,20); boxpiecesA=new QComboBox(this); boxpiecesA->setGeometry(40,70,195,20); fillBox("pieces",boxpiecesA); QLabel* labelpiecesB=new QLabel("pieces2",this); labelpiecesB->setGeometry(0,95,40,20); boxpiecesB=new QComboBox(this); boxpiecesB->setGeometry(40,95,195,20); fillBox("pieces",boxpiecesB); QLabel* labeldiceA=new QLabel("dice1",this); labeldiceA->setGeometry(0,135,40,20); boxdiceA=new QComboBox(this); boxdiceA->setGeometry(40,135,195,20); fillBox("dice",boxdiceA); QLabel* labeldiceB=new QLabel("dice2",this); labeldiceB->setGeometry(0,160,40,20); boxdiceB=new QComboBox(this); boxdiceB->setGeometry(40,160,195,20); fillBox("dice",boxdiceB); QLabel* labelodds=new QLabel("odds",this); labelodds->setGeometry(0,200,40,20); boxodds=new QComboBox(this); boxodds->setGeometry(40,200,195,20); fillBox("odds",boxodds); boxodds->setEnabled(false); QLabel* labeltable=new QLabel("table",this); labeltable->setGeometry(0,225,40,20); boxtable=new QComboBox(this); boxtable->setGeometry(40,225,195,20); fillBox("table",boxtable); - showMaximized(); + QPEApplication::showDialog( this ); } ThemeDialog::~ThemeDialog() {} ImageNames ThemeDialog::getNames() { ImageNames names; names.theme=lineName->text(); names.board=boxboard->currentText(); names.pieces1=boxpiecesA->currentText(); names.pieces2=boxpiecesB->currentText(); names.dice1=boxdiceA->currentText(); names.dice2=boxdiceB->currentText(); names.odds=boxodds->currentText(); names.table=boxtable->currentText(); return names; } void ThemeDialog::setCurrent(const ImageNames& current) { int a=0; lineName->setText(current.theme); for(a=0;a<boxboard->count();a++) { if(boxboard->text(a)==current.board) { boxboard->setCurrentItem(a); break; } } for(a=0;a<boxpiecesA->count();a++) { if(boxpiecesA->text(a)==current.pieces1) { boxpiecesA->setCurrentItem(a); break; } } for(a=0;a<boxpiecesB->count();a++) { if(boxpiecesB->text(a)==current.pieces2) { boxpiecesB->setCurrentItem(a); break; } } diff --git a/noncore/games/sfcave/helpwindow.cpp b/noncore/games/sfcave/helpwindow.cpp index c920312..544e237 100644 --- a/noncore/games/sfcave/helpwindow.cpp +++ b/noncore/games/sfcave/helpwindow.cpp @@ -1,79 +1,81 @@ /*************************************************************************** helpwindow.cpp - description ------------------- begin : Sun Sep 8 2002 copyright : (C) 2002 by Andy Qua email : andy.qua@blueyonder.co.uk ***************************************************************************/ /*************************************************************************** * * * This program is free software; you can redistribute it and/or modify * * it under the terms of the GNU General Public License as published by * * the Free Software Foundation; either version 2 of the License, or * * (at your option) any later version. * * * ***************************************************************************/ #include <qwidget.h> #include <qlayout.h> #include <qstring.h> #include <qtextview.h> +#include <qpe/qpeapplication.h> + #include "helpwindow.h" #define HELP_TEXT \ "<qt><h1>SFCave Help</h1><p> " \ "SFCave is a flying game for the Zaurus.<br><br> " \ "The aim is to stay alive for as long as possible and get the highest score " \ "you can.<br><br>" \ "There are three game types currently - SFCave, Gates, and Fly.<br>" \ "<b>SFCave</b> is a remake of the classic SFCave game - fly through the " \ "cavern avoiding all the blocks that just happen to be hanging in " \ "midair<br><br>" \ "<b>Gates</b> is similar to SFCave but instead you must fly through the " \ "without crashing.<br><br>" \ "<b>Fly</b> is somewhat different to SFCave and above. Instead, you have " \ "are flying in the open air above a scrolling landscape, and the aim is to " \ "hug the ground - the closer to the land you fly the more points " \ "scored.<br><br><br>" \ "Basic instruction - Press <b>Up</B> or <b>Down</b> on the circle pad to " \ "start a new game, press the middle of the pad to apply thrust (makes you " \ "go up), and release the pad to remove thrust and drop down.<br><br>" \ "Also, if playing the Fly game, you can press z to toggle the display " \ "of the scoring zones. This will display 4 red lines at varying heights " \ "above the landscape - if your ship falls into this zone, point are scored. " \ "The closer to the landscape you get the more points you get.<br><br>" \ "In addition, SFCave has replays - save and load too so you can show off to all " \ "your friends (or vice versa). Currently, this is in its infancy but will improve.<br>" \ "To use, once you have crashed, press 'r' to replay the last game.<br>" \ "To save the replay press 's'.<br>" \ "To load a saved replay press 'l' (after you've crashed at least once).<br><br>" \ "Replays are currently saved to your home directory in a file called sfcave.replay." \ "This file can be copied and given to others as long as it it put in their home directory.<br><br>" \ "Have lots of fun.<br>" \ "Andy" \ "</p></qt>" HelpWindow::HelpWindow( QWidget *parent, const char *name, bool modal, WFlags flags ) : QDialog( parent, name, modal, flags ) { // resize( 230, 280 ); setCaption( "Help for SFCave" ); QVBoxLayout *layout = new QVBoxLayout( this ); QString text = HELP_TEXT;; QTextView *view = new QTextView( text, 0, this, "view" ); layout->insertSpacing( -1, 5 ); layout->insertWidget( -1, view ); layout->insertSpacing( -1, 5 ); - showMaximized(); + QPEApplication::showDialog( this ); } HelpWindow::~HelpWindow() { } diff --git a/noncore/games/tetrix/ohighscoredlg.cpp b/noncore/games/tetrix/ohighscoredlg.cpp index cf0dcf7..7581f51 100644 --- a/noncore/games/tetrix/ohighscoredlg.cpp +++ b/noncore/games/tetrix/ohighscoredlg.cpp @@ -1,67 +1,68 @@ /*************************************************************************** begin : January 2003 copyright : ( C ) 2003 by Carsten Niehaus email : cniehaus@handhelds.org **************************************************************************/ /*************************************************************************** * * * This program is free software; you can redistribute it and/or modify * * it under the terms of the GNU General Public License as published by * * the Free Software Foundation; either version 2 of the License, or * * ( at your option ) any later version. * * * **************************************************************************/ #include <qdialog.h> #include <qpe/config.h> #include <qlayout.h> #include <qpe/config.h> +#include <qpe/qpeapplication.h> #include <qstring.h> #include <qhbox.h> #include <qvbox.h> #include <qlabel.h> #include <qlistview.h> #include <qlineedit.h> #include "ohighscoredlg.h" OHighscore::OHighscore( int score , int playerLevel ) { pLevel = playerLevel; getList(); checkIfItIsANewhighscore( score ); } OHighscore::~OHighscore() { std::list<t_playerData*>::iterator deleteIterator = playerData.begin(); for ( ; deleteIterator != playerData.end() ; deleteIterator++ ) { delete ( *deleteIterator ); } } void OHighscore::getList() { Config cfg ( "tetrix" ); cfg.setGroup( QString::number( 1 ) ); lowest = cfg.readNumEntry( "Points" ); playerData.clear(); int rest = 1; //for the filling up later for ( int i = 1 ; i < 11 ; i++ ) { if ( cfg.hasGroup( QString::number( i ) ) ) { cfg.setGroup( QString::number( i ) ); int temp = cfg.readNumEntry( "Points" ); t_playerData *pPlayerData = new t_playerData; pPlayerData->sName = cfg.readEntry( "Name" ); pPlayerData->points = temp; pPlayerData->level = cfg.readNumEntry( "Level" ); playerData.push_back( pPlayerData ); @@ -124,76 +125,76 @@ void OHighscore::insertData( QString name , int punkte , int playerLevel ) while ( insertIterator != playerData.end() ) { cfg.setGroup( QString::number( entryNumber ) ); cfg.writeEntry( "Name" , ( *insertIterator )->sName ); cfg.writeEntry( "Points" , ( *insertIterator )->points ); cfg.writeEntry( "Level" , ( *insertIterator )->level ); entryNumber++; insertIterator++; } //////////////////////////////////////// return; } insertIterator++; } } QString OHighscore::getName() { QString name; QDialog *d = new QDialog ( this, 0, true ); d->setCaption( tr( "Enter your name!" )); QLineEdit *ed = new QLineEdit ( d ); ( new QVBoxLayout ( d, 3, 3 ))->addWidget ( ed ); ed->setFocus ( ); if ( d->exec() == QDialog::Accepted ) { name = ed->text(); } //delete d; return name; } OHighscoreDialog::OHighscoreDialog(OHighscore *highscore, QWidget *parent, const char *name, bool modal) : QDialog(parent, name, modal) { hs_ = highscore; setCaption( tr( "Highscores" ) ); vbox_layout = new QVBoxLayout( this, 4 , 4 ); list = new QListView( this ); list->setSorting( -1 ); list->addColumn( tr( "#" )); list->addColumn( tr( "Name" )); list->addColumn( tr( "Points" )); list->addColumn( tr( "Level" )); createHighscoreListView(); vbox_layout->addWidget( list ); - showMaximized(); + QPEApplication::showDialog( this ); } void OHighscoreDialog::createHighscoreListView() { int pos = 10; int points_ = 0; int level_ = 0; std::list<t_playerData*>::reverse_iterator iListe = hs_->playerData.rbegin(); for ( ; iListe != hs_->playerData.rend() ; ++iListe ) { QListViewItem *item = new QListViewItem( list ); item->setText( 0 , QString::number( pos ) ); //number item->setText( 1 , ( *iListe )->sName ); //name if ( ( *iListe )->points == -1 ) points_ = 0; else points_ = ( *iListe )->points; if ( ( *iListe )->level == -1 ) level_ = 0; else level_ = ( *iListe )->level; item->setText( 2 , QString::number( points_ ) ); //points item->setText( 3 , QString::number( level_ ) ); //level pos--; } } diff --git a/noncore/games/tictac/tictac.cpp b/noncore/games/tictac/tictac.cpp index 4954ba4..9de3b58 100644 --- a/noncore/games/tictac/tictac.cpp +++ b/noncore/games/tictac/tictac.cpp @@ -18,97 +18,97 @@ #include <qlayout.h> #include <stdlib.h> // rand() function #include <qdatetime.h> // seed for rand() #include <qstringlist.h> //needed for proper internationalization //*************************************************************************** //* TicTacButton member functions //*************************************************************************** // -------------------------------------------------------------------------- // Creates a TicTacButton // TicTacButton::TicTacButton( QWidget *parent ) : QPushButton( parent ) { t = Blank; // initial type } // -------------------------------------------------------------------------- // Paints TicTacButton // void TicTacButton::drawButtonLabel( QPainter *p ) { QRect r = rect(); p->setPen( QPen( white,2 ) ); // set fat pen if ( t == Circle ) { p->drawEllipse( r.left()+4, r.top()+4, r.width()-8, r.height()-8 ); } else if ( t == Cross ) { // draw cross p->drawLine( r.topLeft() +QPoint(4,4), r.bottomRight()-QPoint(4,4)); p->drawLine( r.bottomLeft()+QPoint(4,-4),r.topRight() -QPoint(4,-4)); } } //*************************************************************************** //* TicTacGameBoard member functions //*************************************************************************** // -------------------------------------------------------------------------- // Creates a game board with N x N buttons and connects the "clicked()" // signal of all buttons to the "buttonClicked()" slot. // TicTacGameBoard::TicTacGameBoard( int n, QWidget *parent, const char *name ) : QWidget( parent, name ) { - showMaximized(); + QPEApplication::showWidget( this ); st = Init; // initial state nBoard = n; n *= n; // make square comp_starts = FALSE; // human starts buttons = new TicTacButtons(n); // create real buttons btArray = new TicTacArray(n); // create button model QGridLayout * grid = new QGridLayout( this, 3, 3, 4 ); QPalette p( blue ); for ( int i=0; i<n; i++ ) { // create and connect buttons TicTacButton *ttb = new TicTacButton( this ); ttb->setPalette( p ); ttb->setEnabled( FALSE ); connect( ttb, SIGNAL(clicked()), SLOT(buttonClicked()) ); grid->addWidget( ttb, i%3, i/3 ); buttons->insert( i, ttb ); btArray->at(i) = TicTacButton::Blank; // initial button type } QTime t = QTime::currentTime(); // set random seed srand( t.hour()*12+t.minute()*60+t.second()*60 ); } TicTacGameBoard::~TicTacGameBoard() { delete buttons; delete btArray; } // -------------------------------------------------------------------------- // TicTacGameBoard::computerStarts( bool v ) // // Computer starts if v=TRUE. The human starts by default. // void TicTacGameBoard::computerStarts( bool v ) { comp_starts = v; } // -------------------------------------------------------------------------- // TicTacGameBoard::newGame() // // Clears the game board and prepares for a new game // void TicTacGameBoard::newGame() { @@ -288,95 +288,95 @@ void TicTacGameBoard::computerMove() // signals of child widgets to slots. // TicTacToe::TicTacToe( QWidget *parent, const char *name, WFlags fl ) : QWidget( parent, name, fl ) { QVBoxLayout * l = new QVBoxLayout( this, 6 ); // Create a message label boardSize = 3; message = new QLabel( this ); message->setFrameStyle( QFrame::WinPanel | QFrame::Sunken ); message->setAlignment( AlignCenter ); l->addWidget( message ); // Create the game board and connect the signal finished() to this // gameOver() slot board = new TicTacGameBoard( boardSize, this ); connect( board, SIGNAL(finished()), SLOT(gameOver()) ); l->addWidget( board ); // Create a horizontal frame line QFrame *line = new QFrame( this ); line->setFrameStyle( QFrame::HLine | QFrame::Sunken ); l->addWidget( line ); // Create the combo box for deciding who should start, and // connect its clicked() signals to the buttonClicked() slot whoStarts = new QComboBox( this ); whoStarts->insertItem( tr( "Computer starts" ) ); whoStarts->insertItem( tr( "Human starts" ) ); l->addWidget( whoStarts ); // Create the push buttons and connect their clicked() signals // to this right slots. newGame = new QPushButton( tr( "Play!" ), this ); connect( newGame, SIGNAL(clicked()), SLOT(newGameClicked()) ); quit = new QPushButton( tr( "Quit" ), this ); connect( quit, SIGNAL(clicked()), qApp, SLOT(quit()) ); QHBoxLayout * b = new QHBoxLayout; l->addLayout( b ); b->addWidget( newGame ); b->addWidget( quit ); - showMaximized(); + QPEApplication::showWidget( this ); newState(); } // -------------------------------------------------------------------------- // TicTacToe::newGameClicked() - SLOT // // This slot is activated when the new game button is clicked. // void TicTacToe::newGameClicked() { board->computerStarts( whoStarts->currentItem() == 0 ); board->newGame(); newState(); } // -------------------------------------------------------------------------- // TicTacToe::gameOver() - SLOT // // This slot is activated when the TicTacGameBoard emits the signal // "finished()", i.e. when a player has won or when it is a draw. // void TicTacToe::gameOver() { newState(); // update text box } // -------------------------------------------------------------------------- // Updates the message to reflect a new state. // void TicTacToe::newState() { QStringList msg; msg << tr( "Click Play to start") << tr("Make your move") << tr("You won!") << tr("Computer won!") << tr("It's a draw"); message->setText( msg[board->state()] ); return; } |