101 lines
2.7 KiB
C++
101 lines
2.7 KiB
C++
#ifndef CARDDATABASE_H
|
|
#define CARDDATABASE_H
|
|
|
|
#include <QHash>
|
|
#include <QPixmap>
|
|
#include <QMap>
|
|
#include <QDataStream>
|
|
#include <QList>
|
|
#include <QXmlStreamReader>
|
|
|
|
class CardDatabase;
|
|
class CardInfo;
|
|
|
|
class CardSet : public QList<CardInfo *> {
|
|
private:
|
|
QString shortName, longName;
|
|
unsigned int sortKey;
|
|
public:
|
|
CardSet(const QString &_shortName = QString(), const QString &_longName = QString());
|
|
QString getShortName() const { return shortName; }
|
|
QString getLongName() const { return longName; }
|
|
int getSortKey() const { return sortKey; }
|
|
void setSortKey(unsigned int _sortKey);
|
|
void updateSortKey();
|
|
};
|
|
|
|
class SetList : public QList<CardSet *> {
|
|
private:
|
|
class CompareFunctor;
|
|
public:
|
|
void sortByKey();
|
|
};
|
|
|
|
class CardInfo {
|
|
private:
|
|
CardDatabase *db;
|
|
|
|
QString name;
|
|
SetList sets;
|
|
QString manacost;
|
|
QString cardtype;
|
|
QString powtough;
|
|
QString text;
|
|
int tableRow;
|
|
QPixmap *pixmap;
|
|
QMap<int, QPixmap *> scaledPixmapCache;
|
|
public:
|
|
CardInfo(CardDatabase *_db,
|
|
const QString &_name = QString(),
|
|
const QString &_manacost = QString(),
|
|
const QString &_cardtype = QString(),
|
|
const QString &_powtough = QString(),
|
|
const QString &_text = QString(),
|
|
int _tableRow = 0,
|
|
const SetList &_sets = SetList());
|
|
~CardInfo();
|
|
QString getName() const { return name; }
|
|
SetList getSets() const { return sets; }
|
|
QString getManaCost() const { return manacost; }
|
|
QString getCardType() const { return cardtype; }
|
|
QString getPowTough() const { return powtough; }
|
|
QString getText() const { return text; }
|
|
QString getMainCardType() const;
|
|
int getTableRow() const { return tableRow; }
|
|
void setTableRow(int _tableRow) { tableRow = _tableRow; }
|
|
void addToSet(CardSet *set);
|
|
QPixmap *loadPixmap();
|
|
QPixmap *getPixmap(QSize size);
|
|
void clearPixmapCache();
|
|
};
|
|
|
|
class CardDatabase : public QObject {
|
|
Q_OBJECT
|
|
private:
|
|
QHash<QString, CardInfo *> cardHash;
|
|
QHash<QString, CardSet *> setHash;
|
|
CardInfo *noCard;
|
|
QString picsPath, cardDatabasePath;
|
|
|
|
void loadCardsFromXml(QXmlStreamReader &xml);
|
|
void loadSetsFromXml(QXmlStreamReader &xml);
|
|
public:
|
|
CardDatabase(QObject *parent = 0);
|
|
~CardDatabase();
|
|
void clear();
|
|
CardInfo *getCard(const QString &cardName = QString());
|
|
CardSet *getSet(const QString &setName);
|
|
QList<CardInfo *> getCardList() const { return cardHash.values(); }
|
|
SetList getSetList() const;
|
|
void clearPixmapCache();
|
|
void importOracleFile(const QString &fileName, CardSet *set);
|
|
void importOracleDir();
|
|
int loadFromFile(const QString &fileName);
|
|
bool saveToFile(const QString &fileName);
|
|
const QString &getPicsPath() const { return picsPath; }
|
|
public slots:
|
|
void updatePicsPath(const QString &path = QString());
|
|
void updateDatabasePath(const QString &path = QString());
|
|
};
|
|
|
|
#endif
|