DiagramDesigner/diagramCavas/source/monitorDetailAttributeDlg.cpp

87 lines
2.3 KiB
C++

#include "monitorDetailAttributeDlg.h"
#include "ui_monitorDetailAttributeDlg.h"
#include "monitorAttributeGroupDlg.h"
#include "monitorPanel.h"
#include "global.h"
MonitorDetailAttributeDlg::MonitorDetailAttributeDlg(QWidget *parent)
: QDialog(parent)
, ui(new Ui::monitorDetailAttributeDlg)
,_pParent(nullptr)
,m_gridLayout(nullptr)
{
_pParent = dynamic_cast<MonitorPanel*>(parent);
ui->setupUi(this);
this->setWindowFlags(Qt::FramelessWindowHint | windowFlags());
initial();
}
MonitorDetailAttributeDlg::~MonitorDetailAttributeDlg()
{
delete ui;
}
void MonitorDetailAttributeDlg::initial()
{
_curColNum = 2;
connect(ui->btn_exit,&QPushButton::clicked,this,&MonitorDetailAttributeDlg::onCloseClicked);
connect(ui->cb_colNum,&QComboBox::currentTextChanged,this,&MonitorDetailAttributeDlg::onColChanged);
m_gridLayout = new QGridLayout(ui->content);
}
void MonitorDetailAttributeDlg::onCloseClicked()
{
hide();
}
void MonitorDetailAttributeDlg::onColChanged(const QString& str)
{
updateLayout(str.toInt());
}
void MonitorDetailAttributeDlg::generateAttributeGroups(QUuid uid)
{
clearAllGroup();
QMap<QString,QList<monitorItemAttributeInfo>> mapLst;
auto mapPara = _pParent->getModelController()->getMonitorPara();
if(mapPara.contains(uid)){
_curId = uid;
auto lst = mapPara[uid];
for(auto &info:lst){
if(info.bSelected)
mapLst[info.sGroup].append(info);
}
for(auto iter = mapLst.begin(); iter != mapLst.end();++iter){
MonitorAttributeGroupDlg* pDlg = new MonitorAttributeGroupDlg();
pDlg->setDetailParent(this);
pDlg->setCurMode(1);
pDlg->createGroupView(iter.value());
_curGroups.insert(iter.key(),pDlg);
}
}
updateLayout(_curColNum);
}
void MonitorDetailAttributeDlg::updateLayout(int columns)
{
_curColNum = columns;
int i = 0;
for(auto& pDlg:_curGroups){
int row = i / _curColNum;
int col = i % _curColNum;
m_gridLayout->addWidget(pDlg, row, col);
i++;
}
}
void MonitorDetailAttributeDlg::clearAllGroup()
{
for(auto& dlg:_curGroups){
m_gridLayout->removeWidget(dlg);
delete dlg;
}
_curGroups.clear();
}