20 #include <QQmlComponent>
22 #include <QQmlContext>
23 #include <QQuickWindow>
30 _engine = std::make_shared<QQmlApplicationEngine>();
31 _parser = std::make_shared<TYIGNLevelCurvesParser>();
32 _mocker = std::make_shared<TYIGNGeoPfMocker>();
49 QQuickWindow* window = qobject_cast<QQuickWindow*>(sender());
50 if (window && window->visibility() != QWindow::Hidden)
61 QList<QObject*> rootObjects =
_engine->rootObjects();
62 for (QObject* obj : rootObjects)
80 qmlRegisterType<TYWebSocketTransport>(
"codetympan.org", 1, 0,
"WebSocketTransport");
81 qmlRegisterType<TYGeographicData>(
"codetympan.org", 1, 0,
"GeographicData");
82 _engine->load(QUrl(QStringLiteral(
"qrc:/qml/TYZoneSelectPage.qml")));
83 QList<QObject*> rootObjects =
_engine->rootObjects();
84 if (!rootObjects.isEmpty())
86 QObject* mainComponent = rootObjects.at(0);
88 mainComponent->setProperty(
"debugMode",
true);
90 mainComponent->setProperty(
"debugMode",
false);
92 QObject* geographicData = mainComponent->findChild<QObject*>(
"geographicData");
97 QObject::connect(geographicData, SIGNAL(cancelRequested()),
this, SLOT(
handleCancelRequest()));
98 QObject::connect(geographicData, SIGNAL(oKRequested()),
this, SLOT(
handleOKRequest()));
114 QList<QObject*> rootObjects =
_engine->rootObjects();
115 if (!rootObjects.isEmpty())
117 QObject* mainComponent = rootObjects.at(0);
118 QQuickWindow* window = qobject_cast<QQuickWindow*>(mainComponent);
124 QWindow* mainWinHandle = mainWindow->windowHandle();
127 window->setTransientParent(mainWinHandle);
128 window->setScreen(mainWinHandle->screen());
131 connect(mainWinHandle, &QWindow::screenChanged, window,
132 [window, mainWinHandle]() { window->setScreen(mainWinHandle->screen()); });
137 QRect screenGeometry = window->screen()->availableGeometry();
138 QSize windowSize = window->size();
141 int targetWidth = int(screenGeometry.width() * 0.83);
142 int targetHeight = int(screenGeometry.height() * 0.88);
143 window->resize(targetWidth, targetHeight);
146 window->setPosition(screenGeometry.center() - QPoint(targetWidth / 2, targetHeight / 2));
155 QList<QObject*> rootObjects =
_engine->rootObjects();
156 if (!rootObjects.isEmpty())
158 QObject* mainComponent = rootObjects.at(0);
159 QQuickWindow* window = qobject_cast<QQuickWindow*>(mainComponent);
162 qDebug() <<
"Closing Window object.";
226 if (geoData !=
nullptr)
237 _parser->parseXmlData(SIGCoords, selectedZone, scaleFactor);
242 QStringList listCoords = coord.split(
",");
243 const int len = listCoords.size();
244 std::vector<double> coordsDouble = std::vector<double>(len);
245 for (
int i = 0; i < len; i++)
247 listCoords[i].remove(
"\"");
248 coordsDouble[i] = listCoords[i].toDouble();
278 qDebug() <<
"Geo project creation cancelled";
287 qDebug() <<
"Geo project creation validated";
Q_INVOKABLE bool saveImageToFile(const QString &filePath)
This class holds a singleton instance which is an entry point for accessing IGN Geoplatform in order ...
void resetGeographicData()
std::shared_ptr< TYIGNLevelCurvesParser > _parser
std::shared_ptr< TYIGNGeoPfMocker > _mocker
void setImageWidth(const QString &text)
const QString getLandtakeCoord()
const QString getImageWidth()
static TYIGNGeoProvider * getInstance()
void setLandtakeCoord(const QString &text)
QObject * _geographicData
void handleCancelRequest()
void geoProjectCreationRequested()
bool _isInitialised
True when web engine is intialized.
std::vector< double > coordinatesToDouble(const QString &coord)
void buildLevelCurves(const OCoord3D &SIGCoords, const OBox &selectedZone, double scaleFactor)
void openModalWindow(QWidget *mainWindow)
std::shared_ptr< QQmlApplicationEngine > _engine
bool _isSelectionValidated
Set to false when displaying zone selection page. When selection is validated, it is set to true in o...
bool mockGeoPf()
Mocks IGN Geoplatform web services when they are down.
void setScaleFactor(const QString &text)
bool saveImageToFile(const QString &filePath)
const QString getScaleFactor()
static TYIGNGeoProvider * singleton_