summaryrefslogtreecommitdiff
path: root/src/location/places/qplace_p.h
diff options
context:
space:
mode:
authorPaolo Angelelli <paolo.angelelli@qt.io>2017-08-29 16:48:51 +0200
committerPaolo Angelelli <paolo.angelelli@qt.io>2018-01-27 09:56:21 +0000
commita6ff21e1e5ae264b7de264b47e08d334739fa4c6 (patch)
tree0da24ba1c0a9b5b0190d1f8a8c844ac3a9e4ea64 /src/location/places/qplace_p.h
parentd8a7da2c00d9b292e56f28cf2df4f191e6edce2c (diff)
downloadqtlocation-a6ff21e1e5ae264b7de264b47e08d334739fa4c6.tar.gz
Make QPlace extensible
This change makes it possible to subclass QPlace with custom private implementations. Change-Id: I363c0e8b7db41d9a8400ce6dbddf5405c619eeef Reviewed-by: Alex Blasche <alexander.blasche@qt.io>
Diffstat (limited to 'src/location/places/qplace_p.h')
-rw-r--r--src/location/places/qplace_p.h124
1 files changed, 98 insertions, 26 deletions
diff --git a/src/location/places/qplace_p.h b/src/location/places/qplace_p.h
index cb1b13c0..5b6f167e 100644
--- a/src/location/places/qplace_p.h
+++ b/src/location/places/qplace_p.h
@@ -51,45 +51,117 @@
#include <QSharedData>
#include <QUrl>
-#include "qplace.h"
-#include "qgeoaddress.h"
-#include "qgeorectangle.h"
-#include "qgeocoordinate.h"
-#include "qplacesupplier.h"
+#include <QtLocation/private/qlocationglobal_p.h>
+#include <QtLocation/qplace.h>
+#include <QtPositioning/qgeoaddress.h>
+#include <QtPositioning/qgeorectangle.h>
+#include <QtPositioning/qgeocoordinate.h>
+#include <QtLocation/qplacesupplier.h>
#include <QtLocation/QPlaceIcon>
QT_BEGIN_NAMESPACE
-class QPlacePrivate : public QSharedData
+class Q_LOCATION_PRIVATE_EXPORT QPlacePrivate : public QSharedData
{
public:
QPlacePrivate();
QPlacePrivate(const QPlacePrivate &other);
- ~QPlacePrivate();
-
- QPlacePrivate &operator= (const QPlacePrivate &other);
+ virtual ~QPlacePrivate();
+ virtual QPlacePrivate *clone() = 0;
bool operator==(const QPlacePrivate &other) const;
- bool isEmpty() const;
-
- QList<QPlaceCategory> categories;
- QGeoLocation location;
- QPlaceRatings ratings;
- QPlaceSupplier supplier;
- QString name;
- QString placeId;
- QString attribution;
-
- QMap<QPlaceContent::Type, QPlaceContent::Collection> contentCollections;
- QMap<QPlaceContent::Type, int> contentCounts;
+ virtual bool isEmpty() const;
+ virtual QList<QPlaceCategory> categories() const = 0;
+ virtual void setCategories(const QList<QPlaceCategory> &categories) = 0;
+ virtual QGeoLocation location() const = 0;
+ virtual void setLocation(const QGeoLocation &location) = 0;
+ virtual QPlaceRatings ratings() const = 0;
+ virtual void setRatings(const QPlaceRatings &ratings) = 0;
+ virtual QPlaceSupplier supplier() const = 0;
+ virtual void setSupplier(const QPlaceSupplier &supplier) = 0;
+ virtual QString name() const = 0;
+ virtual void setName(const QString &name) = 0;
+ virtual QString placeId() const = 0;
+ virtual void setPlaceId(const QString &placeIdentifier) = 0;
+ virtual QString attribution() const = 0;
+ virtual void setAttribution(const QString &attribution) = 0;
+ virtual QLocation::Visibility visibility() const = 0;
+ virtual void setVisibility(QLocation::Visibility visibility) = 0;
+ virtual QPlaceIcon icon() const = 0;
+ virtual void setIcon(const QPlaceIcon &icon) = 0;
+ virtual bool detailsFetched() const = 0;
+ virtual void setDetailsFetched(bool fetched) = 0;
+
+ virtual QMap<QString, QPlaceAttribute> extendedAttributes() const = 0;
+ virtual QMap<QString, QPlaceAttribute> &extendedAttributes() = 0;
+ virtual QMap<QString, QList<QPlaceContactDetail> > contacts() const = 0;
+ virtual QMap<QString, QList<QPlaceContactDetail> > &contacts() = 0;
+ virtual QPlaceAttribute extendedAttribute(const QString &attributeType) const;
+
+
+ // The place content, that has to be manually retrieved from the place manager and manually added to the place.
+ // Currently, place content types can be:
+ // ImageType,
+ // ReviewType,
+ // EditorialType,
+ // CustomType = 0x0100
+ QMap<QPlaceContent::Type, QPlaceContent::Collection> m_contentCollections;
+ QMap<QPlaceContent::Type, int> m_contentCounts;
+};
- QMap<QString, QPlaceAttribute> extendedAttributes;
- QMap<QString, QList<QPlaceContactDetail> > contacts;
- QLocation::Visibility visibility;
- QPlaceIcon icon;
- bool detailsFetched;
+class Q_LOCATION_PRIVATE_EXPORT QPlacePrivateDefault : public QPlacePrivate
+{
+public:
+ QPlacePrivateDefault();
+ QPlacePrivateDefault(const QPlacePrivateDefault &other);
+ virtual ~QPlacePrivateDefault();
+ virtual QPlacePrivate *clone() override;
+
+ virtual QList<QPlaceCategory> categories() const override;
+ virtual void setCategories(const QList<QPlaceCategory> &categories) override;
+ virtual QGeoLocation location() const override;
+ virtual void setLocation(const QGeoLocation &location) override;
+ virtual QPlaceRatings ratings() const override;
+ virtual void setRatings(const QPlaceRatings &ratings) override;
+ virtual QPlaceSupplier supplier() const override;
+ virtual void setSupplier(const QPlaceSupplier &supplier) override;
+ virtual QString name() const override;
+ virtual void setName(const QString &name) override;
+ virtual QString placeId() const override;
+ virtual void setPlaceId(const QString &placeIdentifier) override;
+ virtual QString attribution() const override;
+ virtual void setAttribution(const QString &attribution) override;
+ virtual QLocation::Visibility visibility() const override;
+ virtual void setVisibility(QLocation::Visibility visibility) override;
+ virtual QPlaceIcon icon() const override;
+ virtual void setIcon(const QPlaceIcon &icon) override;
+ virtual bool detailsFetched() const override;
+ virtual void setDetailsFetched(bool fetched) override;
+
+ virtual QMap<QString, QPlaceAttribute> extendedAttributes() const override;
+ virtual QMap<QString, QPlaceAttribute> &extendedAttributes() override;
+ virtual QMap<QString, QList<QPlaceContactDetail> > contacts() const override;
+ virtual QMap<QString, QList<QPlaceContactDetail> > &contacts() override;
+
+
+ // data members
+
+ QList<QPlaceCategory> m_categories;
+ QGeoLocation m_location;
+ QPlaceRatings m_ratings;
+ QPlaceSupplier m_supplier;
+ QString m_name;
+ QString m_placeId;
+ QString m_attribution;
+
+ QMap<QString, QPlaceAttribute> m_extendedAttributes;
+ QMap<QString, QList<QPlaceContactDetail> > m_contacts;
+
+ QLocation::Visibility m_visibility;
+ QPlaceIcon m_icon;
+ bool m_detailsFetched;
};
QT_END_NAMESPACE