diff --git a/src/Airmap/AirMapManager.h b/src/Airmap/AirMapManager.h index 99f85ee..6b36b81 100644 --- a/src/Airmap/AirMapManager.h +++ b/src/Airmap/AirMapManager.h @@ -32,7 +32,6 @@ Q_DECLARE_LOGGING_CATEGORY(AirMapManagerLog) - /** * @class LifetimeChecker * Base class which helps to check if an object instance still exists. diff --git a/src/Airmap/AirspaceControl.qml b/src/Airmap/AirspaceControl.qml index dea3cdd..3f601db 100644 --- a/src/Airmap/AirspaceControl.qml +++ b/src/Airmap/AirspaceControl.qml @@ -18,8 +18,10 @@ Item { width: parent.width height: colapsed ? colapsedRect.height : expandedRect.height - property bool colapsed: true - property bool showColapse: true + property bool colapsed: true + property bool showColapse: true + + property var _activeVehicle: QGroundControl.multiVehicleManager.activeVehicle readonly property real _radius: ScreenTools.defaultFontPixelWidth * 0.5 readonly property color _colorOrange: "#d75e0d" @@ -63,6 +65,15 @@ Item { color: _colorWhite anchors.verticalCenter: parent.verticalCenter } + Item { + width: ScreenTools.defaultFontPixelWidth + height: 1 + } + AirspaceWeather { + iconHeight: ScreenTools.defaultFontPixelWidth * 2.5 + visible: _activeVehicle && _activeVehicle.airspaceController.hasWeather + anchors.verticalCenter: parent.verticalCenter + } } QGCColoredImage { width: height @@ -125,6 +136,14 @@ Item { font.pointSize: ScreenTools.smallFontPointSize } } + Item { + width: ScreenTools.defaultFontPixelWidth + height: 1 + } + AirspaceWeather { + visible: _activeVehicle && _activeVehicle.airspaceController.hasWeather && showColapse + anchors.verticalCenter: parent.verticalCenter + } } QGCColoredImage { width: height @@ -142,6 +161,12 @@ Item { onClicked: colapsed = true } } + AirspaceWeather { + visible: _activeVehicle && _activeVehicle.airspaceController.hasWeather && !showColapse + anchors.right: parent.right + anchors.rightMargin: ScreenTools.defaultFontPixelWidth + anchors.verticalCenter: parent.verticalCenter + } } //-- Contents (Brown Box) Rectangle { diff --git a/src/Airmap/AirspaceController.cc b/src/Airmap/AirspaceController.cc index d81d763..ec56728 100644 --- a/src/Airmap/AirspaceController.cc +++ b/src/Airmap/AirspaceController.cc @@ -7,14 +7,46 @@ * ****************************************************************************/ +#include "AirMapManager.h" #include "AirspaceController.h" #include "AirspaceManagement.h" #include "QGCApplication.h" #include "QGCQGeoCoordinate.h" +#define WEATHER_UPDATE_DISTANCE 50000 //-- 50km threshold for weather updates +#define WEATHER_UPDATE_TIME 30 * 60 * 60 * 1000 //-- 30 minutes threshold for weather updates + AirspaceController::AirspaceController(QObject* parent) : QObject(parent) , _manager(qgcApp()->toolbox()->airspaceManager()) + , _weatherTemp(0) + , _hasWeather(false) +{ + connect(_manager, &AirspaceManager::weatherUpdate, this, &AirspaceController::_weatherUpdate); +} + +void AirspaceController::setROI(QGeoCoordinate center, double radius) { + _manager->setROI(center, radius); + //-- If first time or we've moved more than WEATHER_UPDATE_DISTANCE, ask for weather updates. + if(!_lastRoiCenter.isValid() || _lastRoiCenter.distanceTo(center) > WEATHER_UPDATE_DISTANCE) { + _lastRoiCenter = center; + _manager->requestWeatherUpdate(center); + _weatherTime.start(); + } else { + //-- Check weather once every WEATHER_UPDATE_TIME + if(_weatherTime.elapsed() > WEATHER_UPDATE_TIME) { + _manager->requestWeatherUpdate(center); + _weatherTime.start(); + } + } } +void AirspaceController::_weatherUpdate(bool success, QGeoCoordinate, WeatherInformation weather) +{ + qCDebug(AirMapManagerLog)<<"Weather Info:"<< success << weather.condition << weather.temperature; + _hasWeather = success; + _weatherIcon = QStringLiteral("qrc:/airmapweather/") + weather.condition + QStringLiteral(".svg"); + _weatherTemp = weather.temperature; + emit weatherChanged(); +} diff --git a/src/Airmap/AirspaceController.h b/src/Airmap/AirspaceController.h index b97c6a8..905a692 100644 --- a/src/Airmap/AirspaceController.h +++ b/src/Airmap/AirspaceController.h @@ -20,10 +20,13 @@ public: AirspaceController(QObject* parent = NULL); ~AirspaceController() = default; - Q_PROPERTY(QmlObjectListModel* polygons READ polygons CONSTANT) ///< List of PolygonAirspaceRestriction objects - Q_PROPERTY(QmlObjectListModel* circles READ circles CONSTANT) ///< List of CircularAirspaceRestriction objects + Q_PROPERTY(QmlObjectListModel* polygons READ polygons CONSTANT) ///< List of PolygonAirspaceRestriction objects + Q_PROPERTY(QmlObjectListModel* circles READ circles CONSTANT) ///< List of CircularAirspaceRestriction objects + Q_PROPERTY(QString weatherIcon READ weatherIcon NOTIFY weatherChanged) + Q_PROPERTY(int weatherTemp READ weatherTemp NOTIFY weatherChanged) + Q_PROPERTY(bool hasWeather READ hasWeather NOTIFY weatherChanged) - Q_INVOKABLE void setROI(QGeoCoordinate center, double radius) { _manager->setROI(center, radius); } + Q_INVOKABLE void setROI(QGeoCoordinate center, double radius); QmlObjectListModel* polygons() { return _manager->polygonRestrictions(); } QmlObjectListModel* circles() { return _manager->circularRestrictions(); } @@ -31,6 +34,22 @@ public: Q_PROPERTY(QString providerName READ providerName CONSTANT) QString providerName() { return _manager->name(); } + + QString weatherIcon () { return _weatherIcon; } + int weatherTemp () { return _weatherTemp; } + bool hasWeather () { return _hasWeather; } + +signals: + void weatherChanged (); + +private slots: + void _weatherUpdate (bool success, QGeoCoordinate coordinate, WeatherInformation weather); + private: - AirspaceManager* _manager; + AirspaceManager* _manager; + QGeoCoordinate _lastRoiCenter; + QTime _weatherTime; + QString _weatherIcon; + int _weatherTemp; + bool _hasWeather; }; diff --git a/src/Airmap/AirspaceManagement.h b/src/Airmap/AirspaceManagement.h index 1a17b6e..5a49c69 100644 --- a/src/Airmap/AirspaceManagement.h +++ b/src/Airmap/AirspaceManagement.h @@ -125,15 +125,15 @@ class Vehicle; struct WeatherInformation { - QString condition; ///< The overall weather condition. - QString icon; ///< The icon or class of icon that should be used for display purposes. - uint32_t windHeading = 0; ///< The heading in [°]. - uint32_t windSpeed = 0; ///< The speed in [°]. - uint32_t windGusting = 0; - int32_t temperature = 0; ///< The temperature in [°C]. - float humidity = 0.0; - uint32_t visibility = 0; ///< Visibility in [m]. - uint32_t precipitation = 0; ///< The probability of precipitation in [%]. + QString condition; ///< The overall weather condition. + QString icon; ///< The icon or class of icon that should be used for display purposes. + uint32_t windHeading = 0; ///< The heading in [°]. + uint32_t windSpeed = 0; ///< The speed in [°]. + uint32_t windGusting = 0; + int32_t temperature = 0; ///< The temperature in [°C]. + float humidity = 0.0; + uint32_t visibility = 0; ///< Visibility in [m]. + uint32_t precipitation = 0; ///< The probability of precipitation in [%]. }; Q_DECLARE_METATYPE(WeatherInformation); diff --git a/src/Airmap/AirspaceWeather.qml b/src/Airmap/AirspaceWeather.qml new file mode 100644 index 0000000..0c822ba --- /dev/null +++ b/src/Airmap/AirspaceWeather.qml @@ -0,0 +1,38 @@ +import QtQuick 2.3 +import QtQuick.Controls 1.2 +import QtQuick.Controls.Styles 1.4 +import QtQuick.Dialogs 1.2 +import QtQml 2.2 + +import QGroundControl 1.0 +import QGroundControl.ScreenTools 1.0 +import QGroundControl.Controls 1.0 +import QGroundControl.Palette 1.0 +import QGroundControl.Airmap 1.0 + +Item { + height: _activeVehicle && _activeVehicle.airspaceController.hasWeather ? weatherRow.height : 0 + width: _activeVehicle && _activeVehicle.airspaceController.hasWeather ? weatherRow.width : 0 + property var iconHeight: ScreenTools.defaultFontPixelWidth * 4 + property color _colorWhite: "#ffffff" + property var _activeVehicle: QGroundControl.multiVehicleManager.activeVehicle + Row { + id: weatherRow + spacing: ScreenTools.defaultFontPixelHeight * 0.5 + QGCColoredImage { + width: height + height: iconHeight + sourceSize.height: height + source: _activeVehicle ? _activeVehicle.airspaceController.weatherIcon : "" + color: _colorWhite + visible: _activeVehicle && _activeVehicle.airspaceController.hasWeather + anchors.verticalCenter: parent.verticalCenter + } + QGCLabel { + text: _activeVehicle ? _activeVehicle.airspaceController.weatherTemp + "ºC" : "" + color: _colorWhite + visible: _activeVehicle && _activeVehicle.airspaceController.hasWeather + anchors.verticalCenter: parent.verticalCenter + } + } +} diff --git a/src/Airmap/QGroundControl.Airmap.qmldir b/src/Airmap/QGroundControl.Airmap.qmldir index 116917d..0196743 100644 --- a/src/Airmap/QGroundControl.Airmap.qmldir +++ b/src/Airmap/QGroundControl.Airmap.qmldir @@ -2,3 +2,4 @@ Module QGroundControl.Airmap AirspaceControl 1.0 AirspaceControl.qml AirspaceRegulation 1.0 AirspaceRegulation.qml +AirspaceWeather 1.0 AirspaceWeather.qml diff --git a/src/Airmap/airmap.qrc b/src/Airmap/airmap.qrc index 5130d4e..a41b7e2 100644 --- a/src/Airmap/airmap.qrc +++ b/src/Airmap/airmap.qrc @@ -3,6 +3,7 @@ QGroundControl.Airmap.qmldir AirspaceControl.qml AirspaceRegulation.qml + AirspaceWeather.qml AirmapSettings.qml @@ -14,4 +15,36 @@ images/expand.svg images/pencil.svg + + images/weather-icons/clear.svg + images/weather-icons/cloudy.svg + images/weather-icons/cloudy_wind.svg + images/weather-icons/drizzle.svg + images/weather-icons/drizzle_day.svg + images/weather-icons/drizzle_night.svg + images/weather-icons/foggy.svg + images/weather-icons/frigid.svg + images/weather-icons/hail.svg + images/weather-icons/heavy_rain.svg + images/weather-icons/hurricane.svg + images/weather-icons/isolated_thunderstorms.svg + images/weather-icons/mostly_clear.svg + images/weather-icons/mostly_cloudy_day.svg + images/weather-icons/mostly_cloudy_night.svg + images/weather-icons/mostly_sunny.svg + images/weather-icons/partly_cloudy_day.svg + images/weather-icons/partyly_cloudy_night.svg + images/weather-icons/rain.svg + images/weather-icons/rain_snow.svg + images/weather-icons/scattered_snow_showers_day.svg + images/weather-icons/scattered_snow_showers_night.svg + images/weather-icons/scattered_thunderstorms_day.svg + images/weather-icons/scattered_thunderstorms_night.svg + images/weather-icons/snow.svg + images/weather-icons/snow_storm.svg + images/weather-icons/sunny.svg + images/weather-icons/thunderstorm.svg + images/weather-icons/tornado.svg + images/weather-icons/windy.svg + diff --git a/src/Airmap/dummy/AirspaceWeather.qml b/src/Airmap/dummy/AirspaceWeather.qml new file mode 100644 index 0000000..a48aacc --- /dev/null +++ b/src/Airmap/dummy/AirspaceWeather.qml @@ -0,0 +1,4 @@ +import QtQuick 2.3 +Item { + property var iconHeight: 0 +} diff --git a/src/Airmap/dummy/QGroundControl.Airmap.qmldir b/src/Airmap/dummy/QGroundControl.Airmap.qmldir index 116917d..0196743 100644 --- a/src/Airmap/dummy/QGroundControl.Airmap.qmldir +++ b/src/Airmap/dummy/QGroundControl.Airmap.qmldir @@ -2,3 +2,4 @@ Module QGroundControl.Airmap AirspaceControl 1.0 AirspaceControl.qml AirspaceRegulation 1.0 AirspaceRegulation.qml +AirspaceWeather 1.0 AirspaceWeather.qml diff --git a/src/Airmap/dummy/airmap_dummy.qrc b/src/Airmap/dummy/airmap_dummy.qrc index 173e9aa..364d9ca 100644 --- a/src/Airmap/dummy/airmap_dummy.qrc +++ b/src/Airmap/dummy/airmap_dummy.qrc @@ -3,5 +3,6 @@ QGroundControl.Airmap.qmldir AirspaceControl.qml AirspaceRegulation.qml + AirspaceWeather.qml diff --git a/src/Airmap/images/weather-icons/clear.svg b/src/Airmap/images/weather-icons/clear.svg new file mode 100755 index 0000000..5a34322 --- /dev/null +++ b/src/Airmap/images/weather-icons/clear.svg @@ -0,0 +1,12 @@ + + + + clear + Created with Sketch. + + + + + + + \ No newline at end of file diff --git a/src/Airmap/images/weather-icons/cloudy.svg b/src/Airmap/images/weather-icons/cloudy.svg new file mode 100755 index 0000000..33b8f68 --- /dev/null +++ b/src/Airmap/images/weather-icons/cloudy.svg @@ -0,0 +1,12 @@ + + + + cloudy + Created with Sketch. + + + + + + + \ No newline at end of file diff --git a/src/Airmap/images/weather-icons/cloudy_wind.svg b/src/Airmap/images/weather-icons/cloudy_wind.svg new file mode 100755 index 0000000..350f6bd --- /dev/null +++ b/src/Airmap/images/weather-icons/cloudy_wind.svg @@ -0,0 +1,12 @@ + + + + cloudy_wind + Created with Sketch. + + + + + + + \ No newline at end of file diff --git a/src/Airmap/images/weather-icons/drizzle.svg b/src/Airmap/images/weather-icons/drizzle.svg new file mode 100755 index 0000000..4e3b411 --- /dev/null +++ b/src/Airmap/images/weather-icons/drizzle.svg @@ -0,0 +1,12 @@ + + + + drizzle + Created with Sketch. + + + + + + + \ No newline at end of file diff --git a/src/Airmap/images/weather-icons/drizzle_day.svg b/src/Airmap/images/weather-icons/drizzle_day.svg new file mode 100755 index 0000000..62c8adc --- /dev/null +++ b/src/Airmap/images/weather-icons/drizzle_day.svg @@ -0,0 +1,12 @@ + + + + drizzle_day + Created with Sketch. + + + + + + + \ No newline at end of file diff --git a/src/Airmap/images/weather-icons/drizzle_night.svg b/src/Airmap/images/weather-icons/drizzle_night.svg new file mode 100755 index 0000000..7a95b95 --- /dev/null +++ b/src/Airmap/images/weather-icons/drizzle_night.svg @@ -0,0 +1,12 @@ + + + + drizzle_night + Created with Sketch. + + + + + + + \ No newline at end of file diff --git a/src/Airmap/images/weather-icons/foggy.svg b/src/Airmap/images/weather-icons/foggy.svg new file mode 100755 index 0000000..4c77893 --- /dev/null +++ b/src/Airmap/images/weather-icons/foggy.svg @@ -0,0 +1,18 @@ + + + + foggy + Created with Sketch. + + + + + + + + + + + + + \ No newline at end of file diff --git a/src/Airmap/images/weather-icons/frigid.svg b/src/Airmap/images/weather-icons/frigid.svg new file mode 100755 index 0000000..3fbea9a --- /dev/null +++ b/src/Airmap/images/weather-icons/frigid.svg @@ -0,0 +1,13 @@ + + + + frigid + Created with Sketch. + + + + + + + + \ No newline at end of file diff --git a/src/Airmap/images/weather-icons/hail.svg b/src/Airmap/images/weather-icons/hail.svg new file mode 100755 index 0000000..58f3ede --- /dev/null +++ b/src/Airmap/images/weather-icons/hail.svg @@ -0,0 +1,12 @@ + + + + hail + Created with Sketch. + + + + + + + \ No newline at end of file diff --git a/src/Airmap/images/weather-icons/heavy_rain.svg b/src/Airmap/images/weather-icons/heavy_rain.svg new file mode 100755 index 0000000..c955fa1 --- /dev/null +++ b/src/Airmap/images/weather-icons/heavy_rain.svg @@ -0,0 +1,12 @@ + + + + heavy_rain + Created with Sketch. + + + + + + + \ No newline at end of file diff --git a/src/Airmap/images/weather-icons/hurricane.svg b/src/Airmap/images/weather-icons/hurricane.svg new file mode 100755 index 0000000..1a10107 --- /dev/null +++ b/src/Airmap/images/weather-icons/hurricane.svg @@ -0,0 +1,14 @@ + + + + hurricane + Created with Sketch. + + + + + + + + + \ No newline at end of file diff --git a/src/Airmap/images/weather-icons/isolated_thunderstorms.svg b/src/Airmap/images/weather-icons/isolated_thunderstorms.svg new file mode 100755 index 0000000..c486070 --- /dev/null +++ b/src/Airmap/images/weather-icons/isolated_thunderstorms.svg @@ -0,0 +1,12 @@ + + + + isolated_thunderstorms + Created with Sketch. + + + + + + + \ No newline at end of file diff --git a/src/Airmap/images/weather-icons/mostly_clear.svg b/src/Airmap/images/weather-icons/mostly_clear.svg new file mode 100755 index 0000000..9946586 --- /dev/null +++ b/src/Airmap/images/weather-icons/mostly_clear.svg @@ -0,0 +1,12 @@ + + + + mostly_clear + Created with Sketch. + + + + + + + \ No newline at end of file diff --git a/src/Airmap/images/weather-icons/mostly_cloudy_day.svg b/src/Airmap/images/weather-icons/mostly_cloudy_day.svg new file mode 100755 index 0000000..c820b41 --- /dev/null +++ b/src/Airmap/images/weather-icons/mostly_cloudy_day.svg @@ -0,0 +1,12 @@ + + + + mostly_cloudy_day + Created with Sketch. + + + + + + + \ No newline at end of file diff --git a/src/Airmap/images/weather-icons/mostly_cloudy_night.svg b/src/Airmap/images/weather-icons/mostly_cloudy_night.svg new file mode 100755 index 0000000..673b54c --- /dev/null +++ b/src/Airmap/images/weather-icons/mostly_cloudy_night.svg @@ -0,0 +1,12 @@ + + + + mostly_cloudy_night + Created with Sketch. + + + + + + + \ No newline at end of file diff --git a/src/Airmap/images/weather-icons/mostly_sunny.svg b/src/Airmap/images/weather-icons/mostly_sunny.svg new file mode 100755 index 0000000..047ccc4 --- /dev/null +++ b/src/Airmap/images/weather-icons/mostly_sunny.svg @@ -0,0 +1,12 @@ + + + + mostly_sunny + Created with Sketch. + + + + + + + \ No newline at end of file diff --git a/src/Airmap/images/weather-icons/partly_cloudy_day.svg b/src/Airmap/images/weather-icons/partly_cloudy_day.svg new file mode 100755 index 0000000..456db3b --- /dev/null +++ b/src/Airmap/images/weather-icons/partly_cloudy_day.svg @@ -0,0 +1,12 @@ + + + + partly_cloudy_day + Created with Sketch. + + + + + + + \ No newline at end of file diff --git a/src/Airmap/images/weather-icons/partyly_cloudy_night.svg b/src/Airmap/images/weather-icons/partyly_cloudy_night.svg new file mode 100755 index 0000000..79374a2 --- /dev/null +++ b/src/Airmap/images/weather-icons/partyly_cloudy_night.svg @@ -0,0 +1,12 @@ + + + + partyly_cloudy_night + Created with Sketch. + + + + + + + \ No newline at end of file diff --git a/src/Airmap/images/weather-icons/rain.svg b/src/Airmap/images/weather-icons/rain.svg new file mode 100755 index 0000000..a7ee9ed --- /dev/null +++ b/src/Airmap/images/weather-icons/rain.svg @@ -0,0 +1,12 @@ + + + + rain + Created with Sketch. + + + + + + + \ No newline at end of file diff --git a/src/Airmap/images/weather-icons/rain_snow.svg b/src/Airmap/images/weather-icons/rain_snow.svg new file mode 100755 index 0000000..21c2f32 --- /dev/null +++ b/src/Airmap/images/weather-icons/rain_snow.svg @@ -0,0 +1,14 @@ + + + + rain_snow + Created with Sketch. + + + + + + + + + \ No newline at end of file diff --git a/src/Airmap/images/weather-icons/scattered_snow_showers_day.svg b/src/Airmap/images/weather-icons/scattered_snow_showers_day.svg new file mode 100755 index 0000000..ddaa563 --- /dev/null +++ b/src/Airmap/images/weather-icons/scattered_snow_showers_day.svg @@ -0,0 +1,14 @@ + + + + scattered_snow_showers_day + Created with Sketch. + + + + + + + + + \ No newline at end of file diff --git a/src/Airmap/images/weather-icons/scattered_snow_showers_night.svg b/src/Airmap/images/weather-icons/scattered_snow_showers_night.svg new file mode 100755 index 0000000..11cf9fc --- /dev/null +++ b/src/Airmap/images/weather-icons/scattered_snow_showers_night.svg @@ -0,0 +1,14 @@ + + + + scattered_snow_showers_night + Created with Sketch. + + + + + + + + + \ No newline at end of file diff --git a/src/Airmap/images/weather-icons/scattered_thunderstorms_day.svg b/src/Airmap/images/weather-icons/scattered_thunderstorms_day.svg new file mode 100755 index 0000000..22c68ef --- /dev/null +++ b/src/Airmap/images/weather-icons/scattered_thunderstorms_day.svg @@ -0,0 +1,13 @@ + + + + scattered_thunderstorms_day + Created with Sketch. + + + + + + + + \ No newline at end of file diff --git a/src/Airmap/images/weather-icons/scattered_thunderstorms_night.svg b/src/Airmap/images/weather-icons/scattered_thunderstorms_night.svg new file mode 100755 index 0000000..dd6c2e2 --- /dev/null +++ b/src/Airmap/images/weather-icons/scattered_thunderstorms_night.svg @@ -0,0 +1,12 @@ + + + + scattered_thunderstorms_night + Created with Sketch. + + + + + + + \ No newline at end of file diff --git a/src/Airmap/images/weather-icons/snow.svg b/src/Airmap/images/weather-icons/snow.svg new file mode 100755 index 0000000..26f3fcb --- /dev/null +++ b/src/Airmap/images/weather-icons/snow.svg @@ -0,0 +1,15 @@ + + + + snow + Created with Sketch. + + + + + + + + + + \ No newline at end of file diff --git a/src/Airmap/images/weather-icons/snow_storm.svg b/src/Airmap/images/weather-icons/snow_storm.svg new file mode 100755 index 0000000..1049f19 --- /dev/null +++ b/src/Airmap/images/weather-icons/snow_storm.svg @@ -0,0 +1,15 @@ + + + + snow_storm + Created with Sketch. + + + + + + + + + + \ No newline at end of file diff --git a/src/Airmap/images/weather-icons/sunny.svg b/src/Airmap/images/weather-icons/sunny.svg new file mode 100755 index 0000000..a5b2d49 --- /dev/null +++ b/src/Airmap/images/weather-icons/sunny.svg @@ -0,0 +1,12 @@ + + + + sunny + Created with Sketch. + + + + + + + \ No newline at end of file diff --git a/src/Airmap/images/weather-icons/thunderstorm.svg b/src/Airmap/images/weather-icons/thunderstorm.svg new file mode 100755 index 0000000..57973e8 --- /dev/null +++ b/src/Airmap/images/weather-icons/thunderstorm.svg @@ -0,0 +1,12 @@ + + + + thunderstorm + Created with Sketch. + + + + + + + \ No newline at end of file diff --git a/src/Airmap/images/weather-icons/tornado.svg b/src/Airmap/images/weather-icons/tornado.svg new file mode 100755 index 0000000..529b698 --- /dev/null +++ b/src/Airmap/images/weather-icons/tornado.svg @@ -0,0 +1,12 @@ + + + + tornado + Created with Sketch. + + + + + + + \ No newline at end of file diff --git a/src/Airmap/images/weather-icons/windy.svg b/src/Airmap/images/weather-icons/windy.svg new file mode 100755 index 0000000..5b77480 --- /dev/null +++ b/src/Airmap/images/weather-icons/windy.svg @@ -0,0 +1,12 @@ + + + + windy + Created with Sketch. + + + + + + + \ No newline at end of file