#pragma once #include #include class QComboBox; class QStandardItemModel; namespace ProjectDataManagement { enum class PdmComboBoxType { CbUnkown = 0, CbLanguage, CbOperationMode, CbModeHelmet, CbModeVest, CbPersonalProtection, CbProtectionLevel, CbHandgrenadeSearchMode, CbInternationalMode, CbABCProtectionMode, }; // Forward declarations for external DDS types - only available when external dependencies are present #ifdef BUILD_WITH_EXTERNAL_DDS namespace Interface { class Dtc; } enum class GearClass; enum class HandgrenadeSearchMode; enum class InternationalMode; enum class ABCProtectionMode; enum class PersonalProtection; enum class ProtectionLevel; enum class LanguageConfiguration; // RTI enum in ProjectDataManagement (pdm_enums.hpp); legacy used LanguageConfiguration enum class OperationMode; enum class WphMode; #endif namespace PdmComboBox { class ChargeTypeFilterProxyModel final : public QSortFilterProxyModel { Q_OBJECT public: using QSortFilterProxyModel::QSortFilterProxyModel; void setPropertyFilter(const QString &property, const QVariant &value); void setSourceModel(QAbstractItemModel *model) override; bool filterAcceptsRow(int source_row, const QModelIndex &source_parent) const override; private: QStandardItemModel *m_model = nullptr; QString m_property; QVariant m_value; }; namespace CBUserRoles { enum Role { Id = Qt::UserRole, Properties }; } namespace TargetSubTypeRole { enum Role { Id = Qt::UserRole, Abbreviation }; } bool fill(QComboBox *cbx, PdmComboBoxType type); #ifdef BUILD_WITH_EXTERNAL_DDS bool fill(QComboBox *cbx, GearClass gearClass, const std::shared_ptr &dtc); void fillIgniterType(QComboBox *cbx, int chargeTypeId, const std::shared_ptr &dtc); void fillIgniterFunction(QComboBox *cbx, int chargeTypeId, int igniterTypeId, const std::shared_ptr &dtc); void fillLoadType(QComboBox *cbx, int chargeTypeId, const std::shared_ptr &dtc); void fillTargetType(QComboBox *cbx, const std::shared_ptr &dtc); void fillTargetSubType(QComboBox *cbx, int targetTypeId, const std::shared_ptr &dtc); void fillFirePurpose(QComboBox *cbx, const std::shared_ptr &dtc); #endif bool setChargeTypePropertyFilter(QComboBox *cbx, const QString &property, const QVariant &value); } }