// Copyright (C) 2022 The Qt Company Ltd. // SPDX-License-Identifier: LicenseRef-Qt-Commercial OR LGPL-3.0-only OR GPL-2.0-only OR GPL-3.0-only #include "qplacematchrequest.h" #include #include #include #include QT_BEGIN_NAMESPACE class QPlaceMatchRequestPrivate : public QSharedData { public: bool operator==(const QPlaceMatchRequestPrivate &other) const; void clear(); QList places; QVariantMap parameters; }; QT_DEFINE_QSDP_SPECIALIZATION_DTOR(QPlaceMatchRequestPrivate) bool QPlaceMatchRequestPrivate::operator==(const QPlaceMatchRequestPrivate &other) const { return (places == other.places && parameters == other.parameters); } void QPlaceMatchRequestPrivate::clear() { places.clear(); parameters.clear(); } /*! \class QPlaceMatchRequest \inmodule QtLocation \ingroup QtLocation-places \ingroup QtLocation-places-requests \since 5.6 \brief The QPlaceMatchRequest class is used to find places from one manager that match those from another. It represents a set of request parameters. Places from another manager that may have corresponding/matching places in the current manager are assigned using setPlaces() or setResults(). A set of further parameters are specified which determines the criteria for matching. The typical key for matching is the QPlaceMatchRequest::AlternativeId, the value is an alternative identifier attribute type of the format x_id_ for example x_id_here. The provider name is name supplied to the QGeoServiceProvider instance. See \l {Matching places between managers} for an example on how to use a match request. \sa QPlaceMatchReply, QPlaceManager */ /*! \variable QPlaceMatchRequest::AlternativeId The key to specify that matching is to be accomplished via an alternative place identifier. */ const QString QPlaceMatchRequest::AlternativeId(QLatin1String("alternativeId")); /*! Default constructor. Constructs a new request object. */ QPlaceMatchRequest::QPlaceMatchRequest() : d_ptr(new QPlaceMatchRequestPrivate()) { } /*! Constructs a copy of \a other. */ QPlaceMatchRequest::QPlaceMatchRequest(const QPlaceMatchRequest &other) noexcept = default; /*! Destroys the request object. */ QPlaceMatchRequest::~QPlaceMatchRequest() = default; /*! Assigns \a other to this search request and returns a reference to this match request. */ QPlaceMatchRequest &QPlaceMatchRequest::operator=(const QPlaceMatchRequest & other) noexcept { if (this == &other) return *this; d_ptr = other.d_ptr; return *this; } /*! \fn bool QPlaceMatchRequest::operator==(const QPlaceMatchRequest &lhs, const QPlaceMatchRequest &rhs) noexcept Returns true if \a lhs is equal to \a rhs, otherwise returns false. */ /*! \fn bool QPlaceMatchRequest::operator!=(const QPlaceMatchRequest &lhs, const QPlaceMatchRequest &rhs) noexcept Returns true if \a lhs is not equal to \a rhs, otherwise returns false. */ bool QPlaceMatchRequest::isEqual(const QPlaceMatchRequest &other) const noexcept { Q_D(const QPlaceMatchRequest); return *d == *other.d_func(); } /*! Returns a list of places which are to be matched. */ QList QPlaceMatchRequest::places() const { Q_D(const QPlaceMatchRequest); return d->places; } /*! Sets a list of \a places which are to be matched. \sa setResults() */ void QPlaceMatchRequest::setPlaces(const QList &places) { Q_D(QPlaceMatchRequest); d->places = places; } /*! Convenience function which uses a set of search \a results to set the places which should be matched. \sa setPlaces() */ void QPlaceMatchRequest::setResults(const QList &results) { Q_D(QPlaceMatchRequest); QList places; for (const QPlaceSearchResult &result : results) { if (result.type() == QPlaceSearchResult::PlaceResult) { QPlaceResult placeResult = result; places.append(placeResult.place()); } } d->places = places; } /*! Returns the parameters for matching places. */ QVariantMap QPlaceMatchRequest::parameters() const { Q_D(const QPlaceMatchRequest); return d->parameters; } /*! Sets the \a parameters for matching places. */ void QPlaceMatchRequest::setParameters(const QVariantMap ¶meters) { Q_D(QPlaceMatchRequest); d->parameters = parameters; } /*! Clears the match request. */ void QPlaceMatchRequest::clear() { Q_D(QPlaceMatchRequest); d->clear(); } inline QPlaceMatchRequestPrivate *QPlaceMatchRequest::d_func() { return static_cast(d_ptr.data()); } inline const QPlaceMatchRequestPrivate *QPlaceMatchRequest::d_func() const { return static_cast(d_ptr.constData()); } QT_END_NAMESPACE