From d5c6836de5cb6c155061040796d804aba6b8de28 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Simon=20St=C3=BCrz?= Date: Wed, 8 Jul 2015 02:53:03 +0200 Subject: [PATCH] split packages containing multiple messages --- .../deviceplugins/kodi/devicepluginkodi.cpp | 32 ++++++++++--------- plugins/deviceplugins/kodi/devicepluginkodi.h | 4 --- plugins/deviceplugins/kodi/kodi.cpp | 3 +- plugins/deviceplugins/kodi/kodi.h | 5 +-- plugins/deviceplugins/kodi/kodi.pro | 2 +- plugins/deviceplugins/kodi/kodiconnection.cpp | 16 +++++++++- plugins/deviceplugins/kodi/kodiconnection.h | 1 - 7 files changed, 35 insertions(+), 28 deletions(-) diff --git a/plugins/deviceplugins/kodi/devicepluginkodi.cpp b/plugins/deviceplugins/kodi/devicepluginkodi.cpp index 97f1eaca..45d781ce 100644 --- a/plugins/deviceplugins/kodi/devicepluginkodi.cpp +++ b/plugins/deviceplugins/kodi/devicepluginkodi.cpp @@ -71,19 +71,19 @@ DevicePluginKodi::DevicePluginKodi() { - Q_INIT_RESOURCE(images); - QFile file(":/images/guh-logo.png"); - if (!file.open(QIODevice::ReadOnly)) { - qCWarning(dcKodi) << "could not open" << file.fileName(); - return; - } +// Q_INIT_RESOURCE(images); +// QFile file(":/images/guh-logo.png"); +// if (!file.open(QIODevice::ReadOnly)) { +// qCWarning(dcKodi) << "could not open" << file.fileName(); +// return; +// } - QByteArray guhLogoByteArray = file.readAll(); - if (guhLogoByteArray.isEmpty()) { - qCWarning(dcKodi) << "could not read" << file.fileName(); - return; - } - m_logo = guhLogoByteArray; +// QByteArray guhLogoByteArray = file.readAll(); +// if (guhLogoByteArray.isEmpty()) { +// qCWarning(dcKodi) << "could not read" << file.fileName(); +// return; +// } +// m_logo = guhLogoByteArray; } DeviceManager::HardwareResources DevicePluginKodi::requiredHardware() const @@ -93,7 +93,8 @@ DeviceManager::HardwareResources DevicePluginKodi::requiredHardware() const DeviceManager::DeviceSetupStatus DevicePluginKodi::setupDevice(Device *device) { - Kodi *kodi= new Kodi(m_logo, QHostAddress(device->paramValue("ip").toString()), 9090, this); + qCDebug(dcKodi) << "Setup Kodi device" << device->paramValue("ip").toString(); + Kodi *kodi= new Kodi(QHostAddress(device->paramValue("ip").toString()), 9090, this); connect(kodi, &Kodi::connectionStatusChanged, this, &DevicePluginKodi::onConnectionChanged); connect(kodi, &Kodi::stateChanged, this, &DevicePluginKodi::onStateChanged); @@ -104,10 +105,11 @@ DeviceManager::DeviceSetupStatus DevicePluginKodi::setupDevice(Device *device) connect(kodi, &Kodi::onPlayerPause, this, &DevicePluginKodi::onPlayerPause); connect(kodi, &Kodi::onPlayerStop, this, &DevicePluginKodi::onPlayerStop); - kodi->connectKodi(); - m_kodis.insert(kodi, device); m_asyncSetups.append(kodi); + + kodi->connectKodi(); + return DeviceManager::DeviceSetupStatusAsync; } diff --git a/plugins/deviceplugins/kodi/devicepluginkodi.h b/plugins/deviceplugins/kodi/devicepluginkodi.h index b44ee4c8..33748407 100644 --- a/plugins/deviceplugins/kodi/devicepluginkodi.h +++ b/plugins/deviceplugins/kodi/devicepluginkodi.h @@ -27,9 +27,6 @@ #include #include #include -#include -#include -#include class DevicePluginKodi : public DevicePlugin { @@ -53,7 +50,6 @@ public: private: QHash m_kodis; QList m_asyncSetups; - QByteArray m_logo; private slots: diff --git a/plugins/deviceplugins/kodi/kodi.cpp b/plugins/deviceplugins/kodi/kodi.cpp index d6a28d46..c86a6f4f 100644 --- a/plugins/deviceplugins/kodi/kodi.cpp +++ b/plugins/deviceplugins/kodi/kodi.cpp @@ -20,9 +20,8 @@ #include "kodi.h" -Kodi::Kodi(const QByteArray &logo, const QHostAddress &hostAddress, const int &port, QObject *parent) : +Kodi::Kodi(const QHostAddress &hostAddress, const int &port, QObject *parent) : QObject(parent), - m_logo(logo), m_muted(false), m_volume(-1) { diff --git a/plugins/deviceplugins/kodi/kodi.h b/plugins/deviceplugins/kodi/kodi.h index abe8bbc9..cf3ba184 100644 --- a/plugins/deviceplugins/kodi/kodi.h +++ b/plugins/deviceplugins/kodi/kodi.h @@ -23,8 +23,6 @@ #include #include -#include -#include #include "kodiconnection.h" #include "kodijsonhandler.h" @@ -34,7 +32,7 @@ class Kodi : public QObject Q_OBJECT public: - explicit Kodi(const QByteArray &logo, const QHostAddress &hostAddress, const int &port = 9090, QObject *parent = 0); + explicit Kodi(const QHostAddress &hostAddress, const int &port = 9090, QObject *parent = 0); QHostAddress hostAddress() const; int port() const; @@ -64,7 +62,6 @@ public: private: KodiConnection *m_connection; KodiJsonHandler *m_jsonHandler; - QByteArray m_logo; bool m_muted; int m_volume; diff --git a/plugins/deviceplugins/kodi/kodi.pro b/plugins/deviceplugins/kodi/kodi.pro index 7d9e6e45..1695e0a5 100644 --- a/plugins/deviceplugins/kodi/kodi.pro +++ b/plugins/deviceplugins/kodi/kodi.pro @@ -2,7 +2,7 @@ include(../../plugins.pri) TARGET = $$qtLibraryTarget(guh_devicepluginkodi) -RESOURCES += images.qrc +#RESOURCES += images.qrc SOURCES += \ devicepluginkodi.cpp \ diff --git a/plugins/deviceplugins/kodi/kodiconnection.cpp b/plugins/deviceplugins/kodi/kodiconnection.cpp index 96294a2b..19d6fe70 100644 --- a/plugins/deviceplugins/kodi/kodiconnection.cpp +++ b/plugins/deviceplugins/kodi/kodiconnection.cpp @@ -90,7 +90,21 @@ void KodiConnection::onError(QAbstractSocket::SocketError socketError) void KodiConnection::readData() { QByteArray data = m_socket->readAll(); - emit dataReady(data); + + QStringList commandList = QString(data).split("}{"); + for(int i = 0; i < commandList.count(); ++i) { + QString command = commandList.at(i); + if(command.isEmpty()) { + continue; + } + if(i < commandList.count() - 1) { + command.append("}"); + } + if(i > 0) { + command.prepend("{"); + } + emit dataReady(command.toUtf8()); + } } void KodiConnection::sendData(const QByteArray &message) diff --git a/plugins/deviceplugins/kodi/kodiconnection.h b/plugins/deviceplugins/kodi/kodiconnection.h index b4eb89f1..ec9a32cc 100644 --- a/plugins/deviceplugins/kodi/kodiconnection.h +++ b/plugins/deviceplugins/kodi/kodiconnection.h @@ -47,7 +47,6 @@ private: int m_port; bool m_connected; - private slots: void onConnected(); void onDisconnected();