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.
57 lines
2.0 KiB
C++
57 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);
|
|
foreach (iSubWnd* pSub, vecSubWnds) {
|
|
nmSubWndMain* pMap = dynamic_cast<nmSubWndMain*>(pSub);
|
|
if(nullptr != pMap) {
|
|
pMap->updateMapByDataManager(nmDataAnalyzeManager::getInstanceByFitting(pCurSubWndF));
|
|
}
|
|
|
|
nmSubWndGrid* pSubWndGrid = dynamic_cast<nmSubWndGrid*>(pSub);
|
|
if(nullptr != pSubWndGrid) {
|
|
QObject::disconnect(nmDataAnalyzeManager::getInstanceByFitting(pCurSubWndF), SIGNAL(dataChanged()), pSubWndGrid, SLOT(updateGrid()));
|
|
QObject::connect(nmDataAnalyzeManager::getInstanceByFitting(pCurSubWndF), SIGNAL(dataChanged()), pSubWndGrid, SLOT(updateGrid()), Qt::QueuedConnection);
|
|
pSubWndGrid->updateGrid();
|
|
}
|
|
}
|
|
}
|