From 03e4017e7fd836b9946ffc8b6be7ca6369b5e639 Mon Sep 17 00:00:00 2001 From: okaestne Date: Sat, 20 Aug 2022 21:42:30 +0200 Subject: [PATCH] mimimi Co-authored-by: MrBesen --- include/config.h | 5 +++-- src/config.cpp | 20 +++++++++++--------- src/lolautoaccept.cpp | 6 +++--- src/mainwindow.cpp | 2 +- src/settingstab.cpp | 4 +++- 5 files changed, 21 insertions(+), 16 deletions(-) diff --git a/include/config.h b/include/config.h index dda7472..3103d2e 100644 --- a/include/config.h +++ b/include/config.h @@ -1,5 +1,6 @@ #pragma once +#include #include #include "position.h" @@ -31,9 +32,9 @@ public: RootConfig(const QJsonObject&); operator QJsonObject() const; - PositionConfig& getPositionConfig(Position position); + std::shared_ptr getPositionConfig(Position position); - std::vector positionConfigs; + std::vector> positionConfigs; bool enabledAutoAccept; }; diff --git a/src/config.cpp b/src/config.cpp index 23eb48b..3e6841c 100644 --- a/src/config.cpp +++ b/src/config.cpp @@ -87,8 +87,8 @@ Config::RootConfig::operator QJsonObject() const { QJsonObject out; QJsonArray positionarr; - for(const PositionConfig& pos : positionConfigs) { - positionarr.push_back((QJsonObject) pos); + for(auto pos : positionConfigs) { + positionarr.push_back((QJsonObject) *pos.get()); } out["positions"] = positionarr; @@ -97,17 +97,19 @@ Config::RootConfig::operator QJsonObject() const { return out; } -Config::PositionConfig& Config::RootConfig::getPositionConfig(Position position) { - for(uint32_t i = 0; i < positionConfigs.size(); ++i) { - if(positionConfigs.at(i).position == position) { - return positionConfigs.at(i); +std::shared_ptr Config::RootConfig::getPositionConfig(Position position) { + // find existing configuration with given position + for(auto posc : positionConfigs) { + if(posc->position == position) { + return posc; } } // add a new config - positionConfigs.emplace_back(); - positionConfigs.back().position = position; - return positionConfigs.back(); + auto posconfig = std::make_shared(); + positionConfigs.push_back(posconfig); + posconfig->position = position; + return posconfig; } Config::Config() { diff --git a/src/lolautoaccept.cpp b/src/lolautoaccept.cpp index 79d5021..dd8d712 100644 --- a/src/lolautoaccept.cpp +++ b/src/lolautoaccept.cpp @@ -222,10 +222,10 @@ void LolAutoAccept::loadPosition(Position pos) { stages.resize(1); // first stage does not change stages.resize(3); - const Config::PositionConfig& posconf = config.getPositionConfig(pos); + std::shared_ptr posconf = config.getPositionConfig(pos); - applyConfigToStage(stages.at((int) State::BAN), posconf.ban); - applyConfigToStage(stages.at((int) State::PICK), posconf.pick); + applyConfigToStage(stages.at((int) State::BAN), posconf->ban); + applyConfigToStage(stages.at((int) State::PICK), posconf->pick); currentPosition = pos; currentPositionSet = true; diff --git a/src/mainwindow.cpp b/src/mainwindow.cpp index 2d1e0e2..0d7d2e2 100644 --- a/src/mainwindow.cpp +++ b/src/mainwindow.cpp @@ -15,7 +15,7 @@ MainWindow::MainWindow(QWidget *parent) : QMainWindow(parent), ui(new Ui::MainWi Config::RootConfig& rc = conf.getConfig(); for(int32_t tabnr = 0; tabnr < ui->tabWidget->count(); ++tabnr) { SettingsTab* tab = (SettingsTab*) ui->tabWidget->widget(tabnr); - tab->setup(rc.getPositionConfig(tab->getPosition()), &dd); + tab->setup(*rc.getPositionConfig(tab->getPosition()), &dd); QObject::connect(tab, SIGNAL( changed(Position, LolAutoAccept::State) ), this, SLOT( tabchanged(Position, LolAutoAccept::State) )); QObject::connect(tab, SIGNAL( toggled(Position, LolAutoAccept::State, bool) ), this, SLOT( tabtoggled(Position, LolAutoAccept::State, bool) )); diff --git a/src/settingstab.cpp b/src/settingstab.cpp index 68cc393..3d2e5df 100644 --- a/src/settingstab.cpp +++ b/src/settingstab.cpp @@ -71,7 +71,9 @@ void SettingsTab::pickToggled(bool b) { } void SettingsTab::pickChampsChanged() { - conf->pick.champs = toChampionNameList(ui->pickstage->getChampions()); + auto champs = ui->pickstage->getChampions(); + auto champnames = toChampionNameList(champs); + conf->pick.champs.swap(champnames); emit changed(position, LolAutoAccept::State::BAN); }