new carddb generator

This commit is contained in:
Max-Wilhelm Bruker 2009-08-02 14:55:00 +02:00
parent f33d790822
commit 27d25d41ac
7 changed files with 373 additions and 78 deletions

View file

@ -407,5 +407,6 @@ void CardDatabase::updateDatabasePath(const QString &path)
cardDatabasePath = settings.value("carddatabase").toString();
} else
cardDatabasePath = path;
loadFromFile(cardDatabasePath);
if (!cardDatabasePath.isEmpty())
loadFromFile(cardDatabasePath);
}

View file

@ -1,10 +0,0 @@
#!/bin/bash
while read; do
filename=`echo $REPLY | cut '-d,' -f 1`
edition=`echo $REPLY | cut '-d,' -f 2`
editionLong=`echo $REPLY | cut '-d,' -f 3`
wget http://www.crystalkeep.com/magic/rules/oracle/oracle-$filename.txt
mv oracle-$filename.txt "${edition}_${editionLong}.txt"
done

View file

@ -1,67 +0,0 @@
10,10E,Tenth Edition
ar,ARB,Alara Reborn
cf,CFX,Conflux
sa,ALA,Shards of Alara
et,EVE,Eventide
sm,SHM,Shadowmoor
mt,MOR,Morningtide
lo,LRW,Lorwyn
9th,9E,Ninth Edition
8th,8E,Eighth Edition
fs,FUT,Future Sight
pc,PLC,Planar Chaos
ts,TSP,Time Spiral
cs,CS,Coldsnap
di,DIS,Dissension
gp,GP,Guildpact
ra,RAV,Ravnica
sk,SOK,Saviors of Kamigawa
bk,BOK,Betrayers of Kamigawa
ck,CHK,Champions of Kamigawa
fd,FD,Fifth Dawn
ds,DS,Darksteel
mr,MR,Mirrodin
sc,SC,Scourge
le,LE,Legions
on,ON,Onslaught
7th,7E,Seventh Edition
6th,6E,Sixth Edition
5th,5E,Fifth Edition
4th,4E,Fourth Edition
rv,R,Revised Edition
lu,U,Unlimited Edition
lu,B,Limited Edition
ju,JU,Judgment
to,TO,Torment
od,OD,Odyssey
ap,AP,Apocalypse
ps,PS,Planeshift
in,IN,Invasion
py,PY,Prophecy
ne,NE,Nemesis
mm,MM,Mercadian Masques
ud,UD,Urza's Destiny
ul,UL,Urza's Legacy
us,US,Urza's Saga
ex,EX,Exodus
sh,SH,Stronghold
te,TE,Tempest
wl,WL,Weatherlight
vi,VI,Visions
mi,MI,Mirage
al,AL,Alliances
hl,HL,Homelands
ia,IA,Ice Age
ch,CH,Chronicles
fe,FE,Fallen Empires
dk,DK,The Dark
lg,LG,Legends
aq,AQ,Antiquities
an,AN,Arabian Nights
pt,PT,Portal
pt2,P2,Portal: Second Age
pt3,P3,Portal: Three Kingdoms
st,ST,Starter
st2,ST2K,Starter 2000
ug,UG,Unglued
uh,UNH,Unhinged

10
oracle/oracle.pro Normal file
View file

@ -0,0 +1,10 @@
TEMPLATE = app
TARGET =
DEPENDPATH += . src
INCLUDEPATH += . src ../cockatrice/src
MOC_DIR = build
OBJECTS_DIR = build
QT += network svg
HEADERS += src/oracleimporter.h ../cockatrice/src/carddatabase.h
SOURCES += src/main.cpp src/oracleimporter.cpp ../cockatrice/src/carddatabase.cpp

12
oracle/src/main.cpp Normal file
View file

@ -0,0 +1,12 @@
#include <QApplication>
#include "oracleimporter.h"
int main(int argc, char *argv[])
{
QApplication app(argc, argv);
OracleImporter importer;
importer.downloadNextFile();
return app.exec();
}

View file

