20 #ifndef KEXTHIGHSCORE_INTERNAL_H
21 #define KEXTHIGHSCORE_INTERNAL_H
23 #include <tdeapplication.h>
24 #include <tdeconfig.h>
25 #include <tdelocale.h>
28 #include "khighscore.h"
29 #include "kexthighscore.h"
33 class TQDomNamedNodeMap;
36 namespace KExtHighscore
45 class RankItem :
public Item
49 :
Item((uint)0, i18n(
"Rank"), TQt::AlignRight) {}
51 TQVariant read(uint rank,
const TQVariant &)
const {
return rank; }
52 TQString pretty(uint rank,
const TQVariant &)
const
53 {
return TQString::number(rank+1); }
56 class NameItem :
public Item
60 :
Item(TQString(), i18n(
"Name"), TQt::AlignLeft) {
65 class DateItem :
public Item
69 :
Item(TQDateTime(), i18n(
"Date"), TQt::AlignRight) {
74 class SuccessPercentageItem :
public Item
77 SuccessPercentageItem()
78 :
Item((double)-1, i18n(
"Success"), TQt::AlignRight) {
91 void setItem(Item *item);
92 const Item *item()
const {
return _item; }
93 Item *item() {
return _item; }
95 void setName(
const TQString &name) { _name = name; }
96 TQString name()
const {
return _name; }
98 void setGroup(
const TQString &group) { _group = group; }
99 bool isStored()
const {
return !_group.isNull(); }
101 void setSubGroup(
const TQString &subGroup) { _subGroup = subGroup; }
102 bool canHaveSubGroup()
const {
return !_subGroup.isNull(); }
104 static const char ANONYMOUS[];
105 static const char ANONYMOUS_LABEL[];
107 TQVariant read(uint i)
const;
108 TQString pretty(uint i)
const;
109 void write(uint i,
const TQVariant &value)
const;
111 uint increment(uint i)
const;
115 TQString _name, _group, _subGroup;
117 TQString entryName()
const;
119 ItemContainer(
const ItemContainer &);
120 ItemContainer &operator =(
const ItemContainer &);
134 virtual uint nbEntries()
const = 0;
136 const ItemContainer *item(
const TQString &name)
const;
137 ItemContainer *item(
const TQString &name);
139 void addItem(
const TQString &name,
Item *,
bool stored =
true,
140 bool canHaveSubGroup =
false);
141 void setItem(
const TQString &name,
Item *);
142 int findIndex(
const TQString &name)
const;
144 void setGroup(
const TQString &group);
145 void setSubGroup(
const TQString &subGroup);
147 void read(uint k,
Score &data)
const;
148 void write(uint k,
const Score &data, uint maxNbLines)
const;
150 void exportToText(TQTextStream &)
const;
153 TQString _group, _subGroup;
155 void _setItem(uint i,
const TQString &name,
Item *,
bool stored,
156 bool canHaveSubGroup);
166 ScoreInfos(uint maxNbEntries,
const PlayerInfos &infos);
168 uint nbEntries()
const;
169 uint maxNbEntries()
const {
return _maxNbEntries; }
176 class ConfigGroup :
public TDEConfigGroupSaver
179 ConfigGroup(
const TQString &group = TQString())
180 : TDEConfigGroupSaver(kapp->config(), group) {}
184 class PlayerInfos :
public ItemArray
189 bool isNewPlayer()
const {
return _newPlayer; }
190 bool isOldLocalPlayer()
const {
return _oldLocalPlayer; }
191 uint nbEntries()
const;
192 TQString name()
const {
return item(
"name")->read(_id).toString(); }
193 bool isAnonymous()
const;
194 TQString prettyName()
const {
return prettyName(_id); }
195 TQString prettyName(uint
id)
const {
return item(
"name")->pretty(
id); }
196 TQString registeredName()
const;
197 TQString comment()
const {
return item(
"comment")->pretty(_id); }
198 bool isWWEnabled()
const;
199 TQString key()
const;
200 uint id()
const {
return _id; }
201 uint oldLocalId()
const {
return _oldLocalId; }
203 void createHistoItems(
const TQMemArray<uint> &scores,
bool bound);
204 TQString histoName(uint i)
const;
205 uint histoSize()
const;
206 const TQMemArray<uint> &histogram()
const {
return _histogram; }
208 void submitScore(
const Score &)
const;
210 bool isNameUsed(
const TQString &name)
const;
211 void modifyName(
const TQString &newName)
const;
212 void modifySettings(
const TQString &newName,
const TQString &comment,
213 bool WWEnabled,
const TQString &newKey)
const;
217 bool _newPlayer, _bound, _oldLocalPlayer;
218 uint _id, _oldLocalId;
219 TQMemArray<uint> _histogram;
226 ManagerPrivate(uint nbGameTypes, Manager &manager);
227 void init(uint maxNbentries);
230 bool modifySettings(
const TQString &newName,
const TQString &comment,
231 bool WWEnabled, TQWidget *widget);
233 void setGameType(uint type);
235 int submitLocal(
const Score &score);
236 int submitScore(
const Score &score, TQWidget *widget,
bool askIfAnonymous);
237 Score readScore(uint i)
const;
239 uint gameType()
const {
return _gameType; }
240 uint nbGameTypes()
const {
return _nbGameTypes; }
241 bool isWWHSAvailable()
const {
return !serverURL.isEmpty(); }
242 ScoreInfos &scoreInfos() {
return *_scoreInfos; }
243 PlayerInfos &playerInfos() {
return *_playerInfos; }
245 enum QueryType { Submit, Register, Change, Players, Scores };
246 KURL queryURL(QueryType type,
const TQString &newName=TQString())
const;
248 void exportHighscores(TQTextStream &);
253 bool showStatistics, showDrawGames, trackLostGames, trackDrawGames;
258 PlayerInfos *_playerInfos;
259 ScoreInfos *_scoreInfos;
261 const uint _nbGameTypes;
265 int rank(
const Score &score)
const;
267 bool submitWorldWide(
const Score &score, TQWidget *parent)
const;
268 static bool doQuery(
const KURL &url, TQWidget *parent,
269 TQDomNamedNodeMap *map = 0);
270 static bool getFromQuery(
const TQDomNamedNodeMap &map,
const TQString &name,
271 TQString &value, TQWidget *parent);
272 void convertToGlobal();