JSON patching ability added

This commit is contained in:
Rafael 2016-12-10 05:56:09 +01:00
parent ac40a0d194
commit ec8c1402a5
2 changed files with 70 additions and 5 deletions

View file

@ -301,7 +301,7 @@ bool SnapmaticPicture::setPicture(const QImage &picture)
QByteArray picByteArray1;
QBuffer picStream1(&picByteArray1);
picStream1.open(QIODevice::WriteOnly);
saveSuccess = picture.save(&picStream1, "JPEG", 100);
saveSuccess = picture.save(&picStream1, "JPEG", 95);
picStream1.close();
if (picByteArray1.length() > jpegPicStreamLength)
@ -309,7 +309,7 @@ bool SnapmaticPicture::setPicture(const QImage &picture)
QByteArray picByteArray2;
QBuffer picStream2(&picByteArray2);
picStream2.open(QIODevice::WriteOnly);
saveSuccess = picture.save(&picStream2, "JPEG", 90);
saveSuccess = picture.save(&picStream2, "JPEG", 80);
picStream2.close();
if (picByteArray2.length() > jpegPicStreamLength)
{
@ -322,7 +322,10 @@ bool SnapmaticPicture::setPicture(const QImage &picture)
{
picByteArray = picByteArray1;
}
Q_UNUSED(saveSuccess)
}
while (picByteArray.length() != jpegPicStreamLength)
{
picByteArray.append((char)0x00);
}
int result = snapmaticStream.write(picByteArray);
if (result != 0)
@ -470,7 +473,7 @@ void SnapmaticPicture::clearCache()
void SnapmaticPicture::parseJsonContent()
{
QJsonDocument jsonDocument = QJsonDocument::fromJson(jsonStr.toLatin1());
QJsonDocument jsonDocument = QJsonDocument::fromJson(jsonStr.toUtf8());
QJsonObject jsonObject = jsonDocument.object();
if (jsonObject.contains("loc"))
@ -538,6 +541,67 @@ SnapmaticProperties SnapmaticPicture::getSnapmaticProperties()
return localSpJson;
}
bool SnapmaticPicture::setSnapmaticProperties(SnapmaticProperties newSpJson)
{
QJsonDocument jsonDocument = QJsonDocument::fromJson(jsonStr.toUtf8());
QJsonObject jsonObject = jsonDocument.object();
QJsonObject locObject;
locObject["x"] = newSpJson.location.x;
locObject["y"] = newSpJson.location.y;
locObject["z"] = newSpJson.location.z;
jsonObject["loc"] = locObject;
jsonObject["area"] = newSpJson.area;
jsonObject["crewid"] = newSpJson.crewID;
jsonObject["creat"] = QJsonValue::fromVariant(newSpJson.createdTimestamp);
jsonObject["plyrs"] = QJsonValue::fromVariant(newSpJson.playersList);
jsonObject["meme"] = newSpJson.isMeme;
jsonObject["mug"] = newSpJson.isMug;
jsonObject["slf"] = newSpJson.isSelfie;
jsonObject["drctr"] = newSpJson.isFromDirector;
jsonObject["rsedtr"] = newSpJson.isFromRSEditor;
jsonDocument.setObject(jsonObject);
QString newJsonStr = QString::fromUtf8(jsonDocument.toJson(QJsonDocument::Compact));
if (newJsonStr.length() < jsonStreamEditorLength)
{
if (writeEnabled)
{
QByteArray jsonByteArray = newJsonStr.toUtf8();
while (jsonByteArray.length() != jsonStreamEditorLength)
{
jsonByteArray.append((char)0x00);
}
QBuffer snapmaticStream(&rawPicContent);
snapmaticStream.open(QIODevice::ReadWrite);
if (!snapmaticStream.seek(jsonStreamEditorBegin))
{
snapmaticStream.close();
return false;
}
int result = snapmaticStream.write(jsonByteArray);
snapmaticStream.close();
if (result != 0)
{
jsonStr = newJsonStr;
return true;
}
}
else
{
return false;
}
}
else
{
return false;
}
return true;
}
// VISIBILITY
bool SnapmaticPicture::isHidden()

View file

@ -72,6 +72,7 @@ public:
bool isJsonOk();
QString getJsonStr();
SnapmaticProperties getSnapmaticProperties();
bool setSnapmaticProperties(SnapmaticProperties newSpJson);
// VISIBILITY
bool isHidden();
@ -112,9 +113,9 @@ private:
QByteArray rawPicContent;
// JSON
void parseJsonContent();
bool jsonOk;
QString jsonStr;
void parseJsonContent();
SnapmaticProperties localSpJson;
signals: