summaryrefslogtreecommitdiffabout
path: root/libkcal/calendarlocal.cpp
Unidiff
Diffstat (limited to 'libkcal/calendarlocal.cpp') (more/less context) (ignore whitespace changes)
-rw-r--r--libkcal/calendarlocal.cpp11
1 files changed, 10 insertions, 1 deletions
diff --git a/libkcal/calendarlocal.cpp b/libkcal/calendarlocal.cpp
index b02f706..ad8ace3 100644
--- a/libkcal/calendarlocal.cpp
+++ b/libkcal/calendarlocal.cpp
@@ -35,129 +35,138 @@
35#include "exceptions.h" 35#include "exceptions.h"
36#include "incidence.h" 36#include "incidence.h"
37#include "journal.h" 37#include "journal.h"
38#include "filestorage.h" 38#include "filestorage.h"
39#include "calfilter.h" 39#include "calfilter.h"
40 40
41#include "calendarlocal.h" 41#include "calendarlocal.h"
42 42
43// #ifndef DESKTOP_VERSION 43// #ifndef DESKTOP_VERSION
44// #include <qtopia/alarmserver.h> 44// #include <qtopia/alarmserver.h>
45// #endif 45// #endif
46using namespace KCal; 46using namespace KCal;
47 47
48CalendarLocal::CalendarLocal() 48CalendarLocal::CalendarLocal()
49 : Calendar() 49 : Calendar()
50{ 50{
51 init(); 51 init();
52} 52}
53 53
54CalendarLocal::CalendarLocal(const QString &timeZoneId) 54CalendarLocal::CalendarLocal(const QString &timeZoneId)
55 : Calendar(timeZoneId) 55 : Calendar(timeZoneId)
56{ 56{
57 init(); 57 init();
58} 58}
59 59
60void CalendarLocal::init() 60void CalendarLocal::init()
61{ 61{
62 mNextAlarmIncidence = 0; 62 mNextAlarmIncidence = 0;
63} 63}
64 64
65 65
66CalendarLocal::~CalendarLocal() 66CalendarLocal::~CalendarLocal()
67{ 67{
68 registerObserver( 0 ); 68 registerObserver( 0 );
69 if ( mDeleteIncidencesOnClose ) 69 if ( mDeleteIncidencesOnClose )
70 close(); 70 close();
71} 71}
72bool CalendarLocal::mergeCalendarFile( QString name ) 72bool CalendarLocal::mergeCalendarFile( QString name )
73{ 73{
74 CalendarLocal calendar( timeZoneId() ); 74 CalendarLocal calendar( timeZoneId() );
75 calendar.setDefaultCalendar( 1 ); 75 calendar.setDefaultCalendar( 1 );
76 if ( calendar.load( name ) ) { 76 if ( calendar.load( name ) ) {
77 mergeCalendar( &calendar ); 77 mergeCalendar( &calendar );
78 return true; 78 return true;
79 } 79 }
80 return false; 80 return false;
81} 81}
82 82
83Incidence* CalendarLocal::incidenceForUid( const QString& uid , bool doNotCheckDuplicates) 83Incidence* CalendarLocal::incidenceForUid( const QString& uid , bool doNotCheckDuplicates, bool enabledOnly )
84{ 84{
85 Todo *todo;; 85 Todo *todo;;
86 Incidence *retVal = 0; 86 Incidence *retVal = 0;
87 for ( todo = mTodoList.first(); todo; todo = mTodoList.next() ) { 87 for ( todo = mTodoList.first(); todo; todo = mTodoList.next() ) {
88 if ( todo->uid() == uid ) { 88 if ( todo->uid() == uid ) {
89 if ( enabledOnly )
90 if ( !todo->calEnabled() )
91 continue;
89 if ( doNotCheckDuplicates ) return todo; 92 if ( doNotCheckDuplicates ) return todo;
90 if ( retVal ) { 93 if ( retVal ) {
91 if ( retVal->calID() > todo->calID() ) { 94 if ( retVal->calID() > todo->calID() ) {
92 retVal = todo; 95 retVal = todo;
93 } 96 }
94 } else { 97 } else {
95 retVal = todo; 98 retVal = todo;
96 } 99 }
97 } 100 }
98 } 101 }
99 if ( retVal ) return retVal; 102 if ( retVal ) return retVal;
100 Event *event; 103 Event *event;
101 for ( event = mEventList.first(); event; event = mEventList.next() ) { 104 for ( event = mEventList.first(); event; event = mEventList.next() ) {
102 if ( event->uid() == uid ) { 105 if ( event->uid() == uid ) {
106 if ( enabledOnly )
107 if ( !event->calEnabled() )
108 continue;
103 if ( doNotCheckDuplicates ) return event; 109 if ( doNotCheckDuplicates ) return event;
104 if ( retVal ) { 110 if ( retVal ) {
105 if ( retVal->calID() > event->calID() ) { 111 if ( retVal->calID() > event->calID() ) {
106 retVal = event; 112 retVal = event;
107 } 113 }
108 } else { 114 } else {
109 retVal = event; 115 retVal = event;
110 } 116 }
111 } 117 }
112 } 118 }
113 if ( retVal ) return retVal; 119 if ( retVal ) return retVal;
114 for ( Journal *it = mJournalList.first(); it; it = mJournalList.next() ) 120 for ( Journal *it = mJournalList.first(); it; it = mJournalList.next() )
115 if ( it->uid() == uid ) { 121 if ( it->uid() == uid ) {
122 if ( enabledOnly )
123 if ( !it->calEnabled() )
124 continue;
116 if ( doNotCheckDuplicates ) return it; 125 if ( doNotCheckDuplicates ) return it;
117 if ( retVal ) { 126 if ( retVal ) {
118 if ( retVal->calID() > it->calID() ) { 127 if ( retVal->calID() > it->calID() ) {
119 retVal = it; 128 retVal = it;
120 } 129 }
121 } else { 130 } else {
122 retVal = it; 131 retVal = it;
123 } 132 }
124 } 133 }
125 return retVal; 134 return retVal;
126} 135}
127 136
128bool CalendarLocal::mergeCalendar( Calendar* remote ) 137bool CalendarLocal::mergeCalendar( Calendar* remote )
129{ 138{
130 // 1 look for raw inc in local 139 // 1 look for raw inc in local
131 // if inc not in remote, delete in local 140 // if inc not in remote, delete in local
132 // 2 look for raw inc in remote 141 // 2 look for raw inc in remote
133 // if inc in local, replace it 142 // if inc in local, replace it
134 // if not in local, add it to default calendar 143 // if not in local, add it to default calendar
135 QPtrList<Incidence> localInc = rawIncidences(); 144 QPtrList<Incidence> localInc = rawIncidences();
136 Incidence* inL = localInc.first(); 145 Incidence* inL = localInc.first();
137 while ( inL ) { 146 while ( inL ) {
138 if ( ! inL->isReadOnly () ) 147 if ( ! inL->isReadOnly () )
139 if ( !remote->incidenceForUid( inL->uid(), true )) 148 if ( !remote->incidenceForUid( inL->uid(), true ))
140 deleteIncidence( inL ); 149 deleteIncidence( inL );
141 inL = localInc.next(); 150 inL = localInc.next();
142 } 151 }
143 QPtrList<Incidence> er = remote->rawIncidences(); 152 QPtrList<Incidence> er = remote->rawIncidences();
144 Incidence* inR = er.first(); 153 Incidence* inR = er.first();
145 while ( inR ) { 154 while ( inR ) {
146 inL = incidenceForUid( inR->uid(),false ); 155 inL = incidenceForUid( inR->uid(),false );
147 if ( inL ) { 156 if ( inL ) {
148 if ( ! inL->isReadOnly () || inL->uid().left(15) == QString("last-syncEvent-") ) { 157 if ( ! inL->isReadOnly () || inL->uid().left(15) == QString("last-syncEvent-") ) {
149 int calID = inL->calID(); 158 int calID = inL->calID();
150 deleteIncidence( inL ); 159 deleteIncidence( inL );
151 inL = inR->clone(); 160 inL = inR->clone();
152 inL->setCalID_block( calID ); 161 inL->setCalID_block( calID );
153 addIncidence( inL ); 162 addIncidence( inL );
154 } 163 }
155 } else { 164 } else {
156 inL = inR->clone(); 165 inL = inR->clone();
157 inL->setCalID_block( 0 );// add to default cal 166 inL->setCalID_block( 0 );// add to default cal
158 addIncidence( inL ); 167 addIncidence( inL );
159 } 168 }
160 inR = er.next(); 169 inR = er.next();
161 } 170 }
162 return true; 171 return true;
163} 172}