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();
Manage a bunch of Item which are saved under the same group in KHighscores config file.
This class defines how to convert and how to display a highscore element (such as the score,...
Item(const TQVariant &def=TQVariant::Invalid, const TQString &label=TQString(), int alignment=TQt::AlignRight)
Constructor.
void setPrettyFormat(Format format)
Set the display format.
void setPrettySpecial(Special special)
Set the special value for display.
ShowMode
Enumerate different conditions under which to show the high score dialog.
This class contains data for a score.
Class for managing highscore tables.