lolautoaccept/src/runedisplay.cpp

71 lines
1.5 KiB
C++

#include "runedisplay.h"
#include "ui_runedisplay.h"
#include <QTextStream>
const static QString EMPTY;
RuneDisplay::RuneDisplay(QWidget *parent) : QWidget(parent), ui(new Ui::RuneDisplay) {
ui->setupUi(this);
}
RuneDisplay::~RuneDisplay() {
delete ui;
}
void RuneDisplay::setRuneMeta(const std::vector<RuneAspekt>& ri) {
runeinfo = ri;
}
void RuneDisplay::setStyles(const std::vector<RuneStyle>& styleinfos) {
runestyles = styleinfos;
}
void RuneDisplay::setRunes(const RunePage& rp) {
runepage = rp;
updateText();
}
void RuneDisplay::applyRunesClicked() {
emit applyRunes();
}
void RuneDisplay::updateText() {
QString outStr;
QTextStream out(&outStr);
if(! (bool) runepage) {
ui->runetext->setText("");
ui->applyRunesBtn->setEnabled(false);
return;
}
out << getRuneStyleByID(runepage.primaryStyle) << " with " << getRuneStyleByID(runepage.secondaryStyle) << '\n';
for(uint32_t rune : runepage.selectedAspects) {
out << getRuneText(rune) << '\n';
}
ui->runetext->setText(outStr);
ui->applyRunesBtn->setEnabled(true);
}
QString RuneDisplay::getRuneText(uint32_t id) {
for(const RuneAspekt& ra : runeinfo) {
if(ra.id == id) {
return ra.name;
}
}
return "(" + QString::number(id) + ")";
}
QString RuneDisplay::getRuneStyleByID(uint32_t id) {
auto it = std::find_if(runestyles.begin(), runestyles.end(), [id](const RuneStyle& rs) { return rs.id == id; });
if(it == runestyles.end()) {
return '(' + QString::number(id) + ')';
}
return it->name;
}