#include "runemanager.h" #include "ui_runemanager.h" #include #include #include "clientapi.h" RuneManager::RuneManager(QWidget* parent) : QWidget(parent), ui(new Ui::RuneManager) { ui->setupUi(this); ui->listClientRunes->setClient(true); ui->listaaRunes->setClient(false); ui->listClientRunes->setOther(ui->listaaRunes); ui->listaaRunes->setOther(ui->listClientRunes); QObject::connect(ui->listaaRunes, &RunePageList::runepageChanged, this, &RuneManager::saveRunePageAA); QObject::connect(ui->listClientRunes, &RunePageList::runepageChanged, this, &RuneManager::saveRunePageClient); QObject::connect(ui->listaaRunes, &RunePageList::runepageDeleted, this, &RuneManager::deleteRunepageAA); QObject::connect(ui->listClientRunes, &RunePageList::runepageDeleted, this, &RuneManager::deleteRunepageClient); loadRunes(); } RuneManager::~RuneManager() { delete this->ui; } void RuneManager::setConfig(Config& config) { this->config = &config; ui->listaaRunes->loadRunePages(config.getConfig().runePages); } void RuneManager::loadRunes() { this->ui->btnRetry->setEnabled(false); QCoreApplication::processEvents(); if(!client) { auto ca = ClientAccess::find(); if(ca) { client = std::make_shared(*ca.get()); } } if(client) { // load meta data runeInfo = client->getAllRuneAspekts(); runeStyles = client->getAllRuneStyles(); this->ui->listClientRunes->setRuneInfos(runeInfo, runeStyles); this->ui->listaaRunes->setRuneInfos(runeInfo, runeStyles); // load runepages const std::vector runePages = client->getAllRunePages(); ui->listClientRunes->loadRunePages(runePages); } setRunesEnabled(!!client); // cast to bool this->ui->btnRetry->setEnabled(true); } void RuneManager::setRunesEnabled(bool enabled) { this->ui->lblClientRunes->setEnabled(enabled); this->ui->lblaaRunes->setEnabled(enabled); this->ui->listClientRunes->setEnabled(enabled); this->ui->listaaRunes->setEnabled(enabled); } void RuneManager::saveRunePageClient(int id, QString name, const RunePage& rp) { if(client) { ClientAPI::RunePage newPage; newPage.name = name.toStdString(); newPage.runepage = rp; newPage.id = id; if(id == -1) { // create new page if(!client->createRunePage(newPage)) { // TODO: some error occured } } else { // edit existing page if(!client->editRunePage(newPage)) { // TODO: some error occured } } } } void RuneManager::saveRunePageAA(int id, QString name, const RunePage& rp) { if(!config) return; Config::RootConfig& rc = config->getConfig(); auto& pages = rc.runePages; if(id == -1) { // int newId = pages.size(); pages.push_back(std::make_shared(name, rp)); } else { if((int) pages.size() > id && id >= 0) { pages.at(id)->runepage = rp; pages.at(id)->name = name; } else { // unkown id qWarning() << "unknown runepage id:" << id; } } config->save(); // reload runes ui->listaaRunes->loadRunePages(pages); } void RuneManager::deleteRunepageClient(int id) { if(client) { if(!client->deleteRunePage(id)) { // TODO: some error occured } } } void RuneManager::deleteRunepageAA(int id) { if(!config) return; Config::RootConfig& rc = config->getConfig(); auto& pages = rc.runePages; if((int) pages.size() > id && id >= 0) { pages.erase(pages.begin() + id); config->save(); } else { // unkown id qWarning() << "unknown runepage id:" << id; } }