ButeoSynchronizationFramework
SyncSchedule.h
1 /*
2  * This file is part of buteo-syncfw package
3  *
4  * Copyright (C) 2010 Nokia Corporation and/or its subsidiary(-ies).
5  * Copyright (C) 2014-2015 Jolla Ltd
6  *
7  * Contact: Sateesh Kavuri <sateesh.kavuri@nokia.com>
8  *
9  * This library is free software; you can redistribute it and/or
10  * modify it under the terms of the GNU Lesser General Public License
11  * version 2.1 as published by the Free Software Foundation.
12  *
13  * This library is distributed in the hope that it will be useful, but
14  * WITHOUT ANY WARRANTY; without even the implied warranty of
15  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
16  * Lesser General Public License for more details.
17  *
18  * You should have received a copy of the GNU Lesser General Public
19  * License along with this library; if not, write to the Free Software
20  * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
21  * 02110-1301 USA
22  *
23  */
24 #ifndef SYNCSCHEDULE_H
25 #define SYNCSCHEDULE_H
26 
27 #include <QTime>
28 #include <QSet>
29 
30 class QDomDocument;
31 class QDomElement;
32 
33 namespace Buteo {
34 
35 class SyncSchedulePrivate;
36 class SyncScheduleTest;
37 
38 typedef QSet<int> DaySet;
39 
40 const QString SYNC_SCHEDULE_ENABLED_KEY_BOOL("scheduler/schedule_enabled");
41 const QString SYNC_SCHEDULE_PEAK_ENABLED_KEY_BOOL("scheduler/schedule_peak_enabled");
42 const QString SYNC_SCHEDULE_OFFPEAK_ENABLED_KEY_BOOL("scheduler/schedule_offpeak_enabled");
43 const QString SYNC_SCHEDULE_PEAK_DAYS_KEY_INT ("scheduler/schedule_peak_days");
44 const QString SYNC_SCHEDULE_PEAK_START_TIME_KEY_INT ("scheduler/schedule_peak_start_time");
45 const QString SYNC_SCHEDULE_PEAK_END_TIME_KEY_INT ("scheduler/schedule_peak_end_time");
46 const QString SYNC_SCHEDULE_PEAK_SCHEDULE_KEY_INT ("scheduler/schedule_peak");
47 const QString SYNC_SCHEDULE_OFFPEAK_SCHEDULE_KEY_INT ("scheduler/schedule_off_peak");
48 
53 {
54 public:
58  SyncSchedule();
59 
64  SyncSchedule(const SyncSchedule &aSource);
65 
70  explicit SyncSchedule(const QDomElement &aRoot);
71 
74  ~SyncSchedule();
75 
80  SyncSchedule& operator=(const SyncSchedule &aRhs);
81 
86  bool operator==(const SyncSchedule &aRhs);
87 
93  QDomElement toXml(QDomDocument &aDoc) const;
94 
99  QString toString() const;
100 
107  DaySet days() const;
108 
113  void setDays(const DaySet &aDays);
114 
119  QTime time() const;
120 
126  void setTime(const QTime &aTime);
127 
128 
133  void setScheduleConfiguredTime(const QDateTime &aDateTime);
134 
139  QDateTime scheduleConfiguredTime();
140 
145  unsigned interval() const;
146 
152  void setInterval(unsigned aInterval);
153 
158  bool scheduleEnabled() const;
159 
164  void setScheduleEnabled(bool aEnabled);
165 
166  // ============== RUSH HOUR SETTINGS ============================
167 
168 
173  bool rushEnabled() const;
174 
179  void setRushEnabled(bool aEnabled);
180 
187  bool syncExternallyDuringRush() const;
188 
193  void setSyncExternallyDuringRush(bool aEnabled);
194 
199  DaySet rushDays() const;
200 
205  void setRushDays(const DaySet &aDays);
206 
211  QTime rushBegin() const;
212 
217  QTime rushEnd() const;
218 
224  void setRushTime(const QTime &aBegin, const QTime &aEnd);
225 
230  unsigned rushInterval() const;
231 
236  void setRushInterval(unsigned aInterval);
237 
242  bool inExternalSyncRushPeriod(const QDateTime &aDateTime) const;
243 
250  QDateTime nextSyncTime(const QDateTime &aPrevSync) const;
251 
258  QDateTime nextRushSwitchTime(const QDateTime& aFromTime) const;
259 
260 private:
261 
262  SyncSchedulePrivate* d_ptr;
263 
264 #ifdef SYNCFW_UNIT_TESTS
265  friend class SyncScheduleTest;
266 #endif
267 
268 };
269 
270 }
271 
272 #endif // SYNCSCHEDULE_H
Class for handling sync schedule settings.
Definition: SyncSchedule.h:52
void setRushDays(const DaySet &aDays)
Sets days enabled for rush hours.
Definition: SyncSchedule.cpp:245
void setScheduleEnabled(bool aEnabled)
Sets if normal schedule is to be obeyed.
Definition: SyncSchedule.cpp:215
DaySet rushDays() const
Gets days enabled for rush hours.
Definition: SyncSchedule.cpp:240
~SyncSchedule()
Destructor.
Definition: SyncSchedule.cpp:92
void setRushInterval(unsigned aInterval)
Sets sync interval for rush hours.
Definition: SyncSchedule.cpp:271
QDomElement toXml(QDomDocument &aDoc) const
Exports the sync schedule to XML.
Definition: SyncSchedule.cpp:133
void setRushEnabled(bool aEnabled)
Sets rush hour schedule is to be obeyed.
Definition: SyncSchedule.cpp:225
QDateTime scheduleConfiguredTime()
To get the scheduled config time.
Definition: SyncSchedule.cpp:185
void setScheduleConfiguredTime(const QDateTime &aDateTime)
Sets scheduled config time.
Definition: SyncSchedule.cpp:180
Definition: AccountsHelper.h:31
bool scheduleEnabled() const
Checks if normal schedule is obeyed.
Definition: SyncSchedule.cpp:210
void setRushTime(const QTime &aBegin, const QTime &aEnd)
Sets begin and end times of rush hours.
Definition: SyncSchedule.cpp:260
SyncSchedule()
Constructs an empty schedule.
Definition: SyncSchedule.cpp:55
unsigned rushInterval() const
Gets sync interval for rush hours.
Definition: SyncSchedule.cpp:266
void setTime(const QTime &aTime)
Sets the exact time for sync.
Definition: SyncSchedule.cpp:195
QString toString() const
Exports the sync schedule to QString.
Definition: SyncSchedule.cpp:157
void setSyncExternallyDuringRush(bool aEnabled)
Sets if rush schedule is controlled by a external process.
Definition: SyncSchedule.cpp:235
Private implementation class for SyncSchedule.
Definition: SyncSchedule_p.h:33
QDateTime nextRushSwitchTime(const QDateTime &aFromTime) const
Gets next time to switch rush/off-rush schedule intervals.
Definition: SyncSchedule.cpp:468
void setInterval(unsigned aInterval)
Sets sync interval in minutes.
Definition: SyncSchedule.cpp:205
QTime time() const
Gets the exact time set in sync schedule.
Definition: SyncSchedule.cpp:190
QTime rushEnd() const
Gets end time of rush hours.
Definition: SyncSchedule.cpp:255
unsigned interval() const
Gets sync interval in minutes.
Definition: SyncSchedule.cpp:200
void setDays(const DaySet &aDays)
Sets the enabled week days.
Definition: SyncSchedule.cpp:175
QTime rushBegin() const
Gets begin time of rush hours.
Definition: SyncSchedule.cpp:250
DaySet days() const
Gets the enabled week days of the sync schedule.
Definition: SyncSchedule.cpp:170
bool operator==(const SyncSchedule &aRhs)
Equal to operator.
Definition: SyncSchedule.cpp:109
SyncSchedule & operator=(const SyncSchedule &aRhs)
Assignment operator.
Definition: SyncSchedule.cpp:98
bool rushEnabled() const
Checks if rush hour schedule is to be obeyed.
Definition: SyncSchedule.cpp:220
bool inExternalSyncRushPeriod(const QDateTime &aDateTime) const
Checks if a given time is inside rush hour and if the sync is controlled by a external process...
Definition: SyncSchedule.cpp:276
QDateTime nextSyncTime(const QDateTime &aPrevSync) const
Gets next sync time based on the sync schedule settings.
Definition: SyncSchedule.cpp:286
bool syncExternallyDuringRush() const
Checks if rush schedule is controlled by a external process.
Definition: SyncSchedule.cpp:230