From 460c52653ab0dcca6f19a4f492ed2c5e4e963ab0 Mon Sep 17 00:00:00 2001 From: toma Date: Wed, 25 Nov 2009 17:56:58 +0000 Subject: Copy the KDE 3.5 branch to branches/trinity for new KDE 3.5 features. BUG:215923 git-svn-id: svn://anonsvn.kde.org/home/kde/branches/trinity/kdepim@1054174 283d02a7-25f6-0310-bc7c-ecb5cbfe19da --- libkpimexchange/core/README.download | 63 ++++++++++++++++++++++++++++++++++++ 1 file changed, 63 insertions(+) create mode 100644 libkpimexchange/core/README.download (limited to 'libkpimexchange/core/README.download') diff --git a/libkpimexchange/core/README.download b/libkpimexchange/core/README.download new file mode 100644 index 000000000..07540db85 --- /dev/null +++ b/libkpimexchange/core/README.download @@ -0,0 +1,63 @@ +$Id$ +This document describes what happens during the download of +appointments from an exchange server in exchangedownload.cpp. +Error handling, user interface ignored for clarity + +Author: Jan-Pascal van Best, janpascal@vanbest.org + +NOTES: +- You can only use an ExchangeDownload object for a single download + It uses internal state member variables and such. + +DATA STRUCTURES: +QMap m_uids is in fact a set of known uids telling us +whether we're already busy or finished reading the Master event +for this UID. The map contains the UID as key, with a value of 1, +if UID is either being or finished downloading. + +QMap m_transferJobs maps URLs being downloaded +to strings of data already received. A URL is removed from the map +if all data has been received + +METHODS: +download() +- Provides authentication info to the KDE authentication service +- Creates an SQL query using dateSelectQuery() +- Starts a SEARCH job, connects the result() signal + to the slotSearchResult() slot + +slotSearchResult() +- Calls handleAppointments() with recurrence enabled + +handleAppointments() +- Examines all events returned by the SEARCH +- If recurrence is enabled, for Master, Instance or Exception events, + and if we havent't handled this particular UID yet, call + handleRecurrence() with the UID of the event +- If recurrence is disabled, or for Single events, start a TransferJob. + Connect the data() signal to the slotData() slot and the result() + signal to the slotTransferResult() slot. +- Note that this method may start many new jobs for transferring + appointments and for finding recurrent events! + +handleRecurrence() +- Start a new SEARCH job, looking for the Master event of the UID +- Connect the result() signal to the slotMasterResult() slot + +slotMasterResult() +- Call handleAppointment() with recurrence disabled + +slotData() +- If the URL of the data we're receiving is already in m_transferJobs, + append the data to the string related to this URL. Else, create a new + string, and place a new URL,string pair in m_transferJobs + +slotTransferResult() +- Parse the data received for this URL as a MIME message +- call handlePart() for every MIME part in the message +- Remove the URL from m_transferJobs and free the string + +handlePart() +- If this is a text/calendar part, read iCalendar data from the part and + insert it into the calendar. + -- cgit v1.2.1