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 #ifndef QPLACEMANAGER_H
38 #define QPLACEMANAGER_H
39 
40 #include <QtLocation/QPlaceContentReply>
41 #include <QtLocation/QPlaceContentRequest>
42 #include <QtLocation/QPlaceIdReply>
43 #include <QtLocation/QPlaceReply>
44 #include <QtLocation/QPlaceDetailsReply>
45 #include <QtLocation/QPlaceMatchReply>
46 #include <QtLocation/QPlaceMatchRequest>
47 #include <QtLocation/QPlaceSearchSuggestionReply>
48 #include <QtLocation/QPlaceSearchRequest>
49 #include <QtLocation/QPlaceSearchResult>
50 
51 #include <QtCore/QLocale>
52 #include <QtCore/QVector>
53 #include <QtCore/QString>
54 #include <QtCore/QObject>
55 #include <QtLocation/QPlaceIcon>
56 
57 QT_BEGIN_NAMESPACE
58 
59 class QPlaceManagerEngine;
60 class QPlaceSearchRequest;
61 class QPlaceSearchReply;
62 
63 class Q_LOCATION_EXPORT QPlaceManager : public QObject
64 {
65     Q_OBJECT
66 public:
67     ~QPlaceManager();
68 
69     QString managerName() const;
70     int managerVersion() const;
71 
72     QPlaceDetailsReply *getPlaceDetails(const QString &placeId) const;
73 
74     QPlaceContentReply *getPlaceContent(const QPlaceContentRequest &request) const;
75 
76     QPlaceSearchReply *search(const QPlaceSearchRequest &query) const;
77 
78     QPlaceSearchSuggestionReply *searchSuggestions(const QPlaceSearchRequest &request) const;
79 
80     QPlaceIdReply *savePlace(const QPlace &place);
81     QPlaceIdReply *removePlace(const QString &placeId);
82 
83     QPlaceIdReply *saveCategory(const QPlaceCategory &category, const QString &parentId = QString());
84     QPlaceIdReply *removeCategory(const QString &categoryId);
85 
86     QPlaceReply *initializeCategories();
87     QString parentCategoryId(const QString &categoryId) const;
88     QStringList childCategoryIds(const QString &parentId = QString()) const;
89 
90     QPlaceCategory category(const QString &categoryId) const;
91     QList<QPlaceCategory> childCategories(const QString &parentId = QString()) const;
92 
93     QList<QLocale> locales() const;
94     void setLocale(const QLocale &locale);
95     void setLocales(const QList<QLocale> &locale);
96 
97     QPlace compatiblePlace(const QPlace &place);
98 
99     QPlaceMatchReply *matchingPlaces(const QPlaceMatchRequest &request) const;
100 
101 Q_SIGNALS:
102     void finished(QPlaceReply *reply);
103     void error(QPlaceReply *, QPlaceReply::Error error, const QString &errorString = QString());
104 
105     void placeAdded(const QString &placeId);
106     void placeUpdated(const QString &placeId);
107     void placeRemoved(const QString &placeId);
108 
109     void categoryAdded(const QPlaceCategory &category, const QString &parentId);
110     void categoryUpdated(const QPlaceCategory &category, const QString &parentId);
111     void categoryRemoved(const QString &categoryId, const QString &parentId);
112     void dataChanged();
113 
114 private:
115     explicit QPlaceManager(QPlaceManagerEngine *engine, QObject *parent = nullptr);
116     Q_DISABLE_COPY(QPlaceManager)
117 
118     QPlaceManagerEngine *d;
119 
120     friend class QGeoServiceProvider;
121     friend class QGeoServiceProviderPrivate;
122     friend class QPlaceIcon;
123 };
124 
125 QT_END_NAMESPACE
126 
127 #endif // QPLACEMANAGER_H
128