You cannot select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
218 lines
7.6 KiB
C++
218 lines
7.6 KiB
C++
/********************************************************************************
|
|
** Form generated from reading UI file 'FlangeAnalyticUILTsZHk.ui'
|
|
**
|
|
** Created by: Qt User Interface Compiler version 5.14.2
|
|
**
|
|
** WARNING! All changes made in this file will be lost when recompiling UI file!
|
|
********************************************************************************/
|
|
|
|
#ifndef FLANGEANALYTICUILTSZHK_H
|
|
#define FLANGEANALYTICUILTSZHK_H
|
|
|
|
#include <QtCore/QVariant>
|
|
#include <QtWidgets/QApplication>
|
|
#include <QtWidgets/QGridLayout>
|
|
#include <QtWidgets/QHBoxLayout>
|
|
#include <QtWidgets/QLabel>
|
|
#include <QtWidgets/QListWidget>
|
|
#include <QtWidgets/QListView>
|
|
#include <QtWidgets/QSpacerItem>
|
|
#include <QtWidgets/QVBoxLayout>
|
|
#include <QtWidgets/QWidget>
|
|
#include <QStandardItemModel>
|
|
#include <QDebug>
|
|
#include <QTimer>
|
|
#include <QAbstractItemView>
|
|
#include <QIcon>
|
|
#include <QModelIndex>
|
|
#include <QListWidgetItem>
|
|
|
|
#include "../HTTPClient/client.h"
|
|
#include "../MonitorUI/MonitorUI.h"
|
|
#include "FlangeItem.h"
|
|
#include "tools.h"
|
|
QT_BEGIN_NAMESPACE
|
|
|
|
class FlangeAnalyticWidget:public QWidget
|
|
{
|
|
public:
|
|
QHBoxLayout *horizontalLayout;
|
|
QListView *deviceList;
|
|
QWidget *displayWidget;
|
|
QGridLayout *gridLayout;
|
|
QListWidget *flangeList;
|
|
QSpacerItem *verticalSpacer;
|
|
QSpacerItem *horizontalSpacer;
|
|
QWidget *infoWidget;
|
|
QVBoxLayout *verticalLayout;
|
|
QHBoxLayout *horizontalLayout_2;
|
|
QLabel *flangePiclabel;
|
|
QLabel *infoLabel;
|
|
QLabel *trendLabel;
|
|
QStandardItemModel *deviceModel;
|
|
QTimer* timer;
|
|
QTimer* dateTimer;
|
|
|
|
QWidget *flangeWidget;
|
|
QVBoxLayout *veticalLayout;
|
|
|
|
MonitorWidget* monitor;
|
|
int curId;
|
|
// int curListIndex;
|
|
|
|
void setupUi(QWidget *FlangeAnalyticWidget)
|
|
{
|
|
if (FlangeAnalyticWidget->objectName().isEmpty())
|
|
FlangeAnalyticWidget->setObjectName(QString::fromUtf8("FlangeAnalyticWidget"));
|
|
FlangeAnalyticWidget->resize(1228, 773);
|
|
horizontalLayout = new QHBoxLayout(FlangeAnalyticWidget);
|
|
horizontalLayout->setSpacing(0);
|
|
horizontalLayout->setObjectName(QString::fromUtf8("horizontalLayout"));
|
|
horizontalLayout->setContentsMargins(20, 20, 20, 20);
|
|
|
|
deviceList = new QListView(FlangeAnalyticWidget);
|
|
deviceList->setObjectName(QString::fromUtf8("deviceList"));
|
|
deviceModel = new QStandardItemModel();
|
|
deviceList->setModel(deviceModel);
|
|
deviceList->setEditTriggers(QAbstractItemView::NoEditTriggers);
|
|
|
|
horizontalLayout->addWidget(deviceList);
|
|
|
|
flangeList = new QListWidget (FlangeAnalyticWidget);
|
|
flangeList->setObjectName(QString::fromUtf8("flangeList"));
|
|
flangeList->setEditTriggers(QAbstractItemView::NoEditTriggers);
|
|
|
|
flangeWidget = new QWidget (FlangeAnalyticWidget);
|
|
infoLabel = new QLabel (flangeWidget);
|
|
infoLabel->setAlignment(Qt::AlignCenter);
|
|
infoLabel->setObjectName("infoLabel");
|
|
|
|
veticalLayout = new QVBoxLayout(flangeWidget);
|
|
veticalLayout->addWidget(infoLabel);
|
|
veticalLayout->addWidget(flangeList);
|
|
|
|
horizontalLayout->addWidget(flangeWidget);
|
|
|
|
horizontalLayout->setStretch(0, 1);
|
|
horizontalLayout->setStretch(1, 5);
|
|
|
|
QMetaObject::connectSlotsByName(FlangeAnalyticWidget);
|
|
|
|
addDevice();
|
|
// addFlanges(deviceModel->data(deviceModel->index(0, 0)).toString());
|
|
QModelIndex index = deviceList->model()->index(0, 0); // 获取第2行的索引
|
|
deviceList->setCurrentIndex(index);
|
|
timer = new QTimer();
|
|
QObject::connect(timer, &QTimer::timeout, [&]() {
|
|
// 计时器超时时更新标签
|
|
QModelIndex currentIndex = deviceList->currentIndex();
|
|
addDevice();
|
|
deviceList->setCurrentIndex(currentIndex);
|
|
// deviceList->setCurrentRow(currentIndex);
|
|
QString fanCode = currentIndex.data().toString();
|
|
// addFlanges(fanCode);
|
|
});
|
|
// timer->start(3000);
|
|
|
|
dateTimer = new QTimer();
|
|
QObject::connect(dateTimer, &QTimer::timeout, [&]() {
|
|
// 计时器超时时更新数据
|
|
QModelIndex currentIndex = deviceList->currentIndex();
|
|
qDebug() << currentIndex;
|
|
QString fanCode = currentIndex.data().toString();
|
|
if (fanCode == QString("")){return;}
|
|
int fanId = fans.allFans[fanCode].fanId;
|
|
httpClient.getFlangeList(fanId);
|
|
});
|
|
dateTimer->start(2500);
|
|
|
|
connect(deviceList, &QListView::doubleClicked, [&](const QModelIndex& index) {
|
|
if (index.isValid()) {
|
|
QString fanCode = index.data().toString();
|
|
curId = fans.allFans[fanCode].fanId;
|
|
addFlanges(fanCode);
|
|
}
|
|
});
|
|
|
|
} // setupUi
|
|
|
|
|
|
|
|
void addDevice(){
|
|
// httpClient.getFanList();
|
|
map allFans = fans.states;
|
|
if (!monitor->isInitState()){
|
|
if (monitor->displayList.size() > deviceModel->rowCount()){
|
|
for (int i = 0; i <= allFans.size() - deviceModel->rowCount() + 1; i++) {
|
|
QStandardItem* emptyItem = new QStandardItem("");
|
|
deviceModel->appendRow(emptyItem);
|
|
}
|
|
}else if (monitor->displayList.size() < deviceModel->rowCount()){
|
|
for (int i = 0; i <= deviceModel->rowCount() - allFans.size() + 2; i++) {
|
|
deviceModel->removeRow(0);
|
|
}
|
|
}
|
|
}else{
|
|
if (allFans.size() > deviceModel->rowCount()){
|
|
for (int i = 0; i <= allFans.size() - deviceModel->rowCount() + 1; i++) {
|
|
QStandardItem* emptyItem = new QStandardItem("");
|
|
deviceModel->appendRow(emptyItem);
|
|
}
|
|
}else if (allFans.size() < deviceModel->rowCount()){
|
|
for (int i = 0; i <= deviceModel->rowCount() - allFans.size() + 2; i++) {
|
|
deviceModel->removeRow(0);
|
|
}
|
|
}
|
|
}
|
|
int count = 0;
|
|
// qDebug() << allFans;
|
|
for (auto it = allFans.begin(); it != allFans.end(); ++it) {
|
|
if (monitor->shouldDisplay(it->first)){
|
|
if (it->first == QString("")){continue;}
|
|
QStandardItem* item = deviceModel->item(count);
|
|
// 修改QStandardItem对象的文本和图标
|
|
item->setText(it->first);
|
|
item->setIcon(getDevIcon(it->second));
|
|
count++;
|
|
}
|
|
}
|
|
}
|
|
|
|
void addFlanges(QString fanCode){
|
|
map flanges = fans.idMaps[fans.allFans[fanCode].fanId].flanges;
|
|
flangeList->clear();
|
|
int normalCount = 0;
|
|
int errorCount = 0;
|
|
for (auto flange = flanges.begin(); flange != flanges.end(); ++flange){
|
|
FlangeItem *item = new FlangeItem(flange->second);
|
|
QListWidgetItem* listItem = new QListWidgetItem();
|
|
listItem->setSizeHint(QSize(200,120));
|
|
flangeList->addItem(listItem);
|
|
flangeList->setItemWidget(listItem, item);
|
|
if (flange->second.flangeState == QString("正常")){
|
|
normalCount++;
|
|
}else if (flange->second.flangeState == QString("故障")){
|
|
errorCount++;
|
|
}
|
|
}
|
|
infoLabel->setText(QString("总览 (正常: %1/%2 报警: %3/%4)")
|
|
.arg(normalCount).arg(flanges.size()).arg(errorCount).arg(flanges.size()));
|
|
}
|
|
|
|
void addFeatures(QString flangeId){
|
|
map flanges = fans.idMaps[curId].flanges;
|
|
|
|
}
|
|
|
|
FlangeAnalyticWidget(MonitorWidget* monitor) : monitor(monitor){
|
|
setupUi(this);
|
|
}
|
|
|
|
|
|
};
|
|
|
|
|
|
QT_END_NAMESPACE
|
|
|
|
#endif // FLANGEANALYTICUILTSZHK_H
|