You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

296 lines
5.9 KiB
C++

1 year ago
#include "jsonanalystr.h"
#include <QJsonDocument>
#include <QJsonArray>
#include <QJsonParseError>
#include <QVariant>
#include <QJsonValue>
#include <QString>
#include "WriteLog.h"
JsonAnalyStr::JsonAnalyStr()
{
}
int JsonAnalyStr::InitStr()
{
return 0;
}
int JsonAnalyStr::GetPrinterPara(QList<myprinterPara> &list,char * buf,int iMaxLine)
{
QString qstr;
QJsonParseError jsonerror;
QJsonDocument jsondoc;
QJsonArray jsonArray;
QByteArray tmparray;
bool bRet;
int iRet;
qstr = QString::fromLocal8Bit(buf);
tmparray = qstr.toUtf8();
// WRITE_LOG(tmparray.data());
jsondoc = QJsonDocument::fromJson(tmparray, &jsonerror);
if ((jsondoc.isNull()) || (jsonerror.error != QJsonParseError::NoError))
{
return -3;
}
bRet = jsondoc.isArray();
if(! bRet)
{
return -4;
}
jsonArray = jsondoc.array();
for(int i=0; i<jsonArray.size(); i++)
{
myprinterPara para;
QJsonValue iconArray = jsonArray.at(i);
if(! iconArray.isObject())
{
return -5;
}
QJsonObject icon = iconArray.toObject();
if(! icon.contains(QStringLiteral(PRINTERNANE)))
{
return -6;
}
if(! icon.contains(QStringLiteral(PRINTERCOL)))
{
return -7;
}
if(! icon.contains(QStringLiteral(PRINTERLINE)))
{
return -8;
}
InitPrinterPara(&para);
iRet = GetPara(&para,icon);
if(iRet <0)
{
return -9;
}
if(para.line > (iMaxLine-2))
{
return -10;
}
list.append(para);
}
return 0;
}
//
int JsonAnalyStr::GetPara(myprinterPara * pPara,QJsonObject & jobj)
{
QJsonValue jsValue;
QString qstr;
int iRet;
jsValue = jobj.value(QStringLiteral(PRINTERNANE));
if(jsValue.isString())
{
qstr = jsValue.toString();
iRet = QStringToChar(pPara->Name,qstr,MAXNAME_LEN-1);
if(iRet <0)
{
return -1;
}
}
else
{
return -2;
}
jsValue = jobj.value(QStringLiteral(PRINTERCOL));
if(jsValue.isDouble())
{
pPara->col = jsValue.toVariant().toInt();
}
else
{
return -3;
}
jsValue = jobj.value(QStringLiteral(PRINTERLINE));
if(jsValue.isDouble())
{
pPara->line = jsValue.toVariant().toInt();
}
else
{
return -3;
}
return 0;
}
//
int JsonAnalyStr::GetCutPaperPara(myCutPaperPara * pPara, char * buf)
{
QString qstr;
QJsonParseError jsonerror;
QJsonDocument jsondoc;
//QJsonArray jsonArray;
QByteArray tmparray;
QJsonObject qobj;
QJsonValue jsValue;
bool bRet;
// int iRet;
qstr = QString::fromLocal8Bit(buf);
tmparray = qstr.toUtf8();
// WRITE_LOG(tmparray.data());
jsondoc = QJsonDocument::fromJson(tmparray, &jsonerror);
if ((jsondoc.isNull()) || (jsonerror.error != QJsonParseError::NoError))
{
return -1;
}
bRet = jsondoc.isObject();
if(! bRet)
{
return -2;
}
qobj = jsondoc.object();
if(! qobj.contains(QStringLiteral(CUTPAPERPARA)))
{
return -3;
}
if(! qobj.contains(QStringLiteral(CMDLFPARA)))
{
return -4;
}
if(! qobj.contains(QStringLiteral(CUTCMDPARA)))
{
return -5;
}
jsValue = qobj.value(QStringLiteral(CUTPAPERPARA));
if(jsValue.isDouble())
{
pPara->iCutPaper = jsValue.toVariant().toInt();
}
else
{
return -6;
}
jsValue = qobj.value(QStringLiteral(CMDLFPARA));
if(jsValue.isDouble())
{
pPara->iCmdlf = jsValue.toVariant().toInt();
}
else
{
return -7;
}
jsValue = qobj.value(QStringLiteral(CUTCMDPARA));
if(jsValue.isDouble())
{
pPara->iCutcmd = jsValue.toVariant().toInt();
}
else
{
return -8;
}
return 0;
}
int JsonAnalyStr::GetPrinterInfo(QList<myprinterInfo> & paralist,char * buf)
{
QString qstr;
QJsonParseError jsonerror;
QJsonDocument jsondoc;
QJsonArray jsonArray;
QByteArray tmparray;
bool bRet;
int iRet;
qstr = QString::fromLocal8Bit(buf);
tmparray = qstr.toUtf8();
WRITE_LOG(tmparray.data());
jsondoc = QJsonDocument::fromJson(tmparray, &jsonerror);
if ((jsondoc.isNull()) || (jsonerror.error != QJsonParseError::NoError))
{
return -1;
}
bRet = jsondoc.isArray();
if(! bRet)
{
return -2;
}
jsonArray = jsondoc.array();
for(int i=0; i<jsonArray.size(); i++)
{
myprinterInfo Info;
InitPrinterInfo(&Info);
QJsonValue iconArray = jsonArray.at(i);
if(! iconArray.isObject())
{
return -3;
}
QJsonObject icon = iconArray.toObject();
if(! icon.contains(QStringLiteral(PRINTERNANE)))
{
return -4;
}
if(! icon.contains(QStringLiteral(PRINTERVALUE)))
{
return -5;
}
QJsonValue Value = icon.value(QStringLiteral(PRINTERNANE));
if(Value.isString())
{
QString porestr = Value.toString();
iRet = QStringToChar(Info.Name,porestr,MAXNAME_LEN-1);
if(iRet <0)
{
return -6;
}
}
else
{
return -7;
}
Value = icon.value(QStringLiteral(PRINTERVALUE));
if(Value.isString())
{
QString porestr = Value.toString();
iRet = QStringToChar(Info.Value,porestr,MAXVALUE_LEN -1);
if(iRet <0)
{
return -8;
}
}
else
{
return -9;
}
paralist.append(Info);
}
return 0;
}