diff options
author | Paolo Angelelli <paolo.angelelli@qt.io> | 2017-08-29 16:48:51 +0200 |
---|---|---|
committer | Paolo Angelelli <paolo.angelelli@qt.io> | 2018-01-27 09:56:21 +0000 |
commit | a6ff21e1e5ae264b7de264b47e08d334739fa4c6 (patch) | |
tree | 0da24ba1c0a9b5b0190d1f8a8c844ac3a9e4ea64 /src/location/places/qplace_p.h | |
parent | d8a7da2c00d9b292e56f28cf2df4f191e6edce2c (diff) | |
download | qtlocation-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.h | 124 |
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 |