00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00025
00026
00027
00028
00029
00030 #include "opimtemplatebase.h"
00031
00032 #include <opie2/opimoccurrence.h>
00033 #include <opie2/private/opimoccurrence_p.h>
00034
00035 namespace Opie {
00036
00037 static void setPeriod( OPimOccurrence& oc, bool period, const QDate& d,
00038 const QTime& s, const QTime& t ) {
00039 if ( period )
00040 oc.setPeriod( d );
00041 else
00042 oc.setPeriod( d, s, t );
00043 }
00044
00045
00046 OPimBase::OPimBase() {}
00047 OPimBase::~OPimBase() {}
00048
00053 OPimOccurrence::List OPimBase::convertOccurrenceFromBackend( const OPimBackendOccurrence::List& lst )const {
00054 OPimOccurrence::List oc_lst;
00055
00056
00057
00058
00059
00060 for ( OPimBackendOccurrence::List::ConstIterator it = lst.begin(); it != lst.end(); ++it ) {
00061 OPimBackendOccurrence boc = *it;
00062
00063
00064
00065
00066 OPimOccurrence::Data *data = new OPimOccurrence::Data();
00067 data->summary = boc.summary();
00068 data->location = boc.location();
00069 data->note = boc.note();
00070 data->uid = boc.uid();
00071 data->backend = const_cast<OPimBase*>(this);
00072
00073 QDateTime start = boc.startDateTime();
00074 QDateTime end = boc.endDateTime();
00075
00076
00077
00078
00079
00080
00081 int dto = start.daysTo( end );
00082 bool allDay = boc.isAllDay();
00083
00084 if ( dto == 0 ) {
00085 OPimOccurrence oc = OPimOccurrence( data, OPimOccurrence::StartEnd );
00086 setPeriod( oc, allDay, start.date(), start.time(), end.time() );
00087 oc_lst.append( oc );
00088 }else {
00089
00090 OPimOccurrence oc = OPimOccurrence( data, OPimOccurrence::Start );
00091 setPeriod( oc, allDay, start.date(), start.time(), QTime(23,59,59));
00092 oc_lst.append( oc );
00093
00094 QDate next = start.addDays( 1 ).date();
00095 while ( next != end.date() ) {
00096 oc = OPimOccurrence( data, OPimOccurrence::MidWay );
00097 setPeriod( oc, allDay, next, QTime(0, 0, 0), QTime(23, 59, 59));
00098 oc_lst.append( oc );
00099 next = next.addDays( 1 );
00100 }
00101
00102 oc = OPimOccurrence( data, OPimOccurrence::End );
00103 setPeriod( oc, allDay, end.date(), QTime(0, 0, 0 ), end.time() );
00104 oc_lst.append( oc );
00105 }
00106 }
00107
00108 return oc_lst;
00109 }
00110
00111
00112 }