author | cniehaus <cniehaus> | 2003-03-15 20:50:41 (UTC) |
---|---|---|
committer | cniehaus <cniehaus> | 2003-03-15 20:50:41 (UTC) |
commit | 917fb7d2dca76f5c2c5c86553be0fcc2832c3435 (patch) (unidiff) | |
tree | 972e7e2e17496cb4ab618f4a07035d2c2b6f20c8 /noncore/games/tetrix/ohighscoredlg.cpp | |
parent | dfe0e1302aa2a366cfa2a8b53102a38b7143ba4b (diff) | |
download | opie-917fb7d2dca76f5c2c5c86553be0fcc2832c3435.zip opie-917fb7d2dca76f5c2c5c86553be0fcc2832c3435.tar.gz opie-917fb7d2dca76f5c2c5c86553be0fcc2832c3435.tar.bz2 |
merging with the branch.
Comments?
Diffstat (limited to 'noncore/games/tetrix/ohighscoredlg.cpp') (more/less context) (ignore whitespace changes)
-rw-r--r-- | noncore/games/tetrix/ohighscoredlg.cpp | 199 |
1 files changed, 199 insertions, 0 deletions
diff --git a/noncore/games/tetrix/ohighscoredlg.cpp b/noncore/games/tetrix/ohighscoredlg.cpp new file mode 100644 index 0000000..cf0dcf7 --- a/dev/null +++ b/noncore/games/tetrix/ohighscoredlg.cpp | |||
@@ -0,0 +1,199 @@ | |||
1 | /*************************************************************************** | ||
2 | begin : January 2003 | ||
3 | copyright : ( C ) 2003 by Carsten Niehaus | ||
4 | email : cniehaus@handhelds.org | ||
5 | **************************************************************************/ | ||
6 | |||
7 | /*************************************************************************** | ||
8 | * * | ||
9 | * This program is free software; you can redistribute it and/or modify * | ||
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 * | ||
12 | * ( at your option ) any later version. * | ||
13 | * * | ||
14 | **************************************************************************/ | ||
15 | |||
16 | #include <qdialog.h> | ||
17 | #include <qpe/config.h> | ||
18 | #include <qlayout.h> | ||
19 | #include <qpe/config.h> | ||
20 | |||
21 | #include <qstring.h> | ||
22 | #include <qhbox.h> | ||
23 | #include <qvbox.h> | ||
24 | #include <qlabel.h> | ||
25 | #include <qlistview.h> | ||
26 | #include <qlineedit.h> | ||
27 | |||
28 | #include "ohighscoredlg.h" | ||
29 | |||
30 | OHighscore::OHighscore( int score , int playerLevel ) | ||
31 | { | ||
32 | pLevel = playerLevel; | ||
33 | getList(); | ||
34 | checkIfItIsANewhighscore( score ); | ||
35 | } | ||
36 | |||
37 | OHighscore::~OHighscore() | ||
38 | { | ||
39 | std::list<t_playerData*>::iterator deleteIterator = playerData.begin(); | ||
40 | for ( ; deleteIterator != playerData.end() ; deleteIterator++ ) | ||
41 | { | ||
42 | delete ( *deleteIterator ); | ||
43 | } | ||
44 | } | ||
45 | |||
46 | void OHighscore::getList() | ||
47 | { | ||
48 | Config cfg ( "tetrix" ); | ||
49 | cfg.setGroup( QString::number( 1 ) ); | ||
50 | lowest = cfg.readNumEntry( "Points" ); | ||
51 | playerData.clear(); | ||
52 | |||
53 | int rest = 1;//for the filling up later | ||
54 | |||
55 | for ( int i = 1 ; i < 11 ; i++ ) | ||
56 | { | ||
57 | if ( cfg.hasGroup( QString::number( i ) ) ) | ||
58 | { | ||
59 | cfg.setGroup( QString::number( i ) ); | ||
60 | int temp = cfg.readNumEntry( "Points" ); | ||
61 | |||
62 | t_playerData *pPlayerData = new t_playerData; | ||
63 | pPlayerData->sName = cfg.readEntry( "Name" ); | ||
64 | pPlayerData->points = temp; | ||
65 | pPlayerData->level = cfg.readNumEntry( "Level" ); | ||
66 | |||
67 | playerData.push_back( pPlayerData ); | ||
68 | |||
69 | if ( (temp < lowest) ) lowest = temp; | ||
70 | rest++; | ||
71 | } | ||
72 | } | ||
73 | |||
74 | //now I fill up the rest of the list | ||
75 | if ( rest < 11 ) //only go in this loop if there are less than | ||
76 | //10 highscoreentries | ||
77 | { | ||
78 | lowest = 0; | ||
79 | for ( ; rest < 11 ; rest++ ) | ||
80 | { | ||
81 | t_playerData *pPlayerData = new t_playerData; | ||
82 | pPlayerData->sName = tr( "empty"); | ||
83 | pPlayerData->points = 0; | ||
84 | pPlayerData->level = 0; | ||
85 | |||
86 | playerData.push_back( pPlayerData ); | ||
87 | } | ||
88 | } | ||
89 | |||
90 | } | ||
91 | |||
92 | void OHighscore::checkIfItIsANewhighscore( int points) | ||
93 | { | ||
94 | if ( points > lowest ) | ||
95 | isNewhighscore = true; | ||
96 | else | ||
97 | isNewhighscore = false; | ||
98 | } | ||
99 | |||
100 | void OHighscore::insertData( QString name , int punkte , int playerLevel ) | ||
101 | { | ||
102 | Config cfg ( "tetrix" ); | ||
103 | int entryNumber = 1; | ||
104 | std::list<t_playerData*>::iterator insertIterator = playerData.begin(); | ||
105 | while ( insertIterator != playerData.end() ) | ||
106 | { | ||
107 | if ( punkte > ( *insertIterator )->points ) | ||
108 | { | ||
109 | t_playerData* temp = new t_playerData; | ||
110 | temp->sName = name; | ||
111 | temp->points = punkte; | ||
112 | temp->level = playerLevel; | ||
113 | playerData.insert( insertIterator , temp ); | ||
114 | |||
115 | //now we have to delete the last entry | ||
116 | insertIterator = playerData.end(); | ||
117 | insertIterator--; | ||
118 | //X delete *insertIterator; //memleak? | ||
119 | playerData.erase( insertIterator ); | ||
120 | |||
121 | ///////////////////////////////////////// | ||
122 | //this block just rewrites the highscore | ||
123 | insertIterator = playerData.begin(); | ||
124 | while ( insertIterator != playerData.end() ) | ||
125 | { | ||
126 | cfg.setGroup( QString::number( entryNumber ) ); | ||
127 | cfg.writeEntry( "Name" , ( *insertIterator )->sName ); | ||
128 | cfg.writeEntry( "Points" , ( *insertIterator )->points ); | ||
129 | cfg.writeEntry( "Level" , ( *insertIterator )->level ); | ||
130 | entryNumber++; | ||
131 | insertIterator++; | ||
132 | } | ||
133 | //////////////////////////////////////// | ||
134 | |||
135 | return; | ||
136 | } | ||
137 | insertIterator++; | ||
138 | } | ||
139 | } | ||
140 | |||
141 | QString OHighscore::getName() | ||
142 | { | ||
143 | QString name; | ||
144 | QDialog *d = new QDialog ( this, 0, true ); | ||
145 | d->setCaption( tr( "Enter your name!" )); | ||
146 | QLineEdit *ed = new QLineEdit ( d ); | ||
147 | ( new QVBoxLayout ( d, 3, 3 ))->addWidget ( ed ); | ||
148 | ed->setFocus ( ); | ||
149 | |||
150 | if ( d->exec() == QDialog::Accepted ) { | ||
151 | name = ed->text(); | ||
152 | } | ||
153 | //delete d; | ||
154 | return name; | ||
155 | } | ||
156 | |||
157 | OHighscoreDialog::OHighscoreDialog(OHighscore *highscore, QWidget *parent, const char *name, bool modal) : QDialog(parent, name, modal) | ||
158 | { | ||
159 | hs_ = highscore; | ||
160 | setCaption( tr( "Highscores" ) ); | ||
161 | vbox_layout = new QVBoxLayout( this, 4 , 4 ); | ||
162 | list = new QListView( this ); | ||
163 | list->setSorting( -1 ); | ||
164 | list->addColumn( tr( "#" )); | ||
165 | list->addColumn( tr( "Name" )); | ||
166 | list->addColumn( tr( "Points" )); | ||
167 | list->addColumn( tr( "Level" )); | ||
168 | |||
169 | createHighscoreListView(); | ||
170 | |||
171 | vbox_layout->addWidget( list ); | ||
172 | showMaximized(); | ||
173 | } | ||
174 | |||
175 | void OHighscoreDialog::createHighscoreListView() | ||
176 | { | ||
177 | int pos = 10; | ||
178 | int points_ = 0; | ||
179 | int level_ = 0; | ||
180 | |||
181 | std::list<t_playerData*>::reverse_iterator iListe = hs_->playerData.rbegin(); | ||
182 | |||
183 | for ( ; iListe != hs_->playerData.rend() ; ++iListe ) | ||
184 | { | ||
185 | QListViewItem *item = new QListViewItem( list ); | ||
186 | item->setText( 0 , QString::number( pos ) ); //number | ||
187 | item->setText( 1 , ( *iListe )->sName ); //name | ||
188 | if ( ( *iListe )->points == -1 ) | ||
189 | points_ = 0; | ||
190 | else points_ = ( *iListe )->points; | ||
191 | if ( ( *iListe )->level == -1 ) | ||
192 | level_ = 0; | ||
193 | else level_ = ( *iListe )->level; | ||
194 | item->setText( 2 , QString::number( points_ ) ); //points | ||
195 | item->setText( 3 , QString::number( level_ ) ); //level | ||
196 | pos--; | ||
197 | } | ||
198 | } | ||
199 | |||