Diffstat (limited to 'noncore/games/tetrix/ohighscoredlg.cpp') (more/less context) (ignore whitespace changes)
-rw-r--r-- | noncore/games/tetrix/ohighscoredlg.cpp | 81 |
1 files changed, 44 insertions, 37 deletions
diff --git a/noncore/games/tetrix/ohighscoredlg.cpp b/noncore/games/tetrix/ohighscoredlg.cpp index 8d8079e..66f4917 100644 --- a/noncore/games/tetrix/ohighscoredlg.cpp +++ b/noncore/games/tetrix/ohighscoredlg.cpp | |||
@@ -10,140 +10,137 @@ | |||
10 | * it under the terms of the GNU General Public License as published by * | 10 | * it under the terms of the GNU General Public License as published by * |
11 | * the Free Software Foundation; either version 2 of the License, or * | 11 | * the Free Software Foundation; either version 2 of the License, or * |
12 | * ( at your option ) any later version. * | 12 | * ( at your option ) any later version. * |
13 | * * | 13 | * * |
14 | **************************************************************************/ | 14 | **************************************************************************/ |
15 | 15 | ||
16 | #include <qdialog.h> | 16 | #include <qdialog.h> |
17 | #include <qlayout.h> | 17 | #include <qlayout.h> |
18 | #include <qpe/qpeapplication.h> | 18 | #include <qpe/qpeapplication.h> |
19 | #include <qpe/config.h> | 19 | #include <qpe/config.h> |
20 | 20 | ||
21 | #include <qstring.h> | 21 | #include <qstring.h> |
22 | #include <qlist.h> | ||
22 | #include <qhbox.h> | 23 | #include <qhbox.h> |
23 | #include <qvbox.h> | 24 | #include <qvbox.h> |
24 | #include <qlabel.h> | 25 | #include <qlabel.h> |
25 | #include <qlistview.h> | 26 | #include <qlistview.h> |
26 | #include <qlineedit.h> | 27 | #include <qlineedit.h> |
27 | 28 | ||
28 | #include "ohighscoredlg.h" | 29 | #include "ohighscoredlg.h" |
29 | 30 | ||
30 | OHighscore::OHighscore( int score , int playerLevel ) | 31 | OHighscore::OHighscore( int score , int playerLevel ) : playerData() |
31 | { | 32 | { |
32 | pLevel = playerLevel; | 33 | pLevel = playerLevel; |
33 | getList(); | 34 | getList(); |
34 | checkIfItIsANewhighscore( score ); | 35 | checkIfItIsANewhighscore( score ); |
36 | playerData.setAutoDelete( TRUE ); | ||
35 | } | 37 | } |
36 | 38 | ||
37 | OHighscore::~OHighscore() | 39 | OHighscore::~OHighscore() |
38 | { | 40 | { |
39 | std::list<t_playerData*>::iterator deleteIterator = playerData.begin(); | ||
40 | for ( ; deleteIterator != playerData.end() ; deleteIterator++ ) | ||
41 | { | ||
42 | delete ( *deleteIterator ); | ||
43 | } | ||
44 | } | 41 | } |
45 | 42 | ||
46 | void OHighscore::getList() | 43 | void OHighscore::getList() |
47 | { | 44 | { |
48 | Config cfg ( "tetrix" ); | 45 | Config cfg ( "tetrix" ); |
49 | cfg.setGroup( QString::number( 1 ) ); | 46 | cfg.setGroup( QString::number( 1 ) ); |
50 | lowest = cfg.readNumEntry( "Points" ); | 47 | lowest = cfg.readNumEntry( "Points" ); |
51 | playerData.clear(); | 48 | playerData.clear(); |
52 | 49 | ||
53 | int rest = 1;//for the filling up later | 50 | int rest = 1;//for the filling up later |
54 | 51 | ||
55 | for ( int i = 1 ; i < 11 ; i++ ) | 52 | for ( int i = 1 ; i < 11 ; i++ ) |
56 | { | 53 | { |
57 | if ( cfg.hasGroup( QString::number( i ) ) ) | 54 | if ( cfg.hasGroup( QString::number( i ) ) ) |
58 | { | 55 | { |
59 | cfg.setGroup( QString::number( i ) ); | 56 | cfg.setGroup( QString::number( i ) ); |
60 | int temp = cfg.readNumEntry( "Points" ); | 57 | int temp = cfg.readNumEntry( "Points" ); |
61 | 58 | ||
62 | t_playerData *pPlayerData = new t_playerData; | 59 | t_playerData *pPlayerData = new t_playerData; |
63 | pPlayerData->sName = cfg.readEntry( "Name" ); | 60 | pPlayerData->sName = cfg.readEntry( "Name" ); |
64 | pPlayerData->points = temp; | 61 | pPlayerData->points = temp; |
65 | pPlayerData->level = cfg.readNumEntry( "Level" ); | 62 | pPlayerData->level = cfg.readNumEntry( "Level" ); |
66 | 63 | ||
67 | playerData.push_back( pPlayerData ); | 64 | playerData.append( pPlayerData ); |
68 | 65 | ||
69 | if ( (temp < lowest) ) lowest = temp; | 66 | if ( (temp < lowest) ) lowest = temp; |
70 | rest++; | 67 | rest++; |
71 | } | 68 | } |
72 | } | 69 | } |
73 | 70 | ||
74 | //now I fill up the rest of the list | 71 | //now I fill up the rest of the list |
75 | if ( rest < 11 ) //only go in this loop if there are less than | 72 | if ( rest < 11 ) //only go in this loop if there are less than |
76 | //10 highscoreentries | 73 | //10 highscoreentries |
77 | { | 74 | { |
78 | lowest = 0; | 75 | lowest = 0; |
79 | for ( ; rest < 11 ; rest++ ) | 76 | for ( ; rest < 11 ; rest++ ) |
80 | { | 77 | { |
81 | t_playerData *pPlayerData = new t_playerData; | 78 | t_playerData *pPlayerData = new t_playerData; |
82 | pPlayerData->sName = tr( "empty"); | 79 | pPlayerData->sName = tr( "empty"); |
83 | pPlayerData->points = 0; | 80 | pPlayerData->points = 0; |
84 | pPlayerData->level = 0; | 81 | pPlayerData->level = 0; |
85 | 82 | ||
86 | playerData.push_back( pPlayerData ); | 83 | playerData.append( pPlayerData ); |
87 | } | 84 | } |
88 | } | 85 | } |
89 | 86 | ||
90 | } | 87 | } |
91 | 88 | ||
92 | void OHighscore::checkIfItIsANewhighscore( int points) | 89 | void OHighscore::checkIfItIsANewhighscore( int points) |
93 | { | 90 | { |
94 | if ( points > lowest ) | 91 | if ( points > lowest ) |
95 | isNewhighscore = true; | 92 | isNewhighscore = true; |
96 | else | 93 | else |
97 | isNewhighscore = false; | 94 | isNewhighscore = false; |
98 | } | 95 | } |
99 | 96 | ||
100 | void OHighscore::insertData( QString name , int punkte , int playerLevel ) | 97 | void OHighscore::insertData( QString name , int punkte , int playerLevel ) |
101 | { | 98 | { |
102 | Config cfg ( "tetrix" ); | 99 | Config cfg ( "tetrix" ); |
100 | t_playerData * Run; | ||
101 | int index = 0; | ||
103 | int entryNumber = 1; | 102 | int entryNumber = 1; |
104 | std::list<t_playerData*>::iterator insertIterator = playerData.begin(); | 103 | |
105 | while ( insertIterator != playerData.end() ) | 104 | for ( Run=playerData.first(); |
106 | { | 105 | Run != 0; |
107 | if ( punkte > ( *insertIterator )->points ) | 106 | index ++, Run=playerData.next() ) { |
107 | |||
108 | if ( punkte > Run->points ) | ||
108 | { | 109 | { |
109 | t_playerData* temp = new t_playerData; | 110 | t_playerData* temp = new t_playerData; |
110 | temp->sName = name; | 111 | temp->sName = name; |
111 | temp->points = punkte; | 112 | temp->points = punkte; |
112 | temp->level = playerLevel; | 113 | temp->level = playerLevel; |
113 | playerData.insert( insertIterator , temp ); | 114 | |
115 | playerData.insert( index, temp ); | ||
114 | 116 | ||
115 | //now we have to delete the last entry | 117 | //now we have to delete the last entry |
116 | insertIterator = playerData.end(); | 118 | playerData.remove( playerData.count() ); |
117 | insertIterator--; | ||
118 | //X delete *insertIterator; //memleak? | ||
119 | playerData.erase( insertIterator ); | ||
120 | 119 | ||
121 | ///////////////////////////////////////// | 120 | ///////////////////////////////////////// |
122 | //this block just rewrites the highscore | 121 | //this block just rewrites the highscore |
123 | insertIterator = playerData.begin(); | 122 | for ( t_playerData * Run2=playerData.first(); |
124 | while ( insertIterator != playerData.end() ) | 123 | Run2 != 0; |
125 | { | 124 | Run2=playerData.next() ) { |
126 | cfg.setGroup( QString::number( entryNumber ) ); | 125 | cfg.setGroup( QString::number( entryNumber ) ); |
127 | cfg.writeEntry( "Name" , ( *insertIterator )->sName ); | 126 | cfg.writeEntry( "Name" , Run2->sName ); |
128 | cfg.writeEntry( "Points" , ( *insertIterator )->points ); | 127 | cfg.writeEntry( "Points" , Run2->points ); |
129 | cfg.writeEntry( "Level" , ( *insertIterator )->level ); | 128 | cfg.writeEntry( "Level" , Run2->level ); |
130 | entryNumber++; | 129 | entryNumber++; |
131 | insertIterator++; | ||
132 | } | 130 | } |
133 | //////////////////////////////////////// | 131 | //////////////////////////////////////// |
134 | 132 | ||
135 | return; | 133 | return; |
136 | } | 134 | } |
137 | insertIterator++; | ||
138 | } | 135 | } |
139 | } | 136 | } |
140 | 137 | ||
141 | QString OHighscore::getName() | 138 | QString OHighscore::getName() |
142 | { | 139 | { |
143 | QString name; | 140 | QString name; |
144 | QDialog *d = new QDialog ( this, 0, true ); | 141 | QDialog *d = new QDialog ( this, 0, true ); |
145 | d->setCaption( tr( "Enter your name!" )); | 142 | d->setCaption( tr( "Enter your name!" )); |
146 | QLineEdit *ed = new QLineEdit ( d ); | 143 | QLineEdit *ed = new QLineEdit ( d ); |
147 | ( new QVBoxLayout ( d, 3, 3 ))->addWidget ( ed ); | 144 | ( new QVBoxLayout ( d, 3, 3 ))->addWidget ( ed ); |
148 | ed->setFocus ( ); | 145 | ed->setFocus ( ); |
149 | 146 | ||
@@ -168,32 +165,42 @@ OHighscoreDialog::OHighscoreDialog(OHighscore *highscore, QWidget *parent, const | |||
168 | 165 | ||
169 | createHighscoreListView(); | 166 | createHighscoreListView(); |
170 | 167 | ||
171 | vbox_layout->addWidget( list ); | 168 | vbox_layout->addWidget( list ); |
172 | QPEApplication::showDialog( this ); | 169 | QPEApplication::showDialog( this ); |
173 | } | 170 | } |
174 | 171 | ||
175 | void OHighscoreDialog::createHighscoreListView() | 172 | void OHighscoreDialog::createHighscoreListView() |
176 | { | 173 | { |
177 | int pos = 10; | 174 | int pos = 10; |
178 | int points_ = 0; | 175 | int points_ = 0; |
179 | int level_ = 0; | 176 | int level_ = 0; |
180 | 177 | QListViewItem * Prev = 0; | |
181 | std::list<t_playerData*>::reverse_iterator iListe = hs_->playerData.rbegin(); | 178 | |
182 | 179 | for ( t_playerData * Run = hs_->playerData.first(); | |
183 | for ( ; iListe != hs_->playerData.rend() ; ++iListe ) | 180 | Run != 0; |
184 | { | 181 | Run=hs_->playerData.next() ) |
185 | QListViewItem *item = new QListViewItem( list ); | 182 | { |
183 | QListViewItem *item; | ||
184 | |||
185 | if( Prev ) { | ||
186 | // after previous | ||
187 | item = new QListViewItem( list, Prev ); | ||
188 | Prev = item; | ||
189 | } else { | ||
190 | item = new QListViewItem( list ); | ||
191 | |||
192 | } | ||
186 | item->setText( 0 , QString::number( pos ) ); //number | 193 | item->setText( 0 , QString::number( pos ) ); //number |
187 | item->setText( 1 , ( *iListe )->sName ); //name | 194 | item->setText( 1 , Run->sName ); //name |
188 | if ( ( *iListe )->points == -1 ) | 195 | if ( Run->points == -1 ) |
189 | points_ = 0; | 196 | points_ = 0; |
190 | else points_ = ( *iListe )->points; | 197 | else points_ = Run->points; |
191 | if ( ( *iListe )->level == -1 ) | 198 | if ( Run->level == -1 ) |
192 | level_ = 0; | 199 | level_ = 0; |
193 | else level_ = ( *iListe )->level; | 200 | else level_ = Run->level; |
194 | item->setText( 2 , QString::number( points_ ) ); //points | 201 | item->setText( 2 , QString::number( points_ ) ); //points |
195 | item->setText( 3 , QString::number( level_ ) ); //level | 202 | item->setText( 3 , QString::number( level_ ) ); //level |
196 | pos--; | 203 | pos--; |
197 | } | 204 | } |
198 | } | 205 | } |
199 | 206 | ||