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.
59 lines
2.0 KiB
C++
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();
|
|
}
|
|
}
|
|
}
|