Browse Source

Update editor/jsonutils with launcher/jsonutils

Evgeniy Meshcheryakov 1 year ago
parent
commit
70ef1d76fd
1 changed files with 18 additions and 26 deletions
  1. 18 26
      mapeditor/jsonutils.cpp

+ 18 - 26
mapeditor/jsonutils.cpp

@@ -17,7 +17,7 @@ static QVariantMap JsonToMap(const JsonMap & json)
 	QVariantMap map;
 	for(auto & entry : json)
 	{
-		map.insert(QString::fromUtf8(entry.first.c_str()), JsonUtils::toVariant(entry.second));
+		map.insert(QString::fromStdString(entry.first), JsonUtils::toVariant(entry.second));
 	}
 	return map;
 }
@@ -61,23 +61,18 @@ QVariant toVariant(const JsonNode & node)
 {
 	switch(node.getType())
 	{
-		break;
 	case JsonNode::JsonType::DATA_NULL:
 		return QVariant();
-		break;
 	case JsonNode::JsonType::DATA_BOOL:
 		return QVariant(node.Bool());
-		break;
 	case JsonNode::JsonType::DATA_FLOAT:
-	case JsonNode::JsonType::DATA_INTEGER:
 		return QVariant(node.Float());
-		break;
+	case JsonNode::JsonType::DATA_INTEGER:
+		return QVariant{static_cast<qlonglong>(node.Integer())};
 	case JsonNode::JsonType::DATA_STRING:
-		return QVariant(QString::fromUtf8(node.String().c_str()));
-		break;
+		return QVariant(QString::fromStdString(node.String()));
 	case JsonNode::JsonType::DATA_VECTOR:
 		return JsonToList(node.Vector());
-		break;
 	case JsonNode::JsonType::DATA_STRUCT:
 		return JsonToMap(node.Struct());
 	}
@@ -87,34 +82,31 @@ QVariant toVariant(const JsonNode & node)
 QVariant JsonFromFile(QString filename)
 {
 	QFile file(filename);
-	file.open(QFile::ReadOnly);
-	auto data = file.readAll();
-
-	if(data.size() == 0)
+	if(!file.open(QFile::ReadOnly))
 	{
-		logGlobal->error("Failed to open file %s", filename.toUtf8().data());
-		return QVariant();
-	}
-	else
-	{
-		JsonNode node(reinterpret_cast<const std::byte*>(data.data()), data.size(), filename.toStdString());
-		return toVariant(node);
+		logGlobal->error("Failed to open file %s. Reason: %s", qUtf8Printable(filename), qUtf8Printable(file.errorString()));
+		return {};
 	}
+
+	const auto data = file.readAll();
+	JsonNode node(reinterpret_cast<const std::byte*>(data.data()), data.size(), filename.toStdString());
+	return toVariant(node);
 }
 
 JsonNode toJson(QVariant object)
 {
 	JsonNode ret;
 
-	if(object.canConvert<QVariantMap>())
-		ret.Struct() = VariantToMap(object.toMap());
-	else if(object.userType() == QMetaType::QString)
+	if(object.userType() == QMetaType::QString)
 		ret.String() = object.toString().toUtf8().data();
-	//QStirng can be converted to QVariantList, need to check first
-	else if(object.canConvert<QVariantList>())
-		ret.Vector() = VariantToList(object.toList());
 	else if(object.userType() == QMetaType::Bool)
 		ret.Bool() = object.toBool();
+	else if(object.canConvert<QVariantMap>())
+		ret.Struct() = VariantToMap(object.toMap());
+	else if(object.canConvert<QVariantList>())
+		ret.Vector() = VariantToList(object.toList());
+	else if(object.canConvert<int>())
+		ret.Integer() = object.toInt();
 	else if(object.canConvert<double>())
 		ret.Float() = object.toFloat();