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...

70 lines
2.3 KiB
C++

This file contains ambiguous Unicode characters!

This file contains ambiguous Unicode characters that may be confused with others in your current locale. If your use case is intentional and legitimate, you can safely ignore this warning. Use the Escape button to highlight these characters.

#include "nmSubWndSubWxsAnalyzeController.h"
#include "iSubWndFitting.h"
#include "nmDataAnalyzeManager.h"
#include "nmSubWndGrid.h"
#include "nmSubWndMain.h"
#include "nmSubWndUtils.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;
}
// 使用nmSubWndUtils缓存的pTabWx与slotHandleMdiSubWindowActivated保持一致
nmSubWndUtils* pUtils = nmSubWndUtils::getInstance();
ZxTabWidget* pTabWx = nullptr;
if(pUtils != nullptr) {
pTabWx = pUtils->getTabWidget();
}
if(pTabWx == nullptr) {
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();
}
}
}