json parser now part of SnapmaticPicture
This commit is contained in:
		
							parent
							
								
									4050358462
								
							
						
					
					
						commit
						a3c66786eb
					
				
					 5 changed files with 77 additions and 34 deletions
				
			
		|  | @ -43,29 +43,12 @@ void PictureDialog::setSnapmaticPicture(QPixmap pixmap) | |||
|     ui->labPicture->setPixmap(pixmap); | ||||
| } | ||||
| 
 | ||||
| void PictureDialog::setJsonString(QString jsonStr) | ||||
| void PictureDialog::setJsonString(SnapmaticPicture *picture) | ||||
| { | ||||
|     QJsonDocument jsonDocument = QJsonDocument::fromJson(jsonStr.toLatin1()); | ||||
|     QJsonObject jsonObject = jsonDocument.object(); | ||||
|     QVariantMap jsonMap = jsonObject.toVariantMap(); | ||||
| 
 | ||||
|     QString locX; | ||||
|     QString locY; | ||||
|     QString locZ; | ||||
|     QStringList plyrsList; | ||||
| 
 | ||||
|     if (jsonMap.contains("loc")) | ||||
|     { | ||||
|         QJsonObject locObject = jsonObject["loc"].toObject(); | ||||
|         QVariantMap locMap = locObject.toVariantMap(); | ||||
|         if (locMap.contains("x")) { locX = locMap["x"].toString(); } | ||||
|         if (locMap.contains("y")) { locY = locMap["y"].toString(); } | ||||
|         if (locMap.contains("z")) { locZ = locMap["z"].toString(); } | ||||
|     } | ||||
|     if (jsonMap.contains("plyrs")) | ||||
|     { | ||||
|         plyrsList = jsonMap["plyrs"].toStringList(); | ||||
|     } | ||||
|     QString locX = QString::number(picture->getLocationX()); | ||||
|     QString locY = QString::number(picture->getLocationY()); | ||||
|     QString locZ = QString::number(picture->getLocationZ()); | ||||
|     QStringList plyrsList = picture->getPlayers(); | ||||
| 
 | ||||
|     QString plyrsStr; | ||||
|     foreach (const QString &player, plyrsList) | ||||
|  |  | |||
|  | @ -19,6 +19,7 @@ | |||
| #ifndef PICTUREDIALOG_H | ||||
| #define PICTUREDIALOG_H | ||||
| 
 | ||||
| #include "SnapmaticPicture.h" | ||||
| #include <QDialog> | ||||
| 
 | ||||
| namespace Ui { | ||||
|  | @ -28,11 +29,10 @@ class PictureDialog; | |||
| class PictureDialog : public QDialog | ||||
| { | ||||
|     Q_OBJECT | ||||
| 
 | ||||
| public: | ||||
|     explicit PictureDialog(QWidget *parent = 0); | ||||
|     void setSnapmaticPicture(QPixmap pixmap); | ||||
|     void setJsonString(QString jsonStr); | ||||
|     void setJsonString(SnapmaticPicture *picture); | ||||
|     ~PictureDialog(); | ||||
| 
 | ||||
| private: | ||||
|  |  | |||
|  | @ -17,6 +17,10 @@ | |||
| *****************************************************************************/ | ||||
| 
 | ||||
| #include "SnapmaticPicture.h" | ||||
| #include <QJsonDocument> | ||||
| #include <QJsonObject> | ||||
| #include <QVariantMap> | ||||
| #include <QJsonArray> | ||||
| #include <QPixmap> | ||||
| #include <QString> | ||||
| #include <QDebug> | ||||
|  | @ -99,6 +103,7 @@ bool SnapmaticPicture::readingPicture() | |||
|     } | ||||
|     QByteArray jsonRawContent = picFile->read(jsonStreamLength); | ||||
|     jsonStr = getSnapmaticJSONString(jsonRawContent); | ||||
|     parseJsonContent(); // JSON parsing is own function
 | ||||
| 
 | ||||
|     return cachePicture.loadFromData(jpegRawContent); | ||||
| } | ||||
|  | @ -147,11 +152,6 @@ QString SnapmaticPicture::getLastStep() | |||
|     return lastStep; | ||||
| } | ||||
| 
 | ||||
| QString SnapmaticPicture::getJsonStr() | ||||
| { | ||||
|     return jsonStr; | ||||
| } | ||||
| 
 | ||||
