kexthighscore_item.h00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020 #ifndef KEXTHIGHSCORE_ITEM_H
00021 #define KEXTHIGHSCORE_ITEM_H
00022
00023 #include <qvariant.h>
00024 #include <qnamespace.h>
00025 #include <qmap.h>
00026 #include <qvaluevector.h>
00027 #include <kdemacros.h>
00028 class QWidget;
00029
00030
00031 namespace KExtHighscore
00032 {
00033
00034
00040 class KDE_EXPORT Item
00041 {
00042 public:
00055 enum Format { NoFormat, OneDecimal, Percentage, MinuteTime,
00056 DateTime };
00057
00072 enum Special { NoSpecial, ZeroNotDefined, NegativeNotDefined,
00073 DefaultNotDefined, Anonymous };
00074
00084 Item(const QVariant &def = QVariant::Invalid,
00085 const QString &label = QString::null, int alignment = Qt::AlignRight);
00086
00087 virtual ~Item();
00088
00093 void setPrettyFormat(Format format);
00094
00099 void setPrettySpecial(Special special);
00100
00104 bool isVisible() const { return !_label.isEmpty(); }
00105
00109 void setLabel(const QString &label) { _label = label; }
00110
00114 QString label() const { return _label; }
00115
00119 int alignment() const { return _alignment; }
00120
00124 void setDefaultValue(const QVariant &value) { _default = value; }
00125
00129 const QVariant &defaultValue() const { return _default; }
00130
00138 virtual QVariant read(uint i, const QVariant &value) const;
00139
00147 virtual QString pretty(uint i, const QVariant &value) const;
00148
00149 private:
00150 QVariant _default;
00151 QString _label;
00152 int _alignment;
00153 Format _format;
00154 Special _special;
00155
00156 class ItemPrivate;
00157 ItemPrivate *d;
00158
00159 static QString timeFormat(uint);
00160 };
00161
00162
00169 enum ScoreType { Won = 0, Lost = -1, Draw = -2 };
00170
00175 class KDE_EXPORT Score
00176 {
00177 public:
00178 Score(ScoreType type = Won);
00179
00180 ~Score();
00181
00185 ScoreType type() const { return _type; }
00186
00190 void setType(ScoreType type) { _type = type; }
00191
00195 const QVariant &data(const QString &name) const;
00196
00202 void setData(const QString &name, const QVariant &value);
00203
00209 uint score() const { return data("score").toUInt(); }
00210
00216 void setScore(uint score) { setData("score", score); }
00217
00222 bool isTheWorst() const;
00223
00229 bool operator <(const Score &score);
00230
00231 private:
00232 ScoreType _type;
00233 QMap<QString, QVariant> _data;
00234
00235 class ScorePrivate;
00236 ScorePrivate *d;
00237
00238 friend class MultiplayerScores;
00239
00240 friend QDataStream &operator <<(QDataStream &stream, const Score &score);
00241 friend QDataStream &operator >>(QDataStream &stream, Score &score);
00242 };
00243
00244 KDE_EXPORT QDataStream &operator <<(QDataStream &stream, const Score &score);
00245 KDE_EXPORT QDataStream &operator >>(QDataStream &stream, Score &score);
00246
00267 class KDE_EXPORT MultiplayerScores
00268 {
00269 public:
00270 MultiplayerScores();
00271
00272 ~MultiplayerScores();
00273
00277 void setPlayerCount(uint nb);
00278
00282 void setName(uint player, const QString &name);
00283
00287 void addScore(uint player, const Score &score);
00288
00292 void clear();
00293
00297 void show(QWidget *parent);
00298
00299 private:
00300 QValueVector<uint> _nbGames;
00301 QValueVector<Score> _scores;
00302
00303 class MultiplayerScoresPrivate;
00304 MultiplayerScoresPrivate *d;
00305
00306 friend QDataStream &operator <<(QDataStream &stream,
00307 const MultiplayerScores &score);
00308 friend QDataStream &operator >>(QDataStream &stream,
00309 MultiplayerScores &score);
00310 };
00311
00312 KDE_EXPORT QDataStream &operator <<(QDataStream &stream, const MultiplayerScores &score);
00313 KDE_EXPORT QDataStream &operator >>(QDataStream &stream, MultiplayerScores &score);
00314
00315 }
00316
00317 #endif
|