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.
nmWTAI-Platform/Src/nmNum/nmSubWnd/nmSubWndSubWxsAnalyzeContro...

59 lines
2.0 KiB
C++

#include "nmSubWndSubWxsAnalyzeController.h"
#include "iSubWndFitting.h"
#include "nmDataAnalyzeManager.h"
#include "nmSubWndGrid.h"
#include "nmSubWndMain.h"
#include "nmSubWxsAnalyzeContext.h"
#include "ZxMainWindow.h"
#include <QObject>
namespace
{
// nmSubWnd模块加载时注册分析窗口上下文提供者
struct nmSubWndSubWxsAnalyzeControllerRegister
{
nmSubWndSubWxsAnalyzeControllerRegister()
{
nmSubWxsAnalyzeContext::setProvider(nmSubWndSubWxsAnalyzeController::instance());
}
};
nmSubWndSubWxsAnalyzeControllerRegister s_register;
}
// 获取功能界面上下文控制器单例
nmSubWndSubWxsAnalyzeController* nmSubWndSubWxsAnalyzeController::instance()
{
static nmSubWndSubWxsAnalyzeController s_controller;
return &s_controller;
}
// 根据当前分析窗口刷新地图和表格子窗口
void nmSubWndSubWxsAnalyzeController::updateWindowsForCurrentAnalyze(ZxMainWindow* pMainWindow,
iSubWndFitting* pCurSubWndF)
{
if(pMainWindow == nullptr || pCurSubWndF == nullptr) {
return;
}
ZxTabWidget* pTabWx = pMainWindow->getCurTabWx();
QVector<iSubWnd*> vecSubWnds = pMainWindow->getAllSubWndsOf(pTabWx);
// 本轮刷新只使用目标分析对应的数据中心,地图和网格保持同一个实例。
nmDataAnalyzeManager* pManager = nmDataAnalyzeManager::getInstanceByFitting(pCurSubWndF);
foreach (iSubWnd* pSub, vecSubWnds) {
nmSubWndMain* pMap = dynamic_cast<nmSubWndMain*>(pSub);
if(nullptr != pMap) {
pMap->updateMapByDataManager(pManager);
}
nmSubWndGrid* pSubWndGrid = dynamic_cast<nmSubWndGrid*>(pSub);
if(nullptr != pSubWndGrid) {
QObject::disconnect(pManager, SIGNAL(dataChanged()), pSubWndGrid, SLOT(updateGrid()));
QObject::connect(pManager, SIGNAL(dataChanged()), pSubWndGrid, SLOT(updateGrid()), Qt::QueuedConnection);
pSubWndGrid->updateGrid();
}
}
}