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.

257 lines
6.4 KiB
C

#ifndef MAINWINDOW_H
#define MAINWINDOW_H
//MSVC编译器界面显示乱码问题
#if _MSC_VER >= 1600
#pragma execution_character_set("utf-8")
#endif
#include <QMainWindow>
#include <QStackedWidget>
#include <QProgressDialog>
#include <QString>
#include <QMutex>
//子窗口头文件
#include "saveroutedialog.h"
#include "bindroutedialog.h"
#include "computeoffsetpositiondialog.h"
//supermap
#include <Workspace/UGWorkspace.h>
#include <Engine/UGDataset.h>
#include "Map/UGLayer.h"
#include "scenecontrol.h"
#include "sceneview.h"
namespace UGC
{
class UGWorkspace;
class UGImage;
class UGGraphics;
class UGDataset;
class UGDataSource;
class UGLayer;
class UGMap;
class UGDatasetVector;
// class UGMapEditorWnd;
}
using namespace UGC;
QT_BEGIN_NAMESPACE
namespace Ui { class MainWindow; }
QT_END_NAMESPACE
class QMapControl; //声明所依赖的QMapControl类
class MainWindow : public QMainWindow
{
Q_OBJECT
public:
enum RBtnMenuType
{
DefaultMenu,
AttributeMenu,
EditMenu
};
Q_ENUM(RBtnMenuType);
enum MapType
{
Map2D,
Map3D,
};
Q_ENUM(MapType);
MainWindow(QWidget *parent = nullptr);
~MainWindow();
private:
void setupUI(QMainWindow* mainWindow);//声明搭建界面的函数
void initWorkSpace();//工作空间初始化
void initMapControl(); //二维地图容器初始化
void initMenu(QMainWindow* mainWindow); //Map菜单初始化
void addMapAction(QMainWindow *mainWindow);//声明界面上各元素的行为函数
void addMapMenuAction();//声明Map右键菜单的行为函数
void addMapConnect();//声明Map连接信号和槽的函数
void initSceneControl(QWidget* parent); //三维场景容器初始化
void initSceneMene(); //场景菜单初始化
void addSceneMenuAction();//声明Scene右键菜单的行为函数
void addSceneActionConnect(); //声明Scene QAction连接信号和槽的函数
void addSceneConnect();//声明Scene连接信号和槽的函数
UGbool DirExist(QString fullPath); //判断文件夹是否存在
void importKMLData(); //导入KML,仅用于二维地图
void importKML3DData(); //导入KML,仅用于三维地图
void exportKMLFile(); //导出KML文件
//加载模型文件
void loadModelData();
protected:
// 如果窗口设置了 Qt::DefaultContextMenu 策略,
// 点击鼠标右键该函数被Qt框架调用
void contextMenuEvent(QContextMenuEvent *event);
private:
Ui::MainWindow *ui;
QStackedWidget* stackedWidget;
QProgressDialog* progressDlg;
RBtnMenuType rMenuType;
MapType mapType;
ComputeOffsetPositionDialog* inputPosDlg;
saveRouteDialog *saveRouteDlg;
bindRouteDialog *bindRouteDlg;
QMapControl* qMapControl;//声明一个地图窗口对象QMapControl类对象
SceneControl* pSceneControl; //三维场景对象
SceneView* pSceneView;
UGWorkspace* m_pWorkspace; //声明一个工作空间对象
QMenu* mapRBtnMenu;//声明一个地图右键菜单对象
//声明右键菜单各按钮对象
QAction* actionShowRoute; //显示航线
QAction* actionBindRoute;//装订航线
QAction* actionImportRoute; //导入航线
QMenu* attributeRBtnMenu; //声明属性右键菜单对象
QAction* actionAttribute; //属性
QAction* actionExportFile; //文件导出
QMenu* EditRBtnMenu; //编辑右键菜单
QAction* saveRoute;//保存航线
QAction* cancelRoute;//取消航线
/*******************场景菜单对象*******************/
QMenu* sceneRBtnMenu;//声明一个场景右键菜单对象
//声明场景右键菜单各按钮对象
QAction* actionSceneShowRoute; //显示航线
QAction* actionSceneBindRoute;//装订航线
QAction* actionSceneImportRoute; //导入航线
//声明界面上工具条对象
QToolBar *mainToolBar;
//声明工具条上各个按钮对象
QAction *actionOpen;
QAction *actionZoomout;
QAction *actionZoomin;
QAction *actionPan;
QAction *actionViewEntire;
QAction *actionCalcLength;
QAction *actionCalcArea;
QAction *actionCalcAngle;
QAction *actionSelect;
QAction *actionDrawPoint;
QAction *actionDrawLine;
QAction *actionDrawPolygon;
QAction *actionInputPoint;
QAction *actionOnlineMap;
QAction *actionMapLocation;
QAction *actionTransformMap;
QAction *actionImportData;
//绘制模式
qint16 drawMode;
//
// QStringList imageDataList;
// QStringList terrainDataList;
// int imageDataCount;
// int terrainDataCount;
QMutex m_mutex;
// QThread* loadSceneDataThread;
signals:
void sendAddRouteState(int addState);// 航线是否添加成功信号
void sendSceneDataList(SceneControl* pSceneControl,UGDataSource* pDataSource,QStringList imagePathList,QStringList terrianPathList);
// void closedProgressDialog();
public slots:
void openRasterMap(); //声明槽函数openRasterMap打开地图操作
void zoomIn();//声明槽函数zoomIn放大地图操作
void zoomOut();//声明槽函数zoomOut缩小地图操作
void viewEntire();//声明槽函数viewEntire全幅显示地图
void pan();//声明槽函数pan平移浏览地图
void calcLength();//声明槽函数calcLength量算距离
void calcArea();//声明槽函数calcArea量算面积
void calcAngle();//声明槽函数calcAngle量算角度
void Select(); //声明槽函数Select
void drawPoint();//声明槽函数drawPoint(绘制点)
void drawLine();//声明槽函数drawLine(绘制线)
void drawPolygon();//声明槽函数drawPolygon(绘制多边形)
void showBindRouteDialog(); //显示航线装订弹窗
void showComputeOffsetPosition(); //显示坐标点输入坐标弹窗
void showOnlineMapDialog(); //显示在线地图选择弹窗
void showAttributeMenu(); //显示属性右键菜单
void transformMap(); //二三维地图切换
void importSceneData(QStringList imagePathList,QStringList terrianPathList); //导入场景数据
void closedProgressDialog(QString taskName); //关闭进度条
void showSettingFlightPoint3DDialog(); //显示航高设置对话框
void showSaveRoute3DDialog(UGGeometry* pGeometry); //显示三维航线保存对话框
void highLightKMLGeometry(int currentGeometryID,int lastGeometryID); //高亮当前导入的KML 3D几何对象
};
#endif // MAINWINDOW_H