Files
GostGenerator/model/componentmodel.cpp
T

97 lines
3.3 KiB
C++

#include "componentmodel.h"
ComponentModel::ComponentModel(QObject *parent)
: QObject{parent}
{}
int ComponentModel::id() const
{
return m_id;
}
void ComponentModel::setId(int newId)
{
if (m_id == newId)
return;
m_id = newId;
emit idChanged();
}
QString ComponentModel::designator() const
{
return m_designator;
}
void ComponentModel::setDesignator(const QString &newDesignator)
{
if (m_designator == newDesignator)
return;
m_designator = newDesignator;
emit designatorChanged();
}
QString ComponentModel::currentVariant() const
{
return m_currentVariant;
}
void ComponentModel::setCurrentVariant(const QString &newCurrentVariant)
{
qDebug() << "ComponentModel: Устанавливаем текущий вариант:" << newCurrentVariant << "для компонента" << m_designator << "текущий:" << m_currentVariant;
if (m_currentVariant == newCurrentVariant) {
qDebug() << "ComponentModel: Вариант не изменился, но обновляем свойства";
updateCurrentProperties();
return;
}
m_currentVariant = newCurrentVariant;
updateCurrentProperties();
emit currentVariantChanged();
}
QMap<QString, QString> ComponentModel::properties() const
{
return m_currentProperties;
}
void ComponentModel::setProperties(const QMap<QString, QString> &newProperties)
{
if (m_currentProperties == newProperties)
return;
m_currentProperties = newProperties;
emit propertiesChanged();
}
void ComponentModel::setBaseProperties(const QMap<QString, QString> &newBaseProperties)
{
if (m_baseProperties == newBaseProperties)
return;
m_baseProperties = newBaseProperties;
qDebug() << "ComponentModel: Устанавливаем базовые свойства для" << m_designator << "свойств:" << newBaseProperties.size();
// НЕ вызываем updateCurrentProperties() здесь, так как вариант еще не установлен
emit propertiesChanged();
}
void ComponentModel::setVariantProperties(const QString &variantName, const QMap<QString, QString> &variantProps)
{
m_variantProperties[variantName] = variantProps;
qDebug() << "ComponentModel: Устанавливаем свойства варианта" << variantName << "для" << m_designator << "свойств:" << variantProps.size();
updateCurrentProperties();
emit propertiesChanged();
}
void ComponentModel::updateCurrentProperties() {
qDebug() << "ComponentModel: Обновляем свойства для" << m_designator << "текущий вариант:" << m_currentVariant;
qDebug() << "ComponentModel: Базовых свойств:" << m_baseProperties.size();
qDebug() << "ComponentModel: Доступных вариантов:" << m_variantProperties.keys();
m_currentProperties = m_baseProperties;
if (!m_currentVariant.isEmpty() && m_variantProperties.contains(m_currentVariant)) {
qDebug() << "ComponentModel: Объединяем с вариативными свойствами для варианта" << m_currentVariant;
m_currentProperties.unite(m_variantProperties[m_currentVariant]);
}
qDebug() << "ComponentModel: Итоговых свойств:" << m_currentProperties.size();
}