示例#1
0
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;
    }
}
示例#2
0
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();

}