1 // CalendarObject.h - CalendarObject class header
3 // (c) 2016-2017 Xestia Software Development.
5 // This file is part of Xestia Calendar.
7 // Xestia Calendar is free software: you can redistribute it and/or modify
8 // it under the terms of the GNU General Public License as published by the
9 // Free Software Foundation, version 3 of the license.
11 // Xestia Calendar is distributed in the hope that it will be useful,
12 // but WITHOUT ANY WARRANTY; without even the implied warranty of
13 // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
14 // GNU General Public License for more details.
16 // You should have received a copy of the GNU General Public License along
17 // with Xestia Calendar. If not, see <http://www.gnu.org/licenses/>
19 #ifndef __OBJECTS_CALENDAROBJECT_CALENDAROBJECT_H__
20 #define __OBJECTS_CALENDAROBJECT_CALENDAROBJECT_H__
30 #include "../../common/text.h"
31 #include "../../version.h"
35 enum CalendarObjectLoadResult {
36 CALENDAROBJECTLOAD_UNITTESTFAIL = -1,
37 CALENDAROBJECTLOAD_OK,
38 CALENDAROBJECTLOAD_MISSING,
39 CALENDAROBJECTLOAD_INVALIDFORMAT,
40 CALENDAROBJECTLOAD_CANNOTOPEN
43 enum CalendarObjectSaveResult {
44 CALENDAROBJECTSAVE_UNITTESTFAIL = -1,
45 CALENDAROBJECTSAVE_OK,
46 CALENDAROBJECTSAVE_CANNOTOPEN
49 enum CalendarObjectValidResult{
50 CALENDAROBJECTVALID_UNITTESTFAIL = -1,
51 CALENDAROBJECTVALID_OK,
52 CALENDAROBJECTVALID_INVALIDFORMAT
55 enum CalendarAlarmAction{
56 CALENDARALARM_UNSPECIFIED = -1,
58 CALENDARALARM_DISPLAY,
62 struct CalendarAlarmDataStruct{
64 CalendarAlarmAction AlarmType = CALENDARALARM_UNSPECIFIED;
67 string AlarmActionTokens;
71 string TriggerRelated;
74 string DescriptionData;
75 string DescriptionAltRep;
76 string DescriptionLanguage;
77 string DescriptionTokens;
84 string SummaryLanguage;
87 vector<string> AttendeeList;
88 vector<string> AttendeeListMember;
89 vector<string> AttendeeListDelegatedFrom;
90 vector<string> AttendeeListDelegatedTo;
91 vector<string> AttendeeListRole;
92 vector<string> AttendeeListRSVP;
93 vector<string> AttendeeListDirectoryEntry;
94 vector<string> AttendeeListSentBy;
95 vector<string> AttendeeListCommonName;
96 vector<string> AttendeeListCalendarUserType;
97 vector<string> AttendeeListParticipationStatus;
98 vector<string> AttendeeListLanguage;
99 vector<string> AttendeeListTokens;
102 string DurationTokens;
104 vector<string> AttachList;
105 vector<string> AttachListTokens;
106 vector<string> AttachListEncoding;
107 vector<string> AttachListFormatType;
108 vector<string> AttachListValue;
110 vector<string> XTokensData;
111 vector<string> XTokensDataTokens;
115 class CalendarObject{
118 CalendarObjectLoadResult LoadFile(string LoadFilename);
119 CalendarObjectLoadResult LoadString(string *LoadStringData);
120 CalendarObjectSaveResult SaveFile(string SaveFilename);
121 CalendarObjectSaveResult SaveString(string *SaveStringData);
122 CalendarObjectValidResult ValidBaseObject();
123 void ProcessBaseData();
125 // Setup virtual subroutines for use by objects
126 // inheriting from CalendarObject later on.
128 virtual CalendarObjectValidResult ValidObject() { return CALENDAROBJECTVALID_OK; };
129 virtual void Clear() {};
130 virtual void SaveObjectData(string *SaveData) {};
137 string CalendarScaleData;
138 string CalendarScaleTokens;
141 string UniqueIDTokens;
143 vector<string> AttachList;
144 vector<string> AttachListTokens;
145 vector<string> AttachListEncoding;
146 vector<string> AttachListFormatType;
147 vector<string> AttachListValue;
149 vector<string> CategoriesList;
150 vector<string> CategoriesListLanguage;
151 vector<string> CategoriesListTokens;
154 string ClassDataTokens;
156 string CompletedData;
157 string CompletedDataTokens;
159 vector<string> CommentList;
160 vector<string> CommentListAltRep;
161 vector<string> CommentListLanguage;
162 vector<string> CommentListTokens;
164 vector<string> DescriptionList;
165 vector<string> DescriptionListAltRep;
166 vector<string> DescriptionListLanguage;
167 vector<string> DescriptionListTokens;
169 string GeographicData;
170 string GeographicTokens;
173 string LocationDataAltRep;
174 string LocationDataLanguage;
175 string LocationDataTokens;
177 string PercentCompleteData;
178 string PercentCompleteTokens;
180 int PriorityData = -1;
181 string PriorityTokens;
183 vector<string> ResourcesData;
184 vector<string> ResourcesDataAltRep;
185 vector<string> ResourcesDataLanguage;
186 vector<string> ResourcesDataTokens;
189 string StatusLanguage;
193 string SummaryDataAltRep;
194 string SummaryDataLanguage;
195 string SummaryDataTokens;
197 string DateTimeEndData;
198 string DateTimeEndDataValue;
199 string DateTimeEndDataTimeZoneID;
200 string DateTimeEndDataTokens;
204 string DueDataTimeZoneID;
205 string DueDataTokens;
207 string DateTimeStartData;
208 string DateTimeStartDataValue;
209 string DateTimeStartDataTimeZoneID;
210 string DateTimeStartDataTokens;
213 string DurationDataTokens;
215 vector<string> FreeBusyList;
216 vector<string> FreeBusyListType;
217 vector<string> FreeBusyListTokens;
219 string TimeTransparencyData;
220 string TimeTransparencyDataTokens;
223 string TimeZoneDataTokens;
225 vector<string> TimeZoneNameList;
226 vector<string> TimeZoneNameListLanguage;
227 vector<string> TimeZoneNameListTokens;
229 string TimeZoneOffsetFromData;
230 string TimeZoneOffsetFromDataTokens;
232 string TimeZoneOffsetToData;
233 string TimeZoneOffsetToDataTokens;
235 string TimeZoneURLData;
236 string TimeZoneURLTokens;
238 vector<string> AttendeeList;
239 vector<string> AttendeeListMember;
240 vector<string> AttendeeListDelegatedFrom;
241 vector<string> AttendeeListDelegatedTo;
242 vector<string> AttendeeListRole;
243 vector<string> AttendeeListRSVP;
244 vector<string> AttendeeListDirectoryEntry;
245 vector<string> AttendeeListSentBy;
246 vector<string> AttendeeListCommonName;
247 vector<string> AttendeeListCalendarUserType;
248 vector<string> AttendeeListParticipationStatus;
249 vector<string> AttendeeListLanguage;
250 vector<string> AttendeeListTokens;
252 vector<string> ContactList;
253 vector<string> ContactListAltRep;
254 vector<string> ContactListLanguage;
255 vector<string> ContactListTokens;
257 string OrganiserData;
258 string OrganiserDataCommonName;
259 string OrganiserDataDirectoryEntry;
260 string OrganiserDataSentByParam;
261 string OrganiserDataLanguage;
262 string OrganiserDataTokens;
264 string RecurranceIDData;
265 string RecurranceIDDataTimeZoneParam;
266 string RecurranceIDDataRangeParam;
267 string RecurranceIDDataValue;
268 string RecurranceIDDataTokens;
270 vector<string> RelatedToData;
271 vector<string> RelatedToDataRelationType;
272 vector<string> RelatedToDataTokens;
275 string URLDataTokens;
277 vector<string> ExcludeDateData;
278 vector<string> ExcludeDateDataValue;
279 vector<string> ExcludeDateDataTimeZoneParam;
280 vector<string> ExcludeDateDataTokens;
282 vector<string> RecurranceDateData;
283 vector<string> RecurranceDateDataValue;
284 vector<string> RecurranceDateDataTimeZoneParam;
285 vector<string> RecurranceDateDataTokens;
287 string RecurranceRuleData;
288 string RecurranceRuleDataTokens;
290 string TriggerDataList;
291 string TriggerDataValue;
292 string TriggerDataRelatedParam;
293 string TriggerDataTokens;
295 string DateTimeCreatedData;
296 string DateTimeCreatedTokens;
298 string DateTimeStampData;
299 string DateTimeStampTokens;
301 string LastModifiedData;
302 string LastModifiedTokens;
304 int SequenceData = -1;
305 string SequenceTokens;
307 vector<string> XTokensData;
308 vector<string> XTokensDataTokens;
310 vector<string> RequestStatusData;
311 vector<string> RequestStatusLanguage;
312 vector<string> RequestStatusTokens;
314 vector<CalendarAlarmDataStruct> CalendarAlarmData;
317 // Initial Loading Data.
318 vector<string> ObjectName;
319 vector<string> ObjectData;
321 vector<vector<string>> EventAlarmName;
322 vector<vector<string>> EventAlarmData;
325 virtual void ProcessData() {};