#ifndef SCENEVIEW_H
#define SCENEVIEW_H

#include <QWidget>
#include <QPainter>
#include <QWheelEvent>
#include <QApplication>
#include <QDesktopWidget>
#include <QScreen>
#include <QTimer>

#include <QDebug>

#include "sceneControl.h"

#include "SceneLayersView.h"

//using namespace SuperMap;

class SceneView : public QWidget
{
    Q_OBJECT
public:
    explicit SceneView(QWidget *parent = nullptr);

    virtual ~SceneView();

public:
    bool showSettingFlightPoint;

    bool startTrackingFlag;  //开始绘制追踪

    bool isEditStateFlag;  //编辑状态
    /*
            *@cbwu
            *@brief 存储显示的几何对象集合
            */
//    QMap<int,QString>m_qmapDisplayGeometryID;


    //method
private:
    unsigned int getMouseOrKeyFlag(QMouseEvent* event);

    void ReviseCursor(int SceneUserAction); //设置鼠标光标形状

    // override parent
protected:
    virtual void paintEvent(QPaintEvent* event);
    virtual void wheelEvent(QWheelEvent* event);
    virtual void mousePressEvent(QMouseEvent* event);
    virtual void mouseReleaseEvent(QMouseEvent* event);
    virtual void mouseMoveEvent(QMouseEvent* event);
    virtual void resizeEvent(QResizeEvent* event);
    virtual void keyPressEvent(QKeyEvent* event);
    virtual void mouseDoubleClickEvent(QMouseEvent *event);

private:
    SceneControl* m_pSceneControl;
    bool isRenderTimerStarted;
    QTimer* renderTimer; // 场景渲染定时器

//    SceneLayersView* pSceneLayersView;

public:
    SceneControl* GetSceneControl();

    void startRender(int ms = 30);

    void stopRender();

//    SceneLayersView* getSceneLayersView();

signals:
    void sendTrackedGeometry(UGGeometry* pGeometry);  //发送绘制完的3D几何对象信号
    void sendTrackingGeometry(UGGeometry* pGeometry);
    void showSettingFlightPointDialg();  //显示航点信息信号
    void showAttributeMenu();  //显示右键属性菜单

public slots:
    void RenderInTimer();

};

#endif // SCENEVIEW_H