switched from qsettings to json added editng of actors

This commit is contained in:
2019-06-06 21:19:12 +02:00
parent b04fbfb5bc
commit df27b622a0
141 changed files with 4402 additions and 5068 deletions

83
src/broadcast.cpp Normal file
View File

@ -0,0 +1,83 @@
#include "broadcast.h"
#include <QJsonDocument>
#include <QDebug>
BroadCast::BroadCast(QIODevice* const iodevice): iodevice_(iodevice)
{
if(iodevice_ != nullptr) connect(iodevice_, &QIODevice::readyRead, this, &BroadCast::readyRead);
}
void BroadCast::write(const char * const buffer, const size_t length)
{
QByteArray mBuffer("BCST: ");
for (size_t i = 0; i < length; ++i)
{
if(buffer[i] != '\n' && buffer[i] != '\0') mBuffer.push_back(buffer[i]);
else
{
mBuffer.push_back('\\');
if(buffer[i] == '\n')mBuffer.push_back('n');
else mBuffer.push_back('0');
}
}
if(iodevice_)iodevice_->write(mBuffer);
}
void BroadCast::write(const QByteArray& buffer)
{
write(buffer.data(), buffer.size());
}
void BroadCast::sendJson(const QJsonObject& json)
{
QJsonDocument jsonDocument(json);
write("JSON: ");
write(jsonDocument.toJson());
}
void BroadCast::decode()
{
if(buffer_.size() >= 6 && buffer_[0] == 'J' && buffer_[1] == 'S' && buffer_[2] == 'O' && buffer_[3] == 'N' && buffer_[4] == ':')
{
buffer_.remove(0,6);
for(int i = 0; i < buffer_.size()-1; ++i)
{
if( buffer_[i] == '\\' && buffer_[i+1] == 'n' )
{
buffer_[i] = '\n';
buffer_.remove(i+1,1);
}
else if( buffer_[i] == '\\' && buffer_[i+1] == '0' )
{
buffer_[i] = '\0';
buffer_.remove(i+1,1);
}
}
QJsonDocument document;
QJsonParseError error;
document.fromJson(buffer_, &error);
if(error.error == QJsonParseError::NoError) gotJson(document.object());
else
{
qDebug()<<error.errorString();
}
}
}
void BroadCast::readyRead()
{
buffer_.append(iodevice_->readAll());
if(buffer_.size() >= 6)
{
if(buffer_[0] == 'B' && buffer_[1] == 'C' && buffer_[2] == 'S' && buffer_[3] == 'T' && buffer_[4] == ':')
{
if(buffer_.contains('\n'))
{
buffer_.remove(0,6);
decode();
buffer_.clear();
}
}
else buffer_.clear();
}
}