#ifndef DISPLAYROUTEDIALOG_H
#define DISPLAYROUTEDIALOG_H

#include <QDialog>
#include <QMap>
#include "Engine/UGDatasetVector.h"
#include "MapEditor/UGMapEditorWnd.h"
#include "Map/UGMap.h"
#include "routeglobalvariant.h"
#include "scenecontrol.h"
#include "Stream/ugdefs.h"

//MSVC编译器界面显示乱码问题
#if _MSC_VER >= 1600
    #pragma execution_character_set("utf-8")
#endif

namespace Ui {
class DisplayRouteDialog;
}
using namespace UGC;

class DisplayRouteDialog : public QDialog
{
    Q_OBJECT

public:
    explicit DisplayRouteDialog(QWidget *parent = nullptr);
    ~DisplayRouteDialog();

    void setDataset(UGDatasetPtr ds);

    void setMapEditorWnd(UGMapEditorWnd* pMapEditorWnd);

    void setSceneControl(SceneControl* pSceneControl);

    void addRouteTypeItem(); // 添加航线类型

private slots:
    void on_RouteTypeCbbox_currentIndexChanged(int index);

    void on_displayBtn_clicked();

    void on_cancelBtn_clicked();

private:
    void addRouteNumberItem(UGRecordsetPtr res); //添加航线编号

    void showRoute();  //显示二维航线

    void showRoute3D(); //显示三维航线

    void getDyLayer(UGMap* pMap,UGDynamicLayer* &pDyLayer,UGString dyLayerName);

    void createDisplayLayer(UGMap* pMap,UGDatasetPtr dt,QString routeType);

    UGString addGeometry3DToDisplayDataset(UGRecordsetPtr sourceRes,int routeType); //添加三维对象到显示数据集

    void addGeometryToTrackingLayer3D(UGRecordsetPtr res,UGTrackingLayer3D* pTrackingLayer3D);

    void removeGeometry(int type,UGTrackingLayer3D *pTrackingLayer3D);

private:
    Ui::DisplayRouteDialog *ui;
    RouteGlobalVariant routeGVar;
    UGDatasetPtr dt;
    UGDatasetVector* dtv;
    UGMapEditorWnd* pMapEditorWnd;
    SceneControl* pSceneControl;
    QMap<int,QString> RouteType;
    QString routeType;
    QString routeNumber;

    QMap<int,QList<QString>> routeTags;

    bool is3DMap; //二三维标识

};

#endif // DISPLAYROUTEDIALOG_H