#include "CMainWidget.h" #include "CStatisWidget.h" #include "ContrastWidget.h" #include "CHisEventManage.h" #include "tsdb_api/TsdbApi.h" #include "pub_utility_api/FileStyle.h" #include "pub_utility_api/FileUtil.h" #include #include #include #include #include CMainWidget::CMainWidget(bool editMode, QVector ptrVec, QWidget *parent) : QWidget(parent), m_editMode(editMode), m_pStatisWidget(Q_NULLPTR), m_pContrastWidget(Q_NULLPTR), m_pHisEventThread(Q_NULLPTR), m_pHisEventManage(Q_NULLPTR) { Q_UNUSED(ptrVec) initialize(); } CMainWidget::~CMainWidget() { if(!m_editMode) { iot_dbms::releaseTsdbApi(); } if(m_pHisEventManage) { emit releaseHisEventThread(); m_pHisEventManage = Q_NULLPTR; } if(m_pHisEventThread) { m_pHisEventThread->quit(); m_pHisEventThread->wait(); } m_pHisEventThread = Q_NULLPTR; if(m_pStatisWidget) { delete m_pStatisWidget; } m_pStatisWidget = Q_NULLPTR; if(m_pContrastWidget) { delete m_pContrastWidget; } m_pContrastWidget = Q_NULLPTR; CDataInfoManage::instance()->destory(); } void CMainWidget::initialize() { m_pStatisWidget = new CStatisWidget(m_editMode, this); m_pContrastWidget = new ContrastWidget(m_editMode, this); QTabWidget *widget = new QTabWidget(); widget->addTab(m_pStatisWidget, tr("告警统计")); widget->addTab(m_pContrastWidget, tr("告警对比")); QGridLayout *layout = new QGridLayout(); layout->addWidget(widget); layout->setMargin(6); setLayout(layout); initStyleSheet(); if(!m_editMode) { iot_dbms::initTsdbApi(); loadAlarmColor(); initHisEventManage(); } } void CMainWidget::initStyleSheet() { QString style = QString(); std::string strFullPath = iot_public::CFileStyle ::getPathOfStyleFile("public.qss") ; QFile file1(QString::fromStdString(strFullPath)); if (file1.open(QIODevice::ReadOnly)) { QTextStream styleStream(&file1); style += styleStream.readAll(); //setStyleSheet(style); } file1.close(); strFullPath = iot_public::CFileStyle ::getPathOfStyleFile("AlarmStatisWidget.qss") ; QFile file2(QString::fromStdString(strFullPath)); if (file2.open(QIODevice::ReadOnly)) { QTextStream styleStream(&file2); style += styleStream.readAll(); //setStyleSheet(style); } file2.close(); if(!style.isEmpty()) { setStyleSheet(style); } } void CMainWidget::loadAlarmColor() { QString filePath = QString::fromStdString(iot_public::CFileUtil::getCurModuleDir()) + QString("../../data/model/alarm_color_define.xml"); QDomDocument document; QFile file(filePath); if (!file.open(QIODevice::ReadOnly)) { return; } if (!document.setContent(&file)) { file.close(); return; } file.close(); QMap almColorMap; QDomElement element = document.documentElement(); QDomNode node = element.firstChild(); while(!node.isNull()) { QDomElement attr = node.toElement(); if(!attr.isNull()) { if(QString("Level") == attr.tagName()) { int priority = attr.attribute("priority").toInt(); QColor color = QColor(attr.attribute("active_text_color")); almColorMap[priority] = color; } } node = node.nextSibling(); } QList listColor; QMap orderMap = CDataInfoManage::instance()->getAlarmOrder(); QMap::const_iterator iter = orderMap.constBegin(); for(; iter != orderMap.constEnd(); iter++) { listColor.append(almColorMap.value(iter.value(), Qt::black)); } m_pStatisWidget->setCurveColor(listColor); m_pContrastWidget->setCurveColor(listColor); } void CMainWidget::initHisEventManage() { m_pHisEventManage = new CHisEventManage; m_pHisEventThread = new QThread(this); m_pHisEventManage->moveToThread(m_pHisEventThread); connect(m_pHisEventThread, &QThread::finished, m_pHisEventThread, &QObject::deleteLater); connect(this, &CMainWidget::releaseHisEventThread, m_pHisEventManage, &CHisEventManage::release, Qt::BlockingQueuedConnection); connect(m_pStatisWidget, &CStatisWidget::sigQueryEvent, m_pHisEventManage, &CHisEventManage::queryHisEventStatis, Qt::QueuedConnection); connect(m_pHisEventManage, &CHisEventManage::updateHisEventStatis, m_pStatisWidget, &CStatisWidget::updateEventNum ,Qt::QueuedConnection); connect(m_pContrastWidget, &ContrastWidget::sigQueryEvent, m_pHisEventManage, &CHisEventManage::queryHisEventContrast, Qt::QueuedConnection); connect(m_pHisEventManage, &CHisEventManage::updateHisEventContrast, m_pContrastWidget, &ContrastWidget::updateEventNum, Qt::QueuedConnection); m_pHisEventThread->start(); }