#include "versionmanager.h" #include "SNCDataBase.h" #include "loghelper.h" VersionManager::VersionManager() { this->local_app_version = SNCDataBase::getAppVersion(); this->local_seg_version = SNCDataBase::getSegVersion(); this->config_urls = SNCDataBase::getConfigServerUrls(); stop = false; } bool VersionManager::needUpdate() { if(!getServerConfig()) return false; SNCDataBase::updateConfigUrls(parser.config_urls); SNCDataBase::updateBannerAd(parser.banner_ad); SNCDataBase::updateTextAd(parser.text_ads); SNCDataBase::updateCorpPrefix(parser.corp_prefix); //SNCDataBase::updateClientConfig(parser.client_config); int server_app_sn = parser.current_app_version; int local_app_sn= parser.app_map.value(this->local_app_version); if(server_app_sn<=local_app_sn) return false; QFile file(QDir::tempPath()+"/snc_update.log"); if(!file.open(QIODevice::WriteOnly)) return 0 ; QTextStream out(&file); for(int i=server_app_sn-1;i>=local_app_sn;i--) { QString log_file = parser.app_update_logs.value(i); QString content = downloadFile(log_file); out << content+"\r\n"; } file.close(); this->app_patch_url = parser.app_patch_urls.value(local_app_sn); this->app_update = parser.update; return true; } QString VersionManager::getAppPatchUrl() { return this->app_patch_url; } QString VersionManager::getAppUpdateState() { return this->app_update; } bool VersionManager::getServerConfig() { bool success = false; for(int i=0;iparser = p; break; } } return success; } void VersionManager::replyFinished(QNetworkReply *reply) { QTextCodec *codec; QVariant var = reply->header(QNetworkRequest::ContentTypeHeader); QString codeType = var.toByteArray(); int index = codeType.size() - codeType.lastIndexOf("=") - 1; codeType = codeType.right(index); codec = QTextCodec::codecForName(codeType.toAscii()); file_content = reply->readAll(); emit finished1(); stop =true; } QString VersionManager::downloadFile(QString http_url) { QUrl url(http_url); QNetworkAccessManager manager; QNetworkReply *reply = manager.get(QNetworkRequest(url)); QTextCodec *codec; QObject::connect(reply, SIGNAL(finished()), &loop, SLOT(quit())); QTimer::singleShot(10000, &loop, SLOT(quit())); loop.exec(); QVariant var = reply->header(QNetworkRequest::ContentTypeHeader); QString codeType = var.toByteArray(); int index = codeType.size() - codeType.lastIndexOf("=") - 1; codeType = codeType.right(index); codec = QTextCodec::codecForName(codeType.toAscii()); QString content = reply->readAll(); return content; }