You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
tdepim/libkpimexchange/core
Timothy Pearson e3649f7442
Rename old tq methods that no longer need a unique name
13 years ago
..
CMakeLists.txt Enable kdepim compilation under Qt4 14 years ago
Makefile.am Copy the KDE 3.5 branch to branches/trinity for new KDE 3.5 features. 15 years ago
README.download Copy the KDE 3.5 branch to branches/trinity for new KDE 3.5 features. 15 years ago
exchangeaccount.cpp Rename old tq methods that no longer need a unique name 13 years ago
exchangeaccount.h Initial conversion of kdepim to TQt 14 years ago
exchangeclient.cpp rename the following methods: 14 years ago
exchangeclient.h Initial conversion of kdepim to TQt 14 years ago
exchangedelete.cpp Initial conversion of kdepim to TQt 14 years ago
exchangedelete.h Initial conversion of kdepim to TQt 14 years ago
exchangedownload.cpp rename the following methods: 14 years ago
exchangedownload.h Initial conversion of kdepim to TQt 14 years ago
exchangemonitor.cpp rename the following methods: 14 years ago
exchangemonitor.h Initial conversion of kdepim to TQt 14 years ago
exchangeprogress.cpp rename the following methods: 14 years ago
exchangeprogress.h rename the following methods: 14 years ago
exchangeupload.cpp rename the following methods: 14 years ago
exchangeupload.h Initial conversion of kdepim to TQt 14 years ago
utils.cpp * Massive set of changes to bring in all fixes and enhancements from the Enterprise PIM branch 14 years ago
utils.h Trinity Qt initial conversion 15 years ago

README.download

$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<QString,int> 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<QString,DwString *> 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.