84 lines
3.0 KiB
C++
84 lines
3.0 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, bool updating): attributes(values) {
|
|
setAttribute(Qt::WA_DeleteOnClose);
|
|
setWindowTitle(QString::fromStdString(updating ? "Ažuriraj poveznicu" : "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 buttonLayout = new QHBoxLayout(this);
|
|
|
|
auto okButton = new QPushButton("U redu", this);
|
|
auto cancelButton = new QPushButton("Odustani", this);
|
|
|
|
connect(okButton, &QPushButton::clicked, [this]() { accept(); });
|
|
connect(cancelButton, &QPushButton::clicked, [this]() { reject(); });
|
|
|
|
buttonLayout->addWidget(okButton);
|
|
buttonLayout->addWidget(cancelButton);
|
|
|
|
parentLayout->addLayout(buttonLayout);
|
|
}
|
|
|
|
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
|