| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113 |
- #include "versioncheck.h"
- #include "SNCDataBase.h"
- #include "loghelper.h"
- VersionCheck::VersionCheck()
- {
- this->local_app_version = SNCDataBase::getAppVersion();
- this->appconfig_url = SNCDataBase::getAppConfigUrl();
- stop = false;
- manager = 0;
- }
- VersionCheck::~VersionCheck()
- {
- qDebug()<<QDateTime::currentDateTime().toString("yyyy-MM-dd HH:mm:ss")\
- <<"VersionCheck Destroyed.";
- if(manager)
- delete manager;
- }
- bool VersionCheck::needUpdate()
- {
- if(!getServerConfig())
- return false;
- qDebug()<<QDateTime::currentDateTime().toString("yyyy-MM-dd HH:mm:ss")\
- <<"app xml fetched";
- QString minver = parser.minVer;
- QString maxver = parser.maxVer;
- QString curver = this->local_app_version;
- QRegExp exp("\\d+\.\\d+\.\\d+");
- qDebug()<<minver<<maxver<<curver;
- if(!exp.exactMatch(minver)||!exp.exactMatch((maxver))||!exp.exactMatch(curver))
- {
- return false;
- }
- if(compare(curver,maxver))
- {
- if(compare(curver,minver))
- {
- this->force = true;
- }
- else
- {
- this->force = false;
- }
- return true;
- }
- return false;
- }
- bool VersionCheck::isForce()
- {
- return this->force;
- }
- bool VersionCheck::getServerConfig()
- {
- QString config_url = appconfig_url;
- qDebug()<<appconfig_url;
- QString content = downloadFile(config_url);
- qDebug()<<content;
- return parser.readConfig(content);
- }
- QString VersionCheck::downloadFile(QString http_url)
- {
- QUrl url(http_url);
- QNetworkAccessManager manager;
- QNetworkReply *reply = manager.get(QNetworkRequest(url));
- QTextCodec::setCodecForCStrings(QTextCodec::codecForName("utf8"));
- QObject::connect(reply, SIGNAL(finished()), &loop, SLOT(quit()));
- QTimer::singleShot(10000, &loop, SLOT(quit()));
- loop.exec();
- QString content = reply->readAll();
- QTextCodec::setCodecForCStrings(QTextCodec::codecForName("system"));
- QTextCodec::setCodecForTr(QTextCodec::codecForName("system"));
- if(reply)
- delete reply;
- return content;
- }
- bool VersionCheck::compare(QString ver1, QString ver2)
- {
- QStringList list = ver1.split(".");
- int ver1Major = list.at(0).toInt();
- int ver1Middle = list.at(1).toInt();
- int ver1Last = list.at(2).toInt();
- list = ver2.split(".");
- int ver2Major = list.at(0).toInt();
- int ver2Middle = list.at(1).toInt();
- int ver2Last = list.at(2).toInt();
- qDebug()<<ver1Major<<ver1Middle<<ver1Last;
- qDebug()<<ver2Major<<ver2Middle<<ver2Last;
- if(ver1Major<ver2Major)
- {
- return true;
- }
- else if(ver1Major==ver2Major)
- {
- if(ver1Middle<ver2Middle)
- {
- return true;
- }
- else if(ver1Middle==ver2Middle)
- {
- if(ver1Last<ver2Last)
- {
- return true;
- }
- }
- }
- return false;
- }
|