1
0
mirror of https://gitlab.com/kelteseth/ScreenPlay.git synced 2024-09-18 08:22:33 +02:00

Add json message parser

This commit is contained in:
kelteseth 2018-03-12 16:20:48 +01:00
parent cd2df404e3
commit 6302f3d1e5
2 changed files with 33 additions and 5 deletions

View File

@ -43,13 +43,18 @@ void ScreenPlaySDK::readyRead()
{
QString tmp = m_socket.data()->readAll();
QJsonParseError err;
QJsonDocument jdoc = QJsonDocument::fromJson(QByteArray::fromStdString(tmp.toStdString()),&err);
auto doc = QJsonDocument::fromJson(QByteArray::fromStdString(tmp.toStdString()),&err);
if (!(err.error == QJsonParseError::NoError)) {
emit incommingMessageError(tmp);
emit incommingMessageError(err.errorString());
return;
}
emit incommingMessage(tmp);
QJsonObject ob = doc.object();
QJsonObject::iterator iterator;
for (iterator = ob.begin(); iterator != ob.end(); iterator++) {
qDebug() << iterator.key() << ob.value(iterator.key()).toString();
emit incommingMessage(iterator.key(), ob.value(iterator.key()).toString());
}
}
void ScreenPlaySDK::error(QLocalSocket::LocalSocketError socketError)

View File

@ -10,6 +10,7 @@
#include <QJsonParseError>
#include <QByteArray>
#include <QTimer>
#include <QJsonObject>
class ScreenPlaySDK : public QQuickItem
{
@ -22,6 +23,8 @@ public:
Q_PROPERTY(QString contentType READ contentType WRITE setContentType NOTIFY contentTypeChanged)
Q_PROPERTY(bool isConnected READ isConnected WRITE setIsConnected NOTIFY isConnectedChanged)
Q_PROPERTY(QString appID READ appID WRITE setAppID NOTIFY appIDChanged)
QString contentType() const
{
return m_contentType;
@ -32,6 +35,12 @@ public:
return m_isConnected;
}
QString appID() const
{
return m_appID;
}
public slots:
void connected();
void disconnected();
@ -63,8 +72,19 @@ public slots:
emit isConnectedChanged(m_isConnected);
}
void setAppID(QString appID)
{
if (m_appID == appID)
return;
m_appID = appID;
emit appIDChanged(m_appID);
m_socket.data()->write(QByteArray(appID.toUtf8()));
m_socket.data()->waitForBytesWritten();
}
signals:
void incommingMessage(QString msg);
void incommingMessage(QString key, QString value);
void incommingMessageError(QString msg);
@ -73,13 +93,16 @@ signals:
void sdkSocketError(QString type);
void contentTypeChanged(QString contentType);
void isConnectedChanged(bool isConnected);
void appIDChanged(QString appID);
private:
QSharedPointer<QLocalSocket> m_socket;
QString m_contentType = "undefined";
bool m_isConnected = false;
QString m_appID;
};