forked from MrBesen/lolautoaccept
99 lines
2.4 KiB
C++
99 lines
2.4 KiB
C++
#include "runemanager.h"
|
|
#include "ui_runemanager.h"
|
|
|
|
#include <QDebug>
|
|
#include <QListWidgetItem>
|
|
|
|
#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);
|
|
|
|
loadRunes();
|
|
}
|
|
|
|
RuneManager::~RuneManager() {
|
|
delete this->ui;
|
|
}
|
|
|
|
void RuneManager::setConfig(Config& config) {
|
|
this->config = &config;
|
|
ui->listaaRunes->loadRunePages(config.getConfig().runePages);
|
|
}
|
|
|
|
void RuneManager::loadRunes() {
|
|
if(!client) {
|
|
auto ca = ClientAccess::find();
|
|
|
|
if(ca) {
|
|
client = std::make_shared<ClientAPI>(*ca.get());
|
|
}
|
|
}
|
|
|
|
if(client) {
|
|
// load runepages
|
|
const std::vector<ClientAPI::RunePage> runePages = client->getAllRunePages();
|
|
ui->listClientRunes->loadRunePages(runePages);
|
|
}
|
|
|
|
setRunesEnabled(!!client); // cast to bool
|
|
}
|
|
|
|
|
|
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);
|
|
this->ui->btnDelete->setEnabled(enabled);
|
|
|
|
this->ui->btnRetry->setEnabled(!enabled);
|
|
}
|
|
|
|
void RuneManager::clientRunePageRenamed(QListWidgetItem* item) {
|
|
uint32_t pageId = item->data(RunePageList::RoleId).toUInt();
|
|
const ::RunePage* page = (::RunePage*) item->data(RunePageList::RolePointer).toULongLong();
|
|
qDebug() << "edit page: " << pageId << "setname:" << item->text();
|
|
|
|
if(client) {
|
|
ClientAPI::RunePage newPage;
|
|
newPage.id = pageId;
|
|
newPage.name = item->text().toStdString();
|
|
newPage.runepage = *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<Config::RunePageConfig>(name, rp));
|
|
} else {
|
|
if((int) pages.size() > id && id >= 0) {
|
|
pages.at(id)->runepage = rp;
|
|
} else {
|
|
// unkown id
|
|
qWarning() << "unknown runepage id:" << id;
|
|
}
|
|
}
|
|
|
|
config->save();
|
|
|
|
// reload runes
|
|
ui->listaaRunes->loadRunePages(pages);
|
|
}
|