#ifndef DUST3D_APPLICATION_UPDATES_CHECKER_H_ #define DUST3D_APPLICATION_UPDATES_CHECKER_H_ #include #include class UpdatesChecker : public QObject { Q_OBJECT signals: void finished(); public: struct UpdateItem { QString forTags; QString version; QString humanVersion; QString descriptionUrl; }; UpdatesChecker(); void start(); bool isLatest() const; bool hasError() const; const QString &message() const; const UpdateItem &matchedUpdateItem() const; private slots: void downloadFinished(QNetworkReply *reply); private: QNetworkAccessManager m_networkAccessManager; bool m_isLatest = false; QString m_message; QString m_latestUrl; bool m_hasError = true; UpdateItem m_matchedUpdateItem; bool parseUpdateInfoXml(const QByteArray &updateInfoXml, std::vector *updateItems); static bool isVersionLessThan(const QString &version, const QString &compareWith); }; #endif