20#ifndef KEXTHIGHSCORE_INTERNAL_H
21#define KEXTHIGHSCORE_INTERNAL_H
23#include <tdeapplication.h>
28#include "khighscore.h"
29#include "kexthighscore.h"
33class TQDomNamedNodeMap;
36namespace KExtHighscore
45class 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); }
56class NameItem :
public Item
60 :
Item(TQString(), i18n(
"Name"), TQt::AlignLeft) {
65class DateItem :
public Item
69 :
Item(TQDateTime(), i18n(
"Date"), TQt::AlignRight) {
74class 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 &);
128class ItemArray :
public TQMemArray<ItemContainer *>
132 virtual ~ItemArray();
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);
158 ItemArray(
const ItemArray &);
159 ItemArray &operator =(
const ItemArray &);
166 ScoreInfos(uint maxNbEntries,
const PlayerInfos &infos);
168 uint nbEntries()
const;
169 uint maxNbEntries()
const {
return _maxNbEntries; }
176class ConfigGroup :
public TDEConfigGroupSaver
179 ConfigGroup(
const TQString &group = TQString())
180 : TDEConfigGroupSaver(tdeApp->config(), group) {}
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 comment()
const {
return item(
"comment")->pretty(_id); }
197 TQString key()
const;
198 uint id()
const {
return _id; }
199 uint oldLocalId()
const {
return _oldLocalId; }
201 void createHistoItems(
const TQMemArray<uint> &scores,
bool bound);
202 TQString histoName(uint i)
const;
203 uint histoSize()
const;
204 const TQMemArray<uint> &histogram()
const {
return _histogram; }
206 void submitScore(
const Score &)
const;
208 bool isNameUsed(
const TQString &name)
const;
209 void modifyName(
const TQString &newName)
const;
210 void modifySettings(
const TQString &newName,
const TQString &comment,
211 const TQString &newKey)
const;
215 bool _newPlayer, _bound, _oldLocalPlayer;
216 uint _id, _oldLocalId;
217 TQMemArray<uint> _histogram;
224 ManagerPrivate(uint nbGameTypes, Manager &manager);
225 void init(uint maxNbentries);
228 bool modifySettings(
const TQString &newName,
const TQString &comment,
231 void setGameType(uint type);
233 int submitLocal(
const Score &score);
234 int submitScore(
const Score &score, TQWidget *widget,
bool askIfAnonymous);
235 Score readScore(uint i)
const;
237 uint gameType()
const {
return _gameType; }
238 uint nbGameTypes()
const {
return _nbGameTypes; }
239 ScoreInfos &scoreInfos() {
return *_scoreInfos; }
240 PlayerInfos &playerInfos() {
return *_playerInfos; }
241 KHighscore &hsConfig() {
return *_hsConfig; }
242 enum QueryType { Submit, Register, Change, Players, Scores };
244 void exportHighscores(TQTextStream &);
247 bool showStatistics, showDrawGames, trackLostGames, trackDrawGames;
251 KHighscore *_hsConfig;
252 PlayerInfos *_playerInfos;
253 ScoreInfos *_scoreInfos;
255 const uint _nbGameTypes;
259 int rank(
const Score &score)
const;
261 static bool getFromQuery(
const TQDomNamedNodeMap &map,
const TQString &name,
262 TQString &value, TQWidget *parent);
263 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.
This class manages highscores and players entries (several players can share the same highscores list...
ShowMode
Enumerate different conditions under which to show the high score dialog.
This class contains data for a score.