#include "single_automatic_dialog.h" #include #include #include #include namespace display { SingleAutomaticDialog::SingleAutomaticDialog(std::string title, std::string action, std::vector &values) : GenericDialog(title, action), attributes(values) { firstValue = values[0].value; secondValue = values[1].value; auto *contentLayout = new QHBoxLayout(); auto *firstLayout = new QVBoxLayout(); auto *secondLayout = new QVBoxLayout(); content->setLayout(contentLayout); contentLayout->addLayout(firstLayout); contentLayout->addLayout(secondLayout); setupValues(firstLayout, values[0], &SingleAutomaticDialog::onFirstEnumerationChanged); setupValues(secondLayout, values[1], &SingleAutomaticDialog::onSecondEnumerationChanged); } 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(); } bool SingleAutomaticDialog::onUpdate() { attributes[0].value = firstValue; attributes[1].value = secondValue; return true; } } // display