From 70c1e8e5bae373c4660e460703b577336caac8b0 Mon Sep 17 00:00:00 2001 From: Benjamin Dobell Date: Fri, 8 Jul 2011 23:40:28 +1000 Subject: 1.3 beta --- heimdall-frontend/Source/FirmwareInfo.cpp | 137 ++++++++++++++++++++++-------- 1 file changed, 100 insertions(+), 37 deletions(-) (limited to 'heimdall-frontend/Source/FirmwareInfo.cpp') diff --git a/heimdall-frontend/Source/FirmwareInfo.cpp b/heimdall-frontend/Source/FirmwareInfo.cpp index 39ec242..aee9313 100755 --- a/heimdall-frontend/Source/FirmwareInfo.cpp +++ b/heimdall-frontend/Source/FirmwareInfo.cpp @@ -1,4 +1,4 @@ -/* Copyright (c) 2010 Benjamin Dobell, Glass Echidna +/* Copyright (c) 2010-2011 Benjamin Dobell, Glass Echidna Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal @@ -19,6 +19,7 @@ THE SOFTWARE.*/ // Heimdall Frontend +#include "Alerts.h" #include "FirmwareInfo.h" using namespace HeimdallFrontend; @@ -50,7 +51,7 @@ bool DeviceInfo::ParseXml(QXmlStreamReader& xml) { if (foundManufacturer) { - // TODO: "Found multiple device manufacturers." + Alerts::DisplayError("Found multiple elements in ."); return (false); } @@ -62,7 +63,7 @@ bool DeviceInfo::ParseXml(QXmlStreamReader& xml) { if (foundProduct) { - // TODO: "Found multiple device product identifiers." + Alerts::DisplayError("Found multiple elements in ."); return (false); } @@ -74,7 +75,7 @@ bool DeviceInfo::ParseXml(QXmlStreamReader& xml) { if (foundName) { - // TODO: "Found multiple device names.")); + Alerts::DisplayError("Found multiple elements in ."); return (false); } @@ -82,17 +83,32 @@ bool DeviceInfo::ParseXml(QXmlStreamReader& xml) name = xml.readElementText(); } + else + { + Alerts::DisplayError(QString("<%1> is not a valid child of .").arg(xml.name().toString())); + return (false); + } } else if (nextToken == QXmlStreamReader::EndElement) { if (xml.name() == "device") - return (foundManufacturer && foundProduct && foundName); + { + if (foundManufacturer && foundProduct && foundName) + { + return (true); + } + else + { + Alerts::DisplayError("Required elements are missing from ."); + return (false); + } + } } else { if (!(nextToken == QXmlStreamReader::Characters && xml.isWhitespace())) { - // TODO: "Unexpected token found in " + Alerts::DisplayError("Unexpected token found in ."); return (false); } } @@ -154,7 +170,7 @@ bool PlatformInfo::ParseXml(QXmlStreamReader& xml) { if (foundName) { - // TODO: "Found multiple platform names." + Alerts::DisplayError("Found multiple elements in ."); return (false); } @@ -166,7 +182,7 @@ bool PlatformInfo::ParseXml(QXmlStreamReader& xml) { if (foundVersion) { - // TODO: "Found multiple platform versions." + Alerts::DisplayError("Found multiple elements in ."); return (false); } @@ -176,20 +192,30 @@ bool PlatformInfo::ParseXml(QXmlStreamReader& xml) } else { - // TODO: "found unknown sub-element <" + xml.name() + ">." + Alerts::DisplayError(QString("<%1> is not a valid child of .").arg(xml.name().toString())); return (false); } } else if (nextToken == QXmlStreamReader::EndElement) { if (xml.name() == "platform") - return (foundName && foundVersion); + { + if (foundName && foundVersion) + { + return (true); + } + else + { + Alerts::DisplayError("Required elements are missing from ."); + return (false); + } + } } else { if (!(nextToken == QXmlStreamReader::Characters && xml.isWhitespace())) { - // TODO: "Unexpected token found in " + Alerts::DisplayError("Unexpected token found in ."); return (false); } } @@ -240,7 +266,7 @@ bool FileInfo::ParseXml(QXmlStreamReader& xml) { if (foundId) { - // TODO: "Found multiple file IDs." + Alerts::DisplayError("Found multiple elements in ."); return (false); } @@ -252,7 +278,7 @@ bool FileInfo::ParseXml(QXmlStreamReader& xml) { if (foundFilename) { - // TODO: "Found multiple file filenames." + Alerts::DisplayError("Found multiple elements in ."); return (false); } @@ -260,17 +286,32 @@ bool FileInfo::ParseXml(QXmlStreamReader& xml) filename = xml.readElementText(); } + else + { + Alerts::DisplayError(QString("<%1> is not a valid child of .").arg(xml.name().toString())); + return (false); + } } else if (nextToken == QXmlStreamReader::EndElement) { if (xml.name() == "file") - return (foundId && foundFilename); + { + if (foundId && foundFilename) + { + return (true); + } + else + { + Alerts::DisplayError("Required elements are missing from ."); + return (false); + } + } } else { if (!(nextToken == QXmlStreamReader::Characters && xml.isWhitespace())) { - // TODO: "Unexpected token found in " + Alerts::DisplayError("Unexpected token found in ."); return (false); } } @@ -353,13 +394,13 @@ bool FirmwareInfo::ParseXml(QXmlStreamReader& xml) if (!xml.readNextStartElement()) { - // TODO: "Failed to find element." + Alerts::DisplayError("Failed to find element."); return (false); } if (xml.name() != "firmware") { - // TODO: "Expected element but found <%s>" + Alerts::DisplayError(QString("Expected element but found <%1>.").arg(xml.name().toString())); return (false); } @@ -368,7 +409,7 @@ bool FirmwareInfo::ParseXml(QXmlStreamReader& xml) if (formatVersionString.isEmpty()) { - // TODO: is missing a version." + Alerts::DisplayError(" is missing the version attribute."); return (false); } @@ -377,13 +418,13 @@ bool FirmwareInfo::ParseXml(QXmlStreamReader& xml) if (!parsedVersion) { - // TODO: " contains a malformed version." + Alerts::DisplayError(" contains a malformed version."); return (false); } if (formatVersion > kVersion) { - // TODO: "Package is for a newer version of Heimdall Frontend. Please download the latest version of Heimdall Frontend." + Alerts::DisplayError("Package is for a newer version of Heimdall Frontend.\nPlease download the latest version of Heimdall Frontend."); return (false); } @@ -397,7 +438,7 @@ bool FirmwareInfo::ParseXml(QXmlStreamReader& xml) { if (foundName) { - // TODO: "Found multiple firmware names." + Alerts::DisplayError("Found multiple elements in ."); return (false); } @@ -408,7 +449,7 @@ bool FirmwareInfo::ParseXml(QXmlStreamReader& xml) { if (foundVersion) { - // TODO: "Found multiple firmware versions." + Alerts::DisplayError("Found multiple elements in ."); return (false); } @@ -419,7 +460,7 @@ bool FirmwareInfo::ParseXml(QXmlStreamReader& xml) { if (foundPlatform) { - // TODO: "Found multiple firmware platforms." + Alerts::DisplayError("Found multiple elements in ."); return (false); } @@ -432,7 +473,7 @@ bool FirmwareInfo::ParseXml(QXmlStreamReader& xml) { if (foundDevelopers) { - // TODO: "Found multiple sets of firmware developers." + Alerts::DisplayError("Found multiple elements in ."); return (false); } @@ -445,7 +486,14 @@ bool FirmwareInfo::ParseXml(QXmlStreamReader& xml) if (nextToken == QXmlStreamReader::StartElement) { if (xml.name() == "name") + { developers.append(xml.readElementText()); + } + else + { + Alerts::DisplayError(QString("<%1> is not a valid child of .").arg(xml.name().toString())); + return (false); + } } else if (nextToken == QXmlStreamReader::EndElement) { @@ -456,7 +504,7 @@ bool FirmwareInfo::ParseXml(QXmlStreamReader& xml) { if (!(nextToken == QXmlStreamReader::Characters && xml.isWhitespace())) { - // TODO: "Unexpected token found in " + Alerts::DisplayError("Unexpected token found in ."); return (false); } } @@ -466,7 +514,7 @@ bool FirmwareInfo::ParseXml(QXmlStreamReader& xml) { if (foundUrl) { - // TODO: "Found multiple firmware URLs." + Alerts::DisplayError("Found multiple elements in ."); return (false); } @@ -478,7 +526,7 @@ bool FirmwareInfo::ParseXml(QXmlStreamReader& xml) { if (foundDonateUrl) { - // TODO: "Found multiple firmware donate URLs." + Alerts::DisplayError("Found multiple elements in ."); return (false); } @@ -490,7 +538,7 @@ bool FirmwareInfo::ParseXml(QXmlStreamReader& xml) { if (foundDevices) { - // TODO: "Found multiple sets of firmware devices." + Alerts::DisplayError("Found multiple elements in ."); return (false); } @@ -511,6 +559,11 @@ bool FirmwareInfo::ParseXml(QXmlStreamReader& xml) deviceInfos.append(deviceInfo); } + else + { + Alerts::DisplayError(QString("<%1> is not a valid child of .").arg(xml.name().toString())); + return (false); + } } else if (nextToken == QXmlStreamReader::EndElement) { @@ -521,7 +574,7 @@ bool FirmwareInfo::ParseXml(QXmlStreamReader& xml) { if (!(nextToken == QXmlStreamReader::Characters && xml.isWhitespace())) { - // TODO: "Unexpected token found in " + Alerts::DisplayError("Unexpected token found in ."); return (false); } } @@ -531,7 +584,7 @@ bool FirmwareInfo::ParseXml(QXmlStreamReader& xml) { if (foundPit) { - // TODO: "Found multiple firmware PIT files." + Alerts::DisplayError("Found multiple elements in ."); return (false); } @@ -543,7 +596,7 @@ bool FirmwareInfo::ParseXml(QXmlStreamReader& xml) { if (foundRepartition) { - // TODO: "Found multiple firmware repartition values." + Alerts::DisplayError("Found multiple elements in ."); return (false); } @@ -555,7 +608,7 @@ bool FirmwareInfo::ParseXml(QXmlStreamReader& xml) { if (foundNoReboot) { - // TODO: "Found multiple firmware noreboot values." + Alerts::DisplayError("Found multiple elements in ."); return (false); } @@ -567,7 +620,7 @@ bool FirmwareInfo::ParseXml(QXmlStreamReader& xml) { if (foundFiles) { - // TODO: "Found multiple sets of firmware files." + Alerts::DisplayError("Found multiple elements in ."); return (false); } @@ -588,6 +641,11 @@ bool FirmwareInfo::ParseXml(QXmlStreamReader& xml) fileInfos.append(fileInfo); } + else + { + Alerts::DisplayError(QString("<%1> is not a valid child of .").arg(xml.name().toString())); + return (false); + } } else if (nextToken == QXmlStreamReader::EndElement) { @@ -598,7 +656,7 @@ bool FirmwareInfo::ParseXml(QXmlStreamReader& xml) { if (!(nextToken == QXmlStreamReader::Characters && xml.isWhitespace())) { - // TODO: "Unexpected token found in " + Alerts::DisplayError("Unexpected token found in ."); return (false); } } @@ -606,7 +664,7 @@ bool FirmwareInfo::ParseXml(QXmlStreamReader& xml) } else { - // TODO: "unknown sub-element <" + xml.name() + ">." + Alerts::DisplayError(QString("<%1> is not a valid child of .").arg(xml.name().toString())); return (false); } } @@ -615,16 +673,21 @@ bool FirmwareInfo::ParseXml(QXmlStreamReader& xml) if (xml.name() == "firmware") { if (!(foundName && foundVersion && foundPlatform && foundDevelopers && foundDevices && foundPit && foundRepartition && foundNoReboot && foundFiles)) + { + Alerts::DisplayError("Required elements are missing from ."); return (false); + } else + { break; + } } } else { if (!(nextToken == QXmlStreamReader::Characters && xml.isWhitespace())) { - // TODO: "Unexpected token found in " + Alerts::DisplayError("Unexpected token found in ."); return (false); } } @@ -635,7 +698,7 @@ bool FirmwareInfo::ParseXml(QXmlStreamReader& xml) if (!xml.atEnd()) { - // TODO: "Found data after " + Alerts::DisplayError("Found data after ."); return (false); } -- cgit v1.2.3