1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87
|
#include "QvkVersion.h"
QvkVersion::QvkVersion()
{
connect( &manager, SIGNAL( finished( QNetworkReply* ) ), SLOT( downloadFinished( QNetworkReply* ) ) );
}
void QvkVersion::doDownload()
{
QNetworkRequest request( QUrl( "http://kohaupt-online.de/hp/version/VERSION" ) );
QNetworkReply *reply = manager.get( request );
currentDownloadsQList.append( reply );
}
bool QvkVersion::saveToDisk( const QString &remoteFilename, QIODevice *data )
{
QFile remoteFile( QDesktopServices::storageLocation ( QDesktopServices::TempLocation ) +
QDir::separator() +
remoteFilename );
if ( !remoteFile.open( QIODevice::WriteOnly ) )
{
fprintf( stderr, "Could not open %s for writing: %s\n", qPrintable( remoteFilename ), qPrintable( remoteFile.errorString() ) );
return false;
}
remoteFile.write( data->readAll() );
remoteFile.close();
return true;
}
void QvkVersion::downloadFinished( QNetworkReply *reply )
{
QString localVersionFilename = "vokoscreenVERSION";
QUrl url = reply->url();
if ( reply->error() )
{
fprintf( stderr, "[vokoscreen] Download of %s failed: %s\n", url.toEncoded().constData(), qPrintable( reply->errorString() ) );
}
else
{
if ( saveToDisk( localVersionFilename, reply ) )
printf( "[vokoscreen] File VERSION available\n" );
}
readVersionTempFile( localVersionFilename );
emit versionDownloadFinish();
}
void QvkVersion::readVersionTempFile( QString localVersionFilename )
{
QSettings settings( QDesktopServices::storageLocation ( QDesktopServices::TempLocation ) +
QDir::separator() +
localVersionFilename, QSettings::IniFormat );
settings.beginGroup( "Info" );
setRemoteVersion( settings.value( "Version" ).toString() );
settings.endGroup();
}
void QvkVersion::setRemoteVersion( QString version )
{
remoteVersion = version;
}
QString QvkVersion::getRemoteVersion()
{
return remoteVersion;
}
bool QvkVersion::isNewVersionAvailable( QString localVersion, QString remoteVersion )
{
if ( remoteVersion > localVersion )
return true;
else
return false;
}
|