summaryrefslogtreecommitdiffabout
authorzautrix <zautrix>2005-11-25 21:00:35 (UTC)
committer zautrix <zautrix>2005-11-25 21:00:35 (UTC)
commit81d012860ea3d5d17d0e9cf16ec992baa83efbbf (patch) (unidiff)
tree2e5ce0b81f1700f9c6dc60a8411029cd194e45a1
parent2468bddcb380d8621d5bb49b69b3492d90562d93 (diff)
downloadkdepimpi-81d012860ea3d5d17d0e9cf16ec992baa83efbbf.zip
kdepimpi-81d012860ea3d5d17d0e9cf16ec992baa83efbbf.tar.gz
kdepimpi-81d012860ea3d5d17d0e9cf16ec992baa83efbbf.tar.bz2
sync
Diffstat (more/less context) (ignore whitespace changes)
-rw-r--r--libkcal/calendarlocal.cpp3
-rw-r--r--libkdepim/ksyncmanager.cpp2
2 files changed, 3 insertions, 2 deletions
diff --git a/libkcal/calendarlocal.cpp b/libkcal/calendarlocal.cpp
index 2a57724..c33581c 100644
--- a/libkcal/calendarlocal.cpp
+++ b/libkcal/calendarlocal.cpp
@@ -18,385 +18,386 @@
18 along with this library; see the file COPYING.LIB. If not, write to 18 along with this library; see the file COPYING.LIB. If not, write to
19 the Free Software Foundation, Inc., 59 Temple Place - Suite 330, 19 the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
20 Boston, MA 02111-1307, USA. 20 Boston, MA 02111-1307, USA.
21*/ 21*/
22 22
23#include <qdatetime.h> 23#include <qdatetime.h>
24#include <qstring.h> 24#include <qstring.h>
25#include <qptrlist.h> 25#include <qptrlist.h>
26 26
27#include <kdebug.h> 27#include <kdebug.h>
28#include <kconfig.h> 28#include <kconfig.h>
29#include <kglobal.h> 29#include <kglobal.h>
30#include <klocale.h> 30#include <klocale.h>
31 31
32#include "vcaldrag.h" 32#include "vcaldrag.h"
33#include "vcalformat.h" 33#include "vcalformat.h"
34#include "icalformat.h" 34#include "icalformat.h"
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)
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 ( doNotCheckDuplicates ) return todo; 89 if ( doNotCheckDuplicates ) return todo;
90 if ( retVal ) { 90 if ( retVal ) {
91 if ( retVal->calID() > todo->calID() ) { 91 if ( retVal->calID() > todo->calID() ) {
92 retVal = todo; 92 retVal = todo;
93 } 93 }
94 } else { 94 } else {
95 retVal = todo; 95 retVal = todo;
96 } 96 }
97 } 97 }
98 } 98 }
99 if ( retVal ) return retVal; 99 if ( retVal ) return retVal;
100 Event *event; 100 Event *event;
101 for ( event = mEventList.first(); event; event = mEventList.next() ) { 101 for ( event = mEventList.first(); event; event = mEventList.next() ) {
102 if ( event->uid() == uid ) { 102 if ( event->uid() == uid ) {
103 if ( doNotCheckDuplicates ) return event; 103 if ( doNotCheckDuplicates ) return event;
104 if ( retVal ) { 104 if ( retVal ) {
105 if ( retVal->calID() > event->calID() ) { 105 if ( retVal->calID() > event->calID() ) {
106 retVal = event; 106 retVal = event;
107 } 107 }
108 } else { 108 } else {
109 retVal = event; 109 retVal = event;
110 } 110 }
111 } 111 }
112 } 112 }
113 if ( retVal ) return retVal; 113 if ( retVal ) return retVal;
114 for ( Journal *it = mJournalList.first(); it; it = mJournalList.next() ) 114 for ( Journal *it = mJournalList.first(); it; it = mJournalList.next() )
115 if ( it->uid() == uid ) { 115 if ( it->uid() == uid ) {
116 if ( doNotCheckDuplicates ) return it; 116 if ( doNotCheckDuplicates ) return it;
117 if ( retVal ) { 117 if ( retVal ) {
118 if ( retVal->calID() > it->calID() ) { 118 if ( retVal->calID() > it->calID() ) {
119 retVal = it; 119 retVal = it;
120 } 120 }
121 } else { 121 } else {
122 retVal = it; 122 retVal = it;
123 } 123 }
124 } 124 }
125 return retVal; 125 return retVal;
126} 126}
127 127
128bool CalendarLocal::mergeCalendar( Calendar* remote ) 128bool CalendarLocal::mergeCalendar( Calendar* remote )
129{ 129{
130 // 1 look for raw inc in local 130 // 1 look for raw inc in local
131 // if inc not in remote, delete in local 131 // if inc not in remote, delete in local
132 // 2 look for raw inc in remote 132 // 2 look for raw inc in remote
133 // if inc in local, replace it 133 // if inc in local, replace it
134 // if not in local, add it to default calendar 134 // if not in local, add it to default calendar
135 QPtrList<Incidence> localInc = rawIncidences(); 135 QPtrList<Incidence> localInc = rawIncidences();
136 Incidence* inL = localInc.first(); 136 Incidence* inL = localInc.first();
137 while ( inL ) { 137 while ( inL ) {
138 if ( ! inL->isReadOnly () ) 138 if ( ! inL->isReadOnly () )
139 if ( !remote->incidenceForUid( inL->uid(), true )) 139 if ( !remote->incidenceForUid( inL->uid(), true ))
140 deleteIncidence( inL ); 140 deleteIncidence( inL );
141 inL = localInc.next(); 141 inL = localInc.next();
142 } 142 }
143 QPtrList<Incidence> er = remote->rawIncidences(); 143 QPtrList<Incidence> er = remote->rawIncidences();
144 Incidence* inR = er.first(); 144 Incidence* inR = er.first();
145 while ( inR ) { 145 while ( inR ) {
146 inL = incidenceForUid( inR->uid(),false ); 146 inL = incidenceForUid( inR->uid(),false );
147 if ( inL ) { 147 if ( inL ) {
148 if ( ! inL->isReadOnly () || inL->uid().left(15) == QString("last-syncEvent-") ) { 148 if ( ! inL->isReadOnly () || inL->uid().left(15) == QString("last-syncEvent-") ) {
149 int calID = inL->calID(); 149 int calID = inL->calID();
150 deleteIncidence( inL ); 150 deleteIncidence( inL );
151 inL = inR->clone(); 151 inL = inR->clone();
152 inL->setCalID( calID ); 152 inL->setCalID( calID );
153 addIncidence( inL ); 153 addIncidence( inL );
154 } 154 }
155 } else { 155 } else {
156 inL = inR->clone(); 156 inL = inR->clone();
157 inL->setCalID( 0 );// add to default cal 157 inL->setCalID( 0 );// add to default cal
158 addIncidence( inL ); 158 addIncidence( inL );
159 } 159 }
160 inR = er.next(); 160 inR = er.next();
161 } 161 }
162 return true; 162 return true;
163} 163}
164 164
165 165
166bool CalendarLocal::addCalendarFile( QString name, int id ) 166bool CalendarLocal::addCalendarFile( QString name, int id )
167{ 167{
168 CalendarLocal calendar( timeZoneId() ); 168 CalendarLocal calendar( timeZoneId() );
169 calendar.setDefaultCalendar( id ); 169 calendar.setDefaultCalendar( id );
170 if ( calendar.load( name ) ) { 170 if ( calendar.load( name ) ) {
171 addCalendar( &calendar ); 171 addCalendar( &calendar );
172 return true; 172 return true;
173 } 173 }
174 return false; 174 return false;
175} 175}
176void CalendarLocal::setSyncEventsEnabled() 176void CalendarLocal::setSyncEventsEnabled()
177{ 177{
178 Event * ev; 178 Event * ev;
179 ev = mEventList.first(); 179 ev = mEventList.first();
180 while ( ev ) { 180 while ( ev ) {
181 if ( ev->uid().left(15) == QString("last-syncEvent-") ) 181 if ( ev->uid().left(15) == QString("last-syncEvent-") )
182 ev->setCalEnabled( true ); 182 ev->setCalEnabled( true );
183 ev = mEventList.next(); 183 ev = mEventList.next();
184 } 184 }
185} 185}
186void CalendarLocal::setSyncEventsReadOnly() 186void CalendarLocal::setSyncEventsReadOnly()
187{ 187{
188 Event * ev; 188 Event * ev;
189 ev = mEventList.first(); 189 ev = mEventList.first();
190 while ( ev ) { 190 while ( ev ) {
191 if ( ev->uid().left(15) == QString("last-syncEvent-") ) { 191 if ( ev->uid().left(15) == QString("last-syncEvent-") ) {
192 ev->setReadOnly( true ); 192 ev->setReadOnly( true );
193 } 193 }
194 ev = mEventList.next(); 194 ev = mEventList.next();
195 } 195 }
196} 196}
197 197
198void CalendarLocal::addCalendar( Calendar* cal ) 198void CalendarLocal::addCalendar( Calendar* cal )
199{ 199{
200 cal->setDontDeleteIncidencesOnClose(); 200 cal->setDontDeleteIncidencesOnClose();
201 setSyncEventsEnabled(); 201 setSyncEventsEnabled();
202 { 202 {
203 QPtrList<Event> EventList = cal->rawEvents(); 203 QPtrList<Event> EventList = cal->rawEvents();
204 QPtrList<Event> el; 204 QPtrList<Event> el;
205 Event * ev = EventList.first(); 205 Event * ev = EventList.first();
206 while ( ev ) { 206 while ( ev ) {
207 if ( ev->uid().left( 15 ) == QString("last-syncEvent-") ) { 207 if ( ev->uid().left( 15 ) == QString("last-syncEvent-") ) {
208 Event * se = event( ev->uid() ); 208 Event * se = event( ev->uid() );
209 if ( se ) 209 if ( se )
210 el.append( se ); 210 el.append( se );
211 ev->setCalID( 1 );
211 } 212 }
212 ev->unRegisterObserver( cal ); 213 ev->unRegisterObserver( cal );
213 ev->registerObserver( this ); 214 ev->registerObserver( this );
214 mEventList.append( ev ); 215 mEventList.append( ev );
215 ev = EventList.next(); 216 ev = EventList.next();
216 } 217 }
217 for ( ev = el.first(); ev; ev = el.next() ) { 218 for ( ev = el.first(); ev; ev = el.next() ) {
218 deleteIncidence ( ev ); 219 deleteIncidence ( ev );
219 } 220 }
220 } 221 }
221 { 222 {
222 223
223 QPtrList<Todo> TodoList = cal->rawTodos(); 224 QPtrList<Todo> TodoList = cal->rawTodos();
224 Todo * ev = TodoList.first(); 225 Todo * ev = TodoList.first();
225 while ( ev ) { 226 while ( ev ) {
226 QString rel = ev->relatedToUid(); 227 QString rel = ev->relatedToUid();
227 if ( !rel.isEmpty() ){ 228 if ( !rel.isEmpty() ){
228 ev->setRelatedTo ( 0 ); 229 ev->setRelatedTo ( 0 );
229 ev->setRelatedToUid( rel ); 230 ev->setRelatedToUid( rel );
230 } 231 }
231 ev = TodoList.next(); 232 ev = TodoList.next();
232 } 233 }
233 //TodoList = cal->rawTodos(); 234 //TodoList = cal->rawTodos();
234 ev = TodoList.first(); 235 ev = TodoList.first();
235 while ( ev ) { 236 while ( ev ) {
236 ev->unRegisterObserver( cal ); 237 ev->unRegisterObserver( cal );
237 ev->registerObserver( this ); 238 ev->registerObserver( this );
238 mTodoList.append( ev ); 239 mTodoList.append( ev );
239 setupRelations( ev ); 240 setupRelations( ev );
240 ev = TodoList.next(); 241 ev = TodoList.next();
241 } 242 }
242 } 243 }
243 { 244 {
244 QPtrList<Journal> JournalList = cal->journals(); 245 QPtrList<Journal> JournalList = cal->journals();
245 Journal * ev = JournalList.first(); 246 Journal * ev = JournalList.first();
246 while ( ev ) { 247 while ( ev ) {
247 ev->unRegisterObserver( cal ); 248 ev->unRegisterObserver( cal );
248 ev->registerObserver( this ); 249 ev->registerObserver( this );
249 mJournalList.append( ev ); 250 mJournalList.append( ev );
250 ev = JournalList.next(); 251 ev = JournalList.next();
251 } 252 }
252 } 253 }
253 setModified( true ); 254 setModified( true );
254} 255}
255bool CalendarLocal::load( const QString &fileName ) 256bool CalendarLocal::load( const QString &fileName )
256{ 257{
257 FileStorage storage( this, fileName ); 258 FileStorage storage( this, fileName );
258 return storage.load(); 259 return storage.load();
259} 260}
260 261
261bool CalendarLocal::save( const QString &fileName, CalFormat *format ) 262bool CalendarLocal::save( const QString &fileName, CalFormat *format )
262{ 263{
263 FileStorage storage( this, fileName, format ); 264 FileStorage storage( this, fileName, format );
264 return storage.save(); 265 return storage.save();
265} 266}
266 267
267void CalendarLocal::stopAllTodos() 268void CalendarLocal::stopAllTodos()
268{ 269{
269 for ( Todo *it = mTodoList.first(); it; it = mTodoList.next() ) 270 for ( Todo *it = mTodoList.first(); it; it = mTodoList.next() )
270 it->setRunning( false ); 271 it->setRunning( false );
271 272
272} 273}
273void CalendarLocal::close() 274void CalendarLocal::close()
274{ 275{
275 276
276 Todo * i; 277 Todo * i;
277 for( i = mTodoList.first(); i; i = mTodoList.next() ) i->setRunning(false); 278 for( i = mTodoList.first(); i; i = mTodoList.next() ) i->setRunning(false);
278 279
279 mEventList.setAutoDelete( true ); 280 mEventList.setAutoDelete( true );
280 mTodoList.setAutoDelete( true ); 281 mTodoList.setAutoDelete( true );
281 mJournalList.setAutoDelete( true ); 282 mJournalList.setAutoDelete( true );
282 283
283 mEventList.clear(); 284 mEventList.clear();
284 mTodoList.clear(); 285 mTodoList.clear();
285 mJournalList.clear(); 286 mJournalList.clear();
286 287
287 mEventList.setAutoDelete( false ); 288 mEventList.setAutoDelete( false );
288 mTodoList.setAutoDelete( false ); 289 mTodoList.setAutoDelete( false );
289 mJournalList.setAutoDelete( false ); 290 mJournalList.setAutoDelete( false );
290 291
291 setModified( false ); 292 setModified( false );
292} 293}
293 294
294bool CalendarLocal::addAnniversaryNoDup( Event *event ) 295bool CalendarLocal::addAnniversaryNoDup( Event *event )
295{ 296{
296 QString cat; 297 QString cat;
297 bool isBirthday = true; 298 bool isBirthday = true;
298 if( event->categoriesStr() == i18n( "Anniversary" ) ) { 299 if( event->categoriesStr() == i18n( "Anniversary" ) ) {
299 isBirthday = false; 300 isBirthday = false;
300 cat = i18n( "Anniversary" ); 301 cat = i18n( "Anniversary" );
301 } else if( event->categoriesStr() == i18n( "Birthday" ) ) { 302 } else if( event->categoriesStr() == i18n( "Birthday" ) ) {
302 isBirthday = true; 303 isBirthday = true;
303 cat = i18n( "Birthday" ); 304 cat = i18n( "Birthday" );
304 } else { 305 } else {
305 qDebug("addAnniversaryNoDup called without fitting category! "); 306 qDebug("addAnniversaryNoDup called without fitting category! ");
306 return false; 307 return false;
307 } 308 }
308 Event * eve; 309 Event * eve;
309 for ( eve = mEventList.first(); eve ; eve = mEventList.next() ) { 310 for ( eve = mEventList.first(); eve ; eve = mEventList.next() ) {
310 if ( !(eve->categories().contains( cat ) )) 311 if ( !(eve->categories().contains( cat ) ))
311 continue; 312 continue;
312 // now we have an event with fitting category 313 // now we have an event with fitting category
313 if ( eve->dtStart().date() != event->dtStart().date() ) 314 if ( eve->dtStart().date() != event->dtStart().date() )
314 continue; 315 continue;
315 // now we have an event with fitting category+date 316 // now we have an event with fitting category+date
316 if ( eve->summary() != event->summary() ) 317 if ( eve->summary() != event->summary() )
317 continue; 318 continue;
318 // now we have an event with fitting category+date+summary 319 // now we have an event with fitting category+date+summary
319 return false; 320 return false;
320 } 321 }
321 return addEvent( event ); 322 return addEvent( event );
322 323
323} 324}
324bool CalendarLocal::addEventNoDup( Event *event ) 325bool CalendarLocal::addEventNoDup( Event *event )
325{ 326{
326 Event * eve; 327 Event * eve;
327 for ( eve = mEventList.first(); eve ; eve = mEventList.next() ) { 328 for ( eve = mEventList.first(); eve ; eve = mEventList.next() ) {
328 if ( *eve == *event ) { 329 if ( *eve == *event ) {
329 //qDebug("CalendarLocal::Duplicate event found! Not inserted! "); 330 //qDebug("CalendarLocal::Duplicate event found! Not inserted! ");
330 return false; 331 return false;
331 } 332 }
332 } 333 }
333 return addEvent( event ); 334 return addEvent( event );
334} 335}
335 336
336bool CalendarLocal::addEvent( Event *event ) 337bool CalendarLocal::addEvent( Event *event )
337{ 338{
338 insertEvent( event ); 339 insertEvent( event );
339 340
340 event->registerObserver( this ); 341 event->registerObserver( this );
341 342
342 setModified( true ); 343 setModified( true );
343 if ( event->calID() == 0 ) 344 if ( event->calID() == 0 )
344 event->setCalID( mDefaultCalendar ); 345 event->setCalID( mDefaultCalendar );
345 event->setCalEnabled( true ); 346 event->setCalEnabled( true );
346 347
347 return true; 348 return true;
348} 349}
349 350
350void CalendarLocal::deleteEvent( Event *event ) 351void CalendarLocal::deleteEvent( Event *event )
351{ 352{
352 clearUndo(event); 353 clearUndo(event);
353 if ( mEventList.removeRef( event ) ) { 354 if ( mEventList.removeRef( event ) ) {
354 setModified( true ); 355 setModified( true );
355 } 356 }
356} 357}
357 358
358 359
359Event *CalendarLocal::event( const QString &uid ) 360Event *CalendarLocal::event( const QString &uid )
360{ 361{
361 Event *event; 362 Event *event;
362 Event *retVal = 0; 363 Event *retVal = 0;
363 for ( event = mEventList.first(); event; event = mEventList.next() ) { 364 for ( event = mEventList.first(); event; event = mEventList.next() ) {
364 if ( event->calEnabled() && event->uid() == uid ) { 365 if ( event->calEnabled() && event->uid() == uid ) {
365 if ( retVal ) { 366 if ( retVal ) {
366 if ( retVal->calID() > event->calID() ) { 367 if ( retVal->calID() > event->calID() ) {
367 retVal = event; 368 retVal = event;
368 } 369 }
369 } else { 370 } else {
370 retVal = event; 371 retVal = event;
371 } 372 }
372 } 373 }
373 } 374 }
374 return retVal; 375 return retVal;
375} 376}
376bool CalendarLocal::addTodoNoDup( Todo *todo ) 377bool CalendarLocal::addTodoNoDup( Todo *todo )
377{ 378{
378 Todo * eve; 379 Todo * eve;
379 for ( eve = mTodoList.first(); eve ; eve = mTodoList.next() ) { 380 for ( eve = mTodoList.first(); eve ; eve = mTodoList.next() ) {
380 if ( *eve == *todo ) { 381 if ( *eve == *todo ) {
381 //qDebug("duplicate todo found! not inserted! "); 382 //qDebug("duplicate todo found! not inserted! ");
382 return false; 383 return false;
383 } 384 }
384 } 385 }
385 return addTodo( todo ); 386 return addTodo( todo );
386} 387}
387bool CalendarLocal::addTodo( Todo *todo ) 388bool CalendarLocal::addTodo( Todo *todo )
388{ 389{
389 mTodoList.append( todo ); 390 mTodoList.append( todo );
390 391
391 todo->registerObserver( this ); 392 todo->registerObserver( this );
392 393
393 // Set up subtask relations 394 // Set up subtask relations
394 setupRelations( todo ); 395 setupRelations( todo );
395 396
396 setModified( true ); 397 setModified( true );
397 if ( todo->calID() == 0 ) 398 if ( todo->calID() == 0 )
398 todo->setCalID( mDefaultCalendar ); 399 todo->setCalID( mDefaultCalendar );
399 todo->setCalEnabled( true ); 400 todo->setCalEnabled( true );
400 return true; 401 return true;
401} 402}
402 403
diff --git a/libkdepim/ksyncmanager.cpp b/libkdepim/ksyncmanager.cpp
index d2cb71b..e1b15d2 100644
--- a/libkdepim/ksyncmanager.cpp
+++ b/libkdepim/ksyncmanager.cpp
@@ -1584,195 +1584,195 @@ void KCommandSocket::updateConnectDialog()
1584 --mConnectCount; 1584 --mConnectCount;
1585 if ( mConnectCount > 0 ) 1585 if ( mConnectCount > 0 )
1586 mTimerSocket->start( 1000, true ); 1586 mTimerSocket->start( 1000, true );
1587 else 1587 else
1588 deleteSocket(); 1588 deleteSocket();
1589 1589
1590} 1590}
1591void KCommandSocket::writeFile( QString fileName ) 1591void KCommandSocket::writeFile( QString fileName )
1592{ 1592{
1593 if ( !mSocket ) { 1593 if ( !mSocket ) {
1594 mSocket = new QSocket( this ); 1594 mSocket = new QSocket( this );
1595 connect( mSocket, SIGNAL(delayedCloseFinished ()), this, SLOT(deleteSocket()) ); 1595 connect( mSocket, SIGNAL(delayedCloseFinished ()), this, SLOT(deleteSocket()) );
1596 connect( mSocket, SIGNAL(connected ()), this, SLOT(writeFileToSocket()) ); 1596 connect( mSocket, SIGNAL(connected ()), this, SLOT(writeFileToSocket()) );
1597 } 1597 }
1598 mFileName = fileName ; 1598 mFileName = fileName ;
1599 mConnectCount = 30;mConnectMax = 30; 1599 mConnectCount = 30;mConnectMax = 30;
1600 mTimerSocket->start( 1000, true ); 1600 mTimerSocket->start( 1000, true );
1601 mSocket->connectToHost( mHost, mPort ); 1601 mSocket->connectToHost( mHost, mPort );
1602} 1602}
1603void KCommandSocket::writeFileToSocket() 1603void KCommandSocket::writeFileToSocket()
1604{ 1604{
1605 mTimerSocket->stop(); 1605 mTimerSocket->stop();
1606 QFile file2( mFileName ); 1606 QFile file2( mFileName );
1607 if (!file2.open( IO_ReadOnly ) ) { 1607 if (!file2.open( IO_ReadOnly ) ) {
1608 mConnectProgress.hide(); 1608 mConnectProgress.hide();
1609 mConnectCount = -1; 1609 mConnectCount = -1;
1610 mRetVal= errorW; 1610 mRetVal= errorW;
1611 mSocket->close(); 1611 mSocket->close();
1612 if ( mSocket->state() == QSocket::Idle ) 1612 if ( mSocket->state() == QSocket::Idle )
1613 QTimer::singleShot( 10, this , SLOT ( deleteSocket())); 1613 QTimer::singleShot( 10, this , SLOT ( deleteSocket()));
1614 return ; 1614 return ;
1615 } 1615 }
1616 mConnectProgress.setTotalSteps ( file2.size() ); 1616 mConnectProgress.setTotalSteps ( file2.size() );
1617 mConnectProgress.show(); 1617 mConnectProgress.show();
1618 int count = 0; 1618 int count = 0;
1619 mConnectProgress.setLabelText( i18n("Sending back synced file...") ); 1619 mConnectProgress.setLabelText( i18n("Sending back synced file...") );
1620 mConnectProgress.setProgress( count ); 1620 mConnectProgress.setProgress( count );
1621 mConnectProgress.blockSignals( true ); 1621 mConnectProgress.blockSignals( true );
1622 QTextStream ts2( &file2 ); 1622 QTextStream ts2( &file2 );
1623 ts2.setEncoding( QTextStream::Latin1 ); 1623 ts2.setEncoding( QTextStream::Latin1 );
1624 QTextStream os2( mSocket ); 1624 QTextStream os2( mSocket );
1625 os2.setEncoding( QTextStream::Latin1 ); 1625 os2.setEncoding( QTextStream::Latin1 );
1626 os2 << "PUT " << mPassWord << " " << mRemoteResource << "\r\n\r\n";; 1626 os2 << "PUT " << mPassWord << " " << mRemoteResource << "\r\n\r\n";;
1627 int byteCount = 0; 1627 int byteCount = 0;
1628 int byteMax = file2.size()/53; 1628 int byteMax = file2.size()/53;
1629 while ( ! ts2.atEnd() ) { 1629 while ( ! ts2.atEnd() ) {
1630 qApp->processEvents(); 1630 qApp->processEvents();
1631 if ( byteCount > byteMax ) { 1631 if ( byteCount > byteMax ) {
1632 byteCount = 0; 1632 byteCount = 0;
1633 mConnectProgress.setProgress( count ); 1633 mConnectProgress.setProgress( count );
1634 } 1634 }
1635 QString temp = ts2.readLine(); 1635 QString temp = ts2.readLine();
1636 count += temp.length(); 1636 count += temp.length();
1637 byteCount += temp.length(); 1637 byteCount += temp.length();
1638 os2 << temp << "\r\n"; 1638 os2 << temp << "\r\n";
1639 } 1639 }
1640 file2.close(); 1640 file2.close();
1641 mConnectProgress.hide(); 1641 mConnectProgress.hide();
1642 mConnectCount = -1; 1642 mConnectCount = -1;
1643 os2 << "\r\n"; 1643 os2 << "\r\n";
1644 mRetVal= successW; 1644 mRetVal= successW;
1645 mSocket->close(); 1645 mSocket->close();
1646 if ( mSocket->state() == QSocket::Idle ) 1646 if ( mSocket->state() == QSocket::Idle )
1647 QTimer::singleShot( 10, this , SLOT ( deleteSocket())); 1647 QTimer::singleShot( 10, this , SLOT ( deleteSocket()));
1648 mConnectProgress.blockSignals( false ); 1648 mConnectProgress.blockSignals( false );
1649} 1649}
1650void KCommandSocket::sendStop() 1650void KCommandSocket::sendStop()
1651{ 1651{
1652 if ( !mSocket ) { 1652 if ( !mSocket ) {
1653 mSocket = new QSocket( this ); 1653 mSocket = new QSocket( this );
1654 connect( mSocket, SIGNAL(delayedCloseFinished ()), this, SLOT(deleteSocket()) ); 1654 connect( mSocket, SIGNAL(delayedCloseFinished ()), this, SLOT(deleteSocket()) );
1655 } 1655 }
1656 mSocket->connectToHost( mHost, mPort ); 1656 mSocket->connectToHost( mHost, mPort );
1657 QTextStream os2( mSocket ); 1657 QTextStream os2( mSocket );
1658 os2.setEncoding( QTextStream::Latin1 ); 1658 os2.setEncoding( QTextStream::Latin1 );
1659 os2 << "STOP\r\n\r\n"; 1659 os2 << "STOP\r\n\r\n";
1660 mSocket->close(); 1660 mSocket->close();
1661 if ( mSocket->state() == QSocket::Idle ) 1661 if ( mSocket->state() == QSocket::Idle )
1662 QTimer::singleShot( 10, this , SLOT ( deleteSocket())); 1662 QTimer::singleShot( 10, this , SLOT ( deleteSocket()));
1663} 1663}
1664 1664
1665void KCommandSocket::startReadFileFromSocket() 1665void KCommandSocket::startReadFileFromSocket()
1666{ 1666{
1667 if ( ! mFirst ) 1667 if ( ! mFirst )
1668 return; 1668 return;
1669 mConnectProgress.setLabelText( i18n("Receiving file from remote...") ); 1669 mConnectProgress.setLabelText( i18n("Receiving file from remote...") );
1670 mFirst = false; 1670 mFirst = false;
1671 mFileString = ""; 1671 mFileString = "";
1672 mTime.start(); 1672 mTime.start();
1673 mFirstLine = true; 1673 mFirstLine = true;
1674 QTimer::singleShot( 1, this , SLOT (readFileFromSocket( ) )); 1674 QTimer::singleShot( 1, this , SLOT (readFileFromSocket( ) ));
1675 1675
1676} 1676}
1677void KCommandSocket::readFileFromSocket() 1677void KCommandSocket::readFileFromSocket()
1678{ 1678{
1679 //qDebug("readBackFileFromSocket() %d ", mTime.elapsed ()); 1679 //qDebug("readBackFileFromSocket() %d ", mTime.elapsed ());
1680 while ( mSocket->canReadLine () ) { 1680 while ( mSocket->canReadLine () ) {
1681 mTime.restart(); 1681 mTime.restart();
1682 QString line = mSocket->readLine (); 1682 QString line = mSocket->readLine ();
1683 if ( mFirstLine ) { 1683 if ( mFirstLine ) {
1684 mFirstLine = false; 1684 mFirstLine = false;
1685 if ( line.left( 6 ) == "ERROR_" ) { 1685 if ( line.left( 6 ) == "ERROR_" ) {
1686 mTimerSocket->stop(); 1686 mTimerSocket->stop();
1687 mConnectCount = -1; 1687 mConnectCount = -1;
1688 if ( line.left( 8 ) == "ERROR_PW" ) { 1688 if ( line.left( 8 ) == "ERROR_PW" ) {
1689 mRetVal = errorPW; 1689 mRetVal = errorPW;
1690 deleteSocket(); 1690 deleteSocket();
1691 return ; 1691 return ;
1692 } 1692 }
1693 if ( line.left( 8 ) == "ERROR_CA" ) { 1693 if ( line.left( 8 ) == "ERROR_CA" ) {
1694 mRetVal = errorCA; 1694 mRetVal = errorCA;
1695 deleteSocket(); 1695 deleteSocket();
1696 return ; 1696 return ;
1697 } 1697 }
1698 if ( line.left( 8 ) == "ERROR_FI" ) { 1698 if ( line.left( 8 ) == "ERROR_FI" ) {
1699 mRetVal = errorFI; 1699 mRetVal = errorFI;
1700 deleteSocket(); 1700 deleteSocket();
1701 return ; 1701 return ;
1702 } 1702 }
1703 if ( line.left( 8 ) == "ERROR_ED" ) { 1703 if ( line.left( 8 ) == "ERROR_ED" ) {
1704 mRetVal = errorED; 1704 mRetVal = errorED;
1705 deleteSocket(); 1705 deleteSocket();
1706 return ; 1706 return ;
1707 } 1707 }
1708 mRetVal = errorUN; 1708 mRetVal = errorUN;
1709 deleteSocket(); 1709 deleteSocket();
1710 return ; 1710 return ;
1711 } 1711 }
1712 } 1712 }
1713 mFileString += line; 1713 mFileString += line;
1714 //qDebug("readline: %s ", line.latin1()); 1714 //qDebug("readline: %s ", line.latin1());
1715 } 1715 }
1716 if ( mTime.elapsed () < 3000 ) { 1716 if ( mTime.elapsed () < 3000 ) {
1717 // wait for more 1717 // wait for more
1718 //qDebug("waitformore "); 1718 //qDebug("waitformore ");
1719 QTimer::singleShot( 100, this , SLOT (readFileFromSocket( ) )); 1719 QTimer::singleShot( 100, this , SLOT (readFileFromSocket( ) ));
1720 return; 1720 return;
1721 } 1721 }
1722 mTimerSocket->stop(); 1722 mTimerSocket->stop();
1723 mConnectCount = -1; 1723 mConnectCount = -1;
1724 mConnectProgress.hide(); 1724 mConnectProgress.hide();
1725 QString fileName = mFileName; 1725 QString fileName = mFileName;
1726 QFile file ( fileName ); 1726 QFile file ( fileName );
1727 if (!file.open( IO_WriteOnly ) ) { 1727 if (!file.open( IO_WriteOnly ) ) {
1728 mFileString = ""; 1728 mFileString = "";
1729 mRetVal = errorR; 1729 mRetVal = errorR;
1730 qDebug("KSS:Error open temp sync file for writing: %s",fileName.latin1() ); 1730 qDebug("KSS:Error open temp sync file for writing: %s",fileName.latin1() );
1731 deleteSocket(); 1731 deleteSocket();
1732 return ; 1732 return ;
1733 1733
1734 } 1734 }
1735 // mView->setLoadedFileVersion(QDateTime::currentDateTime().addSecs( -1)); 1735 // mView->setLoadedFileVersion(QDateTime::currentDateTime().addSecs( -1));
1736 QTextStream ts ( &file ); 1736 QTextStream ts ( &file );
1737 ts.setEncoding( QTextStream::Latin1 ); 1737 ts.setEncoding( QTextStream::Latin1 );
1738 ts << mFileString; 1738 ts << mFileString;
1739 file.close(); 1739 file.close();
1740 mFileString = ""; 1740 mFileString = "";
1741 mRetVal = successR; 1741 mRetVal = successR;
1742 mSocket->close(); 1742 mSocket->close();
1743 // if state is not idle, deleteSocket(); is called via 1743 // if state is not idle, deleteSocket(); is called via
1744 // connect( mSocket, SIGNAL(delayedCloseFinished ()), this, SLOT(deleteSocket()) ); 1744 // connect( mSocket, SIGNAL(delayedCloseFinished ()), this, SLOT(deleteSocket()) );
1745 if ( mSocket->state() == QSocket::Idle ) 1745 if ( mSocket->state() == QSocket::Idle )
1746 deleteSocket(); 1746 deleteSocket();
1747} 1747}
1748 1748
1749void KCommandSocket::deleteSocket() 1749void KCommandSocket::deleteSocket()
1750{ 1750{
1751 //qDebug("KCommandSocket::deleteSocket() "); 1751 //qDebug("KCommandSocket::deleteSocket() ");
1752 mConnectProgress.hide(); 1752 mConnectProgress.hide();
1753 1753
1754 if ( mConnectCount >= 0 ) { 1754 if ( mConnectCount >= 0 ) {
1755 mTimerSocket->stop(); 1755 mTimerSocket->stop();
1756 mRetVal = errorTO; 1756 mRetVal = errorTO;
1757 qDebug("KCS::Connection to remote host timed out"); 1757 qDebug("KCS::Connection to remote host timed out");
1758 if ( mSocket ) { 1758 if ( mSocket ) {
1759 mSocket->close(); 1759 mSocket->close();
1760 //if ( mSocket->state() == QSocket::Idle ) 1760 //if ( mSocket->state() == QSocket::Idle )
1761 // deleteSocket(); 1761 // deleteSocket();
1762 delete mSocket; 1762 delete mSocket;
1763 mSocket = 0; 1763 mSocket = 0;
1764 } 1764 }
1765 if ( mConnectCount == 0 ) 1765 if ( mConnectCount == 0 )
1766 KMessageBox::error( 0, i18n("Connection to remote\nhost timed out!\nDid you forgot to enable\nsyncing on remote host?")); 1766 KMessageBox::error( 0, i18n("Connection to remote\nhost timed out!\nDid you forgot to enable\nsyncing on remote host?"));
1767 else if ( tlw ) 1767 else if ( tlw )
1768 tlw->setCaption( i18n("Connection to remote host cancelled!") ); 1768 tlw->setCaption( i18n("Connection to remote host cancelled!") );
1769 emit commandFinished( this, mRetVal ); 1769 emit commandFinished( this, mRetVal );
1770 return; 1770 return;
1771 } 1771 }
1772 //qDebug("KCommandSocket::deleteSocket() %d", mRetVal ); 1772 //qDebug("KCommandSocket::deleteSocket() %d", mRetVal );
1773 if ( mSocket) 1773 if ( mSocket)
1774 delete mSocket; 1774 delete mSocket;
1775 mSocket = 0; 1775 mSocket = 0;
1776 qDebug("commandFinished "); 1776 //qDebug("commandFinished ");
1777 emit commandFinished( this, mRetVal ); 1777 emit commandFinished( this, mRetVal );
1778} 1778}