/*
* Copyright (C) 2014 Nicolas Bonnefon and other contributors
*
* This file is part of glogg.
*
* glogg is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* glogg is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with glogg. If not, see .
*/
#ifndef VERSIONCHECKER_H
#define VERSIONCHECKER_H
#include
#include
#include
#include "persistable.h"
// This class holds the configuration options and persistent
// data for the version checker
class VersionCheckerConfig : public Persistable
{
public:
VersionCheckerConfig();
// Accessors
bool versionCheckingEnabled() const
{ return enabled_; }
void setVersionCheckingEnabled( bool enabled )
{ enabled_ = enabled; }
std::time_t nextDeadline() const
{ return next_deadline_; }
void setNextDeadline( std::time_t deadline )
{ next_deadline_ = deadline; }
// Reads/writes the current config in the QSettings object passed
virtual void saveToStorage( QSettings& settings ) const;
virtual void retrieveFromStorage( QSettings& settings );
private:
bool enabled_;
std::time_t next_deadline_;
};
// This class compares the current version number with the latest
// stored on a central server
class VersionChecker : public QObject
{
Q_OBJECT
public:
VersionChecker();
~VersionChecker();
// Starts an asynchronous check for a newer version if it is needed.
// A newVersionFound signal is sent if one is found.
// In case of error or if no new version is found, no signal is emitted.
void startCheck();
signals:
// New version "version" is available
void newVersionFound( const QString& version );
private slots:
// Called when download is finished
void downloadFinished( QNetworkReply* );
private:
static const char* VERSION_URL;
static const uint64_t CHECK_INTERVAL_S;
QNetworkAccessManager manager_;
};
#endif