void UpdateChecker::checkUpdate() { QString applicationName = ApplicationManager::getInstance()->getApplicationName().remove(" "); /** * dokumentacja dla http://agila.bluebraces.com/service/checkUpdate/$appName/$versionCode * * @param $appName dozwolone wartości "AgilaFaktury", "AgilaS3" (bez spacji!) * @param $versionCode - aktualny numer wersji kodu * @return 'NONE' - niewłaściwa liczba argumentów * @return 'INCORRECT_APP_NAME' - niewłasciwa nazwa aplikacji * @return '{"newVersionCode":2,"newVersionName":"1.2","downloadLink":...}' - odpowiedz JSON */ QStringList args; // kolejność ma znaczenie! args << applicationName << QVariant(ApplicationInfo::getVersionCode()).toString(); HttpRequester *requester = new HttpRequester(); try { QString response = requester->sendAgilaServiceRequest("checkUpdate", args); delete requester; if(response == "NONE") { emit noUpdateAvailable(); } else if(response == "INCORRECT_APP_NAME") { // "Błąd wywołania requestu! Błąd: 102"; } else if(response.startsWith("{")) { // jest dostępna aktualizacja JsonObject *jObject = new JsonObject(response); UpdateInfo updateInfo; updateInfo.setNewVersionCode(jObject->getInt("newVersionCode")); updateInfo.setNewVersionName(jObject->getString("newVersionName")); updateInfo.setDownloadLink(jObject->getString("downloadLink")); delete jObject; emit updateAvailable(updateInfo); } } catch(NoHttpResponseException *e) { delete requester; } }
void UpdateDialog::checkForUpdatesDone(const QString &newVersion, bool available, const QString &changelog) { if (!available) { emit noUpdateAvailable(); return; } bool hasChangelog = !changelog.isEmpty(); if (hasChangelog) { ui->labelChangelog->setTextFormat(Qt::RichText); ui->labelChangelog->setText(parseMarkdown(changelog)); } ui->checkShowChangelog->setVisible(hasChangelog); ui->scrollArea->setVisible(hasChangelog && ui->checkShowChangelog->isChecked()); ui->labelVersion->setText(tr("Version <b>%1</b>").arg(newVersion)); show(); activateWindow(); }
void UpdateChecker::processData() { QByteArray buf; buf.append(_socket->readAll()); bool endOfLine = false; while ((!endOfLine)) { char ch; if(_socket->bytesAvailable()>0) { int bytesRead = _socket->read(&ch, sizeof(ch)); if (bytesRead == sizeof(ch)) { //cnt++; buf.append( ch ); if(_socket->bytesAvailable()==0) { endOfLine = true; } } } else { break; } } QString message(buf); QStringList parts = message.split("###",QString::SkipEmptyParts); if(parts.length() < 2) { qDebug() << "No version file found"; emit noUpdateAvailable(); } QString version= parts[1]; qDebug() << version; _socket->close(); QStringList tokens = version.split(".",QString::SkipEmptyParts); quint8 major_v = tokens[0].toInt(); quint8 minor_v = tokens[1].toInt(); quint8 rev_v = tokens[2].toInt(); if(major_v > VERSION_MAJOR) { emit updateAvailable(version); return; } if(minor_v > VERSION_MINOR) { emit updateAvailable(version); return; } if(rev_v > VERSION_REV) { emit updateAvailable(version); return; } emit noUpdateAvailable(); }