Files
GostGenerator/view/importeddataview.cpp
T

99 lines
3.4 KiB
C++

#include "importeddataview.h"
ImportedDataView::ImportedDataView(ComponentTableModel* model, ProjectParamTableModel* projectParamModel, PCBMaterialModel* pcbMaterialModel, QWidget *parent)
: QWidget{parent}, m_model(model), m_projectParamModel(projectParamModel), m_pcbMaterialModel(pcbMaterialModel)
{
setUp();
}
void ImportedDataView::setUp(){
setWidgets();
setUpLayout();
setUpConnections();
}
void ImportedDataView::setWidgets(){
m_tabWidget = new QTabWidget(this);
m_projectParamPreview = new ProjectParamPreview(this);
m_componentsPreview = new ComponentsPreview(m_model, this);
m_pcbMaterialPreview = new PCBMaterialPreview(m_pcbMaterialModel, this);
m_tabWidget->addTab(m_componentsPreview, "Компоненты");
m_tabWidget->addTab(m_projectParamPreview, "Параметры проекта");
m_tabWidget->addTab(m_pcbMaterialPreview, "Материалы платы");
// Устанавливаем модель для ProjectParamPreview
if (m_projectParamModel && m_projectParamPreview) {
m_projectParamPreview->tableModel()->setProjectParams(m_projectParamModel->getData());
}
// PCBMaterialPreview использует модель, переданную из MainController
// База данных уже установлена в MainController
qDebug() << "ImportedDataView: PCBMaterialPreview создан с моделью:" << m_pcbMaterialModel;
}
void ImportedDataView::setUpLayout(){
QVBoxLayout* mainLayout = new QVBoxLayout(this);
mainLayout->addWidget(m_tabWidget);
this->setSizePolicy(QSizePolicy::Expanding, QSizePolicy::Expanding);
}
void ImportedDataView::setUpConnections(){
// Подключаем сигнал изменения данных от ProjectParamPreview
if (m_projectParamPreview) {
connect(m_projectParamPreview, &ProjectParamPreview::projectParamChanged,
this, &ImportedDataView::onDataChanged);
}
}
void ImportedDataView::updateView()
{
// Обновляем отображение компонентов
if (m_componentsPreview) {
m_componentsPreview->updateView();
}
// Обновляем отображение параметров проекта
updateProjectParams();
// Обновляем отображение материалов платы
updatePCBMaterials();
}
void ImportedDataView::updateProjectParams()
{
if (m_projectParamModel && m_projectParamPreview) {
QList<ProjectParamTableData> data = m_projectParamModel->getData();
qDebug() << "ImportedDataView: обновляем параметры проекта:" << data.size() << "параметров";
m_projectParamPreview->tableModel()->setProjectParams(data);
} else {
qDebug() << "ImportedDataView: m_projectParamModel или m_projectParamPreview равен nullptr";
}
}
void ImportedDataView::onDataChanged()
{
updateProjectParams();
}
ComponentsPreview* ImportedDataView::getComponentsPreview() const
{
return m_componentsPreview;
}
void ImportedDataView::updatePCBMaterials()
{
if (m_pcbMaterialPreview) {
m_pcbMaterialPreview->updateView();
qDebug() << "ImportedDataView: обновлены материалы платы";
} else {
qDebug() << "ImportedDataView: m_pcbMaterialPreview равен nullptr";
}
}
PCBMaterialPreview* ImportedDataView::getPCBMaterialPreview() const
{
return m_pcbMaterialPreview;
}