#include "deckstats_interface.h" #include "decklist.h" #include #include #include #include #include #include #include DeckStatsInterface::DeckStatsInterface( CardDatabase &_cardDatabase, QObject *parent ) : QObject(parent), cardDatabase(_cardDatabase) { manager = new QNetworkAccessManager(this); connect(manager, SIGNAL(finished(QNetworkReply *)), this, SLOT(queryFinished(QNetworkReply *))); } void DeckStatsInterface::queryFinished(QNetworkReply *reply) { if (reply->error() != QNetworkReply::NoError) { QMessageBox::critical(0, tr("Error"), reply->errorString()); reply->deleteLater(); deleteLater(); return; } QString data(reply->readAll()); reply->deleteLater(); QRegExp rx("getName()); params.setQuery(urlQuery); data->append(params.query(QUrl::EncodeReserved)); } void DeckStatsInterface::analyzeDeck(DeckList *deck) { QByteArray data; getAnalyzeRequestData(deck, &data); QNetworkRequest request(QUrl("https://deckstats.net/index.php")); request.setHeader(QNetworkRequest::ContentTypeHeader, "application/x-www-form-urlencoded"); manager->post(request, data); } struct CopyIfNotAToken { CardDatabase &cardDatabase; DeckList &destination; CopyIfNotAToken( CardDatabase &_cardDatabase, DeckList &_destination ) : cardDatabase(_cardDatabase), destination(_destination) {}; void operator()( const InnerDecklistNode *node, const DecklistCardNode *card ) const { CardInfo * dbCard = cardDatabase.getCard(card->getName()); if (dbCard && !dbCard->getIsToken()) { DecklistCardNode *addedCard = destination.addCard( card->getName(), node->getName() ); addedCard->setNumber(card->getNumber()); } } }; void DeckStatsInterface::copyDeckWithoutTokens( const DeckList &source, DeckList &destination ) { CopyIfNotAToken copyIfNotAToken(cardDatabase, destination); source.forEachCard(copyIfNotAToken); }