00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016 #include <qdialog.h>
00017 #include <qlayout.h>
00018 #include <qpe/qpeapplication.h>
00019 #include <qpe/config.h>
00020
00021 #include <qstring.h>
00022 #include <qlist.h>
00023 #include <qhbox.h>
00024 #include <qvbox.h>
00025 #include <qlabel.h>
00026 #include <qlistview.h>
00027 #include <qlineedit.h>
00028
00029 #include "ohighscoredlg.h"
00030
00031 OHighscore::OHighscore( int score , int playerLevel ) : playerData()
00032 {
00033 pLevel = playerLevel;
00034 getList();
00035 checkIfItIsANewhighscore( score );
00036 playerData.setAutoDelete( TRUE );
00037 }
00038
00039 OHighscore::~OHighscore()
00040 {
00041 }
00042
00043 void OHighscore::getList()
00044 {
00045 Config cfg ( "tetrix" );
00046 cfg.setGroup( QString::number( 1 ) );
00047 lowest = cfg.readNumEntry( "Points" );
00048 playerData.clear();
00049
00050 int rest = 1;
00051
00052 for ( int i = 1 ; i < 11 ; i++ )
00053 {
00054 if ( cfg.hasGroup( QString::number( i ) ) )
00055 {
00056 cfg.setGroup( QString::number( i ) );
00057 int temp = cfg.readNumEntry( "Points" );
00058
00059 t_playerData *pPlayerData = new t_playerData;
00060 pPlayerData->sName = cfg.readEntry( "Name" );
00061 pPlayerData->points = temp;
00062 pPlayerData->level = cfg.readNumEntry( "Level" );
00063
00064 playerData.append( pPlayerData );
00065
00066 if ( (temp < lowest) ) lowest = temp;
00067 rest++;
00068 }
00069 }
00070
00071
00072 if ( rest < 11 )
00073
00074 {
00075 lowest = 0;
00076 for ( ; rest < 11 ; rest++ )
00077 {
00078 t_playerData *pPlayerData = new t_playerData;
00079 pPlayerData->sName = tr( "empty");
00080 pPlayerData->points = 0;
00081 pPlayerData->level = 0;
00082
00083 playerData.append( pPlayerData );
00084 }
00085 }
00086
00087 }
00088
00089 void OHighscore::checkIfItIsANewhighscore( int points)
00090 {
00091 if ( points > lowest )
00092 isNewhighscore = true;
00093 else
00094 isNewhighscore = false;
00095 }
00096
00097 void OHighscore::insertData( QString name , int punkte , int playerLevel )
00098 {
00099 Config cfg ( "tetrix" );
00100 t_playerData * Run;
00101 int index = 0;
00102 int entryNumber = 1;
00103
00104 for ( Run=playerData.first();
00105 Run != 0;
00106 index ++, Run=playerData.next() ) {
00107
00108 if ( punkte > Run->points )
00109 {
00110 t_playerData* temp = new t_playerData;
00111 temp->sName = name;
00112 temp->points = punkte;
00113 temp->level = playerLevel;
00114
00115 playerData.insert( index, temp );
00116
00117
00118 playerData.remove( playerData.count() );
00119
00121
00122 for ( t_playerData * Run2=playerData.first();
00123 Run2 != 0;
00124 Run2=playerData.next() ) {
00125 cfg.setGroup( QString::number( entryNumber ) );
00126 cfg.writeEntry( "Name" , Run2->sName );
00127 cfg.writeEntry( "Points" , Run2->points );
00128 cfg.writeEntry( "Level" , Run2->level );
00129 entryNumber++;
00130 }
00132
00133 return;
00134 }
00135 }
00136 }
00137
00138 QString OHighscore::getName()
00139 {
00140 QString name;
00141 QDialog *d = new QDialog ( this, 0, true );
00142 d->setCaption( tr( "Enter your name!" ));
00143 QLineEdit *ed = new QLineEdit ( d );
00144 ( new QVBoxLayout ( d, 3, 3 ))->addWidget ( ed );
00145 ed->setFocus ( );
00146
00147 if ( d->exec() == QDialog::Accepted ) {
00148 name = ed->text();
00149 }
00150
00151 return name;
00152 }
00153
00154 OHighscoreDialog::OHighscoreDialog(OHighscore *highscore, QWidget *parent, const char *name, bool modal) : QDialog(parent, name, modal)
00155 {
00156 hs_ = highscore;
00157 setCaption( tr( "Highscores" ) );
00158 vbox_layout = new QVBoxLayout( this, 4 , 4 );
00159 list = new QListView( this );
00160 list->setSorting( -1 );
00161 list->addColumn( tr( "#" ));
00162 list->addColumn( tr( "Name" ));
00163 list->addColumn( tr( "Points" ));
00164 list->addColumn( tr( "Level" ));
00165
00166 createHighscoreListView();
00167
00168 vbox_layout->addWidget( list );
00169 QPEApplication::showDialog( this );
00170 }
00171
00172 void OHighscoreDialog::createHighscoreListView()
00173 {
00174 int pos = 10;
00175 int points_ = 0;
00176 int level_ = 0;
00177 QListViewItem * Prev = 0;
00178
00179 for ( t_playerData * Run = hs_->playerData.first();
00180 Run != 0;
00181 Run=hs_->playerData.next() )
00182 {
00183 QListViewItem *item;
00184
00185 if( Prev ) {
00186
00187 item = new QListViewItem( list, Prev );
00188 Prev = item;
00189 } else {
00190 item = new QListViewItem( list );
00191
00192 }
00193 item->setText( 0 , QString::number( pos ) );
00194 item->setText( 1 , Run->sName );
00195 if ( Run->points == -1 )
00196 points_ = 0;
00197 else points_ = Run->points;
00198 if ( Run->level == -1 )
00199 level_ = 0;
00200 else level_ = Run->level;
00201 item->setText( 2 , QString::number( points_ ) );
00202 item->setText( 3 , QString::number( level_ ) );
00203 pos--;
00204 }
00205 }
00206