From b566bf4a193baf18f0bd9692c6fd5a2905d50ae2 Mon Sep 17 00:00:00 2001 From: Fabio Bas Date: Wed, 20 May 2015 18:27:50 +0200 Subject: [PATCH 1/2] Load additional xml sets from $userprofile/customsets/ --- cockatrice/src/carddatabase.cpp | 12 ++++++++++++ cockatrice/src/carddatabase.h | 1 + cockatrice/src/main.cpp | 7 +++++++ 3 files changed, 20 insertions(+) diff --git a/cockatrice/src/carddatabase.cpp b/cockatrice/src/carddatabase.cpp index 4a3705b9..f9215e0c 100644 --- a/cockatrice/src/carddatabase.cpp +++ b/cockatrice/src/carddatabase.cpp @@ -1053,6 +1053,18 @@ void CardDatabase::loadTokenDatabase() loadCardDatabase(settingsCache->getTokenDatabasePath(), true); } +void CardDatabase::loadCustomCardDatabases(const QString &path) +{ + QDir dir(path); + if(!dir.exists()) + return; + + foreach(QString fileName, dir.entryList(QStringList("*.xml"), QDir::Files | QDir::Readable, QDir::Name)) + { + loadCardDatabase(dir.absoluteFilePath(fileName), false); + } +} + QStringList CardDatabase::getAllColors() const { QSet colors; diff --git a/cockatrice/src/carddatabase.h b/cockatrice/src/carddatabase.h index 24deb947..30fdc1e0 100644 --- a/cockatrice/src/carddatabase.h +++ b/cockatrice/src/carddatabase.h @@ -271,6 +271,7 @@ public: public slots: void clearPixmapCache(); LoadStatus loadCardDatabase(const QString &path, bool tokens = false); + void loadCustomCardDatabases(const QString &path); void emitCardListChanged(); private slots: void imageLoaded(CardInfo *card, QImage image); diff --git a/cockatrice/src/main.cpp b/cockatrice/src/main.cpp index fa2c2d83..dc0473ab 100644 --- a/cockatrice/src/main.cpp +++ b/cockatrice/src/main.cpp @@ -164,6 +164,13 @@ int main(int argc, char *argv[]) } if (!QDir().mkpath(settingsCache->getPicsPath() + "/CUSTOM")) qDebug() << "Could not create " + settingsCache->getPicsPath().toUtf8() + "/CUSTOM. Will fall back on default card images."; + if (QDir().mkpath(dataDir + "/customsets")) + { + // if the dir exists (or has just been created) + db->loadCustomCardDatabases(dataDir + "/customsets"); + } else { + qDebug() << "Could not create " + dataDir + "/customsets folder."; + } if(settingsCache->getSoundPath().isEmpty() || !QDir(settingsCache->getSoundPath()).exists()) { From 6af91b3d1c19145c201bf6ef1d8026423ea154e2 Mon Sep 17 00:00:00 2001 From: Fabio Bas Date: Thu, 21 May 2015 19:58:35 +0200 Subject: [PATCH 2/2] Ignore filename case when loading custom sets --- cockatrice/src/carddatabase.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/cockatrice/src/carddatabase.cpp b/cockatrice/src/carddatabase.cpp index f9215e0c..c500b379 100644 --- a/cockatrice/src/carddatabase.cpp +++ b/cockatrice/src/carddatabase.cpp @@ -1059,7 +1059,7 @@ void CardDatabase::loadCustomCardDatabases(const QString &path) if(!dir.exists()) return; - foreach(QString fileName, dir.entryList(QStringList("*.xml"), QDir::Files | QDir::Readable, QDir::Name)) + foreach(QString fileName, dir.entryList(QStringList("*.xml"), QDir::Files | QDir::Readable, QDir::Name | QDir::IgnoreCase)) { loadCardDatabase(dir.absoluteFilePath(fileName), false); }