/** * @RDE_HEADER@ * ABC for creating custom views of dds sequences * $Id$ * $HeadURL$ * $Author$ * Created by Jens Heilmann, SLTE, 2021-05-17 */ #pragma once #ifndef Q_MOC_RUN #include #endif #include #include #include #include "logger.h" class QToolButton; class AbstractSequenceWidget : public QGroupBox { Q_OBJECT public: /** * @brief AbstractSequenceWidget inits pbAddMember and adds logic to it. * @attention pbAddMember must be inserted into a layout * @param readOnly if read only, disable all buttons on creation * @param name * @param contentType * @param logger * @param parent */ explicit AbstractSequenceWidget(const RwMode &readOnly, const QString &name, const dds::core::xtypes::DynamicType &contentType, NGL::INGLLogger &logger, QWidget *parent = nullptr); ~AbstractSequenceWidget(); /** * @brief setValue set data from dds for widget at index * if widget not found, createa a new one * @param inner * @param index * @param useOn */ virtual void setValue(const dds::core::xtypes::DynamicData &inner, const uint32_t &index, const QWidget *useOn); /** * @brief getValue get data inside widget for dds * @param name * @param data * @param index * @param useOn */ virtual void getValue(const QString &name, dds::core::xtypes::DynamicData &data, const uint32_t &index, const QWidget *useOn) const; /** * @brief setMemberCount used by DetailView * @param count */ virtual void setMemberCount(int count); /** * @brief getMemberCount used by DetailView * @return */ virtual uint32_t getMemberCount() const; protected: /** * @brief logger * @return */ virtual NGL::INGLLogger &logger() const; /** * @brief pbAddMember * @return */ virtual QToolButton *pbAddMember() const; /** * @brief getObjectName generates a valid object name given by index * @param index * @return */ virtual QString getObjectName(int index) const; /** * @brief setupMemberWidget place child and button widget into a layout * @param child * @param pbChild * @param objectName */ virtual void setupMemberWidget(QWidget *child, QToolButton *pbChild, const QString &objectName) = 0; private slots: /** * @brief addMemberWidget create a new button and connect to child * @param member new child */ virtual void addMemberWidget(QWidget *member); /** * @brief deleteMemberWidget clean up child and reindex other children objectnames * @param member deleted child */ virtual void deleteMemberWidget(QObject *member); private: RwMode m_rwMode; QToolButton *m_pbAddMember = nullptr; QList m_memberList; dds::core::xtypes::DynamicType m_contentType; QString m_name; NGL::INGLLogger &m_logger; };