1 | /**************************************************************************** |
2 | ** |
3 | ** Copyright (C) 2015 The Qt Company Ltd. |
4 | ** Contact: http://www.qt.io/licensing/ |
5 | ** |
6 | ** This file is part of the QtLocation module of the Qt Toolkit. |
7 | ** |
8 | ** $QT_BEGIN_LICENSE:LGPL3$ |
9 | ** Commercial License Usage |
10 | ** Licensees holding valid commercial Qt licenses may use this file in |
11 | ** accordance with the commercial license agreement provided with the |
12 | ** Software or, alternatively, in accordance with the terms contained in |
13 | ** a written agreement between you and The Qt Company. For licensing terms |
14 | ** and conditions see http://www.qt.io/terms-conditions. For further |
15 | ** information use the contact form at http://www.qt.io/contact-us. |
16 | ** |
17 | ** GNU Lesser General Public License Usage |
18 | ** Alternatively, this file may be used under the terms of the GNU Lesser |
19 | ** General Public License version 3 as published by the Free Software |
20 | ** Foundation and appearing in the file LICENSE.LGPLv3 included in the |
21 | ** packaging of this file. Please review the following information to |
22 | ** ensure the GNU Lesser General Public License version 3 requirements |
23 | ** will be met: https://www.gnu.org/licenses/lgpl.html. |
24 | ** |
25 | ** GNU General Public License Usage |
26 | ** Alternatively, this file may be used under the terms of the GNU |
27 | ** General Public License version 2.0 or later as published by the Free |
28 | ** Software Foundation and appearing in the file LICENSE.GPL included in |
29 | ** the packaging of this file. Please review the following information to |
30 | ** ensure the GNU General Public License version 2.0 requirements will be |
31 | ** met: http://www.gnu.org/licenses/gpl-2.0.html. |
32 | ** |
33 | ** $QT_END_LICENSE$ |
34 | ** |
35 | ****************************************************************************/ |
36 | |
37 | #include "qplace.h" |
38 | #include "qplace_p.h" |
39 | |
40 | #ifdef QPLACE_DEBUG |
41 | #include <QDebug> |
42 | #endif |
43 | |
44 | #include <QStringList> |
45 | |
46 | QT_BEGIN_NAMESPACE |
47 | |
48 | template<> |
49 | QPlacePrivate *QSharedDataPointer<QPlacePrivate>::clone() |
50 | { |
51 | return d->clone(); |
52 | } |
53 | |
54 | /*! |
55 | \class QPlace |
56 | \inmodule QtLocation |
57 | \ingroup QtLocation-places |
58 | \ingroup QtLocation-places-data |
59 | \since 5.6 |
60 | |
61 | \brief The QPlace class represents a set of data about a place. |
62 | |
63 | \input place-definition.qdocinc |
64 | |
65 | \section2 Contact Information |
66 | The contact information of a place is based around a common set of |
67 | \l {Contact Types}{contact types}. To retrieve all the phone numbers |
68 | of a place, one would do: |
69 | |
70 | \snippet places/requesthandler.h Phone numbers |
71 | |
72 | The contact types are string values by design to allow for providers |
73 | to introduce new contact types. |
74 | |
75 | For convenience there are a set of functions which return the value |
76 | of the first contact detail of each type. |
77 | \list |
78 | \li QPlace::primaryPhone() |
79 | \li QPlace::primaryEmail() |
80 | \li QPlace::primaryWebsite() |
81 | \li QPlace::primaryFax() |
82 | \endlist |
83 | |
84 | \section2 Extended Attributes |
85 | Places may have additional attributes which are not covered in the formal API. |
86 | Similar to contacts attributes are based around a common set of |
87 | \l {Attribute Types}{attribute types}. To retrieve an extended attribute one |
88 | would do: |
89 | \snippet places/requesthandler.h Opening hours |
90 | |
91 | The attribute types are string values by design to allow providers |
92 | to introduce new attribute types. |
93 | |
94 | \section2 Content |
95 | The QPlace object is only meant to be a convenient container to hold |
96 | rich content such as images, reviews and so on. Retrieval of content |
97 | should happen via QPlaceManager::getPlaceContent(). |
98 | |
99 | The content is stored as a QPlaceContent::Collection which contains |
100 | both the index of the content, as well as the content itself. This enables |
101 | developers to check whether a particular item has already been retrieved |
102 | and if not, then request that content. |
103 | |
104 | \section3 Attribution |
105 | Places have a field for a rich text attribution string. Some providers |
106 | may require that the attribution be shown when a place is displayed |
107 | to a user. |
108 | |
109 | \section2 Categories |
110 | Different categories may be assigned to a place to indicate that the place |
111 | is associated with those categories. When saving a place, the only meaningful |
112 | data is the category id, the rest of the category data is effectively ignored. |
113 | The category must already exist before saving the place (it is not possible |
114 | to create a new category, assign it to the place, save the place and expect |
115 | the category to be created). |
116 | |
117 | \section2 Saving Caveats |
118 | \input place-caveats.qdocinc |
119 | */ |
120 | |
121 | /*! |
122 | Constructs an empty place object. |
123 | */ |
124 | QPlace::QPlace() |
125 | : d_ptr(new QPlacePrivateDefault()) |
126 | { |
127 | } |
128 | |
129 | /*! |
130 | Constructs an place object using \a dd as private implementation. |
131 | */ |
132 | QPlace::QPlace(const QSharedDataPointer<QPlacePrivate> &dd): d_ptr(dd) |
133 | { |
134 | } |
135 | |
136 | /*! |
137 | Returns the d-pointer. |
138 | */ |
139 | QSharedDataPointer<QPlacePrivate> &QPlace::d() |
140 | { |
141 | return d_ptr; |
142 | } |
143 | |
144 | /*! |
145 | Constructs a copy of \a other. |
146 | */ |
147 | QPlace::QPlace(const QPlace &other) |
148 | : d_ptr(other.d_ptr) |
149 | { |
150 | } |
151 | |
152 | /*! |
153 | Destroys this place. |
154 | */ |
155 | QPlace::~QPlace() |
156 | { |
157 | } |
158 | |
159 | /*! |
160 | Assigns \a other to this place and returns a reference |
161 | to this place. |
162 | */ |
163 | QPlace &QPlace::operator= (const QPlace & other) |
164 | { |
165 | if (this == &other) |
166 | return *this; |
167 | |
168 | d_ptr = other.d_ptr; |
169 | return *this; |
170 | } |
171 | |
172 | inline QPlacePrivate *QPlace::d_func() |
173 | { |
174 | return static_cast<QPlacePrivate *>(d_ptr.data()); |
175 | } |
176 | |
177 | inline const QPlacePrivate *QPlace::d_func() const |
178 | { |
179 | return static_cast<const QPlacePrivate *>(d_ptr.constData()); |
180 | } |
181 | |
182 | /*! |
183 | Returns true if \a other is equal to this place, |
184 | otherwise returns false. |
185 | */ |
186 | bool QPlace::operator== (const QPlace &other) const |
187 | { |
188 | return ( (d_ptr.constData() == other.d_ptr.constData()) |
189 | || (*d_ptr) == (*other.d_ptr)); |
190 | } |
191 | |
192 | /*! |
193 | Returns true if \a other is not equal to this place, |
194 | otherwise returns false. |
195 | */ |
196 | bool QPlace::operator!= (const QPlace &other) const |
197 | { |
198 | return !(operator==(other)); |
199 | } |
200 | |
201 | /*! |
202 | Returns categories that this place belongs to. |
203 | */ |
204 | QList<QPlaceCategory> QPlace::categories() const |
205 | { |
206 | return d_ptr->categories(); |
207 | } |
208 | |
209 | /*! |
210 | Sets a single \a category that this place belongs to. |
211 | */ |
212 | void QPlace::setCategory(const QPlaceCategory &category) |
213 | { |
214 | d_ptr->setCategories(QList<QPlaceCategory>()); |
215 | d_ptr->setCategories(QList<QPlaceCategory>() << category); |
216 | } |
217 | |
218 | /*! |
219 | Sets the \a categories that this place belongs to. |
220 | */ |
221 | void QPlace::setCategories(const QList<QPlaceCategory> &categories) |
222 | { |
223 | d_ptr->setCategories(categories); |
224 | } |
225 | |
226 | /*! |
227 | Returns the location of the place. |
228 | */ |
229 | QGeoLocation QPlace::location() const |
230 | { |
231 | return d_ptr->location(); |
232 | } |
233 | |
234 | /*! |
235 | Sets the \a location of the place. |
236 | */ |
237 | void QPlace::setLocation(const QGeoLocation &location) |
238 | { |
239 | d_ptr->setLocation(location); |
240 | } |
241 | |
242 | /*! |
243 | Returns an aggregated rating of the place. |
244 | */ |
245 | QPlaceRatings QPlace::ratings() const |
246 | { |
247 | return d_ptr->ratings(); |
248 | } |
249 | |
250 | /*! |
251 | Sets the aggregated \a rating of the place. |
252 | */ |
253 | void QPlace::setRatings(const QPlaceRatings &rating) |
254 | { |
255 | d_ptr->setRatings(rating); |
256 | } |
257 | |
258 | /*! |
259 | Returns the supplier of this place. |
260 | */ |
261 | QPlaceSupplier QPlace::supplier() const |
262 | { |
263 | return d_ptr->supplier(); |
264 | } |
265 | |
266 | /*! |
267 | Sets the supplier of this place to \a supplier. |
268 | */ |
269 | void QPlace::setSupplier(const QPlaceSupplier &supplier) |
270 | { |
271 | d_ptr->setSupplier(supplier); |
272 | } |
273 | |
274 | /*! |
275 | Returns a collection of content associated with a place. |
276 | This collection is a map with the key being the index of the content object |
277 | and value being the content object itself. |
278 | |
279 | The \a type specifies which kind of content is to be retrieved. |
280 | */ |
281 | QPlaceContent::Collection QPlace::content(QPlaceContent::Type type) const |
282 | { |
283 | return d_ptr->m_contentCollections.value(akey: type); |
284 | } |
285 | |
286 | /*! |
287 | Sets a collection of \a content for the given \a type. |
288 | */ |
289 | void QPlace::setContent(QPlaceContent::Type type, const QPlaceContent::Collection &content) |
290 | { |
291 | d_ptr->m_contentCollections.insert(akey: type, avalue: content); |
292 | } |
293 | |
294 | /*! |
295 | Adds a collection of \a content of the given \a type to the place. Any index in \a content |
296 | that already exists is overwritten. |
297 | */ |
298 | void QPlace::insertContent(QPlaceContent::Type type, const QPlaceContent::Collection &content) |
299 | { |
300 | for (auto iter = content.cbegin(), end = content.cend(); iter != end; ++iter) |
301 | d_ptr->m_contentCollections[type].insert(akey: iter.key(), avalue: iter.value()); |
302 | } |
303 | |
304 | /*! |
305 | Returns the total count of content objects of the given \a type. |
306 | This total count indicates how many the manager/provider should have available. |
307 | (As opposed to how many objects this place instance is currently assigned). |
308 | |
309 | A negative count indicates that the total number of items is unknown. |
310 | By default the total content count is set to 0. |
311 | */ |
312 | int QPlace::totalContentCount(QPlaceContent::Type type) const |
313 | { |
314 | return d_ptr->m_contentCounts.value(akey: type, adefaultValue: 0); |
315 | } |
316 | |
317 | /*! |
318 | Sets the \a totalCount of content objects of the given \a type. |
319 | */ |
320 | void QPlace::setTotalContentCount(QPlaceContent::Type type, int totalCount) |
321 | { |
322 | d_ptr->m_contentCounts.insert(akey: type, avalue: totalCount); |
323 | } |
324 | |
325 | /*! |
326 | Returns the name of the place. |
327 | */ |
328 | QString QPlace::name() const |
329 | { |
330 | return d_ptr->name(); |
331 | } |
332 | |
333 | /*! |
334 | Sets the \a name of the place. |
335 | */ |
336 | void QPlace::setName(const QString &name) |
337 | { |
338 | d_ptr->setName(name); |
339 | } |
340 | |
341 | /*! |
342 | Returns the identifier of the place. The place identifier is only meaningful to the QPlaceManager that |
343 | generated it and is not transferable between managers. The place identifier is not guaranteed |
344 | to be universally unique, but unique for the manager that generated it. |
345 | */ |
346 | QString QPlace::placeId() const |
347 | { |
348 | return d_ptr->placeId(); |
349 | } |
350 | |
351 | /*! |
352 | Sets the \a identifier of the place. |
353 | */ |
354 | void QPlace::setPlaceId(const QString &identifier) |
355 | { |
356 | d_ptr->setPlaceId(identifier); |
357 | } |
358 | |
359 | /*! |
360 | Returns a rich text attribution string of the place. Note, some providers may have a |
361 | requirement where the attribution must be shown whenever a place is displayed to an end user. |
362 | */ |
363 | QString QPlace::attribution() const |
364 | { |
365 | return d_ptr->attribution(); |
366 | } |
367 | |
368 | /*! |
369 | Sets the \a attribution string of the place. |
370 | */ |
371 | void QPlace::setAttribution(const QString &attribution) |
372 | { |
373 | d_ptr->setAttribution(attribution); |
374 | } |
375 | |
376 | /*! |
377 | Returns the icon of the place. |
378 | */ |
379 | QPlaceIcon QPlace::icon() const |
380 | { |
381 | return d_ptr->icon(); |
382 | } |
383 | |
384 | /*! |
385 | Sets the \a icon of the place. |
386 | */ |
387 | void QPlace::setIcon(const QPlaceIcon &icon) |
388 | { |
389 | d_ptr->setIcon(icon); |
390 | } |
391 | |
392 | /*! |
393 | Returns the primary phone number for this place. This accesses the first contact detail |
394 | of the \l {QPlaceContactDetail::Phone}{phone number type}. If no phone details exist, then an empty string is returned. |
395 | */ |
396 | QString QPlace::primaryPhone() const |
397 | { |
398 | QList<QPlaceContactDetail> phoneNumbers = d_ptr->contacts().value(akey: QPlaceContactDetail::Phone); |
399 | if (!phoneNumbers.isEmpty()) |
400 | return phoneNumbers.at(i: 0).value(); |
401 | else |
402 | return QString(); |
403 | } |
404 | |
405 | /*! |
406 | Returns the primary fax number for this place. This convenience function accesses the first contact |
407 | detail of the \l {QPlaceContactDetail::Fax}{fax type}. If no fax details exist, then an empty string is returned. |
408 | */ |
409 | QString QPlace::primaryFax() const |
410 | { |
411 | QList<QPlaceContactDetail> faxNumbers = d_ptr->contacts().value(akey: QPlaceContactDetail::Fax); |
412 | if (!faxNumbers.isEmpty()) |
413 | return faxNumbers.at(i: 0).value(); |
414 | else |
415 | return QString(); |
416 | } |
417 | |
418 | /*! |
419 | Returns the primary email address for this place. This convenience function accesses the first |
420 | contact detail of the \l {QPlaceContactDetail::Email}{email type}. If no email addresses exist, then |
421 | an empty string is returned. |
422 | */ |
423 | QString QPlace::primaryEmail() const |
424 | { |
425 | QList<QPlaceContactDetail> emailAddresses = d_ptr->contacts().value(akey: QPlaceContactDetail::Email); |
426 | if (!emailAddresses.isEmpty()) |
427 | return emailAddresses.at(i: 0).value(); |
428 | else |
429 | return QString(); |
430 | } |
431 | |
432 | /*! |
433 | Returns the primary website of the place. This convenience function accesses the first |
434 | contact detail of the \l {QPlaceContactDetail::Website}{website type}. If no websites exist, |
435 | then an empty string is returned. |
436 | */ |
437 | QUrl QPlace::primaryWebsite() const |
438 | { |
439 | QList<QPlaceContactDetail> websites = d_ptr->contacts().value(akey: QPlaceContactDetail::Website); |
440 | if (!websites.isEmpty()) |
441 | return QUrl(websites.at(i: 0).value()); |
442 | else |
443 | return QString(); |
444 | } |
445 | |
446 | /*! |
447 | Returns true if the details of this place have been fetched, |
448 | otherwise returns false. |
449 | */ |
450 | bool QPlace::detailsFetched() const |
451 | { |
452 | return d_ptr->detailsFetched(); |
453 | } |
454 | |
455 | /*! |
456 | Sets whether the details of this place have been \a fetched or not. |
457 | */ |
458 | void QPlace::setDetailsFetched(bool fetched) |
459 | { |
460 | d_ptr->setDetailsFetched(fetched); |
461 | } |
462 | |
463 | /*! |
464 | Returns the types of extended attributes that this place has. |
465 | */ |
466 | QStringList QPlace::extendedAttributeTypes() const |
467 | { |
468 | return d_ptr->extendedAttributes().keys(); |
469 | } |
470 | |
471 | /*! |
472 | Returns the exteded attribute corresponding to the specified \a attributeType. |
473 | If the place does not have that particular attribute type, a default constructed |
474 | QPlaceExtendedAttribute is returned. |
475 | */ |
476 | QPlaceAttribute QPlace::extendedAttribute(const QString &attributeType) const |
477 | { |
478 | return d_ptr->extendedAttribute(attributeType); |
479 | } |
480 | |
481 | /*! |
482 | Assigns an \a attribute of the given \a attributeType to a place. If the given \a attributeType |
483 | already exists in the place, then it is overwritten. |
484 | |
485 | If \a attribute is a default constructed QPlaceAttribute, then the \a attributeType |
486 | is removed from the place which means it will not be listed by QPlace::extendedAttributeTypes(). |
487 | */ |
488 | void QPlace::setExtendedAttribute(const QString &attributeType, |
489 | const QPlaceAttribute &attribute) |
490 | { |
491 | if (attribute == QPlaceAttribute()) |
492 | d_ptr->extendedAttributes().remove(akey: attributeType); |
493 | else |
494 | d_ptr->extendedAttributes().insert(akey: attributeType, avalue: attribute); |
495 | } |
496 | |
497 | /*! |
498 | Remove the attribute of \a attributeType from the place. |
499 | |
500 | The attribute will no longer be listed by QPlace::extendedAttributeTypes() |
501 | */ |
502 | void QPlace::removeExtendedAttribute(const QString &attributeType) |
503 | { |
504 | setExtendedAttribute(attributeType, attribute: QPlaceAttribute()); |
505 | } |
506 | |
507 | /*! |
508 | Returns the type of contact details this place has. |
509 | |
510 | See QPlaceContactDetail for a list of common \l {QPlaceContactDetail::Email}{contact types}. |
511 | */ |
512 | QStringList QPlace::contactTypes() const |
513 | { |
514 | return d_ptr->contacts().keys(); |
515 | } |
516 | |
517 | /*! |
518 | Returns a list of contact details of the specified \a contactType. |
519 | |
520 | See QPlaceContactDetail for a list of common \l {QPlaceContactDetail::Email}{contact types}. |
521 | */ |
522 | QList<QPlaceContactDetail> QPlace::contactDetails(const QString &contactType) const |
523 | { |
524 | return d_ptr->contacts().value(akey: contactType); |
525 | } |
526 | |
527 | /*! |
528 | Sets the contact \a details of a specified \a contactType. |
529 | |
530 | If \a details is empty, then the \a contactType is removed from the place such |
531 | that it is no longer returned by QPlace::contactTypes(). |
532 | |
533 | See QPlaceContactDetail for a list of common \l {QPlaceContactDetail::Email}{contact types}. |
534 | */ |
535 | void QPlace::setContactDetails(const QString &contactType, QList<QPlaceContactDetail> details) |
536 | { |
537 | if (details.isEmpty()) |
538 | d_ptr->contacts().remove(akey: contactType); |
539 | else |
540 | d_ptr->contacts().insert(akey: contactType, avalue: details); |
541 | } |
542 | |
543 | /*! |
544 | Appends a contact \a detail of a specified \a contactType. |
545 | |
546 | See QPlaceContactDetail for a list of common \l {QPlaceContactDetail::Email}{contact types}. |
547 | */ |
548 | void QPlace::appendContactDetail(const QString &contactType, const QPlaceContactDetail &detail) |
549 | { |
550 | QList<QPlaceContactDetail> details = d_ptr->contacts().value(akey: contactType); |
551 | details.append(t: detail); |
552 | d_ptr->contacts().insert(akey: contactType, avalue: details); |
553 | } |
554 | |
555 | /*! |
556 | Removes all the contact details of a given \a contactType. |
557 | |
558 | The \a contactType is no longer returned when QPlace::contactTypes() is called. |
559 | */ |
560 | void QPlace::removeContactDetails(const QString &contactType) |
561 | { |
562 | d_ptr->contacts().remove(akey: contactType); |
563 | } |
564 | |
565 | /*! |
566 | Sets the visibility of the place to \a visibility. |
567 | */ |
568 | void QPlace::setVisibility(QLocation::Visibility visibility) |
569 | { |
570 | d_ptr->setVisibility(visibility); |
571 | } |
572 | |
573 | /*! |
574 | Returns the visibility of the place. |
575 | |
576 | The default visibility of a new place is set to QtLocatin::Unspecified visibility. |
577 | If a place is saved with unspecified visibility the backend chooses an appropriate |
578 | default visibility to use when saving. |
579 | */ |
580 | QLocation::Visibility QPlace::visibility() const |
581 | { |
582 | return d_ptr->visibility(); |
583 | } |
584 | |
585 | /*! |
586 | Returns a boolean indicating whether the all the fields of the place are empty or not. |
587 | */ |
588 | bool QPlace::isEmpty() const |
589 | { |
590 | return d_ptr->isEmpty(); |
591 | } |
592 | |
593 | /******************************************************************************* |
594 | *******************************************************************************/ |
595 | |
596 | QPlacePrivate::QPlacePrivate() |
597 | : QSharedData() |
598 | { |
599 | } |
600 | |
601 | QPlacePrivate::QPlacePrivate(const QPlacePrivate &other) |
602 | : QSharedData(other), |
603 | m_contentCollections(other.m_contentCollections), |
604 | m_contentCounts(other.m_contentCounts) |
605 | { |
606 | } |
607 | |
608 | QPlacePrivate::~QPlacePrivate() {} |
609 | |
610 | bool QPlacePrivate::operator== (const QPlacePrivate &other) const |
611 | { |
612 | return (categories() == other.categories() |
613 | && location() == other.location() |
614 | && ratings() == other.ratings() |
615 | && supplier() == other.supplier() |
616 | && m_contentCollections == other.m_contentCollections |
617 | && m_contentCounts == other.m_contentCounts |
618 | && name() == other.name() |
619 | && placeId() == other.placeId() |
620 | && attribution() == other.attribution() |
621 | && contacts() == other.contacts() |
622 | && extendedAttributes() == other.extendedAttributes() |
623 | && visibility() == other.visibility() |
624 | && icon() == other.icon() |
625 | ); |
626 | } |
627 | |
628 | |
629 | bool QPlacePrivate::isEmpty() const |
630 | { |
631 | return (categories().isEmpty() |
632 | && location().isEmpty() |
633 | && ratings().isEmpty() |
634 | && supplier().isEmpty() |
635 | && m_contentCollections.isEmpty() |
636 | && m_contentCounts.isEmpty() |
637 | && name().isEmpty() |
638 | && placeId().isEmpty() |
639 | && attribution().isEmpty() |
640 | && contacts().isEmpty() |
641 | && extendedAttributes().isEmpty() |
642 | && QLocation::UnspecifiedVisibility == visibility() |
643 | && icon().isEmpty() |
644 | ); |
645 | } |
646 | |
647 | QPlaceAttribute QPlacePrivate::extendedAttribute(const QString &attributeType) const |
648 | { |
649 | return extendedAttributes().value(akey: attributeType); |
650 | } |
651 | |
652 | |
653 | |
654 | // |
655 | // Default implementation |
656 | // |
657 | |
658 | QPlacePrivateDefault::QPlacePrivateDefault() |
659 | : QPlacePrivate(), m_visibility(QLocation::UnspecifiedVisibility), m_detailsFetched(false) |
660 | { |
661 | } |
662 | |
663 | QPlacePrivateDefault::QPlacePrivateDefault(const QPlacePrivateDefault &other) |
664 | : QPlacePrivate(other), |
665 | m_categories(other.m_categories), |
666 | m_location(other.m_location), |
667 | m_ratings(other.m_ratings), |
668 | m_supplier(other.m_supplier), |
669 | m_name(other.m_name), |
670 | m_placeId(other.m_placeId), |
671 | m_attribution(other.m_attribution), |
672 | m_extendedAttributes(other.m_extendedAttributes), |
673 | m_contacts(other.m_contacts), |
674 | m_visibility(other.m_visibility), |
675 | m_icon(other.m_icon), |
676 | m_detailsFetched(other.m_detailsFetched) |
677 | { |
678 | } |
679 | |
680 | QPlacePrivateDefault::~QPlacePrivateDefault() |
681 | { |
682 | } |
683 | |
684 | QPlacePrivate *QPlacePrivateDefault::clone() |
685 | { |
686 | return new QPlacePrivateDefault(*this); |
687 | } |
688 | |
689 | QList<QPlaceCategory> QPlacePrivateDefault::categories() const |
690 | { |
691 | return m_categories; |
692 | } |
693 | |
694 | void QPlacePrivateDefault::setCategories(const QList<QPlaceCategory> &categories) |
695 | { |
696 | m_categories = categories; |
697 | } |
698 | |
699 | QGeoLocation QPlacePrivateDefault::location() const |
700 | { |
701 | return m_location; |
702 | } |
703 | |
704 | void QPlacePrivateDefault::setLocation(const QGeoLocation &location) |
705 | { |
706 | m_location = location; |
707 | } |
708 | |
709 | QPlaceRatings QPlacePrivateDefault::ratings() const |
710 | { |
711 | return m_ratings; |
712 | } |
713 | |
714 | void QPlacePrivateDefault::setRatings(const QPlaceRatings &ratings) |
715 | { |
716 | m_ratings = ratings; |
717 | } |
718 | |
719 | QPlaceSupplier QPlacePrivateDefault::supplier() const |
720 | { |
721 | return m_supplier; |
722 | } |
723 | |
724 | void QPlacePrivateDefault::setSupplier(const QPlaceSupplier &supplier) |
725 | { |
726 | m_supplier = supplier; |
727 | } |
728 | |
729 | QString QPlacePrivateDefault::name() const |
730 | { |
731 | return m_name; |
732 | } |
733 | |
734 | void QPlacePrivateDefault::setName(const QString &name) |
735 | { |
736 | m_name = name; |
737 | } |
738 | |
739 | QString QPlacePrivateDefault::placeId() const |
740 | { |
741 | return m_placeId; |
742 | } |
743 | |
744 | void QPlacePrivateDefault::setPlaceId(const QString &placeIdentifier) |
745 | { |
746 | m_placeId = placeIdentifier; |
747 | } |
748 | |
749 | QString QPlacePrivateDefault::attribution() const |
750 | { |
751 | return m_attribution; |
752 | } |
753 | |
754 | void QPlacePrivateDefault::setAttribution(const QString &attribution) |
755 | { |
756 | m_attribution = attribution; |
757 | } |
758 | |
759 | QLocation::Visibility QPlacePrivateDefault::visibility() const |
760 | { |
761 | return m_visibility; |
762 | } |
763 | |
764 | void QPlacePrivateDefault::setVisibility(QLocation::Visibility visibility) |
765 | { |
766 | m_visibility = visibility; |
767 | } |
768 | |
769 | QPlaceIcon QPlacePrivateDefault::icon() const |
770 | { |
771 | return m_icon; |
772 | } |
773 | |
774 | void QPlacePrivateDefault::setIcon(const QPlaceIcon &icon) |
775 | { |
776 | m_icon = icon; |
777 | } |
778 | |
779 | bool QPlacePrivateDefault::detailsFetched() const |
780 | { |
781 | return m_detailsFetched; |
782 | } |
783 | |
784 | void QPlacePrivateDefault::setDetailsFetched(bool fetched) |
785 | { |
786 | m_detailsFetched = fetched; |
787 | } |
788 | |
789 | QMap<QString, QPlaceAttribute> QPlacePrivateDefault::extendedAttributes() const |
790 | { |
791 | return m_extendedAttributes; |
792 | } |
793 | |
794 | QMap<QString, QPlaceAttribute> &QPlacePrivateDefault::extendedAttributes() |
795 | { |
796 | return m_extendedAttributes; |
797 | } |
798 | |
799 | QMap<QString, QList<QPlaceContactDetail> > QPlacePrivateDefault::contacts() const |
800 | { |
801 | return m_contacts; |
802 | } |
803 | |
804 | QMap<QString, QList<QPlaceContactDetail> > &QPlacePrivateDefault::contacts() |
805 | { |
806 | return m_contacts; |
807 | } |
808 | |
809 | |
810 | |
811 | QT_END_NAMESPACE |
812 | |