#ifndef UPDATEPARSER_H #define UPDATEPARSER_H #include #include #include struct Update { public: explicit Update() { size=0;} explicit Update(const Update & copy) { type=copy.type; version=copy.version; platform=copy.platform; date=copy.date; filename=copy.filename; url=copy.url; hash=copy.hash; size=copy.size; notes=copy.notes; unzipped_path=copy.unzipped_path; } Update(QString _type, QString _version, QString _platform, QDate _date) { type=_type; version=_version; platform=_platform; date=_date; size=0; } QString type; QString version; QString platform; QDate date; QString filename; QString url; QString hash; qint64 size; QString notes; QString unzipped_path; }; struct Release { Release() {} Release(const Release & copy) { version=copy.version; codename=copy.version; notes=copy.notes; info_url=copy.info_url; status=copy.status; updates=copy.updates; } Release(QString ver, QString code, QString stat) { version=ver; codename=code; status=stat; } QString version; QString codename; QString status; QString info_url; QHash notes; // by platform QHash > updates; }; Q_DECLARE_METATYPE(Update *) class UpdateParser:public QXmlDefaultHandler { public: bool startDocument(); bool endElement(const QString &namespaceURI, const QString &localName, const QString &name); bool characters(const QString &ch); bool startElement(const QString &namespaceURI, const QString &localName, const QString &name, const QXmlAttributes &atts); bool endDocument(); QString latest() { return latest_version; } QHash releases; private: Update * update; Release * release; QString version, platform; QString release_date; QString latest_version; bool inRelease; bool inUpdate; bool inNotes; bool inUpdateNotes; }; #endif // UPDATEPARSER_H