75 lines
2.6 KiB
C++
75 lines
2.6 KiB
C++
|
//
|
||
|
// Created by bbr on 05.06.22..
|
||
|
//
|
||
|
|
||
|
#include "single_automatic_dialog.h"
|
||
|
#include <QVBoxLayout>
|
||
|
#include <QLabel>
|
||
|
#include <QComboBox>
|
||
|
#include <QPushButton>
|
||
|
|
||
|
namespace display {
|
||
|
SingleAutomaticDialog::SingleAutomaticDialog(std::vector<domain::InstanceAttribute> &values): attributes(values) {
|
||
|
setAttribute(Qt::WA_DeleteOnClose);
|
||
|
setWindowTitle(QString::fromStdString("Postavi poveznicu"));
|
||
|
|
||
|
firstValue = values[0].value;
|
||
|
secondValue = values[1].value;
|
||
|
|
||
|
auto *parentLayout = new QVBoxLayout(this);
|
||
|
auto *contentLayout = new QHBoxLayout(this);
|
||
|
auto *firstLayout = new QVBoxLayout(this);
|
||
|
auto *secondLayout = new QVBoxLayout(this);
|
||
|
|
||
|
parentLayout->addLayout(contentLayout);
|
||
|
contentLayout->addLayout(firstLayout);
|
||
|
contentLayout->addLayout(secondLayout);
|
||
|
this->setLayout(parentLayout);
|
||
|
|
||
|
setupValues(firstLayout, values[0], &SingleAutomaticDialog::onFirstEnumerationChanged);
|
||
|
setupValues(secondLayout, values[1], &SingleAutomaticDialog::onSecondEnumerationChanged);
|
||
|
|
||
|
auto button = new QPushButton("Ažuriraj");
|
||
|
connect(button, &QPushButton::clicked, this, &SingleAutomaticDialog::onUpdate);
|
||
|
parentLayout->addWidget(button);
|
||
|
}
|
||
|
|
||
|
void SingleAutomaticDialog::setupValues(QVBoxLayout *layout, domain::InstanceAttribute &attribute, void (display::SingleAutomaticDialog::* handler)(int)) {
|
||
|
|
||
|
auto popup = *attribute.attribute.getPopup();
|
||
|
|
||
|
layout->addWidget(new QLabel(popup.getTitle().c_str()));
|
||
|
layout->addWidget(new QLabel(popup.getText().c_str()));
|
||
|
|
||
|
auto *combo = new QComboBox(this);
|
||
|
auto enumeration = attribute.attribute.getPopup()->getEnumeration();
|
||
|
for (auto entry: enumeration) {
|
||
|
combo->addItem(QString::fromStdString(entry.getName()));
|
||
|
}
|
||
|
|
||
|
connect(combo, QOverload<int>::of(&QComboBox::currentIndexChanged), this,handler);
|
||
|
layout->addWidget(combo);
|
||
|
|
||
|
for (int i = 0; i < enumeration.size(); i++) {
|
||
|
if (attribute.value.equals(enumeration[i].getValue())) {
|
||
|
combo->setCurrentIndex(i);
|
||
|
break;
|
||
|
}
|
||
|
}
|
||
|
}
|
||
|
|
||
|
void SingleAutomaticDialog::onFirstEnumerationChanged(int index) {
|
||
|
firstValue = attributes[0].attribute.getPopup()->getEnumeration()[index].getValue();
|
||
|
}
|
||
|
|
||
|
void SingleAutomaticDialog::onSecondEnumerationChanged(int index) {
|
||
|
secondValue = attributes[1].attribute.getPopup()->getEnumeration()[index].getValue();
|
||
|
}
|
||
|
|
||
|
void SingleAutomaticDialog::onUpdate() {
|
||
|
attributes[0].value = firstValue;
|
||
|
attributes[1].value = secondValue;
|
||
|
accept();
|
||
|
}
|
||
|
|
||
|
} // display
|