- highlight goals updated less than 5 minutes ago
[buliscores] / qjson / src / parserrunnable.h
1 /* This file is part of qjson
2   *
3   * Copyright (C) 2009 Flavio Castelli <flavio@castelli.name>
4   *
5   * This library is free software; you can redistribute it and/or
6   * modify it under the terms of the GNU Library General Public
7   * License as published by the Free Software Foundation; either
8   * version 2 of the License, or (at your option) any later version.
9   *
10   * This library is distributed in the hope that it will be useful,
11   * but WITHOUT ANY WARRANTY; without even the implied warranty of
12   * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
13   * Library General Public License for more details.
14   *
15   * You should have received a copy of the GNU Library General Public License
16   * along with this library; see the file COPYING.LIB.  If not, write to
17   * the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
18   * Boston, MA 02110-1301, USA.
19   */
20
21 #ifndef PARSERRUNNABLE_H
22 #define PARSERRUNNABLE_H
23
24 #include "qjson_export.h"
25
26 #include <QtCore/QObject>
27 #include <QtCore/QRunnable>
28
29 class QVariant;
30
31 namespace QJson {
32   /**
33   * @brief Convenience class for converting JSON data to QVariant objects using a dedicated thread
34   */
35   class QJSON_EXPORT ParserRunnable  : public QObject, public QRunnable
36   {
37     Q_OBJECT
38     public:
39       /**
40       * This signal is emitted when the conversion process has been completed
41       * @param data contains the JSON data that has to be converted
42       * @param parent parent of the object
43       **/
44       explicit ParserRunnable(QObject* parent = 0);
45       ~ParserRunnable();
46
47       void setData( const QByteArray& data );
48
49       void run();
50
51     Q_SIGNALS:
52       /**
53       * This signal is emitted when the parsing process has been completed
54       * @param json contains the result of the parsing
55       * @param ok if a parsing error occurs ok is set to false, otherwise it's set to true.
56       * @param error_msg contains a string explaining the failure reason
57       **/
58       void parsingFinished(const QVariant& json, bool ok, const QString& error_msg);
59
60     private:
61       Q_DISABLE_COPY(ParserRunnable)
62       class Private;
63       Private* const d;
64   };
65 }
66
67 #endif // PARSERRUNNABLE_H