From b4436f2451fb3f3011ec5dea9324ba29d0a5707c Mon Sep 17 00:00:00 2001 From: Max-Wilhelm Bruker Date: Fri, 15 Oct 2010 18:10:58 +0200 Subject: [PATCH] minor oracle improvement --- cockatrice/src/carddatabase.cpp | 3 ++- oracle/src/oracleimporter.cpp | 1 - oracle/src/oracleimporter.h | 1 + oracle/src/window_main.cpp | 17 +++++++++++++++++ 4 files changed, 20 insertions(+), 2 deletions(-) diff --git a/cockatrice/src/carddatabase.cpp b/cockatrice/src/carddatabase.cpp index 02a6f4d41..1087af1b6 100644 --- a/cockatrice/src/carddatabase.cpp +++ b/cockatrice/src/carddatabase.cpp @@ -460,7 +460,8 @@ bool CardDatabase::loadFromFile(const QString &fileName) bool CardDatabase::saveToFile(const QString &fileName) { QFile file(fileName); - file.open(QIODevice::WriteOnly); + if (!file.open(QIODevice::WriteOnly)) + return false; QXmlStreamWriter xml(&file); xml.setAutoFormatting(true); diff --git a/oracle/src/oracleimporter.cpp b/oracle/src/oracleimporter.cpp index ea9da9ea6..2ccebf97b 100644 --- a/oracle/src/oracleimporter.cpp +++ b/oracle/src/oracleimporter.cpp @@ -266,7 +266,6 @@ void OracleImporter::httpRequestFinished(int requestId, bool error) ++setIndex; if (setIndex == setsToDownload.size()) { - saveToFile(dataDir + "/cards.xml"); emit setIndexChanged(cards, setIndex, QString()); setIndex = -1; } else { diff --git a/oracle/src/oracleimporter.h b/oracle/src/oracleimporter.h index 59f620ef4..4d03a56f8 100644 --- a/oracle/src/oracleimporter.h +++ b/oracle/src/oracleimporter.h @@ -49,6 +49,7 @@ public: int startDownload(); int importTextSpoiler(CardSet *set, const QByteArray &data); QList &getSets() { return allSets; } + const QString &getDataDir() const { return dataDir; } }; #endif diff --git a/oracle/src/window_main.cpp b/oracle/src/window_main.cpp index 2ffa7ad92..8f8f9aef4 100644 --- a/oracle/src/window_main.cpp +++ b/oracle/src/window_main.cpp @@ -153,6 +153,23 @@ void WindowMain::updateTotalProgress(int cardsImported, int setIndex, const QStr totalProgressBar->setValue(setIndex); if (nextSetName.isEmpty()) { QMessageBox::information(this, tr("Oracle importer"), tr("Import finished: %1 cards.").arg(importer->getCardList().size())); + bool ok = false; + QString savePath = importer->getDataDir() + "/cards.xml"; + do { + QString fileName; + if (savePath.isEmpty()) + fileName = QFileDialog::getSaveFileName(this, tr("Save card database"), importer->getDataDir() + "/cards.xml", tr("XML card database (*.xml)")); + else { + fileName = savePath; + savePath.clear(); + } + if (fileName.isEmpty()) + qApp->quit(); + if (importer->saveToFile(fileName)) + ok = true; + else + QMessageBox::critical(this, tr("Error"), tr("The file could not be saved to the desired location.")); + } while (!ok); qApp->quit(); } else { nextSetLabel2->setText(nextSetName);