Qt
Internal/Contributor docs for the Qt SDK. <b>Note:</b> These are NOT official API docs; those are found <a href='https://doc.qt.io/'>here</a>.
Loading...
Searching...
No Matches
qplace.cpp
Go to the documentation of this file.
1// Copyright (C) 2022 The Qt Company Ltd.
2// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR LGPL-3.0-only OR GPL-2.0-only OR GPL-3.0-only
3
4#include "qplace.h"
5#include "qplace_p.h"
6
7#include <QtPositioning/QGeoLocation>
8
9#ifdef QPLACE_DEBUG
10#include <QDebug>
11#endif
12
13#include <QStringList>
14
16
17template<>
19{
20 return d->clone();
21}
22
24
25
96 : d_ptr(new QPlacePrivateDefault())
97{
98}
99
103QPlace::QPlace(const QSharedDataPointer<QPlacePrivate> &dd): d_ptr(dd)
104{
105}
106
107
111QPlace::QPlace(const QPlace &other) noexcept = default;
112
116QPlace::~QPlace() = default;
117
123{
124 if (this == &other)
125 return *this;
126
127 d_ptr = other.d_ptr;
128 return *this;
129}
130
131inline QPlacePrivate *QPlace::d_func()
132{
133 return static_cast<QPlacePrivate *>(d_ptr.data());
134}
135
136inline const QPlacePrivate *QPlace::d_func() const
137{
138 return static_cast<const QPlacePrivate *>(d_ptr.constData());
139}
140
155bool QPlace::isEqual(const QPlace &other) const noexcept
156{
157 return ( (d_ptr.constData() == other.d_ptr.constData())
158 || (*d_ptr) == (*other.d_ptr));
159}
160
164QList<QPlaceCategory> QPlace::categories() const
165{
166 return d_ptr->categories();
167}
168
173{
174 d_ptr->setCategories(QList<QPlaceCategory>());
175 d_ptr->setCategories(QList<QPlaceCategory>() << category);
176}
177
181void QPlace::setCategories(const QList<QPlaceCategory> &categories)
182{
184}
185
190{
191 return d_ptr->location();
192}
193
201
206{
207 return d_ptr->ratings();
208}
209
214{
215 d_ptr->setRatings(rating);
216}
217
222{
223 return d_ptr->supplier();
224}
225
230{
231 d_ptr->setSupplier(supplier);
232}
233
245
253
259{
260 for (auto iter = content.cbegin(), end = content.cend(); iter != end; ++iter)
261 d_ptr->m_contentCollections[type].insert(iter.key(), iter.value());
262}
263
276
281{
282 d_ptr->m_contentCounts.insert(type, totalCount);
283}
284
289{
290 return d_ptr->name();
291}
292
297{
298 d_ptr->setName(name);
299}
300
307{
308 return d_ptr->placeId();
309}
310
314void QPlace::setPlaceId(const QString &identifier)
315{
316 d_ptr->setPlaceId(identifier);
317}
318
324{
325 return d_ptr->attribution();
326}
327
331void QPlace::setAttribution(const QString &attribution)
332{
334}
335
340{
341 return d_ptr->icon();
342}
343
348{
349 d_ptr->setIcon(icon);
350}
351
357{
358 QList<QPlaceContactDetail> phoneNumbers = d_ptr->contacts().value(QPlaceContactDetail::Phone);
359 if (!phoneNumbers.isEmpty())
360 return phoneNumbers.at(0).value();
361 else
362 return QString();
363}
364
370{
371 QList<QPlaceContactDetail> faxNumbers = d_ptr->contacts().value(QPlaceContactDetail::Fax);
372 if (!faxNumbers.isEmpty())
373 return faxNumbers.at(0).value();
374 else
375 return QString();
376}
377
384{
385 QList<QPlaceContactDetail> emailAddresses = d_ptr->contacts().value(QPlaceContactDetail::Email);
386 if (!emailAddresses.isEmpty())
387 return emailAddresses.at(0).value();
388 else
389 return QString();
390}
391
398{
399 QList<QPlaceContactDetail> websites = d_ptr->contacts().value(QPlaceContactDetail::Website);
400 if (!websites.isEmpty())
401 return QUrl(websites.at(0).value());
402 else
403 return QString();
404}
405
411{
412 return d_ptr->detailsFetched();
413}
414
419{
420 d_ptr->setDetailsFetched(fetched);
421}
422
427{
428 return d_ptr->extendedAttributes().keys();
429}
430
437{
438 return d_ptr->extendedAttribute(attributeType);
439}
440
448void QPlace::setExtendedAttribute(const QString &attributeType,
450{
451 if (attribute == QPlaceAttribute())
452 d_ptr->extendedAttributes().remove(attributeType);
453 else
454 d_ptr->extendedAttributes().insert(attributeType, attribute);
455}
456
462void QPlace::removeExtendedAttribute(const QString &attributeType)
463{
464 setExtendedAttribute(attributeType, QPlaceAttribute());
465}
466
473{
474 return d_ptr->contacts().keys();
475}
476
482QList<QPlaceContactDetail> QPlace::contactDetails(const QString &contactType) const
483{
484 return d_ptr->contacts().value(contactType);
485}
486
495void QPlace::setContactDetails(const QString &contactType, QList<QPlaceContactDetail> details)
496{
497 if (details.isEmpty())
498 d_ptr->contacts().remove(contactType);
499 else
500 d_ptr->contacts().insert(contactType, details);
501}
502
509{
510 QList<QPlaceContactDetail> details = d_ptr->contacts().value(contactType);
511 details.append(detail);
512 d_ptr->contacts().insert(contactType, details);
513}
514
520void QPlace::removeContactDetails(const QString &contactType)
521{
522 d_ptr->contacts().remove(contactType);
523}
524
532
541{
542 return d_ptr->visibility();
543}
544
548bool QPlace::isEmpty() const
549{
550 return d_ptr->isEmpty();
551}
552
553/*******************************************************************************
554*******************************************************************************/
555
560
563 m_contentCollections(other.m_contentCollections),
564 m_contentCounts(other.m_contentCounts)
565{
566}
567
569
571{
572 return (categories() == other.categories()
573 && location() == other.location()
574 && ratings() == other.ratings()
575 && supplier() == other.supplier()
576 && m_contentCollections == other.m_contentCollections
577 && m_contentCounts == other.m_contentCounts
578 && name() == other.name()
579 && placeId() == other.placeId()
580 && attribution() == other.attribution()
581 && contacts() == other.contacts()
582 && extendedAttributes() == other.extendedAttributes()
583 && visibility() == other.visibility()
584 && icon() == other.icon()
585 );
586}
587
588
590{
591 return (categories().isEmpty()
592 && location().isEmpty()
593 && ratings().isEmpty()
594 && supplier().isEmpty()
595 && m_contentCollections.isEmpty()
597 && name().isEmpty()
598 && placeId().isEmpty()
599 && attribution().isEmpty()
600 && contacts().isEmpty()
603 && icon().isEmpty()
604 );
605}
606
608{
609 return extendedAttributes().value(attributeType);
610}
611
612
613
614//
615// Default implementation
616//
617
619 : QPlacePrivate(), m_visibility(QLocation::UnspecifiedVisibility), m_detailsFetched(false)
620{
621}
622
625 m_categories(other.m_categories),
626 m_location(other.m_location),
627 m_ratings(other.m_ratings),
628 m_supplier(other.m_supplier),
629 m_name(other.m_name),
630 m_placeId(other.m_placeId),
631 m_attribution(other.m_attribution),
632 m_extendedAttributes(other.m_extendedAttributes),
633 m_contacts(other.m_contacts),
634 m_visibility(other.m_visibility),
635 m_icon(other.m_icon),
636 m_detailsFetched(other.m_detailsFetched)
637{
638}
639
643
648
649QList<QPlaceCategory> QPlacePrivateDefault::categories() const
650{
651 return m_categories;
652}
653
654void QPlacePrivateDefault::setCategories(const QList<QPlaceCategory> &categories)
655{
657}
658
663
668
673
678
683
688
690{
691 return m_name;
692}
693
698
700{
701 return m_placeId;
702}
703
704void QPlacePrivateDefault::setPlaceId(const QString &placeIdentifier)
705{
706 m_placeId = placeIdentifier;
707}
708
713
718
723
728
730{
731 return m_icon;
732}
733
738
743
745{
746 m_detailsFetched = fetched;
747}
748
749QMap<QString, QPlaceAttribute> QPlacePrivateDefault::extendedAttributes() const
750{
752}
753
754QMap<QString, QPlaceAttribute> &QPlacePrivateDefault::extendedAttributes()
755{
757}
758
759QMap<QString, QList<QPlaceContactDetail> > QPlacePrivateDefault::contacts() const
760{
761 return m_contacts;
762}
763
764QMap<QString, QList<QPlaceContactDetail> > &QPlacePrivateDefault::contacts()
765{
766 return m_contacts;
767}
768
769
770
\inmodule QtPositioning
iterator insert(const Key &key, const T &value)
Definition qmap.h:688
T value(const Key &key, const T &defaultValue=T()) const
Definition qmap.h:357
const_iterator cend() const
Definition qmap.h:605
const_iterator cbegin() const
Definition qmap.h:601
bool isEmpty() const
Definition qmap.h:269
\inmodule QtLocation
\inmodule QtLocation
The QPlaceContactDetail class represents a contact detail such as a phone number or website url.
static const QString Fax
\variable QPlaceContactDetail::Fax The constant used to specify fax contact details.
static const QString Website
\variable QPlaceContactDetail::Website The constant used to specify website contact details.
static const QString Phone
\qmlvaluetype contactDetail \inqmlmodule QtLocation
static const QString Email
\variable QPlaceContactDetail::Email The constant to specify email contact details.
Type
Defines the type of content.
\inmodule QtLocation
Definition qplaceicon.h:23
QPlaceSupplier m_supplier
Definition qplace_p.h:126
QGeoLocation m_location
Definition qplace_p.h:124
QLocation::Visibility visibility() const override
Definition qplace.cpp:719
void setName(const QString &name) override
Definition qplace.cpp:694
QMap< QString, QPlaceAttribute > m_extendedAttributes
Definition qplace_p.h:131
void setDetailsFetched(bool fetched) override
Definition qplace.cpp:744
void setSupplier(const QPlaceSupplier &supplier) override
Definition qplace.cpp:684
QPlacePrivate * clone() override
Definition qplace.cpp:644
void setPlaceId(const QString &placeIdentifier) override
Definition qplace.cpp:704
void setAttribution(const QString &attribution) override
Definition qplace.cpp:714
QPlaceRatings ratings() const override
Definition qplace.cpp:669
QPlaceSupplier supplier() const override
Definition qplace.cpp:679
void setLocation(const QGeoLocation &location) override
Definition qplace.cpp:664
QString name() const override
Definition qplace.cpp:689
QList< QPlaceCategory > categories() const override
Definition qplace.cpp:649
void setCategories(const QList< QPlaceCategory > &categories) override
Definition qplace.cpp:654
QString placeId() const override
Definition qplace.cpp:699
QPlaceIcon m_icon
Definition qplace_p.h:135
void setIcon(const QPlaceIcon &icon) override
Definition qplace.cpp:734
QPlaceRatings m_ratings
Definition qplace_p.h:125
void setVisibility(QLocation::Visibility visibility) override
Definition qplace.cpp:724
QString attribution() const override
Definition qplace.cpp:709
virtual ~QPlacePrivateDefault()
Definition qplace.cpp:640
void setRatings(const QPlaceRatings &ratings) override
Definition qplace.cpp:674
bool detailsFetched() const override
Definition qplace.cpp:739
QList< QPlaceCategory > m_categories
Definition qplace_p.h:123
QLocation::Visibility m_visibility
Definition qplace_p.h:134
QMap< QString, QList< QPlaceContactDetail > > contacts() const override
Definition qplace.cpp:759
QGeoLocation location() const override
Definition qplace.cpp:659
QPlaceIcon icon() const override
Definition qplace.cpp:729
QMap< QString, QPlaceAttribute > extendedAttributes() const override
Definition qplace.cpp:749
QMap< QString, QList< QPlaceContactDetail > > m_contacts
Definition qplace_p.h:132
virtual QString attribution() const =0
virtual QPlaceRatings ratings() const =0
virtual QPlaceAttribute extendedAttribute(const QString &attributeType) const
Definition qplace.cpp:607
virtual void setCategories(const QList< QPlaceCategory > &categories)=0
virtual void setSupplier(const QPlaceSupplier &supplier)=0
virtual QGeoLocation location() const =0
bool operator==(const QPlacePrivate &other) const
Definition qplace.cpp:570
virtual void setLocation(const QGeoLocation &location)=0
virtual QMap< QString, QPlaceAttribute > extendedAttributes() const =0
virtual QString placeId() const =0
virtual ~QPlacePrivate()
Definition qplace.cpp:568
virtual QList< QPlaceCategory > categories() const =0
virtual void setName(const QString &name)=0
virtual QMap< QString, QList< QPlaceContactDetail > > contacts() const =0
QMap< QPlaceContent::Type, int > m_contentCounts
Definition qplace_p.h:82
virtual QPlaceIcon icon() const =0
virtual void setIcon(const QPlaceIcon &icon)=0
virtual bool isEmpty() const
Definition qplace.cpp:589
virtual QPlaceSupplier supplier() const =0
virtual void setAttribution(const QString &attribution)=0
virtual QString name() const =0
virtual void setRatings(const QPlaceRatings &ratings)=0
virtual void setPlaceId(const QString &placeIdentifier)=0
virtual QLocation::Visibility visibility() const =0
virtual bool detailsFetched() const =0
virtual void setDetailsFetched(bool fetched)=0
virtual void setVisibility(QLocation::Visibility visibility)=0
QMap< QPlaceContent::Type, QPlaceContent::Collection > m_contentCollections
Definition qplace_p.h:81
\inmodule QtLocation
\inmodule QtLocation
\inmodule QtLocation
Definition qplace.h:25
void removeExtendedAttribute(const QString &attributeType)
Remove the attribute of attributeType from the place.
Definition qplace.cpp:462
void setVisibility(QLocation::Visibility visibility)
Sets the visibility of the place to visibility.
Definition qplace.cpp:528
QString primaryPhone() const
Returns the primary phone number for this place.
Definition qplace.cpp:356
QPlace & operator=(const QPlace &other) noexcept
Assigns other to this place and returns a reference to this place.
Definition qplace.cpp:122
void setDetailsFetched(bool fetched)
Sets whether the details of this place have been fetched or not.
Definition qplace.cpp:418
void setIcon(const QPlaceIcon &icon)
Sets the icon of the place.
Definition qplace.cpp:347
QList< QPlaceContactDetail > contactDetails(const QString &contactType) const
Returns a list of contact details of the specified contactType.
Definition qplace.cpp:482
void setContactDetails(const QString &contactType, QList< QPlaceContactDetail > details)
Sets the contact details of a specified contactType.
Definition qplace.cpp:495
QLocation::Visibility visibility() const
Returns the visibility of the place.
Definition qplace.cpp:540
void setCategory(const QPlaceCategory &category)
Sets a single category that this place belongs to.
Definition qplace.cpp:172
void setTotalContentCount(QPlaceContent::Type type, int total)
Sets the totalCount of content objects of the given type.
Definition qplace.cpp:280
void setPlaceId(const QString &identifier)
Sets the identifier of the place.
Definition qplace.cpp:314
void setAttribution(const QString &attribution)
Sets the attribution string of the place.
Definition qplace.cpp:331
void setRatings(const QPlaceRatings &ratings)
Sets the aggregated rating of the place.
Definition qplace.cpp:213
QStringList extendedAttributeTypes() const
Returns the types of extended attributes that this place has.
Definition qplace.cpp:426
void appendContactDetail(const QString &contactType, const QPlaceContactDetail &detail)
Appends a contact detail of a specified contactType.
Definition qplace.cpp:508
void insertContent(QPlaceContent::Type type, const QPlaceContent::Collection &content)
Adds a collection of content of the given type to the place.
Definition qplace.cpp:258
bool isEmpty() const
Returns a boolean indicating whether the all the fields of the place are empty or not.
Definition qplace.cpp:548
QPlaceIcon icon() const
Returns the icon of the place.
Definition qplace.cpp:339
QUrl primaryWebsite() const
Returns the primary website of the place.
Definition qplace.cpp:397
QString primaryEmail() const
Returns the primary email address for this place.
Definition qplace.cpp:383
void setContent(QPlaceContent::Type type, const QPlaceContent::Collection &content)
Sets a collection of content for the given type.
Definition qplace.cpp:249
QList< QPlaceCategory > categories() const
Returns categories that this place belongs to.
Definition qplace.cpp:164
int totalContentCount(QPlaceContent::Type type) const
Returns the total count of content objects of the given type.
Definition qplace.cpp:272
QString attribution() const
Returns a rich text attribution string of the place.
Definition qplace.cpp:323
void setLocation(const QGeoLocation &location)
Sets the location of the place.
Definition qplace.cpp:197
QPlace()
Constructs an empty place object.
Definition qplace.cpp:95
QGeoLocation location() const
Returns the location of the place.
Definition qplace.cpp:189
QStringList contactTypes() const
Returns the type of contact details this place has.
Definition qplace.cpp:472
void setCategories(const QList< QPlaceCategory > &categories)
Sets the categories that this place belongs to.
Definition qplace.cpp:181
QPlaceAttribute extendedAttribute(const QString &attributeType) const
Returns the exteded attribute corresponding to the specified attributeType.
Definition qplace.cpp:436
QPlaceSupplier supplier() const
Returns the supplier of this place.
Definition qplace.cpp:221
void setExtendedAttribute(const QString &attributeType, const QPlaceAttribute &attribute)
Assigns an attribute of the given attributeType to a place.
Definition qplace.cpp:448
void setSupplier(const QPlaceSupplier &supplier)
Sets the supplier of this place to supplier.
Definition qplace.cpp:229
QString primaryFax() const
Returns the primary fax number for this place.
Definition qplace.cpp:369
void setName(const QString &name)
Sets the name of the place.
Definition qplace.cpp:296
QPlaceRatings ratings() const
Returns an aggregated rating of the place.
Definition qplace.cpp:205
void removeContactDetails(const QString &contactType)
Removes all the contact details of a given contactType.
Definition qplace.cpp:520
QString placeId() const
Returns the identifier of the place.
Definition qplace.cpp:306
~QPlace()
Destroys this place.
QPlaceContent::Collection content(QPlaceContent::Type type) const
Returns a collection of content associated with a place.
Definition qplace.cpp:241
bool detailsFetched() const
Returns true if the details of this place have been fetched, otherwise returns false.
Definition qplace.cpp:410
QString name() const
Returns the name of the place.
Definition qplace.cpp:288
const T * constData() const noexcept
Returns a const pointer to the shared data object.
Definition qshareddata.h:51
T * data()
Returns a pointer to the shared data object.
Definition qshareddata.h:47
\inmodule QtCore
Definition qshareddata.h:19
\inmodule QtCore
\macro QT_RESTRICTED_CAST_FROM_ASCII
Definition qstring.h:129
\inmodule QtCore
Definition qurl.h:94
const QLoggingCategory & category()
[1]
\inmodule QtLocation \keyword QLocation Namespace
Definition qlocation.cpp:8
@ UnspecifiedVisibility
Definition qlocation.h:18
Combined button and popup list for selecting options.
DBusConnection const char DBusError DBusBusType DBusError return DBusConnection DBusHandleMessageFunction void DBusFreeFunction return DBusConnection return DBusConnection return const char DBusError return DBusConnection DBusMessage dbus_uint32_t return DBusConnection dbus_bool_t DBusConnection DBusAddWatchFunction DBusRemoveWatchFunction DBusWatchToggledFunction void DBusFreeFunction return DBusConnection DBusDispatchStatusFunction void DBusFreeFunction DBusTimeout return DBusTimeout return DBusWatch return DBusWatch unsigned int return DBusError const DBusError return const DBusMessage return DBusMessage return DBusMessage return DBusMessage return DBusMessage return DBusMessage return DBusMessageIter * iter
EGLOutputLayerEXT EGLint attribute
GLint location
GLuint GLuint end
GLenum type
GLuint name
GLsizei GLenum * categories
#define QT_DEFINE_QSDP_SPECIALIZATION_DTOR(Class)
QSharedPointer< T > other(t)
[5]