| QPixmap SnapmaticPicture::getPixmap() | ||||
| { | ||||
|     return cachePicture; | ||||
|  | @ -166,3 +166,50 @@ QString SnapmaticPicture::convertLogStringForDraw(QString inputStr) | |||
| { | ||||
|     return inputStr.replace("&c;",",").replace("&u;","&"); | ||||
| } | ||||
| 
 | ||||
| // JSON part
 | ||||
| 
 | ||||
| void SnapmaticPicture::parseJsonContent() | ||||
| { | ||||
|     QJsonDocument jsonDocument = QJsonDocument::fromJson(jsonStr.toLatin1()); | ||||
|     QJsonObject jsonObject = jsonDocument.object(); | ||||
|     QVariantMap jsonMap = jsonObject.toVariantMap(); | ||||
| 
 | ||||
|     if (jsonMap.contains("loc")) | ||||
|     { | ||||
|         QJsonObject locObject = jsonObject["loc"].toObject(); | ||||
|         QVariantMap locMap = locObject.toVariantMap(); | ||||
|         if (locMap.contains("x")) { jsonLocX = locMap["x"].toDouble(); } | ||||
|         if (locMap.contains("y")) { jsonLocY = locMap["y"].toDouble(); } | ||||
|         if (locMap.contains("z")) { jsonLocZ = locMap["z"].toDouble(); } | ||||
|     } | ||||
|     if (jsonMap.contains("plyrs")) | ||||
|     { | ||||
|         jsonPlyrsList = jsonMap["plyrs"].toStringList(); | ||||
|     } | ||||
| } | ||||
| 
 | ||||
| QString SnapmaticPicture::getJsonStr() | ||||
| { | ||||
|     return jsonStr; | ||||
| } | ||||
| 
 | ||||
| double SnapmaticPicture::getLocationX() | ||||
| { | ||||
|     return jsonLocX; | ||||
| } | ||||
| 
 | ||||
| double SnapmaticPicture::getLocationY() | ||||
| { | ||||
|     return jsonLocY; | ||||
| } | ||||
| 
 | ||||
| double SnapmaticPicture::getLocationZ() | ||||
| { | ||||
|     return jsonLocZ; | ||||
| } | ||||
| 
 | ||||
| QStringList SnapmaticPicture::getPlayers() | ||||
| { | ||||
|     return jsonPlyrsList; | ||||
| } | ||||
|  |  | |||
|  | @ -19,6 +19,7 @@ | |||
| #ifndef SNAPMATICPICTURE_H | ||||
| #define SNAPMATICPICTURE_H | ||||
| 
 | ||||
| #include <QStringList> | ||||
| #include <QObject> | ||||
| #include <QPixmap> | ||||
| #include <QString> | ||||
|  | @ -34,10 +35,16 @@ public: | |||
|     void setPixmap(QPixmap pixmap); | ||||
|     void resetValues(); | ||||
|     QPixmap getPixmap(); | ||||
|     QString getJsonStr(); | ||||
|     QString getLastStep(); | ||||
|     QString getPictureStr(); | ||||
| 
 | ||||
|     // JSON
 | ||||
|     QString getJsonStr(); | ||||
|     double getLocationX(); | ||||
|     double getLocationY(); | ||||
|     double getLocationZ(); | ||||
|     QStringList getPlayers(); | ||||
| 
 | ||||
| private: | ||||
|     QString getSnapmaticPictureString(QByteArray snapmaticHeader); | ||||
|     QString getSnapmaticJSONString(QByteArray jsonBytes); | ||||
|  | @ -47,7 +54,14 @@ private: | |||
|     QString picFileName; | ||||
|     QString pictureStr; | ||||
|     QString lastStep; | ||||
| 
 | ||||
|     // JSON
 | ||||
|     void parseJsonContent(); | ||||
|     QString jsonStr; | ||||
|     double jsonLocX; | ||||
|     double jsonLocY; | ||||
|     double jsonLocZ; | ||||
|     QStringList jsonPlyrsList; | ||||
| 
 | ||||
| signals: | ||||
| 
 | ||||
|  |  | |||
							
								
								
									
										7
									
								
								main.cpp
									
										
									
									
									
								
							
							
						
						
									
										7
									
								
								main.cpp
									
										
									
									
									
								
							|  | @ -44,14 +44,13 @@ int main(int argc, char *argv[]) | |||
| 
 | ||||
|     if (selectedAction == "showpic") | ||||
|     { | ||||
|         SnapmaticPicture picture; | ||||
|         qDebug() << picture.readingPictureFromFile(arg1); | ||||
|         qDebug() << picture.getLastStep(); | ||||
|         PictureDialog picDialog; | ||||
|         SnapmaticPicture picture; | ||||
|         picture.readingPictureFromFile(arg1); | ||||
|         picDialog.setWindowFlags(picDialog.windowFlags()^Qt::WindowContextHelpButtonHint); | ||||
|         picDialog.setWindowTitle(picture.getPictureStr()); | ||||
|         picDialog.setSnapmaticPicture(picture.getPixmap()); | ||||
|         picDialog.setJsonString(picture.getJsonStr()); | ||||
|         picDialog.setJsonString(&picture); | ||||
|         picDialog.show(); | ||||
| 
 | ||||
|         return a.exec(); | ||||
|  |  | |||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue