}
+CalDAVServerResult CalDAV::EditCalendarProcess(string *CalendarHREF,
+ string *CalendarName,
+ Colour *CalendarColour,
+ string *CalendarDescription,
+ int *CalendarOrder){
+
+ CalDAVServerResult ServerResult;
+ CalDAVSendData CalendarEditSendData;
+
+ // Build the server address.
+
+ string UserPrincipalURI = "";
+ UserPrincipalURI = GetUserPrincipal();
+
+ if (UserPrincipalURI.size() == 0){
+
+ return ServerResult;
+
+ }
+
+ string CalendarHomeURI = "";
+ CalendarHomeURI = GetCalendarHome(UserPrincipalURI);
+
+ // Generate the UUID.
+
+ string UUIDValue = GenerateUUID();
+ UUIDValue.erase(UUIDValue.end()-1);
+
+ string CalendarHomeURL = CalendarHomeURI;
+ CalendarHomeURL.append(UUIDValue);
+ CalendarHomeURL.append("/");
+
+ // Build the calendar list address.
+
+ string CalendarEditURLAddress = BuildServerAddress(&ConnectionData, (*CalendarHREF));
+
+ string CalendarEditRequest = "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n"
+ "<d:propertyupdate xmlns:d=\"DAV:\" xmlns:c=\"urn:ietf:params:xml:ns:caldav\"\n"
+ " xmlns:x0=\"http://apple.com/ns/ical/\">\n"
+ " <d:set>\n"
+ " <d:prop>\n";
+
+ // Update the calendar name.
+
+ if (CalendarName != nullptr){
+
+ CalendarEditRequest += "<d:displayname>";
+ CalendarEditRequest += (*CalendarName);
+ CalendarEditRequest += "</d:displayname>\n";
+
+ }
+
+ // Update the calendar colour.
+
+ if (CalendarColour != nullptr){
+
+ CalendarEditRequest += "<x0:calendar-color>";
+ CalendarEditRequest += (*CalendarColour);
+ CalendarEditRequest += "</x0:calendar-color>\n";
+
+ }
+
+ // Update the calendar description.
+
+ if (CalendarDescription != nullptr){
+
+ CalendarEditRequest += "<c:calendar-description>";
+ CalendarEditRequest += (*CalendarDescription);
+ CalendarEditRequest += "</c:calendar-description>\n";
+
+ }
+
+ // Update the calendar order.
+
+ if (CalendarOrder != nullptr){
+
+ CalendarEditRequest += "<x0:calendar-order>";
+ CalendarEditRequest += to_string((*CalendarOrder));
+ CalendarEditRequest += "</x0:calendar-order>\n";
+
+ }
+
+ CalendarEditRequest += " </d:prop>\n"
+ " </d:set>\n"
+ "</d:propertyupdate>";
+
+ CalendarEditSendData.readptr = &CalendarEditRequest;
+ CalendarEditSendData.sizeleft = CalendarEditRequest.size();
+
+ // Setup the header.
+
+ struct curl_slist *CalendarRequestHeader = NULL;
+
+ //curl_easy_setopt(ConnectionHandle, CURLOPT_HTTPHEADER, CalendarRequestHeader);
+ curl_easy_setopt(ConnectionHandle, CURLOPT_URL, CalendarEditURLAddress.c_str());
+ curl_easy_setopt(ConnectionHandle, CURLOPT_CUSTOMREQUEST, "PROPPATCH");
+ curl_easy_setopt(ConnectionHandle, CURLOPT_UPLOAD, 1L);
+ curl_easy_setopt(ConnectionHandle, CURLOPT_READDATA, &CalendarEditSendData);
+ curl_easy_setopt(ConnectionHandle, CURLOPT_READFUNCTION, CalDAVSend);
+
+ // Process the data.
+
+ ServerData.clear();
+ ServerHeader.clear();
+
+ CURLcode ServerConnectionResult = curl_easy_perform(ConnectionHandle);
+
+ if (ServerConnectionResult == CURLE_OK){
+ ServerResult.Result = CALDAVQUERYRESULT_OK;
+ } else {
+ ServerResult.Result = CALDAVQUERYRESULT_SERVERERROR;
+ }
+ ServerResult.Code = ServerConnectionResult;
+ curl_easy_getinfo(ConnectionHandle, CURLINFO_RESPONSE_CODE, &ServerResult.HTTPCode);
+
+ // Restore the original settings.
+
+ string OriginalServerAddress = BuildServerAddress(&ConnectionData, "/principals/");
+ curl_easy_setopt(ConnectionHandle, CURLOPT_URL, OriginalServerAddress.c_str());
+ curl_easy_setopt(ConnectionHandle, CURLOPT_CUSTOMREQUEST, NULL);
+ curl_easy_setopt(ConnectionHandle, CURLOPT_UPLOAD, 0L);
+ curl_easy_setopt(ConnectionHandle, CURLOPT_READDATA, NULL);
+ curl_easy_setopt(ConnectionHandle, CURLOPT_READFUNCTION, NULL);
+
+ return ServerResult;
+
+}
+
+CalDAVServerResult CalDAV::EditCalendar(string *CalendarHREF,
+ string *CalendarName,
+ Colour *CalendarColour,
+ string *CalendarDescription,
+ int *CalendarOrder){
+
+ CalDAVServerResult ServerResult;
+
+ ServerResult = EditCalendarProcess(CalendarHREF,
+ CalendarName,
+ CalendarColour,
+ CalendarDescription,
+ CalendarOrder);
+
+ return ServerResult;
+
+}
+
+CalDAVServerResult CalDAV::EditCalendar(string *CalendarHREF,
+ Colour *CalendarColour){
+
+
+ CalDAVServerResult ServerResult;
+
+ ServerResult = EditCalendarProcess(CalendarHREF,
+ nullptr,
+ CalendarColour,
+ nullptr,
+ nullptr);
+
+ return ServerResult;
+
+}
+
+CalDAVServerResult CalDAV::EditCalendar(string *CalendarHREF,
+ string *CalendarName){
+
+ CalDAVServerResult ServerResult;
+
+ ServerResult = EditCalendarProcess(CalendarHREF,
+ CalendarName,
+ nullptr,
+ nullptr,
+ nullptr);
+
+ return ServerResult;
+
+}
+
+CalDAVServerResult CalDAV::EditCalendar(string *CalendarHREF,
+ int *CalendarOrder){
+
+ CalDAVServerResult ServerResult;
+
+ ServerResult = EditCalendarProcess(CalendarHREF,
+ nullptr,
+ nullptr,
+ nullptr,
+ CalendarOrder);
+
+ return ServerResult;
+
+}
+
+CalDAVServerResult CalDAV::EditCalendarDescription(string *CalendarHREF,
+ string *CalendarDescription){
+
+ CalDAVServerResult ServerResult;
+
+ ServerResult = EditCalendarProcess(CalendarHREF,
+ nullptr,
+ nullptr,
+ CalendarDescription,
+ nullptr);
+
+ return ServerResult;
+
+}
bool CalDAVObjectValidSettings(CalDAVConnectionData *ConnData){
// Check if the passed CalDAV Connection Data is has