#include "lts_abstract_sequence_widget.h" #include namespace LtsWidgets { LtsAbstractSequenceWidget::LtsAbstractSequenceWidget(QWidget *parent, const bool &readOnly) : QGroupBox(parent) , m_readOnly(readOnly) , m_pbAddMember(new QToolButton) { m_pbAddMember->setIcon(QIcon(QLatin1String(":/icons/png/add.png"))); connect(m_pbAddMember, &QToolButton::clicked, this, &LtsAbstractSequenceWidget::addMember); } LtsAbstractSequenceWidget::~LtsAbstractSequenceWidget() { } void LtsAbstractSequenceWidget::addWidget(QWidget* widget, bool isReadOnly, bool isButtonVisible) { addMemberWidget(widget, isReadOnly, isButtonVisible); m_pbAddMember->setDisabled(isReadOnly); m_pbAddMember->setVisible(isButtonVisible); } int LtsAbstractSequenceWidget::getMemberlistSize(){ return m_memberList.size(); } void LtsAbstractSequenceWidget::getValue(QWidget *data, const QString &findObjectName) const { if(!findChild(findObjectName)) return; data = findChild(findObjectName); } void LtsAbstractSequenceWidget::setMemberCount(int count) { QWidget *child = nullptr; do { child = findChild(getObjectName(++count)); delete child; } while (child); m_memberList.removeAll(nullptr); } uint32_t LtsAbstractSequenceWidget::getMemberCount() const { int count = 0; QWidget *child = findChild(getObjectName(count+1)); while(child) { count++; child = findChild(getObjectName(count+1)); } return count; } QToolButton *LtsAbstractSequenceWidget::pbAddMember() const { return m_pbAddMember; } QString LtsAbstractSequenceWidget::getObjectName(int index) const { return QString::number(index); } void LtsAbstractSequenceWidget::addMemberWidget(QWidget *member, bool isReadOnly, bool isButtonVisible) { QToolButton *button = new QToolButton(); button->setIcon(QIcon(QLatin1String(":/icons/png/remove.png"))); button->setDisabled(isReadOnly); connect(button, &QToolButton::clicked, member, &QWidget::deleteLater); connect(member, &QWidget::destroyed, this, &LtsAbstractSequenceWidget::deleteMemberWidget); connect(member, &QWidget::destroyed, button, &QToolButton::deleteLater); m_memberList.push_back(member); setupMemberWidget(member, button, member->objectName(), isButtonVisible); } void LtsAbstractSequenceWidget::deleteMemberWidget(QObject *member) { QWidget *w = qobject_cast(member); if(!w) return; for(auto child : w->children()) child->deleteLater(); m_memberList.removeAll(w); for(int i=0; isetObjectName(getObjectName(i + 1)); for(auto child : m_memberList[i]->children()) { if(child->objectName().isEmpty()) continue; QString childName = child->objectName(); QString newId = QString::number(i + 1); child->setObjectName(childName.replace(QRegExp(QLatin1String(".([0-9]*)")), newId)); } } } }