/** * @RDE_HEADER@ * A Frameless dialog to select parties * $Id$ * $HeadURL$ * $Author$ * Created by Christian Ehrlicher, SLSE, 2017-06-22 */ #include "pdm_charge_selector.h" #include #include #include #include #include namespace ProjectDataManagement { ChargeSelector::ChargeSelector(QWidget *parent) : LtsWidgets::LtsFramelessDialog(parent, LtsWidgets::Behaviour::Modal) { m_ui.setupUi(this); setAttribute(Qt::WA_DeleteOnClose); } ChargeSelector::~ChargeSelector() {} bool ChargeSelector::init(const std::shared_ptr &dtc, GearClass gearClass, const QSet &preselectedCharges) { QString title = tr("Select %1 Charges").arg(toString(gearClass)); m_ui.lblCharges->setText(title); setWindowTitle(title); qDeleteAll(findChildren()); m_selectedCharges = preselectedCharges; m_selectedChargesOriginal = preselectedCharges; const auto cfgc = dtc->chargesForGearClass(gearClass); for (const ChargeType &charge : cfgc) { if (LtsUtils::JsonObject::fromJson(charge.properties()).valueOr("suppressVisibility", false)) continue; const int chargeId = charge.id(); QCheckBox *cb = new QCheckBox; cb->setText(dtc->trChargeTypeShortName(chargeId, true)); cb->setChecked(preselectedCharges.contains(chargeId)); connect(cb, &QCheckBox::clicked, cb, [this, chargeId](bool checked) { chargeCheckBoxChanged(chargeId, checked); }); m_ui.layParties->addWidget(cb); } connect(m_ui.pbOk, &QPushButton::clicked, this, &ChargeSelector::accept); connect(m_ui.pbCancel, &QPushButton::clicked, this, &ChargeSelector::reject); return true; } void ChargeSelector::chargeCheckBoxChanged(int chargeId, bool bChecked) { if (bChecked) m_selectedCharges += chargeId; else m_selectedCharges -= chargeId; emit chargesSelected(m_selectedCharges); } void ChargeSelector::reject() { emit chargesSelected(m_selectedChargesOriginal); LtsWidgets::LtsFramelessDialog::reject(); } } // namespace ProjectDataManagement