desktop/src/gui/updater/updateinfo.cpp

109 lines
2.5 KiB
C++

// This file is generated by kxml_compiler from occinfo.xml.
#include "updateinfo.h"
#include "updater.h"
#include <QtDebug>
#include <QFile>
#include <QDomDocument>
#include <QtCore/QtDebug>
#include <QtCore/QFile>
namespace OCC {
void UpdateInfo::setVersion(const QString &v)
{
mVersion = v;
}
QString UpdateInfo::version() const
{
return mVersion;
}
void UpdateInfo::setVersionString(const QString &v)
{
mVersionString = v;
}
QString UpdateInfo::versionString() const
{
return mVersionString;
}
void UpdateInfo::setWeb(const QString &v)
{
mWeb = v;
}
QString UpdateInfo::web() const
{
return mWeb;
}
void UpdateInfo::setDownloadUrl(const QString &v)
{
mDownloadUrl = v;
}
QString UpdateInfo::downloadUrl() const
{
return mDownloadUrl;
}
UpdateInfo UpdateInfo::parseElement(const QDomElement &element, bool *ok)
{
if (element.tagName() != QLatin1String("owncloudclient")) {
qCCritical(lcUpdater) << "Expected 'owncloudclient', got '" << element.tagName() << "'.";
if (ok)
*ok = false;
return UpdateInfo();
}
UpdateInfo result = UpdateInfo();
QDomNode n;
for (n = element.firstChild(); !n.isNull(); n = n.nextSibling()) {
QDomElement e = n.toElement();
if (e.tagName() == QLatin1String("version")) {
result.setVersion(e.text());
} else if (e.tagName() == QLatin1String("versionstring")) {
result.setVersionString(e.text());
} else if (e.tagName() == QLatin1String("web")) {
result.setWeb(e.text());
} else if (e.tagName() == QLatin1String("downloadurl")) {
result.setDownloadUrl(e.text());
}
}
if (ok)
*ok = true;
return result;
}
UpdateInfo UpdateInfo::parseString(const QString &xml, bool *ok)
{
QString errorMsg;
int errorLine = 0, errorCol = 0;
QDomDocument doc;
if (!doc.setContent(xml, false, &errorMsg, &errorLine, &errorCol)) {
qCWarning(lcUpdater).noquote().nospace() << errorMsg << " at " << errorLine << "," << errorCol
<< "\n" << xml.split("\n").value(errorLine-1) << "\n"
<< QString(" ").repeated(errorCol - 1) << "^\n"
<< "->" << xml << "<-";
if (ok)
*ok = false;
return UpdateInfo();
}
bool documentOk = false;
UpdateInfo c = parseElement(doc.documentElement(), &documentOk);
if (ok) {
*ok = documentOk;
}
return c;
}
} // namespace OCC