diff options
Diffstat (limited to 'common')
-rw-r--r-- | common/system.cpp | 9 | ||||
-rw-r--r-- | common/system.h | 24 | ||||
-rw-r--r-- | common/updates.h | 102 |
3 files changed, 135 insertions, 0 deletions
diff --git a/common/system.cpp b/common/system.cpp index 8d5bfd39cd..59210544ab 100644 --- a/common/system.cpp +++ b/common/system.cpp @@ -28,6 +28,7 @@ #include "common/savefile.h" #include "common/str.h" #include "common/taskbar.h" +#include "common/updates.h" #include "common/textconsole.h" #include "backends/audiocd/default/default-audiocd.h" @@ -44,6 +45,9 @@ OSystem::OSystem() { #if defined(USE_TASKBAR) _taskbarManager = 0; #endif +#if defined(USE_UPDATES) + _updateManager = 0; +#endif _fsFactory = 0; } @@ -62,6 +66,11 @@ OSystem::~OSystem() { _taskbarManager = 0; #endif +#if defined(USE_UPDATES) + delete _updateManager; + _updateManager = 0; +#endif + delete _savefileManager; _savefileManager = 0; diff --git a/common/system.h b/common/system.h index 9b833c5b1a..600778d8e1 100644 --- a/common/system.h +++ b/common/system.h @@ -45,6 +45,9 @@ class String; #if defined(USE_TASKBAR) class TaskbarManager; #endif +#if defined(USE_UPDATES) +class UpdateManager; +#endif class TimerManager; class SeekableReadStream; class WriteStream; @@ -161,6 +164,15 @@ protected: Common::TaskbarManager *_taskbarManager; #endif +#if defined(USE_UPDATES) + /** + * No default value is provided for _updateManager by OSystem. + * + * @note _updateManager is deleted by the OSystem destructor. + */ + Common::UpdateManager *_updateManager; +#endif + /** * No default value is provided for _fsFactory by OSystem. * @@ -1071,6 +1083,18 @@ public: } #endif +#if defined(USE_UPDATES) + /** + * Returns the UpdateManager, used to handle auto-updating, + * and updating of ScummVM in general. + * + * @return the UpdateManager for the current architecture + */ + virtual Common::UpdateManager *getUpdateManager() { + return _updateManager; + } +#endif + /** * Returns the FilesystemFactory object, depending on the current architecture. * diff --git a/common/updates.h b/common/updates.h new file mode 100644 index 0000000000..1e0babdf6d --- /dev/null +++ b/common/updates.h @@ -0,0 +1,102 @@ +/* ScummVM - Graphic Adventure Engine + * + * ScummVM is the legal property of its developers, whose names + * are too numerous to list here. Please refer to the COPYRIGHT + * file distributed with this source distribution. + * + * This program 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 2 + * of the License, or (at your option) any later version. + + * This program 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 this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + * + */ + +#ifndef BACKENDS_UPDATES_ABSTRACT_H +#define BACKENDS_UPDATES_ABSTRACT_H + +#if defined(USE_UPDATES) + +namespace Common { + +/** + * The UpdateManager allows configuring of the automatic update checking + * for systems that support it: + * - using Sparkle on MacOSX + * - using WinSparkle on Windows + * + * Most of the update checking is completely automated and this class only + * gives access to basic settings. It is mostly used by the GUI to set + * widgets state on the update page and for manually checking for updates + * + */ +class UpdateManager { +public: + enum UpdateState { + kUpdateStateDisabled = 0, + kUpdateStateEnabled = 1, + kUpdateStateNotSupported = 2 + }; + + enum UpdateInterval { + kUpdateIntervalNotSupported = 0, + kUpdateIntervalOneDay = 86400, + kUpdateIntervalOneWeek = 604800, + kUpdateIntervalOneMonth = 2628000 // average seconds per month (60*60*24*365)/12 + }; + + UpdateManager() {} + virtual ~UpdateManager() {} + + /** + * Checks manually if an update is available, showing progress UI to the user. + * + * By default, update checks are done silently on start. + * This allows to manually start an update check. + */ + virtual void checkForUpdates() {} + + /** + * Sets the automatic update checking state + * + * @param state The state. + */ + virtual void setAutomaticallyChecksForUpdates(UpdateState state) {} + + /** + * Gets the automatic update checking state + * + * @return kUpdateStateDisabled if automatic update checking is disabled, + * kUpdateStateEnabled if automatic update checking is enabled, + * kUpdateStateNotSupported if automatic update checking is not available + */ + virtual UpdateState getAutomaticallyChecksForUpdates() { return kUpdateStateNotSupported; } + + /** + * Sets the update checking interval. + * + * @param interval The interval. + */ + virtual void setUpdateCheckInterval(UpdateInterval interval) {} + + /** + * Gets the update check interval. + * + * @return the update check interval. + */ + virtual UpdateInterval getUpdateCheckInterval() { return kUpdateIntervalNotSupported; } +}; + +} // End of namespace Common + +#endif + +#endif // BACKENDS_UPDATES_ABSTRACT_H |