@ -0,0 +1,308 @@
#include "oracleimporter.h"
#include <QtGui>
#include <QtNetwork>
OracleImporter::OracleImporter()
: setIndex(-1)
{
setsToDownload << SetToDownload("10E", "Tenth Edition", "http://www.crystalkeep.com/magic/rules/oracle/oracle-10.txt");
setsToDownload << SetToDownload("ARB", "Alara Reborn", "http://www.crystalkeep.com/magic/rules/oracle/oracle-ar.txt");
setsToDownload << SetToDownload("CFX", "Conflux", "http://www.crystalkeep.com/magic/rules/oracle/oracle-cf.txt");
setsToDownload << SetToDownload("ALA", "Shards of Alara", "http://www.crystalkeep.com/magic/rules/oracle/oracle-sa.txt");
setsToDownload << SetToDownload("EVE", "Eventide", "http://www.crystalkeep.com/magic/rules/oracle/oracle-et.txt");
setsToDownload << SetToDownload("SHM", "Shadowmoor", "http://www.crystalkeep.com/magic/rules/oracle/oracle-sm.txt");
setsToDownload << SetToDownload("MOR", "Morningtide", "http://www.crystalkeep.com/magic/rules/oracle/oracle-mt.txt");
setsToDownload << SetToDownload("LRW", "Lorwyn", "http://www.crystalkeep.com/magic/rules/oracle/oracle-lo.txt");
setsToDownload << SetToDownload("9E", "Ninth Edition", "http://www.crystalkeep.com/magic/rules/oracle/oracle-9th.txt");
setsToDownload << SetToDownload("8E", "Eighth Edition", "http://www.crystalkeep.com/magic/rules/oracle/oracle-8th.txt");
setsToDownload << SetToDownload("FUT", "Future Sight", "http://www.crystalkeep.com/magic/rules/oracle/oracle-fs.txt");
setsToDownload << SetToDownload("PLC", "Planar Chaos", "http://www.crystalkeep.com/magic/rules/oracle/oracle-pc.txt");
setsToDownload << SetToDownload("TSP", "Time Spiral", "http://www.crystalkeep.com/magic/rules/oracle/oracle-ts.txt");
setsToDownload << SetToDownload("CS", "Coldsnap", "http://www.crystalkeep.com/magic/rules/oracle/oracle-cs.txt");
setsToDownload << SetToDownload("DIS", "Dissension", "http://www.crystalkeep.com/magic/rules/oracle/oracle-di.txt");
setsToDownload << SetToDownload("GP", "Guildpact", "http://www.crystalkeep.com/magic/rules/oracle/oracle-gp.txt");
setsToDownload << SetToDownload("RAV", "Ravnica", "http://www.crystalkeep.com/magic/rules/oracle/oracle-ra.txt");
setsToDownload << SetToDownload("SOK", "Saviors of Kamigawa", "http://www.crystalkeep.com/magic/rules/oracle/oracle-sk.txt");
setsToDownload << SetToDownload("BOK", "Betrayers of Kamigawa", "http://www.crystalkeep.com/magic/rules/oracle/oracle-bk.txt");
setsToDownload << SetToDownload("CHK", "Champions of Kamigawa", "http://www.crystalkeep.com/magic/rules/oracle/oracle-ck.txt");
setsToDownload << SetToDownload("FD", "Fifth Dawn", "http://www.crystalkeep.com/magic/rules/oracle/oracle-fd.txt");
setsToDownload << SetToDownload("DS", "Darksteel", "http://www.crystalkeep.com/magic/rules/oracle/oracle-ds.txt");
setsToDownload << SetToDownload("MR", "Mirrodin", "http://www.crystalkeep.com/magic/rules/oracle/oracle-mr.txt");
setsToDownload << SetToDownload("SC", "Scourge", "http://www.crystalkeep.com/magic/rules/oracle/oracle-sc.txt");
setsToDownload << SetToDownload("LE", "Legions", "http://www.crystalkeep.com/magic/rules/oracle/oracle-le.txt");
setsToDownload << SetToDownload("ON", "Onslaught", "http://www.crystalkeep.com/magic/rules/oracle/oracle-on.txt");
setsToDownload << SetToDownload("7E", "Seventh Edition", "http://www.crystalkeep.com/magic/rules/oracle/oracle-7th.txt");
setsToDownload << SetToDownload("6E", "Sixth Edition", "http://www.crystalkeep.com/magic/rules/oracle/oracle-6th.txt");
setsToDownload << SetToDownload("5E", "Fifth Edition", "http://www.crystalkeep.com/magic/rules/oracle/oracle-5th.txt");
setsToDownload << SetToDownload("4E", "Fourth Edition", "http://www.crystalkeep.com/magic/rules/oracle/oracle-4th.txt");
setsToDownload << SetToDownload("R", "Revised Edition", "http://www.crystalkeep.com/magic/rules/oracle/oracle-rv.txt");
setsToDownload << SetToDownload("U", "Unlimited Edition", "http://www.crystalkeep.com/magic/rules/oracle/oracle-lu.txt");
setsToDownload << SetToDownload("B", "Limited Edition", "http://www.crystalkeep.com/magic/rules/oracle/oracle-lu.txt");
setsToDownload << SetToDownload("JU", "Judgment", "http://www.crystalkeep.com/magic/rules/oracle/oracle-ju.txt");
setsToDownload << SetToDownload("TO", "Torment", "http://www.crystalkeep.com/magic/rules/oracle/oracle-to.txt");
setsToDownload << SetToDownload("OD", "Odyssey", "http://www.crystalkeep.com/magic/rules/oracle/oracle-od.txt");
setsToDownload << SetToDownload("AP", "Apocalypse", "http://www.crystalkeep.com/magic/rules/oracle/oracle-ap.txt");
setsToDownload << SetToDownload("PS", "Planeshift", "http://www.crystalkeep.com/magic/rules/oracle/oracle-ps.txt");
setsToDownload << SetToDownload("IN", "Invasion", "http://www.crystalkeep.com/magic/rules/oracle/oracle-in.txt");
setsToDownload << SetToDownload("PY", "Prophecy", "http://www.crystalkeep.com/magic/rules/oracle/oracle-py.txt");
setsToDownload << SetToDownload("NE", "Nemesis", "http://www.crystalkeep.com/magic/rules/oracle/oracle-ne.txt");
setsToDownload << SetToDownload("MM", "Mercadian Masques", "http://www.crystalkeep.com/magic/rules/oracle/oracle-mm.txt");
setsToDownload << SetToDownload("UD", "Urza's Destiny", "http://www.crystalkeep.com/magic/rules/oracle/oracle-ud.txt");
setsToDownload << SetToDownload("UL", "Urza's Legacy", "http://www.crystalkeep.com/magic/rules/oracle/oracle-ul.txt");
setsToDownload << SetToDownload("US", "Urza's Saga", "http://www.crystalkeep.com/magic/rules/oracle/oracle-us.txt");
setsToDownload << SetToDownload("EX", "Exodus", "http://www.crystalkeep.com/magic/rules/oracle/oracle-ex.txt");
setsToDownload << SetToDownload("SH", "Stronghold", "http://www.crystalkeep.com/magic/rules/oracle/oracle-sh.txt");
setsToDownload << SetToDownload("TE", "Tempest", "http://www.crystalkeep.com/magic/rules/oracle/oracle-te.txt");
setsToDownload << SetToDownload("WL", "Weatherlight", "http://www.crystalkeep.com/magic/rules/oracle/oracle-wl.txt");
setsToDownload << SetToDownload("VI", "Visions", "http://www.crystalkeep.com/magic/rules/oracle/oracle-vi.txt");
setsToDownload << SetToDownload("MI", "Mirage", "http://www.crystalkeep.com/magic/rules/oracle/oracle-mi.txt");
setsToDownload << SetToDownload("AL", "Alliances", "http://www.crystalkeep.com/magic/rules/oracle/oracle-al.txt");
setsToDownload << SetToDownload("HL", "Homelands", "http://www.crystalkeep.com/magic/rules/oracle/oracle-hl.txt");
setsToDownload << SetToDownload("IA", "Ice Age", "http://www.crystalkeep.com/magic/rules/oracle/oracle-ia.txt");
setsToDownload << SetToDownload("CH", "Chronicles", "http://www.crystalkeep.com/magic/rules/oracle/oracle-ch.txt");
setsToDownload << SetToDownload("FE", "Fallen Empires", "http://www.crystalkeep.com/magic/rules/oracle/oracle-fe.txt");
setsToDownload << SetToDownload("DK", "The Dark", "http://www.crystalkeep.com/magic/rules/oracle/oracle-dk.txt");
setsToDownload << SetToDownload("LG", "Legends", "http://www.crystalkeep.com/magic/rules/oracle/oracle-lg.txt");
setsToDownload << SetToDownload("AQ", "Antiquities", "http://www.crystalkeep.com/magic/rules/oracle/oracle-aq.txt");
setsToDownload << SetToDownload("AN", "Arabian Nights", "http://www.crystalkeep.com/magic/rules/oracle/oracle-an.txt");
setsToDownload << SetToDownload("PT", "Portal", "http://www.crystalkeep.com/magic/rules/oracle/oracle-pt.txt");
setsToDownload << SetToDownload("P2", "Portal: Second Age", "http://www.crystalkeep.com/magic/rules/oracle/oracle-pt2.txt");
setsToDownload << SetToDownload("P3", "Portal: Three Kingdoms", "http://www.crystalkeep.com/magic/rules/oracle/oracle-pt3.txt");
setsToDownload << SetToDownload("ST", "Starter", "http://www.crystalkeep.com/magic/rules/oracle/oracle-st.txt");
setsToDownload << SetToDownload("ST2K", "Starter 2000", "http://www.crystalkeep.com/magic/rules/oracle/oracle-st2.txt");
setsToDownload << SetToDownload("UG", "Unglued", "http://www.crystalkeep.com/magic/rules/oracle/oracle-ug.txt");
setsToDownload << SetToDownload("UNH", "Unhinged", "http://www.crystalkeep.com/magic/rules/oracle/oracle-uh.txt");
colorOverride.insert("Ancestral Vision", QStringList("U"));
colorOverride.insert("Crimson Kobolds", QStringList("R"));
colorOverride.insert("Crookshank Kobolds", QStringList("R"));
colorOverride.insert("Dryad Arbor", QStringList("G"));
colorOverride.insert("Evermind", QStringList("U"));
colorOverride.insert("Hypergenesis", QStringList("G"));
colorOverride.insert("Intervention Pact", QStringList("W"));
colorOverride.insert("Kobolds of Kher Keep", QStringList("R"));
colorOverride.insert("Living End", QStringList("B"));
colorOverride.insert("Pact of Negation", QStringList("U"));
colorOverride.insert("Pact of the Titan", QStringList("R"));
colorOverride.insert("Restore Balance", QStringList("W"));
colorOverride.insert("Slaughter Pact", QStringList("B"));
colorOverride.insert("Summoner's Pact", QStringList("G"));
colorOverride.insert("Wheel of Fate", QStringList("R"));
tableRowOverride.insert("Azorius Signet", 0);
tableRowOverride.insert("Basalt Monolith", 0);
tableRowOverride.insert("Black Lotus", 0);
tableRowOverride.insert("Black Mana Battery", 0);
tableRowOverride.insert("Bloodstone Cameo", 0);
tableRowOverride.insert("Blue Mana Battery", 0);
tableRowOverride.insert("Boros Signet", 0);
tableRowOverride.insert("Celestial Prism", 0);
tableRowOverride.insert("Charcoal Diamond", 0);
tableRowOverride.insert("Chrome Mox", 0);
tableRowOverride.insert("Chronatog Totem", 0);
tableRowOverride.insert("Coalition Relic", 0);
tableRowOverride.insert("Coldsteel Heart", 0);
tableRowOverride.insert("Darksteel Ingot", 0);
tableRowOverride.insert("Dimir Signet", 0);
tableRowOverride.insert("Drake-Skull Cameo", 0);
tableRowOverride.insert("Eye of Ramos", 0);
tableRowOverride.insert("Fellwar Stone", 0);
tableRowOverride.insert("Fieldmist Borderpost", 0);
tableRowOverride.insert("Fire Diamond", 0);
tableRowOverride.insert("Firewild Borderpost", 0);
tableRowOverride.insert("Foriysian Totem", 0);
tableRowOverride.insert("Gemstone Array", 0);
tableRowOverride.insert("Gilded Lotus", 0);
tableRowOverride.insert("Golgari Signet", 0);
tableRowOverride.insert("Green Mana Battery", 0);
tableRowOverride.insert("Grim Monolith", 0);
tableRowOverride.insert("Gruul Signet", 0);
tableRowOverride.insert("Guardian Idol", 0);
tableRowOverride.insert("Heart of Ramos", 0);
tableRowOverride.insert("Honor-Worn Shaku", 0);
tableRowOverride.insert("Horn of Ramos", 0);
tableRowOverride.insert("Izzet Signet", 0);
tableRowOverride.insert("Jeweled Amulet", 0);
tableRowOverride.insert("Kyren Toy", 0);
tableRowOverride.insert("Lion's Eye Diamond", 0);
tableRowOverride.insert("Lotus Bloom", 0);
tableRowOverride.insert("Lotus Blossom", 0);
tableRowOverride.insert("Lotus Petal", 0);
tableRowOverride.insert("Mana Crypt", 0);
tableRowOverride.insert("Mana Cylix", 0);
tableRowOverride.insert("Mana Prism", 0);
tableRowOverride.insert("Mana Vault", 0);
tableRowOverride.insert("Marble Diamond", 0);
tableRowOverride.insert("Mind Stone", 0);
tableRowOverride.insert("Mistvein Borderpost", 0);
tableRowOverride.insert("Moss Diamond", 0);
tableRowOverride.insert("Mox Diamond", 0);
tableRowOverride.insert("Mox Emerald", 0);
tableRowOverride.insert("Mox Jet", 0);
tableRowOverride.insert("Mox Pearl", 0);
tableRowOverride.insert("Mox Ruby", 0);
tableRowOverride.insert("Mox Sapphire", 0);
tableRowOverride.insert("Obelisk of Bant", 0);
tableRowOverride.insert("Obelisk of Esper", 0);
tableRowOverride.insert("Obelisk of Grixis", 0);
tableRowOverride.insert("Obelisk of Jund", 0);
tableRowOverride.insert("Obelisk of Naya", 0);
tableRowOverride.insert("Orzhov Signet", 0);
tableRowOverride.insert("Paradise Plume", 0);
tableRowOverride.insert("Pentad Prism", 0);
tableRowOverride.insert("Phyrexian Lens", 0);
tableRowOverride.insert("Phyrexian Totem", 0);
tableRowOverride.insert("Prismatic Lens", 0);
tableRowOverride.insert("Rakdos Signet", 0);
tableRowOverride.insert("Red Mana Battery", 0);
tableRowOverride.insert("Seashell Cameo", 0);
tableRowOverride.insert("Selesnya Signet", 0);
tableRowOverride.insert("Serum Powder", 0);
tableRowOverride.insert("Simic Signet", 0);
tableRowOverride.insert("Sisay's Ring", 0);
tableRowOverride.insert("Skull of Ramos", 0);
tableRowOverride.insert("Sky Diamond", 0);
tableRowOverride.insert("Sol Grail", 0);
tableRowOverride.insert("Sol Ring", 0);
tableRowOverride.insert("Spectral Searchlight", 0);
tableRowOverride.insert("Springleaf Drum", 0);
tableRowOverride.insert("Standing Stones", 0);
tableRowOverride.insert("Star Compass", 0);
tableRowOverride.insert("Talisman of Dominance", 0);
tableRowOverride.insert("Talisman of Impulse", 0);
tableRowOverride.insert("Talisman of Indulgence", 0);
tableRowOverride.insert("Talisman of Progress", 0);
tableRowOverride.insert("Talisman of Unity", 0);
tableRowOverride.insert("Terrarion", 0);
tableRowOverride.insert("Thran Dynamo", 0);
tableRowOverride.insert("Thunder Totem", 0);
tableRowOverride.insert("Tigereye Cameo", 0);
tableRowOverride.insert("Tooth of Ramos", 0);
tableRowOverride.insert("Troll-Horn Cameo", 0);
tableRowOverride.insert("Ur-Golem's Eye", 0);
tableRowOverride.insert("Veinfire Borderpost", 0);
tableRowOverride.insert("Weatherseed Totem", 0);
tableRowOverride.insert("White Mana Battery", 0);
tableRowOverride.insert("Wildfield Borderpost", 0);
tableRowOverride.insert("Worn Powerstone", 0);
buffer = new QBuffer(this);
http = new QHttp(this);
connect(http, SIGNAL(requestFinished(int, bool)), this, SLOT(httpRequestFinished(int, bool)));
connect(http, SIGNAL(responseHeaderReceived(const QHttpResponseHeader &)), this, SLOT(readResponseHeader(const QHttpResponseHeader &)));
}
void OracleImporter::importOracleFile(CardSet *set)
{
buffer->seek(0);
QTextStream in(buffer);
while (!in.atEnd()) {
QString cardname = in.readLine();
if (cardname.isEmpty())
continue;
QString manacost = in.readLine();
QString cardtype, powtough;
QStringList text;
if ((manacost.contains("Land")) || (manacost.contains("Sorcery")) || (manacost.contains("Instant"))) {
cardtype = manacost;
manacost.clear();
} else {
cardtype = in.readLine();
powtough = in.readLine();
// Dirty hack.
// Cards to test: Any creature, any basic land, Ancestral Vision, Fire // Ice.
if (!powtough.contains("/") || powtough.size() > 5) {
text << powtough;
powtough = QString();
}
}
QString line = in.readLine();
while (!line.isEmpty()) {
text << line;
line = in.readLine();
}
CardInfo *card;
if (cardHash.contains(cardname))
card = cardHash.value(cardname);
else {
QStringList colors;
QStringList allColors = QStringList() << "W" << "U" << "B" << "R" << "G";
for (int i = 0; i < allColors.size(); i++)
if (manacost.contains(allColors[i]))
colors << allColors[i];
if (colorOverride.contains(cardname))
colors = colorOverride.value(cardname);
card = new CardInfo(this, cardname, manacost, cardtype, powtough, text.join("\n"), colors);
int tableRow = 1;
QString mainCardType = card->getMainCardType();
if (tableRowOverride.contains(cardname))
tableRow = tableRowOverride.value(cardname);
else if (mainCardType == "Land")
tableRow = 0;
else if ((mainCardType == "Sorcery") || (mainCardType == "Instant"))
tableRow = 2;
else if (mainCardType == "Creature")
tableRow = 3;
card->setTableRow(tableRow);
qDebug(cardname.toLatin1());
cardHash.insert(cardname, card);
}
card->addToSet(set);
}
}
void OracleImporter::downloadNextFile()
{
if (setIndex == -1) {
progressDialog = new QProgressDialog(tr("Downloading oracle files..."), QString(), 0, setsToDownload.size());
setIndex = 0;
}
QUrl url(setsToDownload[setIndex].getUrl());
http->setHost(url.host(), QHttp::ConnectionModeHttp, url.port() == -1 ? 0 : url.port());
buffer->close();
buffer->setData(QByteArray());
buffer->open(QIODevice::ReadWrite | QIODevice::Text);
reqId = http->get(QUrl::toPercentEncoding(url.path(), "!$&'()*+,;=:@/"), buffer);
}
void OracleImporter::httpRequestFinished(int requestId, bool error)
{
if (error) {
QMessageBox::information(0, tr("HTTP"), tr("Error."));
return;
}
if (requestId != reqId)
return;
importOracleFile(new CardSet(setsToDownload[setIndex].getShortName(), setsToDownload[setIndex].getLongName()));
progressDialog->setValue(++setIndex);
if (setIndex == setsToDownload.size()) {
qDebug(QString("OracleImporter: %1 cards imported").arg(cardHash.size()).toLatin1());
setIndex = -1;
} else
downloadNextFile();
}
void OracleImporter::readResponseHeader(const QHttpResponseHeader &responseHeader)
{
switch (responseHeader.statusCode()) {
case 200:
case 301:
case 302:
case 303:
case 307:
break;
default:
QMessageBox::information(0, tr("HTTP"), tr("Download failed: %1.").arg(responseHeader.reasonPhrase()));
progressDialog->hide();
http->abort();
deleteLater();
}
}

View file

@ -0,0 +1,41 @@
#ifndef ORACLEIMPORTER_H
#define ORACLEIMPORTER_H
#include <carddatabase.h>
#include <QHttp>
class QProgressDialog;
class QBuffer;
class SetToDownload {
private:
QString shortName, longName, url;
public:
const QString &getShortName() const { return shortName; }
const QString &getLongName() const { return longName; }
const QString &getUrl() const { return url; }
SetToDownload(const QString &_shortName, const QString &_longName, const QString &_url)
: shortName(_shortName), longName(_longName), url(_url) { }
};
class OracleImporter : public CardDatabase {
Q_OBJECT
private:
QList<SetToDownload> setsToDownload;
QMap<QString, QStringList> colorOverride;
QMap<QString, int> tableRowOverride;
int setIndex;
int reqId;
QBuffer *buffer;
QHttp *http;
QProgressDialog *progressDialog;
private slots:
void httpRequestFinished(int requestId, bool error);
void readResponseHeader(const QHttpResponseHeader &responseHeader);
public:
OracleImporter();
void importOracleFile(CardSet *set);
void downloadNextFile();
};
#endif