using locale for the DataDragon API

This commit is contained in:
mrbesen 2022-04-24 13:09:28 +02:00
parent 246d5f80bc
commit f32c436c18
Signed by: MrBesen
GPG Key ID: 596B2350DCD67504
4 changed files with 18 additions and 8 deletions

View File

@ -17,7 +17,7 @@ class DataDragon {
public:
using notifyImgfunc_t = std::function<void(cv::Mat)>;
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<ChampData> champs;
std::mutex cachedatamutex;

View File

@ -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");

View File

@ -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();

View File

@ -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("");
}
}