add monitor save/load functions
This commit is contained in:
parent
c7f51ae47d
commit
a4e3b529bd
|
|
@ -864,7 +864,7 @@ struct DiagramInfo //组态图结构信息
|
||||||
QString sName;
|
QString sName;
|
||||||
QString sTag;
|
QString sTag;
|
||||||
QVariant parentId;
|
QVariant parentId;
|
||||||
QString sBasePageName; //基模组态图名称
|
QString sBasePageName; //父组态图名称
|
||||||
};
|
};
|
||||||
|
|
||||||
struct DiagramContent {
|
struct DiagramContent {
|
||||||
|
|
|
||||||
|
|
@ -18,6 +18,8 @@ set(DIAGRAMCAVAS_HEADER_FILES
|
||||||
include/monitorDetailAttributeDlg.h
|
include/monitorDetailAttributeDlg.h
|
||||||
include/monitorDisplaySettingDlg.h
|
include/monitorDisplaySettingDlg.h
|
||||||
include/monitorItemPreviewDlg.h
|
include/monitorItemPreviewDlg.h
|
||||||
|
include/loadMonitorPageDlg.h
|
||||||
|
include/cornerMonitorLauncher.h
|
||||||
include/itemPropertyDlg.h
|
include/itemPropertyDlg.h
|
||||||
include/propertyContentDlg.h
|
include/propertyContentDlg.h
|
||||||
include/serializable.h
|
include/serializable.h
|
||||||
|
|
@ -137,6 +139,8 @@ set(DIAGRAMCAVAS_SOURCE_FILES
|
||||||
source/monitorDetailAttributeDlg.cpp
|
source/monitorDetailAttributeDlg.cpp
|
||||||
source/monitorDisplaySettingDlg.cpp
|
source/monitorDisplaySettingDlg.cpp
|
||||||
source/monitorItemPreviewDlg.cpp
|
source/monitorItemPreviewDlg.cpp
|
||||||
|
source/loadMonitorPageDlg.cpp
|
||||||
|
source/cornerMonitorLauncher.cpp
|
||||||
source/itemPropertyDlg.cpp
|
source/itemPropertyDlg.cpp
|
||||||
source/propertyContentDlg.cpp
|
source/propertyContentDlg.cpp
|
||||||
source/statusBar.cpp
|
source/statusBar.cpp
|
||||||
|
|
@ -258,6 +262,7 @@ set(UI_FILES
|
||||||
ui/monitorConfigDlg.ui
|
ui/monitorConfigDlg.ui
|
||||||
ui/monitorDetailAttributeDlg.ui
|
ui/monitorDetailAttributeDlg.ui
|
||||||
ui/monitorDisplaySettingDlg.ui
|
ui/monitorDisplaySettingDlg.ui
|
||||||
|
ui/loadMonitorPageDlg.ui
|
||||||
)
|
)
|
||||||
|
|
||||||
if(${QT_VERSION_MAJOR} GREATER_EQUAL 6)
|
if(${QT_VERSION_MAJOR} GREATER_EQUAL 6)
|
||||||
|
|
|
||||||
|
|
@ -0,0 +1,29 @@
|
||||||
|
#ifndef CORNERMONITORLAUNCHER_H
|
||||||
|
#define CORNERMONITORLAUNCHER_H
|
||||||
|
|
||||||
|
/***************cavas中的monitor临时加载菜单*****************/
|
||||||
|
#include <QWidget>
|
||||||
|
|
||||||
|
class QMdiArea;
|
||||||
|
|
||||||
|
class CornerMonitorLauncher : public QWidget
|
||||||
|
{
|
||||||
|
Q_OBJECT
|
||||||
|
public:
|
||||||
|
CornerMonitorLauncher(QMdiArea *parent = nullptr);
|
||||||
|
~CornerMonitorLauncher();
|
||||||
|
|
||||||
|
void showDlg();
|
||||||
|
void positionAtCorner();
|
||||||
|
signals:
|
||||||
|
void openLoadMonitorDlg();
|
||||||
|
protected:
|
||||||
|
void paintEvent(QPaintEvent* event) override;
|
||||||
|
void mousePressEvent(QMouseEvent* event) override;
|
||||||
|
private:
|
||||||
|
void showQuickMenu();
|
||||||
|
private:
|
||||||
|
QMdiArea* m_mdiArea;
|
||||||
|
};
|
||||||
|
|
||||||
|
#endif
|
||||||
|
|
@ -16,6 +16,8 @@ class EditPanel;
|
||||||
class GraphicsBaseModelItem;
|
class GraphicsBaseModelItem;
|
||||||
class EditBaseItem;
|
class EditBaseItem;
|
||||||
class MonitorPanel;
|
class MonitorPanel;
|
||||||
|
class CornerMonitorLauncher;
|
||||||
|
class LoadMonitorPageDlg;
|
||||||
|
|
||||||
class DIAGRAM_DESIGNER_PUBLIC DiagramCavas : public QMdiArea
|
class DIAGRAM_DESIGNER_PUBLIC DiagramCavas : public QMdiArea
|
||||||
{
|
{
|
||||||
|
|
@ -28,6 +30,8 @@ public:
|
||||||
DrawingPanel* getPanel(QString);
|
DrawingPanel* getPanel(QString);
|
||||||
EditPanel* getEditPanel(QString);
|
EditPanel* getEditPanel(QString);
|
||||||
MonitorPanel* getMonitorPanel(QString);
|
MonitorPanel* getMonitorPanel(QString);
|
||||||
|
|
||||||
|
void updateSubPos();
|
||||||
public:
|
public:
|
||||||
void initial();
|
void initial();
|
||||||
signals:
|
signals:
|
||||||
|
|
@ -42,7 +46,7 @@ public slots:
|
||||||
void onSignal_savePage();
|
void onSignal_savePage();
|
||||||
void onSignal_loadPage(PowerEntity* p);
|
void onSignal_loadPage(PowerEntity* p);
|
||||||
void onSignal_loadEdit(const QString&,QUuid);
|
void onSignal_loadEdit(const QString&,QUuid);
|
||||||
void onSignal_loadMonitor(PowerEntity* p);
|
void onSignal_loadMonitor(PowerEntity* p,QString sParent);
|
||||||
void runPage(const QString); //运行时
|
void runPage(const QString); //运行时
|
||||||
void onSignal_runPage();
|
void onSignal_runPage();
|
||||||
void onSignal_deletePage();
|
void onSignal_deletePage();
|
||||||
|
|
@ -82,19 +86,24 @@ public slots:
|
||||||
void onSignal_monitorSelected(DiagramInfo); //监控选中
|
void onSignal_monitorSelected(DiagramInfo); //监控选中
|
||||||
void onSignal_saveMonitor(QList<QPair<QString,QUuid>>); //保存选中的监控
|
void onSignal_saveMonitor(QList<QPair<QString,QUuid>>); //保存选中的监控
|
||||||
|
|
||||||
void updateMonitorListFromDB(); //从数据库更新监控列表
|
void updateMonitorListFromDB(int dest = 0); //从数据库更新监控列表 0更新外部lst 1更新内部lst
|
||||||
|
|
||||||
QMap<QString,QPair<DrawingPanel*,QMdiSubWindow*>> getMapDraw() {return m_mapDrawPanel;}
|
QMap<QString,QPair<DrawingPanel*,QMdiSubWindow*>> getMapDraw() {return m_mapDrawPanel;}
|
||||||
QMap<QString,QPair<EditPanel*,QMdiSubWindow*>> getMapEdit() {return m_mapEditPanel;}
|
QMap<QString,QPair<EditPanel*,QMdiSubWindow*>> getMapEdit() {return m_mapEditPanel;}
|
||||||
QMap<QString,QPair<MonitorPanel*,QMdiSubWindow*>> getMapMonitor() {return m_mapMonitorPanel;}
|
QMap<QString,QPair<MonitorPanel*,QMdiSubWindow*>> getMapMonitor() {return m_mapMonitorPanel;}
|
||||||
|
protected:
|
||||||
|
void resizeEvent(QResizeEvent* event) override;
|
||||||
private:
|
private:
|
||||||
void removePanel(PowerEntity*);
|
void removePanel(PowerEntity*);
|
||||||
|
void calculateLauncherVisible();
|
||||||
private:
|
private:
|
||||||
QMap<QString,QPair<DrawingPanel*,QMdiSubWindow*>> m_mapDrawPanel; //工程模panel
|
QMap<QString,QPair<DrawingPanel*,QMdiSubWindow*>> m_mapDrawPanel; //工程模panel
|
||||||
QMap<QString,QPair<EditPanel*,QMdiSubWindow*>> m_mapEditPanel; //编辑时
|
QMap<QString,QPair<EditPanel*,QMdiSubWindow*>> m_mapEditPanel; //编辑时
|
||||||
QMap<QString,QPair<MonitorPanel*,QMdiSubWindow*>> m_mapMonitorPanel; //监控时panel
|
QMap<QString,QPair<MonitorPanel*,QMdiSubWindow*>> m_mapMonitorPanel; //监控时panel
|
||||||
int _pageIndex;
|
int _pageIndex;
|
||||||
QString _curPage;
|
QString _curPage;
|
||||||
|
CornerMonitorLauncher* _cornerButton; //简略菜单呼出按钮
|
||||||
|
LoadMonitorPageDlg* _loadMonitorPageDlg;
|
||||||
};
|
};
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
|
|
||||||
|
|
@ -127,6 +127,7 @@ public:
|
||||||
void activateModel() {Q_EMIT activatePage(_pageName);} //发送激活信号(点击)
|
void activateModel() {Q_EMIT activatePage(_pageName);} //发送激活信号(点击)
|
||||||
void startHttpRequest(); //开始请求数据(运行时)
|
void startHttpRequest(); //开始请求数据(运行时)
|
||||||
void setCavas(DiagramCavas* p) {_cavas = p;} //设置所属顶层容器
|
void setCavas(DiagramCavas* p) {_cavas = p;} //设置所属顶层容器
|
||||||
|
DiagramCavas* getCavas() {return _cavas;}
|
||||||
|
|
||||||
QMap<QUuid,GraphicsProjectModelItem*> getProjectItems(){return _nodeItem;}
|
QMap<QUuid,GraphicsProjectModelItem*> getProjectItems(){return _nodeItem;}
|
||||||
QMap<QUuid,GraphicsBaseModelItem*> getBaseModelItems(){return _baseItem;}
|
QMap<QUuid,GraphicsBaseModelItem*> getBaseModelItems(){return _baseItem;}
|
||||||
|
|
|
||||||
|
|
@ -0,0 +1,36 @@
|
||||||
|
#ifndef LOADMONITORPAGEDLG_H
|
||||||
|
#define LOADMONITORPAGEDLG_H
|
||||||
|
|
||||||
|
/*******************加载运行时*********************/
|
||||||
|
#include <QDialog>
|
||||||
|
#include <QStandardItem>
|
||||||
|
|
||||||
|
QT_BEGIN_NAMESPACE
|
||||||
|
namespace Ui { class loadMonitorPageDlg; }
|
||||||
|
QT_END_NAMESPACE
|
||||||
|
|
||||||
|
struct DiagramInfo;
|
||||||
|
|
||||||
|
class LoadMonitorPageDlg : public QDialog
|
||||||
|
{
|
||||||
|
Q_OBJECT
|
||||||
|
public:
|
||||||
|
LoadMonitorPageDlg(QWidget *parent = nullptr);
|
||||||
|
~LoadMonitorPageDlg();
|
||||||
|
|
||||||
|
void initial();
|
||||||
|
void updateItems(QString,QPair<QString,QUuid>);
|
||||||
|
void clearItems();
|
||||||
|
signals:
|
||||||
|
void monitorSelected(DiagramInfo);
|
||||||
|
public slots:
|
||||||
|
void onOkClicked();
|
||||||
|
void onCancelClicked();
|
||||||
|
private:
|
||||||
|
QStandardItem* findTopLevelItem(const QString& name); //查找顶层项
|
||||||
|
private:
|
||||||
|
Ui::loadMonitorPageDlg *ui;
|
||||||
|
QStandardItemModel* _pModel;
|
||||||
|
};
|
||||||
|
|
||||||
|
#endif
|
||||||
|
|
@ -48,6 +48,7 @@ public:
|
||||||
public slots:
|
public slots:
|
||||||
void onRunClicked();
|
void onRunClicked();
|
||||||
void onStopClicked();
|
void onStopClicked();
|
||||||
|
void onSaveClicked();
|
||||||
void onConfigClicked();
|
void onConfigClicked();
|
||||||
void onItemConfigClicked();
|
void onItemConfigClicked();
|
||||||
void onConncecClicked();
|
void onConncecClicked();
|
||||||
|
|
@ -64,6 +65,7 @@ private:
|
||||||
MonitorDetailAttributeDlg* _detailAttributeDlg;
|
MonitorDetailAttributeDlg* _detailAttributeDlg;
|
||||||
MonitorDisplaySettingDlg* _displaySettingDlg;
|
MonitorDisplaySettingDlg* _displaySettingDlg;
|
||||||
QMenu* _menuSetting;
|
QMenu* _menuSetting;
|
||||||
|
QMenu* _menuFile;
|
||||||
};
|
};
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
|
|
||||||
|
|
@ -0,0 +1,77 @@
|
||||||
|
#include "cornerMonitorLauncher.h"
|
||||||
|
#include <QMdiArea>
|
||||||
|
#include <QPainter>
|
||||||
|
#include <QMouseEvent>
|
||||||
|
#include <QMenu>
|
||||||
|
|
||||||
|
CornerMonitorLauncher::CornerMonitorLauncher(QMdiArea* parent)
|
||||||
|
: QWidget(parent)
|
||||||
|
,m_mdiArea(parent)
|
||||||
|
{
|
||||||
|
setFixedSize(48, 48);
|
||||||
|
setWindowFlags(Qt::Tool | Qt::FramelessWindowHint);
|
||||||
|
setAttribute(Qt::WA_TranslucentBackground);
|
||||||
|
|
||||||
|
positionAtCorner();
|
||||||
|
}
|
||||||
|
|
||||||
|
CornerMonitorLauncher::~CornerMonitorLauncher()
|
||||||
|
{
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
void CornerMonitorLauncher::showDlg()
|
||||||
|
{
|
||||||
|
show();
|
||||||
|
positionAtCorner();
|
||||||
|
}
|
||||||
|
|
||||||
|
void CornerMonitorLauncher::paintEvent(QPaintEvent* event)
|
||||||
|
{
|
||||||
|
QPainter painter(this);
|
||||||
|
painter.setRenderHint(QPainter::Antialiasing);
|
||||||
|
|
||||||
|
// 绘制圆形按钮
|
||||||
|
painter.setBrush(QColor(255, 255, 255, 240));
|
||||||
|
painter.setPen(QPen(QColor(200, 200, 200), 1));
|
||||||
|
painter.drawEllipse(rect().adjusted(1, 1, -1, -1));
|
||||||
|
|
||||||
|
// 绘制+号
|
||||||
|
painter.setPen(QPen(QColor(100, 100, 100), 2));
|
||||||
|
painter.drawLine(width()/2 - 8, height()/2, width()/2 + 8, height()/2);
|
||||||
|
painter.drawLine(width()/2, height()/2 - 8, width()/2, height()/2 + 8);
|
||||||
|
}
|
||||||
|
|
||||||
|
void CornerMonitorLauncher::mousePressEvent(QMouseEvent* event)
|
||||||
|
{
|
||||||
|
if (event->button() == Qt::LeftButton) {
|
||||||
|
showQuickMenu();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
void CornerMonitorLauncher::showQuickMenu() {
|
||||||
|
QMenu menu;
|
||||||
|
menu.setStyleSheet(R"(
|
||||||
|
QMenu {
|
||||||
|
background: white;
|
||||||
|
border: 1px solid #dee2e6;
|
||||||
|
border-radius: 4px;
|
||||||
|
}
|
||||||
|
QMenu::item {
|
||||||
|
padding: 6px 20px 6px 10px;
|
||||||
|
}
|
||||||
|
QMenu::item:selected {
|
||||||
|
background: #f8f9fa;
|
||||||
|
}
|
||||||
|
)");
|
||||||
|
|
||||||
|
menu.addAction("加载运行时监控", [&]{ emit openLoadMonitorDlg();});
|
||||||
|
menu.exec(mapToGlobal(QPoint(0, height())));
|
||||||
|
}
|
||||||
|
|
||||||
|
void CornerMonitorLauncher::positionAtCorner() {
|
||||||
|
QPoint topRight = m_mdiArea->mapToGlobal(m_mdiArea->rect().topRight());
|
||||||
|
int x = topRight.x() - width() - 20;
|
||||||
|
int y = topRight.y() + 20;
|
||||||
|
move(x, y);
|
||||||
|
}
|
||||||
|
|
@ -2,6 +2,8 @@
|
||||||
#include <QMessageBox>
|
#include <QMessageBox>
|
||||||
#include <QJsonObject>
|
#include <QJsonObject>
|
||||||
#include <QStandardItem>
|
#include <QStandardItem>
|
||||||
|
#include <QLibrary>
|
||||||
|
#include <QMetaMethod>
|
||||||
#include "drawingPanel.h"
|
#include "drawingPanel.h"
|
||||||
#include "monitorPanel.h"
|
#include "monitorPanel.h"
|
||||||
#include "diagramCavas.h"
|
#include "diagramCavas.h"
|
||||||
|
|
@ -14,11 +16,13 @@
|
||||||
#include "diagramEditor/editPanel.h"
|
#include "diagramEditor/editPanel.h"
|
||||||
#include "graphicsDataModel/diagramEditorModel.h"
|
#include "graphicsDataModel/diagramEditorModel.h"
|
||||||
#include "basePropertyManager.h"
|
#include "basePropertyManager.h"
|
||||||
#include <QLibrary>
|
#include "cornerMonitorLauncher.h"
|
||||||
#include <QMetaMethod>
|
#include "loadMonitorPageDlg.h"
|
||||||
|
|
||||||
DiagramCavas::DiagramCavas(QWidget *parent)
|
DiagramCavas::DiagramCavas(QWidget *parent)
|
||||||
: QMdiArea(parent)
|
: QMdiArea(parent)
|
||||||
|
,_cornerButton(nullptr)
|
||||||
|
,_loadMonitorPageDlg(nullptr)
|
||||||
{
|
{
|
||||||
_pageIndex = 0;
|
_pageIndex = 0;
|
||||||
}
|
}
|
||||||
|
|
@ -49,6 +53,12 @@ MonitorPanel* DiagramCavas::getMonitorPanel(QString sPage)
|
||||||
return nullptr;
|
return nullptr;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void DiagramCavas::updateSubPos()
|
||||||
|
{
|
||||||
|
if(_cornerButton)
|
||||||
|
_cornerButton->positionAtCorner();
|
||||||
|
}
|
||||||
|
|
||||||
void DiagramCavas::initial()
|
void DiagramCavas::initial()
|
||||||
{
|
{
|
||||||
//todo:读取数据并初始化
|
//todo:读取数据并初始化
|
||||||
|
|
@ -57,6 +67,16 @@ void DiagramCavas::initial()
|
||||||
{
|
{
|
||||||
TopologyManager::instance().createDiagram(QString::number(info.id),info.name);
|
TopologyManager::instance().createDiagram(QString::number(info.id),info.name);
|
||||||
}
|
}
|
||||||
|
_cornerButton = new CornerMonitorLauncher(this);
|
||||||
|
_cornerButton->showDlg();
|
||||||
|
_loadMonitorPageDlg = new LoadMonitorPageDlg(this);
|
||||||
|
connect(_cornerButton,&CornerMonitorLauncher::openLoadMonitorDlg,this,[&](){
|
||||||
|
if(_loadMonitorPageDlg){
|
||||||
|
updateMonitorListFromDB(1);
|
||||||
|
_loadMonitorPageDlg->show();
|
||||||
|
}
|
||||||
|
});
|
||||||
|
connect(_loadMonitorPageDlg,&LoadMonitorPageDlg::monitorSelected,this,&DiagramCavas::onSignal_monitorSelected);
|
||||||
}
|
}
|
||||||
|
|
||||||
void DiagramCavas::onSignal_addDrawingPanel(PowerEntity* pItem,DiagramMode mode,QString parent)
|
void DiagramCavas::onSignal_addDrawingPanel(PowerEntity* pItem,DiagramMode mode,QString parent)
|
||||||
|
|
@ -94,6 +114,7 @@ void DiagramCavas::onSignal_addDrawingPanel(PowerEntity* pItem,DiagramMode mode,
|
||||||
connect(pModel,&FixedPortsModel::monitorCreated,this,&DiagramCavas::onSignal_monitorCreated);
|
connect(pModel,&FixedPortsModel::monitorCreated,this,&DiagramCavas::onSignal_monitorCreated);
|
||||||
connect(pModel,&FixedPortsModel::monitorItems,this,&DiagramCavas::onSignal_monitorItemCreated);
|
connect(pModel,&FixedPortsModel::monitorItems,this,&DiagramCavas::onSignal_monitorItemCreated);
|
||||||
}
|
}
|
||||||
|
calculateLauncherVisible();
|
||||||
}
|
}
|
||||||
|
|
||||||
void DiagramCavas::onSignal_addGraphicsItem(modelStateInfo& info)
|
void DiagramCavas::onSignal_addGraphicsItem(modelStateInfo& info)
|
||||||
|
|
@ -190,10 +211,6 @@ void DiagramCavas::onSignal_savePage()
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
else if(pPanel->getMode() == DM_baseModel)
|
|
||||||
{
|
|
||||||
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -226,11 +243,11 @@ void DiagramCavas::onSignal_loadEdit(const QString& sProject,QUuid uid)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void DiagramCavas::onSignal_loadMonitor(PowerEntity* p)
|
void DiagramCavas::onSignal_loadMonitor(PowerEntity* p,QString sParent)
|
||||||
{
|
{
|
||||||
if(!m_mapMonitorPanel.contains(p->name()))
|
if(!m_mapMonitorPanel.contains(p->name()))
|
||||||
{
|
{
|
||||||
onSignal_addDrawingPanel(p,DiagramMode::DM_run);
|
onSignal_addDrawingPanel(p,DiagramMode::DM_run,sParent);
|
||||||
QJsonObject context = DataBase::GetInstance()->getMonitorContextByTag(p->name());
|
QJsonObject context = DataBase::GetInstance()->getMonitorContextByTag(p->name());
|
||||||
m_mapMonitorPanel[p->name()].first->loadNodes(context);
|
m_mapMonitorPanel[p->name()].first->loadNodes(context);
|
||||||
}
|
}
|
||||||
|
|
@ -285,10 +302,10 @@ void DiagramCavas::onSignal_panelDelete(const QString& name,int nType)
|
||||||
}
|
}
|
||||||
else if(nType == 2){
|
else if(nType == 2){
|
||||||
MonitorPanel* pPanel = m_mapMonitorPanel.take(name).first;
|
MonitorPanel* pPanel = m_mapMonitorPanel.take(name).first;
|
||||||
if(m_mapMonitorPanel.isEmpty())
|
|
||||||
this->removeSubWindow(pPanel);
|
this->removeSubWindow(pPanel);
|
||||||
delete pPanel;
|
delete pPanel;
|
||||||
}
|
}
|
||||||
|
calculateLauncherVisible();
|
||||||
}
|
}
|
||||||
|
|
||||||
void DiagramCavas::onSignal_createEntity(EntityInfo info)
|
void DiagramCavas::onSignal_createEntity(EntityInfo info)
|
||||||
|
|
@ -435,6 +452,17 @@ void DiagramCavas::removePanel(PowerEntity* pEntity)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void DiagramCavas::calculateLauncherVisible()
|
||||||
|
{
|
||||||
|
if(_cornerButton){
|
||||||
|
if (m_mapDrawPanel.isEmpty() && m_mapEditPanel.isEmpty() && m_mapMonitorPanel.isEmpty()) {
|
||||||
|
_cornerButton->setVisible(true);
|
||||||
|
} else {
|
||||||
|
_cornerButton->setVisible(false);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
void DiagramCavas::onCreateTestBaseModelDiagram()
|
void DiagramCavas::onCreateTestBaseModelDiagram()
|
||||||
{
|
{
|
||||||
PowerEntity* pEntity;
|
PowerEntity* pEntity;
|
||||||
|
|
@ -450,6 +478,12 @@ void DiagramCavas::onCreateTestBaseModelDiagram()
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void DiagramCavas::resizeEvent(QResizeEvent* event)
|
||||||
|
{
|
||||||
|
if(_cornerButton)
|
||||||
|
_cornerButton->positionAtCorner();
|
||||||
|
}
|
||||||
|
|
||||||
/*******************************************************/
|
/*******************************************************/
|
||||||
|
|
||||||
void DiagramCavas::onSignal_createEditPanel(QString sName,QUuid uid)
|
void DiagramCavas::onSignal_createEditPanel(QString sName,QUuid uid)
|
||||||
|
|
@ -598,7 +632,7 @@ void DiagramCavas::onSignal_monitorSelected(DiagramInfo info)
|
||||||
PowerEntity* pEntity = TopologyManager::instance().findDiagram(info.id.toString(),ModelFunctionType::RuntimeModel);
|
PowerEntity* pEntity = TopologyManager::instance().findDiagram(info.id.toString(),ModelFunctionType::RuntimeModel);
|
||||||
if(pEntity)
|
if(pEntity)
|
||||||
{
|
{
|
||||||
onSignal_loadMonitor(pEntity);
|
onSignal_loadMonitor(pEntity,info.sBasePageName);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -626,15 +660,29 @@ void DiagramCavas::onSignal_saveMonitor(QList<QPair<QString,QUuid>> lst)
|
||||||
QMessageBox::information(NULL, QString("提示"), QString::fromWCharArray(L"保存成功"));
|
QMessageBox::information(NULL, QString("提示"), QString::fromWCharArray(L"保存成功"));
|
||||||
}
|
}
|
||||||
|
|
||||||
void DiagramCavas::updateMonitorListFromDB()
|
void DiagramCavas::updateMonitorListFromDB(int dest)
|
||||||
{
|
{
|
||||||
|
if(dest != 0)
|
||||||
|
_loadMonitorPageDlg->clearItems();
|
||||||
|
|
||||||
QList<monitorPageInfo> lstMonitor = DataBase::GetInstance()->getAllMonitor();
|
QList<monitorPageInfo> lstMonitor = DataBase::GetInstance()->getAllMonitor();
|
||||||
for(auto &info:lstMonitor)
|
for(auto &info:lstMonitor)
|
||||||
{
|
{
|
||||||
auto p = TopologyManager::instance().findDiagram(info.uid.toString(),ModelFunctionType::RuntimeModel);
|
auto p = TopologyManager::instance().findDiagram(info.uid.toString(),ModelFunctionType::RuntimeModel);
|
||||||
if(!p){
|
if(!p){
|
||||||
TopologyManager::instance().createDiagram(info.uid.toString(),info.name,ModelFunctionType::RuntimeModel);
|
TopologyManager::instance().createDiagram(info.uid.toString(),info.name,ModelFunctionType::RuntimeModel);
|
||||||
emit updateMonitorList(info.parent,qMakePair(info.name,info.uid));
|
if(dest == 0)
|
||||||
|
emit updateMonitorList(info.parent,qMakePair(info.name,info.uid));
|
||||||
|
else{
|
||||||
|
_loadMonitorPageDlg->updateItems(info.parent,qMakePair(info.name,info.uid));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else{ //存在直接发送
|
||||||
|
if(dest == 0)
|
||||||
|
emit updateMonitorList(info.parent,qMakePair(info.name,info.uid));
|
||||||
|
else{
|
||||||
|
_loadMonitorPageDlg->updateItems(info.parent,qMakePair(info.name,info.uid));
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -0,0 +1,104 @@
|
||||||
|
#include "loadMonitorPageDlg.h"
|
||||||
|
#include "ui_loadMonitorPageDlg.h"
|
||||||
|
#include "global.h"
|
||||||
|
#include "tools.h"
|
||||||
|
#include <QUuid>
|
||||||
|
|
||||||
|
LoadMonitorPageDlg::LoadMonitorPageDlg(QWidget *parent)
|
||||||
|
: QDialog(parent)
|
||||||
|
, ui(new Ui::loadMonitorPageDlg)
|
||||||
|
,_pModel(nullptr)
|
||||||
|
{
|
||||||
|
ui->setupUi(this);
|
||||||
|
this->setWindowFlags(Qt::FramelessWindowHint | windowFlags());
|
||||||
|
initial();
|
||||||
|
}
|
||||||
|
|
||||||
|
LoadMonitorPageDlg::~LoadMonitorPageDlg()
|
||||||
|
{
|
||||||
|
delete ui;
|
||||||
|
}
|
||||||
|
|
||||||
|
void LoadMonitorPageDlg::initial()
|
||||||
|
{
|
||||||
|
_pModel = new QStandardItemModel(this);
|
||||||
|
ui->treeView->setModel(_pModel);
|
||||||
|
ui->treeView->setHeaderHidden(true);
|
||||||
|
|
||||||
|
connect(ui->btn_ok,&QPushButton::clicked,this,&LoadMonitorPageDlg::onOkClicked);
|
||||||
|
connect(ui->btn_cancel,&QPushButton::clicked,this,&LoadMonitorPageDlg::onCancelClicked);
|
||||||
|
}
|
||||||
|
|
||||||
|
void LoadMonitorPageDlg::updateItems(QString sProj,QPair<QString,QUuid> pair)
|
||||||
|
{
|
||||||
|
QStandardItem* topLevelItem = findTopLevelItem(sProj);
|
||||||
|
if (topLevelItem) {
|
||||||
|
// 如果存在,直接在该项下插入子项
|
||||||
|
QStandardItem* childItem = new QStandardItem(pair.first);
|
||||||
|
childItem->setData(pair.second);
|
||||||
|
topLevelItem->appendRow(childItem);
|
||||||
|
} else {
|
||||||
|
// 如果不存在,创建新的顶层项并插入子项
|
||||||
|
QStandardItem* newTopLevelItem = new QStandardItem(sProj);
|
||||||
|
QStandardItem* childItem = new QStandardItem(pair.first);
|
||||||
|
childItem->setData(pair.second);
|
||||||
|
newTopLevelItem->appendRow(childItem);
|
||||||
|
_pModel->appendRow(newTopLevelItem);
|
||||||
|
}
|
||||||
|
ui->treeView->expandAll();
|
||||||
|
}
|
||||||
|
|
||||||
|
void LoadMonitorPageDlg::clearItems()
|
||||||
|
{
|
||||||
|
if(_pModel){
|
||||||
|
QStandardItem *root = _pModel->invisibleRootItem(); //先清空model
|
||||||
|
int rowCount = root->rowCount();
|
||||||
|
if (rowCount > 0) {
|
||||||
|
_pModel->removeRows(0, rowCount);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
void LoadMonitorPageDlg::onOkClicked()
|
||||||
|
{
|
||||||
|
QItemSelectionModel* selectionModel = ui->treeView->selectionModel();
|
||||||
|
if (selectionModel && selectionModel->hasSelection()) {
|
||||||
|
// 获取当前选中的索引
|
||||||
|
QModelIndex currentIndex = selectionModel->currentIndex();
|
||||||
|
if (currentIndex.isValid()) {
|
||||||
|
QStandardItem* item = _pModel->itemFromIndex(currentIndex);
|
||||||
|
int nLevel = getLevel(item);
|
||||||
|
if(nLevel == 0 || nLevel == -1) //顶层不响应
|
||||||
|
return;
|
||||||
|
QStandardItem* parent = item->parent();
|
||||||
|
if(item)
|
||||||
|
{
|
||||||
|
DiagramInfo info;
|
||||||
|
info.id = item->data(Qt::UserRole+1).toUuid();
|
||||||
|
info.sName = item->text();
|
||||||
|
info.sBasePageName = parent->text();
|
||||||
|
emit monitorSelected(info);
|
||||||
|
}
|
||||||
|
hide();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
void LoadMonitorPageDlg::onCancelClicked()
|
||||||
|
{
|
||||||
|
hide();
|
||||||
|
}
|
||||||
|
|
||||||
|
QStandardItem* LoadMonitorPageDlg::findTopLevelItem(const QString& name)
|
||||||
|
{
|
||||||
|
for (int i = 0; i < _pModel->rowCount(); ++i) {
|
||||||
|
QStandardItem* item = _pModel->item(i);
|
||||||
|
if (item && item->text() == name) {
|
||||||
|
return item;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return nullptr;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
@ -5,6 +5,7 @@
|
||||||
#include <QToolBar>
|
#include <QToolBar>
|
||||||
#include <QVBoxLayout>
|
#include <QVBoxLayout>
|
||||||
#include <QJsonDocument>
|
#include <QJsonDocument>
|
||||||
|
#include <QToolButton>
|
||||||
#include "graphicsDataModel/fixedPortsModel.h"
|
#include "graphicsDataModel/fixedPortsModel.h"
|
||||||
#include "graphicsItem/graphicsBaseItem.h"
|
#include "graphicsItem/graphicsBaseItem.h"
|
||||||
#include "powerEntity.h"
|
#include "powerEntity.h"
|
||||||
|
|
@ -19,6 +20,7 @@
|
||||||
#include "monitorDisplaySettingDlg.h"
|
#include "monitorDisplaySettingDlg.h"
|
||||||
#include "dataBase.h"
|
#include "dataBase.h"
|
||||||
#include "projectModelManager.h"
|
#include "projectModelManager.h"
|
||||||
|
#include "diagramCavas.h"
|
||||||
|
|
||||||
MonitorPanel::MonitorPanel(PowerEntity* pEntity,QWidget *parent,DiagramMode mode)
|
MonitorPanel::MonitorPanel(PowerEntity* pEntity,QWidget *parent,DiagramMode mode)
|
||||||
: BaseDrawingPanel(pEntity,parent,mode)
|
: BaseDrawingPanel(pEntity,parent,mode)
|
||||||
|
|
@ -29,6 +31,7 @@ MonitorPanel::MonitorPanel(PowerEntity* pEntity,QWidget *parent,DiagramMode mode
|
||||||
,_menuSetting(nullptr)
|
,_menuSetting(nullptr)
|
||||||
,_detailAttributeDlg(nullptr)
|
,_detailAttributeDlg(nullptr)
|
||||||
,_displaySettingDlg(nullptr)
|
,_displaySettingDlg(nullptr)
|
||||||
|
,_menuFile(nullptr)
|
||||||
{
|
{
|
||||||
m_pStatusBar->setButtonVisible(false);
|
m_pStatusBar->setButtonVisible(false);
|
||||||
initial();
|
initial();
|
||||||
|
|
@ -62,13 +65,27 @@ void MonitorPanel::createToolBar()
|
||||||
_toolBar = new QToolBar(this);
|
_toolBar = new QToolBar(this);
|
||||||
_toolBar->setStyleSheet("QToolBar { background-color: palette(window); border: none; }");
|
_toolBar->setStyleSheet("QToolBar { background-color: palette(window); border: none; }");
|
||||||
|
|
||||||
QAction *runAction = new QAction("运行", this);
|
_menuFile = new QMenu("文件", this);
|
||||||
connect(runAction, &QAction::triggered, this, &MonitorPanel::onRunClicked);
|
|
||||||
_toolBar->addAction(runAction);
|
|
||||||
|
|
||||||
QAction *stopAction = new QAction("停止", this);
|
// 保存操作
|
||||||
|
QAction *saveAction = _menuFile->addAction("保存");
|
||||||
|
connect(saveAction, &QAction::triggered, this, &MonitorPanel::onSaveClicked);
|
||||||
|
|
||||||
|
_menuFile->addSeparator(); // 添加分隔线
|
||||||
|
|
||||||
|
// 运行操作
|
||||||
|
QAction *runAction = _menuFile->addAction("运行");
|
||||||
|
connect(runAction, &QAction::triggered, this, &MonitorPanel::onRunClicked);
|
||||||
|
|
||||||
|
// 停止操作
|
||||||
|
QAction *stopAction = _menuFile->addAction("停止");
|
||||||
connect(stopAction, &QAction::triggered, this, &MonitorPanel::onStopClicked);
|
connect(stopAction, &QAction::triggered, this, &MonitorPanel::onStopClicked);
|
||||||
_toolBar->addAction(stopAction);
|
|
||||||
|
QToolButton *fileButton = new QToolButton(this);
|
||||||
|
fileButton->setText("文件");
|
||||||
|
fileButton->setMenu(_menuFile);
|
||||||
|
fileButton->setPopupMode(QToolButton::InstantPopup);
|
||||||
|
_toolBar->addWidget(fileButton);
|
||||||
|
|
||||||
QAction *configAction = new QAction("参数配置", this);
|
QAction *configAction = new QAction("参数配置", this);
|
||||||
connect(configAction, &QAction::triggered, this, &MonitorPanel::onConfigClicked);
|
connect(configAction, &QAction::triggered, this, &MonitorPanel::onConfigClicked);
|
||||||
|
|
@ -398,6 +415,11 @@ void MonitorPanel::onStopClicked()
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void MonitorPanel::onSaveClicked()
|
||||||
|
{
|
||||||
|
_pModel->getCavas()->onSignal_savePage();
|
||||||
|
}
|
||||||
|
|
||||||
void MonitorPanel::onConfigClicked()
|
void MonitorPanel::onConfigClicked()
|
||||||
{
|
{
|
||||||
_pConfigDlg->show();
|
_pConfigDlg->show();
|
||||||
|
|
|
||||||
|
|
@ -0,0 +1,107 @@
|
||||||
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
|
<ui version="4.0">
|
||||||
|
<class>loadMonitorPageDlg</class>
|
||||||
|
<widget class="QDialog" name="loadMonitorPageDlg">
|
||||||
|
<property name="geometry">
|
||||||
|
<rect>
|
||||||
|
<x>0</x>
|
||||||
|
<y>0</y>
|
||||||
|
<width>182</width>
|
||||||
|
<height>355</height>
|
||||||
|
</rect>
|
||||||
|
</property>
|
||||||
|
<property name="font">
|
||||||
|
<font>
|
||||||
|
<pointsize>12</pointsize>
|
||||||
|
</font>
|
||||||
|
</property>
|
||||||
|
<property name="windowTitle">
|
||||||
|
<string>Dialog</string>
|
||||||
|
</property>
|
||||||
|
<layout class="QVBoxLayout" name="verticalLayout">
|
||||||
|
<property name="spacing">
|
||||||
|
<number>0</number>
|
||||||
|
</property>
|
||||||
|
<property name="leftMargin">
|
||||||
|
<number>0</number>
|
||||||
|
</property>
|
||||||
|
<property name="topMargin">
|
||||||
|
<number>0</number>
|
||||||
|
</property>
|
||||||
|
<property name="rightMargin">
|
||||||
|
<number>0</number>
|
||||||
|
</property>
|
||||||
|
<property name="bottomMargin">
|
||||||
|
<number>0</number>
|
||||||
|
</property>
|
||||||
|
<item>
|
||||||
|
<widget class="QWidget" name="widget" native="true">
|
||||||
|
<property name="maximumSize">
|
||||||
|
<size>
|
||||||
|
<width>16777215</width>
|
||||||
|
<height>21</height>
|
||||||
|
</size>
|
||||||
|
</property>
|
||||||
|
<property name="styleSheet">
|
||||||
|
<string notr="true">background-color: rgb(192, 192, 192);</string>
|
||||||
|
</property>
|
||||||
|
<layout class="QHBoxLayout" name="horizontalLayout">
|
||||||
|
<property name="topMargin">
|
||||||
|
<number>0</number>
|
||||||
|
</property>
|
||||||
|
<property name="bottomMargin">
|
||||||
|
<number>0</number>
|
||||||
|
</property>
|
||||||
|
<item>
|
||||||
|
<widget class="QLabel" name="label">
|
||||||
|
<property name="styleSheet">
|
||||||
|
<string notr="true">color: rgb(4, 4, 4);
|
||||||
|
font: 12pt "Microsoft YaHei UI";</string>
|
||||||
|
</property>
|
||||||
|
<property name="text">
|
||||||
|
<string>载入运行时</string>
|
||||||
|
</property>
|
||||||
|
</widget>
|
||||||
|
</item>
|
||||||
|
<item>
|
||||||
|
<spacer name="horizontalSpacer">
|
||||||
|
<property name="orientation">
|
||||||
|
<enum>Qt::Orientation::Horizontal</enum>
|
||||||
|
</property>
|
||||||
|
<property name="sizeHint" stdset="0">
|
||||||
|
<size>
|
||||||
|
<width>103</width>
|
||||||
|
<height>18</height>
|
||||||
|
</size>
|
||||||
|
</property>
|
||||||
|
</spacer>
|
||||||
|
</item>
|
||||||
|
</layout>
|
||||||
|
</widget>
|
||||||
|
</item>
|
||||||
|
<item>
|
||||||
|
<widget class="QTreeView" name="treeView"/>
|
||||||
|
</item>
|
||||||
|
<item>
|
||||||
|
<layout class="QHBoxLayout" name="horizontalLayout_2">
|
||||||
|
<item>
|
||||||
|
<widget class="QPushButton" name="btn_ok">
|
||||||
|
<property name="text">
|
||||||
|
<string>确定</string>
|
||||||
|
</property>
|
||||||
|
</widget>
|
||||||
|
</item>
|
||||||
|
<item>
|
||||||
|
<widget class="QPushButton" name="btn_cancel">
|
||||||
|
<property name="text">
|
||||||
|
<string>取消</string>
|
||||||
|
</property>
|
||||||
|
</widget>
|
||||||
|
</item>
|
||||||
|
</layout>
|
||||||
|
</item>
|
||||||
|
</layout>
|
||||||
|
</widget>
|
||||||
|
<resources/>
|
||||||
|
<connections/>
|
||||||
|
</ui>
|
||||||
|
|
@ -2684,9 +2684,12 @@ QUuid DataBase::getMonitorIdByName(QString name)
|
||||||
|
|
||||||
bool DataBase::updateMonitor(QString tag,QJsonObject context)
|
bool DataBase::updateMonitor(QString tag,QJsonObject context)
|
||||||
{
|
{
|
||||||
|
QJsonDocument contextDoc(context);
|
||||||
|
QString strCon = contextDoc.toJson(QJsonDocument::Compact);
|
||||||
|
|
||||||
QString strSQL = "UPDATE diagramui_monitor_page SET context = ? WHERE tag = ?";
|
QString strSQL = "UPDATE diagramui_monitor_page SET context = ? WHERE tag = ?";
|
||||||
QVariantList params;
|
QVariantList params;
|
||||||
params.append(context);
|
params.append(strCon);
|
||||||
params.append(tag);
|
params.append(tag);
|
||||||
|
|
||||||
try
|
try
|
||||||
|
|
|
||||||
|
|
@ -36,7 +36,7 @@ public:
|
||||||
protected:
|
protected:
|
||||||
virtual void closeEvent(QCloseEvent* event) override;
|
virtual void closeEvent(QCloseEvent* event) override;
|
||||||
virtual void changeEvent(QEvent* event) override;
|
virtual void changeEvent(QEvent* event) override;
|
||||||
|
virtual void moveEvent(QMoveEvent *event) override;
|
||||||
private:
|
private:
|
||||||
void initializeDockUi();
|
void initializeDockUi();
|
||||||
void initializeAction();
|
void initializeAction();
|
||||||
|
|
|
||||||
|
|
@ -18,8 +18,6 @@
|
||||||
#include "graphicElementsPanel.h"
|
#include "graphicElementsPanel.h"
|
||||||
#include "operationCommand.h"
|
#include "operationCommand.h"
|
||||||
#include "electricElementsBox.h"
|
#include "electricElementsBox.h"
|
||||||
#include "electricElementsPanel.h"
|
|
||||||
#include "toolBox.h"
|
|
||||||
#include "loadPageDlg.h"
|
#include "loadPageDlg.h"
|
||||||
#include "projectModelDlg.h"
|
#include "projectModelDlg.h"
|
||||||
#include "topologyView.h"
|
#include "topologyView.h"
|
||||||
|
|
@ -75,6 +73,12 @@ void CMainWindow::changeEvent(QEvent* event)
|
||||||
//m_pDrawingPanel->grahpicsViewZoomFit();
|
//m_pDrawingPanel->grahpicsViewZoomFit();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void CMainWindow::moveEvent(QMoveEvent *event)
|
||||||
|
{
|
||||||
|
if(m_pDiagramCavas)
|
||||||
|
m_pDiagramCavas->updateSubPos();
|
||||||
|
}
|
||||||
|
|
||||||
void CMainWindow::initializeDockUi()
|
void CMainWindow::initializeDockUi()
|
||||||
{
|
{
|
||||||
m_pElectricElementsBox = new ElectricElementsBox();
|
m_pElectricElementsBox = new ElectricElementsBox();
|
||||||
|
|
@ -117,7 +121,7 @@ void CMainWindow::initializeDockUi()
|
||||||
m_pMonitorItemsDock->hide();
|
m_pMonitorItemsDock->hide();
|
||||||
m_pMonitorPagesDock->hide();
|
m_pMonitorPagesDock->hide();
|
||||||
|
|
||||||
m_pDiagramCavas = new DiagramCavas();
|
m_pDiagramCavas = new DiagramCavas(this);
|
||||||
m_pDiagramCavas->initial();
|
m_pDiagramCavas->initial();
|
||||||
this->setCentralWidget(m_pDiagramCavas);
|
this->setCentralWidget(m_pDiagramCavas);
|
||||||
connect(m_pElectricElementsBox,&ElectricElementsBox::addEletricItem,m_pDiagramCavas,&DiagramCavas::onSignal_addGraphicsItem);
|
connect(m_pElectricElementsBox,&ElectricElementsBox::addEletricItem,m_pDiagramCavas,&DiagramCavas::onSignal_addGraphicsItem);
|
||||||
|
|
|
||||||
|
|
@ -59,6 +59,7 @@ void MonitorPagesDlg::onItemClicked(const QModelIndex &index)
|
||||||
DiagramInfo info;
|
DiagramInfo info;
|
||||||
info.id = item->data(Qt::UserRole+1).toUuid();
|
info.id = item->data(Qt::UserRole+1).toUuid();
|
||||||
info.sName = item->text();
|
info.sName = item->text();
|
||||||
|
info.sBasePageName = parent->text();
|
||||||
emit monitorSelected(info);
|
emit monitorSelected(info);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue