summaryrefslogtreecommitdiff
path: root/src/location/labs/qmapcircleobject.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/location/labs/qmapcircleobject.cpp')
-rw-r--r--src/location/labs/qmapcircleobject.cpp26
1 files changed, 24 insertions, 2 deletions
diff --git a/src/location/labs/qmapcircleobject.cpp b/src/location/labs/qmapcircleobject.cpp
index d7f1d58f..5f0db29d 100644
--- a/src/location/labs/qmapcircleobject.cpp
+++ b/src/location/labs/qmapcircleobject.cpp
@@ -37,6 +37,7 @@
#include "qmapcircleobject_p.h"
#include "qmapcircleobject_p_p.h"
#include <QExplicitlySharedDataPointer>
+#include <QtPositioning/qgeocircle.h>
QT_BEGIN_NAMESPACE
@@ -68,7 +69,30 @@ QGeoMapObject::Type QMapCircleObjectPrivate::type() const
return QGeoMapObject::CircleType;
}
+QGeoShape QMapCircleObjectPrivate::geoShape() const
+{
+ return QGeoCircle(center(), radius());
+}
+
+void QMapCircleObjectPrivate::setGeoShape(const QGeoShape &shape)
+{
+ if (shape == geoShape())
+ return;
+ const QGeoCircle circle(shape); // if shape isn't a circle, circle will be created as a default-constructed circle
+ const bool centerHasChanged = circle.center() != center();
+ const bool radiusHasChanged = circle.radius() != radius();
+
+ if (centerHasChanged)
+ setCenter(circle.center()); // to handle overrides
+ if (radiusHasChanged)
+ setRadius(circle.radius()); // to handle overrides
+
+ if (centerHasChanged)
+ emit static_cast<QMapCircleObject *>(q)->centerChanged();
+ if (radiusHasChanged)
+ emit static_cast<QMapCircleObject *>(q)->radiusChanged();
+}
//
// QMapCircleObjectPrivate default implementation
@@ -162,8 +186,6 @@ QGeoMapObjectPrivate *QMapCircleObjectPrivateDefault::clone()
return new QMapCircleObjectPrivateDefault(static_cast<QMapCircleObjectPrivate &>(*this));
}
-
-
QMapCircleObject::QMapCircleObject(QObject *parent)
: QGeoMapObject(QExplicitlySharedDataPointer<QGeoMapObjectPrivate>(new QMapCircleObjectPrivateDefault(this)), parent)