Home | News | Projects | Releases
Bugs | RFE | Repositories | Help
Updated/Added copyright header and licensing to all source files
[xestiacalendar/.git] / source / objects / calendarobject / CalendarObject.h
1 // CalendarObject.h - CalendarObject class header
2 //
3 // (c) 2016-2017 Xestia Software Development.
4 //
5 // This file is part of Xestia Calendar.
6 //
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.
10 //
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.
15 //
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__
22 #include <string>
23 #include <iostream>
24 #include <fstream>
25 #include <sstream>
26 #include <vector>
27 #include <stdexcept>
28 #include <map>
30 #include "../../common/text.h"
31 #include "../../version.h"
33 using namespace std;
35 enum CalendarObjectLoadResult {
36         CALENDAROBJECTLOAD_UNITTESTFAIL = -1,
37         CALENDAROBJECTLOAD_OK,
38         CALENDAROBJECTLOAD_MISSING,
39         CALENDAROBJECTLOAD_INVALIDFORMAT,
40         CALENDAROBJECTLOAD_CANNOTOPEN
41 };
43 enum CalendarObjectSaveResult {
44         CALENDAROBJECTSAVE_UNITTESTFAIL = -1,
45         CALENDAROBJECTSAVE_OK,
46         CALENDAROBJECTSAVE_CANNOTOPEN
47 };
49 enum CalendarObjectValidResult{
50         CALENDAROBJECTVALID_UNITTESTFAIL = -1,
51         CALENDAROBJECTVALID_OK,
52         CALENDAROBJECTVALID_INVALIDFORMAT
53 };
55 enum CalendarAlarmAction{
56         CALENDARALARM_UNSPECIFIED = -1,
57         CALENDARALARM_AUDIO,
58         CALENDARALARM_DISPLAY,
59         CALENDARALARM_EMAIL
60 };
62 struct CalendarAlarmDataStruct{
63         
64         CalendarAlarmAction AlarmType = CALENDARALARM_UNSPECIFIED;
65         
66         string AlarmAction;
67         string AlarmActionTokens;
68         
69         string TriggerData;
70         string TriggerValue;
71         string TriggerRelated;
72         string TriggerTokens;
73         
74         string DescriptionData;
75         string DescriptionAltRep;
76         string DescriptionLanguage;
77         string DescriptionTokens;
78         
79         string RepeatData;
80         string RepeatTokens;
81         
82         string SummaryData;
83         string SummaryAltRep;
84         string SummaryLanguage;
85         string SummaryTokens;
86         
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;
100         
101         string DurationData;
102         string DurationTokens;
103         
104         vector<string> AttachList;
105         vector<string> AttachListTokens;
106         vector<string> AttachListEncoding;
107         vector<string> AttachListFormatType;
108         vector<string> AttachListValue;
109         
110         vector<string> XTokensData;
111         vector<string> XTokensDataTokens;
112         
113 };
115 class CalendarObject{
117         public:
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();
124         
125         // Setup virtual subroutines for use by objects
126         // inheriting from CalendarObject later on.
127         
128         virtual CalendarObjectValidResult ValidObject() { return CALENDAROBJECTVALID_OK; };
129         virtual void Clear() {};
130         virtual void SaveObjectData(string *SaveData) {};
131         
132         // Object data.
133         
134         string MethodData;
135         string MethodTokens;
136         
137         string CalendarScaleData;
138         string CalendarScaleTokens;
139         
140         string UniqueID;
141         string UniqueIDTokens;
142         
143         vector<string> AttachList;
144         vector<string> AttachListTokens;
145         vector<string> AttachListEncoding;
146         vector<string> AttachListFormatType;
147         vector<string> AttachListValue;
148         
149         vector<string> CategoriesList;
150         vector<string> CategoriesListLanguage;
151         vector<string> CategoriesListTokens;
152         
153         string ClassData;
154         string ClassDataTokens;
155         
156         string CompletedData;
157         string CompletedDataTokens;
158         
159         vector<string> CommentList;
160         vector<string> CommentListAltRep;
161         vector<string> CommentListLanguage;
162         vector<string> CommentListTokens;
163         
164         vector<string> DescriptionList;
165         vector<string> DescriptionListAltRep;
166         vector<string> DescriptionListLanguage;
167         vector<string> DescriptionListTokens;
168         
169         string GeographicData;
170         string GeographicTokens;
171         
172         string LocationData;
173         string LocationDataAltRep;
174         string LocationDataLanguage;
175         string LocationDataTokens;
176         
177         string PercentCompleteData;
178         string PercentCompleteTokens;
179         
180         int PriorityData = -1;
181         string PriorityTokens;
182         
183         vector<string> ResourcesData;
184         vector<string> ResourcesDataAltRep;
185         vector<string> ResourcesDataLanguage;
186         vector<string> ResourcesDataTokens;
188         string StatusData;
189         string StatusLanguage;
190         string StatusTokens;
191         
192         string SummaryData;
193         string SummaryDataAltRep;
194         string SummaryDataLanguage;
195         string SummaryDataTokens;
196         
197         string DateTimeEndData;
198         string DateTimeEndDataValue;
199         string DateTimeEndDataTimeZoneID;
200         string DateTimeEndDataTokens;
202         string DueData;
203         string DueDataValue;
204         string DueDataTimeZoneID;
205         string DueDataTokens;
207         string DateTimeStartData;
208         string DateTimeStartDataValue;
209         string DateTimeStartDataTimeZoneID;
210         string DateTimeStartDataTokens;
212         string DurationData;
213         string DurationDataTokens;
215         vector<string> FreeBusyList;
216         vector<string> FreeBusyListType;
217         vector<string> FreeBusyListTokens;
219         string TimeTransparencyData;
220         string TimeTransparencyDataTokens;
221         
222         string TimeZoneData;
223         string TimeZoneDataTokens;
224         
225         vector<string> TimeZoneNameList;
226         vector<string> TimeZoneNameListLanguage;
227         vector<string> TimeZoneNameListTokens;
228         
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;
256         
257         string OrganiserData;
258         string OrganiserDataCommonName;
259         string OrganiserDataDirectoryEntry;
260         string OrganiserDataSentByParam;
261         string OrganiserDataLanguage;
262         string OrganiserDataTokens;
263         
264         string RecurranceIDData;
265         string RecurranceIDDataTimeZoneParam;
266         string RecurranceIDDataRangeParam;
267         string RecurranceIDDataValue;
268         string RecurranceIDDataTokens;
269         
270         vector<string> RelatedToData;
271         vector<string> RelatedToDataRelationType;
272         vector<string> RelatedToDataTokens;
273         
274         string URLData;
275         string URLDataTokens;
277         vector<string> ExcludeDateData;
278         vector<string> ExcludeDateDataValue;
279         vector<string> ExcludeDateDataTimeZoneParam;
280         vector<string> ExcludeDateDataTokens;
281         
282         vector<string> RecurranceDateData;
283         vector<string> RecurranceDateDataValue;
284         vector<string> RecurranceDateDataTimeZoneParam;
285         vector<string> RecurranceDateDataTokens;
286         
287         string RecurranceRuleData;
288         string RecurranceRuleDataTokens;
289         
290         string TriggerDataList;
291         string TriggerDataValue;
292         string TriggerDataRelatedParam;
293         string TriggerDataTokens;
294         
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;
313         
314         vector<CalendarAlarmDataStruct> CalendarAlarmData;
315         
316         protected:
317         // Initial Loading Data.
318         vector<string> ObjectName;
319         vector<string> ObjectData;
320         
321         vector<vector<string>> EventAlarmName;
322         vector<vector<string>> EventAlarmData;
323         
324         private:
325         virtual void ProcessData() {};
326   
327 };
329 #endif
Xestia Software Development
Yn Maystri
© 2006 - 2019 Xestia Software Development
Software

Xestia Address Book
Xestia Calendar
Development

Xestia Gelforn
Everything else

About
News
Privacy Policy