summaryrefslogtreecommitdiff
path: root/src/location/places/provider/qplacejsonsearchparser.h
diff options
context:
space:
mode:
Diffstat (limited to 'src/location/places/provider/qplacejsonsearchparser.h')
-rw-r--r--src/location/places/provider/qplacejsonsearchparser.h50
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