lolautoaccept/src/stagesettings.cpp

90 lines
2.2 KiB
C++

#include "stagesettings.h"
#include "ui_stagesettings.h"
#include <Log.h>
StageSettings::StageSettings(QWidget *parent) : QWidget(parent), ui(new Ui::StageSettings) {
ui->setupUi(this);
setMinimumSize(ui->gridLayout->minimumSize());
rescaleImage();
}
StageSettings::~StageSettings() {
delete ui;
}
QString StageSettings::getName() const {
return ui->groupBox->title();
}
void StageSettings::setName(const QString& n) {
ui->groupBox->setTitle(n);
ui->checkBox->setText(tr("Enable %1").arg(n));
}
bool StageSettings::getState() const {
return ui->checkBox->checkState() == Qt::CheckState::Checked;
}
void StageSettings::setState(bool b) {
ui->checkBox->setCheckState(b ? Qt::CheckState::Checked : Qt::CheckState::Unchecked);
}
QString StageSettings::getChampion() const {
return ui->lineEdit->text();
}
void StageSettings::setChampion(const QString& str) {
ui->lineEdit->setText(str);
}
void StageSettings::setDataDragon(DataDragon* dd_) {
dd = dd_;
}
void StageSettings::resizeEvent([[maybe_unused]] QResizeEvent* event) {
rescaleImage();
}
void StageSettings::championChangedinternal(const QString& str) {
QString emitting = str;
if(dd) {
int count = 0;
const DataDragon::ChampData& cd = dd->getBestMatchingChamp(str.toStdString(), &count);
if(cd.key != currentdisplayedChampKey) {
img = (cd.key < 0) ? cv::Mat() : dd->getImage(cd.id);
currentdisplayedChampKey = cd.key;
if(cd.key >= 0) {
emitting = QString::fromStdString(cd.name);
}
}
ui->champcount->setText(tr("Champions matched: %1").arg(QString::fromStdString(std::to_string(count))));
rescaleImage();
}
emit championChanged(emitting);
}
void StageSettings::toggledinternal(int state) {
emit toggled(state == Qt::CheckState::Checked);
}
void StageSettings::rescaleImage() {
if(img.empty()) {
ui->champImg->setPixmap(QPixmap());
return;
}
auto qimg = QImage((uchar*) img.data, img.cols, img.rows, img.step, QImage::Format_RGB888);
auto p = QPixmap::fromImage(qimg);
// get label dimensions
int w = ui->champImg->width();
int h = ui->champImg->height();
// set a scaled pixmap to a w x h window keeping its aspect ratio
ui->champImg->setPixmap(p.scaled(w, h, Qt::KeepAspectRatio)); //
}