commit
6810ae46d6
2 changed files with 31 additions and 6 deletions
|
@ -263,14 +263,14 @@ void PictureLoader::picDownloadFinished(QNetworkReply *reply)
|
||||||
|
|
||||||
const QByteArray &picData = reply->peek(reply->size()); //peek is used to keep the data in the buffer for use by QImageReader
|
const QByteArray &picData = reply->peek(reply->size()); //peek is used to keep the data in the buffer for use by QImageReader
|
||||||
QImage testImage;
|
QImage testImage;
|
||||||
|
|
||||||
QImageReader imgReader;
|
QImageReader imgReader;
|
||||||
imgReader.setDecideFormatFromContent(true);
|
imgReader.setDecideFormatFromContent(true);
|
||||||
imgReader.setDevice(reply);
|
imgReader.setDevice(reply);
|
||||||
QString extension = "." + imgReader.format(); //the format is determined prior to reading the QImageReader data into a QImage object, as that wipes the QImageReader buffer
|
QString extension = "." + imgReader.format(); //the format is determined prior to reading the QImageReader data into a QImage object, as that wipes the QImageReader buffer
|
||||||
if (extension == ".jpeg")
|
if (extension == ".jpeg")
|
||||||
extension = ".jpg";
|
extension = ".jpg";
|
||||||
|
|
||||||
if (imgReader.read(&testImage)) {
|
if (imgReader.read(&testImage)) {
|
||||||
QString setName = cardBeingDownloaded.getSetName();
|
QString setName = cardBeingDownloaded.getSetName();
|
||||||
if(!setName.isEmpty())
|
if(!setName.isEmpty())
|
||||||
|
@ -493,7 +493,7 @@ void CardInfo::updatePixmapCache()
|
||||||
qDebug() << "Updating pixmap cache for" << name;
|
qDebug() << "Updating pixmap cache for" << name;
|
||||||
clearPixmapCache();
|
clearPixmapCache();
|
||||||
loadPixmap();
|
loadPixmap();
|
||||||
|
|
||||||
emit pixmapUpdated();
|
emit pixmapUpdated();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -605,7 +605,7 @@ CardDatabase::~CardDatabase()
|
||||||
{
|
{
|
||||||
clear();
|
clear();
|
||||||
delete noCard;
|
delete noCard;
|
||||||
|
|
||||||
pictureLoader->deleteLater();
|
pictureLoader->deleteLater();
|
||||||
pictureLoaderThread->wait();
|
pictureLoaderThread->wait();
|
||||||
delete pictureLoaderThread;
|
delete pictureLoaderThread;
|
||||||
|
@ -619,7 +619,7 @@ void CardDatabase::clear()
|
||||||
delete setIt.value();
|
delete setIt.value();
|
||||||
}
|
}
|
||||||
sets.clear();
|
sets.clear();
|
||||||
|
|
||||||
QHashIterator<QString, CardInfo *> i(cards);
|
QHashIterator<QString, CardInfo *> i(cards);
|
||||||
while (i.hasNext()) {
|
while (i.hasNext()) {
|
||||||
i.next();
|
i.next();
|
||||||
|
@ -770,11 +770,30 @@ void CardDatabase::loadCardsFromXml(QXmlStreamReader &xml, bool tokens)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
CardInfo *CardNameMap::findByPrefix(const std::string &prefix) {
|
||||||
|
int count = 0;
|
||||||
|
CardInfo *found;
|
||||||
|
|
||||||
|
for (CardNameMap::iterator it = this->begin(); it != this->end(); ++it) {
|
||||||
|
if (std::mismatch(prefix.begin(), prefix.end(),
|
||||||
|
it.key().toStdString().begin()).first == prefix.end()) {
|
||||||
|
count++;
|
||||||
|
found = it.value();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return (count == 1 ? found : NULL);
|
||||||
|
}
|
||||||
|
|
||||||
CardInfo *CardDatabase::getCardFromMap(CardNameMap &cardMap, const QString &cardName, bool createIfNotFound) {
|
CardInfo *CardDatabase::getCardFromMap(CardNameMap &cardMap, const QString &cardName, bool createIfNotFound) {
|
||||||
|
CardInfo *foundCard;
|
||||||
|
|
||||||
if (cardName.isEmpty())
|
if (cardName.isEmpty())
|
||||||
return noCard;
|
return noCard;
|
||||||
else if (cardMap.contains(cardName))
|
else if (cardMap.contains(cardName))
|
||||||
return cardMap.value(cardName);
|
return cardMap.value(cardName);
|
||||||
|
else if ((foundCard = cardMap.findByPrefix(cardName.toStdString())))
|
||||||
|
return foundCard;
|
||||||
else if (createIfNotFound) {
|
else if (createIfNotFound) {
|
||||||
CardInfo *newCard = new CardInfo(this, cardName, true);
|
CardInfo *newCard = new CardInfo(this, cardName, true);
|
||||||
newCard->addToSet(getSet("TK"));
|
newCard->addToSet(getSet("TK"));
|
||||||
|
|
|
@ -180,7 +180,13 @@ signals:
|
||||||
|
|
||||||
enum LoadStatus { Ok, VersionTooOld, Invalid, NotLoaded, FileError, NoCards };
|
enum LoadStatus { Ok, VersionTooOld, Invalid, NotLoaded, FileError, NoCards };
|
||||||
|
|
||||||
typedef QHash<QString, CardInfo *> CardNameMap;
|
|
||||||
|
class CardNameMap: public QHash<QString, CardInfo *>
|
||||||
|
{
|
||||||
|
public:
|
||||||
|
CardInfo *findByPrefix(const std::string &prefix);
|
||||||
|
};
|
||||||
|
|
||||||
typedef QHash<QString, CardSet *> SetNameMap;
|
typedef QHash<QString, CardSet *> SetNameMap;
|
||||||
|
|
||||||
class CardDatabase : public QObject {
|
class CardDatabase : public QObject {
|
||||||
|
|
Loading…
Reference in a new issue