summaryrefslogtreecommitdiffstats
path: root/mobile-widgets
diff options
context:
space:
mode:
authorGravatar Lubomir I. Ivanov <neolit123@gmail.com>2017-10-07 12:08:18 +0300
committerGravatar Dirk Hohndel <dirk@hohndel.org>2017-10-07 08:09:05 -0700
commit174b4144366a81a72dea6a77af45dca8575608cb (patch)
treef0c9ea1db9642145567b6a8f02f296237ca82b87 /mobile-widgets
parentd1a18b36b4227ea65ed03b65583d06363735320a (diff)
downloadsubsurface-174b4144366a81a72dea6a77af45dca8575608cb.tar.gz
map-widget: don't crash if the map QML failed to load
If the QML modules for QtLocation and QtPositioning are missing the QML in mapwidget.cpp will fail to load, which can lead to crashes. To solve the issue check if the QML has loaded and set a flag 'isReady' to true. If the loading has failed load another QML which is for showing a red error text in the lines of `MapWidget.qml failed to load!`. If the map QML has failed, use a macro in all relevant MapWidget members to turn them into a NOP. This approach leaves the rest of the codebase intact - e.g. no checks in classes which connect to the MapWidget class. Fixes #596 Signed-off-by: Lubomir I. Ivanov <neolit123@gmail.com>
Diffstat (limited to 'mobile-widgets')
-rw-r--r--mobile-widgets/qml/MapWidgetError.qml13
1 files changed, 13 insertions, 0 deletions
diff --git a/mobile-widgets/qml/MapWidgetError.qml b/mobile-widgets/qml/MapWidgetError.qml
new file mode 100644
index 000000000..346e95f07
--- /dev/null
+++ b/mobile-widgets/qml/MapWidgetError.qml
@@ -0,0 +1,13 @@
+// SPDX-License-Identifier: GPL-2.0
+import QtQuick 2.0
+
+Item {
+ Text {
+ anchors.fill: parent
+ horizontalAlignment: Text.AlignHCenter
+ verticalAlignment: Text.AlignVCenter
+ color: "red"
+ text: qsTr("MapWidget.qml failed to load!
+The QML modules QtPositioning and QtLocation could be missing!")
+ }
+}