Files
WeatherRoutes/main.cpp

66 lines
2.1 KiB
C++

#include "controller/networkmanager.h"
#include "controller/weathercontroller.h"
#include "data/mapdata.h"
#include "data/weatherdetailsdata.h"
#include "controller/weathercontroller.h"
#include "controller/networkmanager.h"
#include "enums/weatherstatus.h"
#include <QGuiApplication>
#include <QLocationPermission>
#include <QQmlApplicationEngine>
#include <QQmlContext>
int main(int argc, char *argv[]) {
#if defined(Q_OS_LINUX) && !defined(Q_OS_ANDROID)
qputenv("QT_IM_MODULE", QByteArray("qtvirtualkeyboard"));
#endif
QGuiApplication app(argc, argv);
QLocationPermission permission;
permission.setAccuracy(QLocationPermission::Precise);
permission.setAvailability(QLocationPermission::WhenInUse);
switch (qApp->checkPermission(permission)) {
case Qt::PermissionStatus::Undetermined:
qApp->requestPermission(permission, [](const QPermission &permission) {
if (permission.status() == Qt::PermissionStatus::Granted) {
qDebug() << "Permission granted !!";
}
});
case Qt::PermissionStatus::Granted:
case Qt::PermissionStatus::Denied:
break;
}
QQmlApplicationEngine engine;
MapData mapData;
mapData.setDefaultZoomLevel(15);
mapData.setZoomLevel(mapData.defaultZoomLevel());
mapData.setGpsUpdateInterval(1000);
engine.rootContext()->setContextProperty("mapData", &mapData);
WeatherController ctrl;
std::shared_ptr<WeatherController> weatherCntrl =
std::make_shared<WeatherController>();
ctrl.parseJSONData();
WeatherDetailsData weatherDetailsData(weatherCntrl);
engine.rootContext()->setContextProperty("weatherDetailsData",
&weatherDetailsData);
engine.rootContext()->setContextProperty("networkManager",
NetworkManager::Instance());
const QUrl url(QStringLiteral("qrc:/WeatherRoutes/Main.qml"));
QObject::connect(
&engine, &QQmlApplicationEngine::objectCreated, &app,
[url](QObject *obj, const QUrl &objUrl) {
if (!obj && url == objUrl)
QCoreApplication::exit(-1);
},
Qt::QueuedConnection);
engine.load(url);
return app.exec();
}