diff options
Diffstat (limited to 'src/location/places/provider/qplacejsonsearchparser.h')
-rw-r--r-- | src/location/places/provider/qplacejsonsearchparser.h | 50 |
1 files changed, 50 insertions, 0 deletions
diff --git a/src/location/places/provider/qplacejsonsearchparser.h b/src/location/places/provider/qplacejsonsearchparser.h new file mode 100644 index 00000000..2417e05d --- /dev/null +++ b/src/location/places/provider/qplacejsonsearchparser.h @@ -0,0 +1,50 @@ +#ifndef QPLACEJSONSEARCHPARSER_H +#define QPLACEJSONSEARCHPARSER_H + +#include <QObject> +#include <QList> + +#include "../qplacecategory.h" +#include "../qplacesearchresult.h" + +class QScriptEngine; +class QScriptValue; + +namespace QT_PLACES_NAMESPACE { + +class QPlaceJSonSearchParser : public QObject +{ + Q_OBJECT +public: + enum Error { + NoError, + ParsingError + }; + + explicit QPlaceJSonSearchParser(QObject *parent = 0); + virtual ~QPlaceJSonSearchParser(); + + QList<QPlaceSearchResult> searchResults(); + +signals: + void finished(const Error &error, const QString &errorMessage); + +public slots: + void processData(const QString &data); + +private: + void processResultElement(const QScriptValue &value); + QPlaceSearchResult processPlaceElement(const QScriptValue &value); + void processContacts(const QScriptValue &properties, QPlace *place); + void processCategories(const QScriptValue &categories, QPlace *place); + void processRating(const QScriptValue &properties, QPlace *place); + void processAddress(const QScriptValue &properties, QPlaceLocation *location); + void processLocation(const QScriptValue &properties, QPlace *place); +private: + QScriptEngine *engine; + QList<QPlaceSearchResult> searchResultsList; +}; + +} // QT_PLACES_NAMESPACE + +#endif // QPLACEJSONSEARCHPARSER_H |