Main Page | Namespace List | Class Hierarchy | Alphabetical List | Class List | Directories | File List | Namespace Members | Class Members | File Members | Related Pages

ohighscoredlg.cpp

Go to the documentation of this file.
00001 /***************************************************************************
00002    begin                    : January 2003
00003    copyright                : ( C ) 2003 by Carsten Niehaus
00004    email                    : cniehaus@handhelds.org
00005  **************************************************************************/
00006 
00007 /***************************************************************************
00008  *                                                                         *
00009  * This program is free software; you can redistribute it and/or modify    *
00010  * it under the terms of the GNU General Public License as published by    *
00011  * the Free Software Foundation; either version 2 of the License, or       *
00012  * ( at your option ) any later version.                                   *
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;   //for the filling up later
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         //now I fill up the rest of the list
00072         if ( rest < 11 ) //only go in this loop if there are less than
00073                                          //10 highscoreentries
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                         //now we have to delete the last entry
00118                         playerData.remove( playerData.count() );
00119                         
00121                 //this block just rewrites the highscore
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     //delete d;
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                   // after previous
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 ) );                   //number
00194                 item->setText(  1 , Run->sName );                       //name
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_ ) );   //points
00202                 item->setText(  3 , QString::number( level_ ) );    //level
00203                 pos--;
00204         }
00205 }
00206 

Generated on Sat Nov 5 16:17:27 2005 for OPIE by  doxygen 1.4.2