From f32c436c18c2a5a434feda28c6805cffab30fa2a Mon Sep 17 00:00:00 2001 From: mrbesen Date: Sun, 24 Apr 2022 13:09:28 +0200 Subject: [PATCH] using locale for the DataDragon API --- include/datadragon.h | 3 ++- src/datadragon.cpp | 11 ++++++++--- src/mainwindow.cpp | 2 +- src/stagesettings.cpp | 10 +++++++--- 4 files changed, 18 insertions(+), 8 deletions(-) diff --git a/include/datadragon.h b/include/datadragon.h index 5f6b006..1b74117 100644 --- a/include/datadragon.h +++ b/include/datadragon.h @@ -17,7 +17,7 @@ class DataDragon { public: using notifyImgfunc_t = std::function; - DataDragon(); + DataDragon(const std::string& locale); ~DataDragon(); DataDragon(const DataDragon&) = delete; DataDragon& operator=(const DataDragon&) = delete; @@ -64,6 +64,7 @@ protected: void stopAndJoinThread(); void threadLoop(); + std::string locale; std::string version; std::vector champs; std::mutex cachedatamutex; diff --git a/src/datadragon.cpp b/src/datadragon.cpp index b19ea1c..ee42c87 100644 --- a/src/datadragon.cpp +++ b/src/datadragon.cpp @@ -25,7 +25,7 @@ static size_t arrayWriteCallback(char* contents, size_t size, size_t nmemb, void return 0; } -DataDragon::DataDragon() : cache({{"square", ".png"}, {"loading", "_0.jpg"}, {"splash", "_0.jpg"}}) { +DataDragon::DataDragon(const std::string& locale) : locale(locale), cache({{"square", ".png"}, {"loading", "_0.jpg"}, {"splash", "_0.jpg"}}) { curl = curl_easy_init(); curl_easy_setopt(curl, CURLOPT_FOLLOWLOCATION, 1L); curl_easy_setopt(curl, CURLOPT_WRITEFUNCTION, arrayWriteCallback); @@ -238,7 +238,7 @@ QJsonDocument DataDragon::request(const std::string& url) { QJsonParseError err; QJsonDocument parsed = QJsonDocument::fromJson(arr, &err); if(parsed.isNull() || err.error != QJsonParseError::NoError) { - Log::error << "DataDragon Jsonparse error " << err.errorString().toStdString() << " offset: " << err.offset; + Log::error << "DataDragon Json parse error " << err.errorString().toStdString() << " offset: " << err.offset; return {}; } @@ -271,7 +271,12 @@ void DataDragon::getChampsInternal() { return; } - QJsonDocument jchamps = request(getCDNString() + "data/en_US/champion.json"); + QJsonDocument jchamps = request(getCDNString() + "data/" + locale + "/champion.json"); + if(jchamps.isEmpty()) { + // try again with default locale + locale = "en_US"; + jchamps = request(getCDNString() + "data/" + locale + "/champion.json"); + } if(jchamps.isObject()) { QJsonObject obj = jchamps.object(); auto it = obj.constFind("data"); diff --git a/src/mainwindow.cpp b/src/mainwindow.cpp index 7f0b841..ade65a5 100644 --- a/src/mainwindow.cpp +++ b/src/mainwindow.cpp @@ -8,7 +8,7 @@ static void applySetting(const Config::StageConfig& sc, StageSettings* ss) { ss->setChampion(QString::fromStdString(sc.champ)); } -MainWindow::MainWindow(LolAutoAccept& lolaa, QWidget *parent) : QMainWindow(parent), ui(new Ui::MainWindow), lolaa(lolaa) { +MainWindow::MainWindow(LolAutoAccept& lolaa, QWidget *parent) : QMainWindow(parent), ui(new Ui::MainWindow), lolaa(lolaa), dd(QLocale().name().toStdString()) { ui->setupUi(this); conf.load(); diff --git a/src/stagesettings.cpp b/src/stagesettings.cpp index 4a0514c..0a51a02 100644 --- a/src/stagesettings.cpp +++ b/src/stagesettings.cpp @@ -93,7 +93,11 @@ void StageSettings::applyChampion(const DataDragon::ChampData& cd) { emit championChanged(QString::fromStdString(cd.name)); }); - #define QS(A) arg(QString::fromStdString(A)) - ui->champImg->setToolTip(tr("Champion: %1\nType: %2\nTitle: %3\nID: %4").QS(cd.name).QS(cd.partype).QS(cd.title).arg(cd.key)); - #undef QS + if(cd.key >= 0) { + #define QS(A) arg(QString::fromStdString(A)) + ui->champImg->setToolTip(tr("Champion: %1\nType: %2\nTitle: %3\nID: %4").QS(cd.name).QS(cd.partype).QS(cd.title).arg(cd.key)); + #undef QS + } else { + ui->champImg->setToolTip(""); + } }