aboutsummaryrefslogtreecommitdiff
path: root/common/updates.h
blob: 812aac718ee5f7aebfc929104aa7dd5a75e6db4c (plain)
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
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
/* 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 COMMON_UPDATES_H
#define COMMON_UPDATES_H

#if defined(USE_UPDATES)

namespace Common {

/**
 * The UpdateManager allows configuring of the automatic update checking
 * for systems that support it:
 *  - using Sparkle on Mac OS X
 *  - 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(int interval) {}

	/**
	 * Gets the update check interval.
	 *
	 * @return  the update check interval.
	 */
	virtual int getUpdateCheckInterval() { return kUpdateIntervalNotSupported; }

	/**
	 * Gets last update check time
	 *
	 * @param  t    TimeDate struct to fill out
	 * @return flag indicating success
	 */
	virtual bool getLastUpdateCheckTimeAndDate(TimeDate &t) { return false; }

	/**
	 * Returns list of supported uptate intervals.
	 * Ending with '-1' which is not acceptable value.
	 *
	 * @return  list of integer values representing update intervals in seconds.
	 */
	static const int *getUpdateIntervals();

	/**
	 * Returns string representation of a given interval.
	 *
	 * @param  interval    The interval.
	 * @return  pointer to localized string of given interval.
	 */
	static const char *updateIntervalToString(int interval);

	/**
	 * Rounds up the given interval to acceptable value.
	 *
	 * @param  interval    The interval.
	 * @return  rounded up interval
	 */
	static int normalizeInterval(int interval);
};

} // End of namespace Common

#endif

#endif // COMMON_UPDATES_H