// // Created by bbr on 05.06.22.. // #include "single_automatic_dialog.h" #include #include #include #include namespace display { SingleAutomaticDialog::SingleAutomaticDialog(std::vector &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 button = new QPushButton(updating ? "Ažuriraj" : "Postavi"); 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::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