summaryrefslogtreecommitdiff
path: root/noncore/games/tetrix
Unidiff
Diffstat (limited to 'noncore/games/tetrix') (more/less context) (ignore whitespace changes)
-rw-r--r--noncore/games/tetrix/ohighscoredlg.cpp81
-rw-r--r--noncore/games/tetrix/ohighscoredlg.h13
-rw-r--r--noncore/games/tetrix/tetrix.pro2
3 files changed, 51 insertions, 45 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
30OHighscore::OHighscore( int score , int playerLevel ) 31OHighscore::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
37OHighscore::~OHighscore() 39OHighscore::~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
46void OHighscore::getList() 43void 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
92void OHighscore::checkIfItIsANewhighscore( int points) 89void 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
100void OHighscore::insertData( QString name , int punkte , int playerLevel ) 97void 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
141QString OHighscore::getName() 138QString 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
175void OHighscoreDialog::createHighscoreListView() 172void 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
diff --git a/noncore/games/tetrix/ohighscoredlg.h b/noncore/games/tetrix/ohighscoredlg.h
index fdbe623..845e639 100644
--- a/noncore/games/tetrix/ohighscoredlg.h
+++ b/noncore/games/tetrix/ohighscoredlg.h
@@ -3,30 +3,31 @@
3 * This program is free software; you can redistribute it and/or modify * 3 * This program is free software; you can redistribute it and/or modify *
4 * it under the terms of the GNU General Public License as published by * 4 * it under the terms of the GNU General Public License as published by *
5 * the Free Software Foundation; either version 2 of the License, or * 5 * the Free Software Foundation; either version 2 of the License, or *
6 * ( at your option ) any later version. * 6 * ( at your option ) any later version. *
7 * * 7 * *
8 **************************************************************************/ 8 **************************************************************************/
9 9
10class QWidget; 10class QWidget;
11class QVBoxLayout; 11class QVBoxLayout;
12class QListView; 12class QListView;
13 13
14#include <qdialog.h> 14#include <qdialog.h>
15#include <list> 15#include <qlist.h>
16 16
17using namespace std; 17class t_playerData
18
19struct t_playerData
20{ 18{
19
20public :
21
21 QString sName; 22 QString sName;
22 int points; 23 int points;
23 int level; 24 int level;
24}; 25};
25 26
26class OHighscore : public QWidget 27class OHighscore : public QWidget
27{ 28{
28 Q_OBJECT 29 Q_OBJECT
29 30
30 public: 31 public:
31 /* 32 /*
32 *An OHighscore-Object contains all Points, level and playernames sorted in a stl::vector 33 *An OHighscore-Object contains all Points, level and playernames sorted in a stl::vector
@@ -36,34 +37,32 @@ class OHighscore : public QWidget
36 ~OHighscore(); 37 ~OHighscore();
37 38
38 /* 39 /*
39 * is true if the player did a new highscore 40 * is true if the player did a new highscore
40 */ 41 */
41 bool isNewhighscore; 42 bool isNewhighscore;
42 43
43 /* 44 /*
44 * this inserts the new entry at the correct position 45 * this inserts the new entry at the correct position
45 */ 46 */
46 void insertData( QString , int , int ); 47 void insertData( QString , int , int );
47 48
48 list<t_playerData*> playerData; 49 QList<t_playerData> playerData;
49 50
50 /* 51 /*
51 * As Qt/e does not support QInputDialog I did that code myself 52 * As Qt/e does not support QInputDialog I did that code myself
52 */ 53 */
53 QString getName(); 54 QString getName();
54 private: 55 private:
55 56
56 list<t_playerData*>::iterator iPlayerData;
57
58 /* 57 /*
59 * the lowest score in the highscorelist 58 * the lowest score in the highscorelist
60 */ 59 */
61 int lowest; 60 int lowest;
62 61
63 /* 62 /*
64 * the level of the highscore 63 * the level of the highscore
65 */ 64 */
66 int pLevel; 65 int pLevel;
67 66
68 /* 67 /*
69 * get all scores in a vector and give "lowest" a value 68 * get all scores in a vector and give "lowest" a value
diff --git a/noncore/games/tetrix/tetrix.pro b/noncore/games/tetrix/tetrix.pro
index 580a542..96f452f 100644
--- a/noncore/games/tetrix/tetrix.pro
+++ b/noncore/games/tetrix/tetrix.pro
@@ -3,20 +3,20 @@ HEADERS = gtetrix.h \
3 qtetrix.h \ 3 qtetrix.h \
4 qtetrixb.h \ 4 qtetrixb.h \
5 tpiece.h \ 5 tpiece.h \
6 ohighscoredlg.h 6 ohighscoredlg.h
7 SOURCES = main.cpp \ 7 SOURCES = main.cpp \
8 gtetrix.cpp \ 8 gtetrix.cpp \
9 qtetrix.cpp \ 9 qtetrix.cpp \
10 qtetrixb.cpp \ 10 qtetrixb.cpp \
11 tpiece.cpp \ 11 tpiece.cpp \
12 ohighscoredlg.cpp 12 ohighscoredlg.cpp
13INCLUDEPATH += $(OPIEDIR)/include 13INCLUDEPATH += $(OPIEDIR)/include
14 DEPENDPATH+= $(OPIEDIR)/include 14 DEPENDPATH+= $(OPIEDIR)/include
15LIBS += -lqpe -lopiecore2 -lstdc++ 15LIBS += -lqpe -lopiecore2
16 INTERFACES= 16 INTERFACES=
17 TARGET = tetrix 17 TARGET = tetrix
18 18
19 19
20 20
21 21
22include( $(OPIEDIR)/include.pro ) 22include( $(OPIEDIR)/include.pro )