Home | News | Projects | Releases
Bugs | RFE | Repositories | Help
Win32: implement further UTF8 support
[xestiacalendar/.git] / source / objects / calendarobject / CalendarObject.h
index 8777498..1b03eee 100644 (file)
@@ -1,3 +1,21 @@
+// CalendarObject.h - CalendarObject class header
+//
+// (c) 2016-2017 Xestia Software Development.
+//
+// This file is part of Xestia Calendar.
+//
+// Xestia Calendar 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, version 3 of the license.
+//
+// Xestia Calendar 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 Xestia Calendar. If not, see <http://www.gnu.org/licenses/>
+
 #ifndef __OBJECTS_CALENDAROBJECT_CALENDAROBJECT_H__
 #define __OBJECTS_CALENDAROBJECT_CALENDAROBJECT_H__
 
 #include <map>
 
 #include "../../common/text.h"
+#include "../../version.h"
+
+#if defined(WIN32)
+#include <Windows.h>
+#endif
 
 using namespace std;
 
 enum CalendarObjectLoadResult {
-    CALENDAROBJECTLOAD_UNITTESTFAIL = -1,
-    CALENDAROBJECTLOAD_OK,
-    CALENDAROBJECTLOAD_MISSING,
-    CALENDAROBJECTLOAD_INVALIDFORMAT,
-    CALENDAROBJECTLOAD_CANNOTOPEN
+       CALENDAROBJECTLOAD_UNITTESTFAIL = -1,
+       CALENDAROBJECTLOAD_OK,
+       CALENDAROBJECTLOAD_MISSING,
+       CALENDAROBJECTLOAD_INVALIDFORMAT,
+       CALENDAROBJECTLOAD_CANNOTOPEN
+};
+
+enum CalendarObjectSaveResult {
+       CALENDAROBJECTSAVE_UNITTESTFAIL = -1,
+       CALENDAROBJECTSAVE_OK,
+       CALENDAROBJECTSAVE_CANNOTOPEN
 };
 
 enum CalendarObjectValidResult{
-    CALENDAROBJECTVALID_UNITTESTFAIL = -1,
-    CALENDAROBJECTVALID_OK,
-    CALENDAROBJECTVALID_INVALIDFORMAT
+       CALENDAROBJECTVALID_UNITTESTFAIL = -1,
+       CALENDAROBJECTVALID_OK,
+       CALENDAROBJECTVALID_INVALIDFORMAT
+};
+
+enum CalendarAlarmAction{
+       CALENDARALARM_UNSPECIFIED = -1,
+       CALENDARALARM_AUDIO,
+       CALENDARALARM_DISPLAY,
+       CALENDARALARM_EMAIL
+};
+
+struct CalendarAlarmDataStruct{
+       
+       CalendarAlarmAction alarmType = CALENDARALARM_UNSPECIFIED;
+       
+       string alarmAction;
+       string alarmActionTokens;
+       
+       string triggerData;
+       string triggerValue;
+       string triggerRelated;
+       string triggerTokens;
+       
+       string descriptionData;
+       string descriptionAltRep;
+       string descriptionLanguage;
+       string descriptionTokens;
+       
+       string repeatData;
+       string repeatTokens;
+       
+       string summaryData;
+       string summaryAltRep;
+       string summaryLanguage;
+       string summaryTokens;
+       
+       vector<string> attendeeList;
+       vector<string> attendeeListMember;
+       vector<string> attendeeListDelegatedFrom;
+       vector<string> attendeeListDelegatedTo;
+       vector<string> attendeeListRole;
+       vector<string> attendeeListRSVP;
+       vector<string> attendeeListDirectoryEntry;
+       vector<string> attendeeListSentBy;
+       vector<string> attendeeListCommonName;
+       vector<string> attendeeListCalendarUserType;
+       vector<string> attendeeListParticipationStatus;
+       vector<string> attendeeListLanguage;
+       vector<string> attendeeListTokens;
+       
+       string durationData;
+       string durationTokens;
+       
+       vector<string> attachList;
+       vector<string> attachListTokens;
+       vector<string> attachListEncoding;
+       vector<string> attachListFormatType;
+       vector<string> attachListValue;
+       
+       vector<string> xTokensData;
+       vector<string> xTokensDataTokens;
+       
 };
 
 class CalendarObject{
 
        public:
-       CalendarObjectLoadResult LoadFile(std::string LoadFilename);
-       CalendarObjectLoadResult LoadString(std::string *LoadStringData);
+       CalendarObjectLoadResult LoadFile(string loadFilename);
+       CalendarObjectLoadResult LoadString(string *loadStringData);
+       CalendarObjectSaveResult SaveFile(string saveFilename);
+       CalendarObjectSaveResult SaveString(string *saveStringData);
        CalendarObjectValidResult ValidBaseObject();
        void ProcessBaseData();
        
@@ -40,194 +131,200 @@ class CalendarObject{
        
        virtual CalendarObjectValidResult ValidObject() { return CALENDAROBJECTVALID_OK; };
        virtual void Clear() {};
+       virtual void SaveObjectData(string *saveData) {};
        
        // Object data.
        
-       std::string MethodData;
-       std::string MethodTokens;
+       string methodData;
+       string methodTokens;
+       
+       string calendarScaleData;
+       string calendarScaleTokens;
+       
+       string uniqueID;
+       string uniqueIDTokens;
+       
+       vector<string> attachList;
+       vector<string> attachListTokens;
+       vector<string> attachListEncoding;
+       vector<string> attachListFormatType;
+       vector<string> attachListValue;
+       
+       vector<string> categoriesList;
+       vector<string> categoriesListLanguage;
+       vector<string> categoriesListTokens;
+       
+       string classData;
+       string classDataTokens;
+       
+       string completedData;
+       string completedDataTokens;
+       
+       vector<string> commentList;
+       vector<string> commentListAltRep;
+       vector<string> commentListLanguage;
+       vector<string> commentListTokens;
+       
+       vector<string> descriptionList;
+       vector<string> descriptionListAltRep;
+       vector<string> descriptionListLanguage;
+       vector<string> descriptionListTokens;
+       
+       string geographicData;
+       string geographicTokens;
+       
+       string locationData;
+       string locationDataAltRep;
+       string locationDataLanguage;
+       string locationDataTokens;
+       
+       string percentCompleteData;
+       string percentCompleteTokens;
+       
+       int priorityData = -1;
+       string priorityTokens;
        
-       std::string CalendarScaleData;
-       std::string CalendarScaleTokens;
+       vector<string> resourcesData;
+       vector<string> resourcesDataAltRep;
+       vector<string> resourcesDataLanguage;
+       vector<string> resourcesDataTokens;
+
+       string statusData;
+       string statusLanguage;
+       string statusTokens;
+       
+       string summaryData;
+       string summaryDataAltRep;
+       string summaryDataLanguage;
+       string summaryDataTokens;
+       
+       string dateTimeEndData;
+       string dateTimeEndDataValue;
+       string dateTimeEndDataTimeZoneID;
+       string dateTimeEndDataTokens;
+
+       string dueData;
+       string dueDataValue;
+       string dueDataTimeZoneID;
+       string dueDataTokens;
+
+       string dateTimeStartData;
+       string dateTimeStartDataValue;
+       string dateTimeStartDataTimeZoneID;
+       string dateTimeStartDataTokens;
+
+       string durationData;
+       string durationDataTokens;
+
+       vector<string> freeBusyList;
+       vector<string> freeBusyListType;
+       vector<string> freeBusyListTokens;
+
+       string timeTransparencyData;
+       string timeTransparencyDataTokens;
+       
+       string timeZoneData;
+       string timeZoneDataTokens;
+       
+       vector<string> timeZoneNameList;
+       vector<string> timeZoneNameListLanguage;
+       vector<string> timeZoneNameListTokens;
+       
+       string timeZoneOffsetFromData;
+       string timeZoneOffsetFromDataTokens;
+
+       string timeZoneOffsetToData;
+       string timeZoneOffsetToDataTokens;
+
+       string timeZoneURLData;
+       string timeZoneURLTokens;
+
+       vector<string> attendeeList;
+       vector<string> attendeeListMember;
+       vector<string> attendeeListDelegatedFrom;
+       vector<string> attendeeListDelegatedTo;
+       vector<string> attendeeListRole;
+       vector<string> attendeeListRSVP;
+       vector<string> attendeeListDirectoryEntry;
+       vector<string> attendeeListSentBy;
+       vector<string> attendeeListCommonName;
+       vector<string> attendeeListCalendarUserType;
+       vector<string> attendeeListParticipationStatus;
+       vector<string> attendeeListLanguage;
+       vector<string> attendeeListTokens;
+
+       vector<string> contactList;
+       vector<string> contactListAltRep;
+       vector<string> contactListLanguage;
+       vector<string> contactListTokens;
+       
+       string organiserData;
+       string organiserDataCommonName;
+       string organiserDataDirectoryEntry;
+       string organiserDataSentByParam;
+       string organiserDataLanguage;
+       string organiserDataTokens;
        
-       std::string UniqueID;
-       std::string UniqueIDTokens;
+       string recurranceIDData;
+       string recurranceIDDataTimeZoneParam;
+       string recurranceIDDataRangeParam;
+       string recurranceIDDataValue;
+       string recurranceIDDataTokens;
        
-       vector<std::string> AttachList;
-       vector<std::string> AttachListTokens;
-       vector<std::string> AttachListEncoding;
-       vector<std::string> AttachListFormatType;
-       vector<std::string> AttachListValue;
-       
-       vector<std::string> CategoriesList;
-       vector<std::string> CategoriesListLanguage;
-       vector<std::string> CategoriesListTokens;
-       
-       std::string ClassData;
-       std::string ClassDataTokens;
-       
-       std::string CompletedData;
-       std::string CompletedDataTokens;
-       
-       vector<std::string> CommentList;
-       vector<std::string> CommentListAltRep;
-       vector<std::string> CommentListLanguage;
-       vector<std::string> CommentListTokens;
-       
-       vector<std::string> DescriptionList;
-       vector<std::string> DescriptionListAltRep;
-       vector<std::string> DescriptionListLanguage;
-       vector<std::string> DescriptionListTokens;
-       
-       std::string GeographicData;
-       std::string GeographicTokens;
-       
-       std::string LocationData;
-       std::string LocationDataAltRep;
-       std::string LocationDataLanguage;
-       std::string LocationDataTokens;
-       
-       std::string PercentCompleteData;
-       std::string PercentCompleteTokens;
-       
-       int PriorityData = -1;
-       std::string PriorityTokens;
-       
-       vector<std::string> ResourcesData;
-       vector<std::string> ResourcesDataAltRep;
-       vector<std::string> ResourcesDataLanguage;
-       vector<std::string> ResourcesDataTokens;
-
-       std::string StatusData;
-       std::string StatusLanguage;
-       std::string StatusTokens;
-       
-       std::string SummaryData;
-       std::string SummaryDataAltRep;
-       std::string SummaryDataLanguage;
-       std::string SummaryDataTokens;
-       
-       std::string DateTimeEndData;
-       std::string DateTimeEndDataValue;
-       std::string DateTimeEndDataTimeZoneID;
-       std::string DateTimeEndDataTokens;
-
-       std::string DueData;
-       std::string DueDataValue;
-       std::string DueDataTimeZoneID;
-       std::string DueDataTokens;
-
-       std::string DateTimeStartData;
-       std::string DateTimeStartDataValue;
-       std::string DateTimeStartDataTimeZoneID;
-       std::string DateTimeStartDataTokens;
-
-       std::string DurationData;
-       std::string DurationDataTokens;
-
-       vector<std::string> FreeBusyList;
-       vector<std::string> FreeBusyListType;
-       vector<std::string> FreeBusyListTokens;
-
-       std::string TimeTransparencyData;
-       std::string TimeTransparencyDataTokens;
-       
-       std::string TimeZoneData;
-       std::string TimeZoneDataTokens;
-       
-       vector<std::string> TimeZoneNameList;
-       vector<std::string> TimeZoneNameListLanguage;
-       vector<std::string> TimeZoneNameListTokens;
-       
-       std::string TimeZoneOffsetFromData;
-       std::string TimeZoneOffsetFromDataTokens;
-
-       std::string TimeZoneOffsetToData;
-       std::string TimeZoneOffsetToDataTokens;
-
-       std::string TimeZoneURLData;
-       std::string TimeZoneURLTokens;
-
-       vector<std::string> AttendeeList;
-       vector<std::string> AttendeeListMember;
-       vector<std::string> AttendeeListDelegatedFrom;
-       vector<std::string> AttendeeListDelegatedTo;
-       vector<std::string> AttendeeListRole;
-       vector<std::string> AttendeeListRSVP;
-       vector<std::string> AttendeeListDirectoryEntry;
-       vector<std::string> AttendeeListSentBy;
-       vector<std::string> AttendeeListCommonName;
-       vector<std::string> AttendeeListCalendarUserType;
-       vector<std::string> AttendeeListParticipationStatus;
-       vector<std::string> AttendeeListLanguage;
-       vector<std::string> AttendeeListTokens;
-
-       vector<std::string> ContactList;
-       vector<std::string> ContactListAltRep;
-       vector<std::string> ContactListLanguage;
-       vector<std::string> ContactListTokens;
-       
-       std::string OrganiserData;
-       std::string OrganiserDataCommonName;
-       std::string OrganiserDataDirectoryEntry;
-       std::string OrganiserDataSentByParam;
-       std::string OrganiserDataLanguage;
-       std::string OrganiserDataTokens;
-       
-       std::string RecurranceIDData;
-       std::string RecurranceIDDataTimeZoneParam;
-       std::string RecurranceIDDataRangeParam;
-       std::string RecurranceIDDataValue;
-       std::string RecurranceIDDataTokens;
-       
-       vector<std::string> RelatedToData;
-       vector<std::string> RelatedToDataRelationType;
-       vector<std::string> RelatedToDataTokens;
-       
-       std::string URLData;
-       std::string URLDataTokens;
-
-       vector<std::string> ExcludeDateData;
-       vector<std::string> ExcludeDateDataValue;
-       vector<std::string> ExcludeDateDataTimeZoneParam;
-       vector<std::string> ExcludeDateDataTokens;
-       
-       vector<std::string> RecurranceDateData;
-       vector<std::string> RecurranceDateDataValue;
-       vector<std::string> RecurranceDateDataTimeZoneParam;
-       vector<std::string> RecurranceDateDataTokens;
-       
-       std::string RecurranceRuleData;
-       std::string RecurranceRuleDataTokens;
-       
-       std::string TriggerDataList;
-       std::string TriggerDataValue;
-       std::string TriggerDataRelatedParam;
-       std::string TriggerDataTokens;
-       
-       std::string DateTimeCreatedData;
-       std::string DateTimeCreatedTokens;
-
-       std::string DateTimeStampData;
-       std::string DateTimeStampTokens;
-
-       std::string LastModifiedData;
-       std::string LastModifiedTokens;
-
-       int SequenceData = -1;
-       std::string SequenceTokens;
-
-       vector<std::string> XTokensData;
-       vector<std::string> XTokensDataTokens;
-
-       vector<std::string> RequestStatusData;
-       vector<std::string> RequestStatusLanguage;
-       vector<std::string> RequestStatusTokens;
+       vector<string> relatedToData;
+       vector<string> relatedToDataRelationType;
+       vector<string> relatedToDataTokens;
+       
+       string urlData;
+       string urlDataTokens;
+
+       vector<string> excludeDateData;
+       vector<string> excludeDateDataValue;
+       vector<string> excludeDateDataTimeZoneParam;
+       vector<string> excludeDateDataTokens;
+       
+       vector<string> recurranceDateData;
+       vector<string> recurranceDateDataValue;
+       vector<string> recurranceDateDataTimeZoneParam;
+       vector<string> recurranceDateDataTokens;
+       
+       string recurranceRuleData;
+       string recurranceRuleDataTokens;
+       
+       string triggerDataList;
+       string triggerDataValue;
+       string triggerDataRelatedParam;
+       string triggerDataTokens;
+       
+       string dateTimeCreatedData;
+       string dateTimeCreatedTokens;
+
+       string dateTimeStampData;
+       string dateTimeStampTokens;
+
+       string lastModifiedData;
+       string lastModifiedTokens;
+
+       int sequenceData = -1;
+       string sequenceTokens;
+
+       vector<string> xTokensData;
+       vector<string> xTokensDataTokens;
+
+       vector<string> requestStatusData;
+       vector<string> requestStatusLanguage;
+       vector<string> requestStatusTokens;
+       
+       vector<CalendarAlarmDataStruct> calendarAlarmData;
        
        protected:
        // Initial Loading Data.
-       vector<std::string> ObjectName;
-       vector<std::string> ObjectData;
-
+       vector<string> objectName;
+       vector<string> objectData;
+       
+       vector<vector<string>> eventAlarmName;
+       vector<vector<string>> eventAlarmData;
+       
        private:
        virtual void ProcessData() {};
   
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