summaryrefslogtreecommitdiffabout
path: root/libkdepim
Unidiff
Diffstat (limited to 'libkdepim') (more/less context) (ignore whitespace changes)
-rw-r--r--libkdepim/ksyncmanager.cpp31
1 files changed, 28 insertions, 3 deletions
diff --git a/libkdepim/ksyncmanager.cpp b/libkdepim/ksyncmanager.cpp
index 9857e3e..9a1f2a9 100644
--- a/libkdepim/ksyncmanager.cpp
+++ b/libkdepim/ksyncmanager.cpp
@@ -162,613 +162,616 @@ void KSyncManager::fillSyncMenu()
162} 162}
163void KSyncManager::slotClearMenu( int action ) 163void KSyncManager::slotClearMenu( int action )
164{ 164{
165 QString syncDevice; 165 QString syncDevice;
166 if ( action > 999 ) { 166 if ( action > 999 ) {
167 syncDevice = mSyncProfileNames[action - 1000] ; 167 syncDevice = mSyncProfileNames[action - 1000] ;
168 } 168 }
169 169
170 170
171 171
172 int result = 0; 172 int result = 0;
173 QString sd; 173 QString sd;
174 if ( syncDevice.isEmpty() ) 174 if ( syncDevice.isEmpty() )
175 sd = i18n("Do you want to\nclear all sync info\nof all profiles?"); 175 sd = i18n("Do you want to\nclear all sync info\nof all profiles?");
176 else 176 else
177 sd = i18n("Do you want to\nclear the sync\ninfo of profile\n%1?\n"). arg( syncDevice ); 177 sd = i18n("Do you want to\nclear the sync\ninfo of profile\n%1?\n"). arg( syncDevice );
178 178
179 result = QMessageBox::warning( mParent, i18n("Warning!"),sd,i18n("OK"), i18n("Cancel"), 0, 179 result = QMessageBox::warning( mParent, i18n("Warning!"),sd,i18n("OK"), i18n("Cancel"), 0,
180 0, 1 ); 180 0, 1 );
181 if ( result ) 181 if ( result )
182 return; 182 return;
183 mImplementation->removeSyncInfo( syncDevice ); 183 mImplementation->removeSyncInfo( syncDevice );
184} 184}
185void KSyncManager::slotSyncMenu( int action ) 185void KSyncManager::slotSyncMenu( int action )
186{ 186{
187 qDebug("syncaction %d ", action); 187 qDebug("syncaction %d ", action);
188 if ( action == 5000 ) 188 if ( action == 5000 )
189 return; 189 return;
190 mSyncWithDesktop = false; 190 mSyncWithDesktop = false;
191 if ( action == 0 ) { 191 if ( action == 0 ) {
192 192
193 // seems to be a Qt2 event handling bug 193 // seems to be a Qt2 event handling bug
194 // syncmenu.clear causes a segfault at first time 194 // syncmenu.clear causes a segfault at first time
195 // when we call it after the main event loop, it is ok 195 // when we call it after the main event loop, it is ok
196 // same behaviour when calling OM/Pi via QCOP for the first time 196 // same behaviour when calling OM/Pi via QCOP for the first time
197 QTimer::singleShot ( 1, this, SLOT ( confSync() ) ); 197 QTimer::singleShot ( 1, this, SLOT ( confSync() ) );
198 //confSync(); 198 //confSync();
199 199
200 return; 200 return;
201 } 201 }
202 if ( action == 1 ) { 202 if ( action == 1 ) {
203 multiSync( true ); 203 multiSync( true );
204 return; 204 return;
205 } 205 }
206 if ( action == 2 ) { 206 if ( action == 2 ) {
207 enableQuick(); 207 enableQuick();
208 QTimer::singleShot ( 1, this, SLOT ( fillSyncMenu() ) ); 208 QTimer::singleShot ( 1, this, SLOT ( fillSyncMenu() ) );
209 return; 209 return;
210 } 210 }
211 if ( action == 3 ) { 211 if ( action == 3 ) {
212 delete mServerSocket; 212 delete mServerSocket;
213 mServerSocket = 0; 213 mServerSocket = 0;
214 QTimer::singleShot ( 1, this, SLOT ( fillSyncMenu() ) ); 214 QTimer::singleShot ( 1, this, SLOT ( fillSyncMenu() ) );
215 return; 215 return;
216 } 216 }
217 217
218 if (blockSave()) 218 if (blockSave())
219 return; 219 return;
220 220
221 setBlockSave(true); 221 setBlockSave(true);
222 bool silent = false; 222 bool silent = false;
223 if ( action == 999 ) { 223 if ( action == 999 ) {
224 //special mode for silent syncing 224 //special mode for silent syncing
225 action = 1000; 225 action = 1000;
226 silent = true; 226 silent = true;
227 } 227 }
228 228
229 mCurrentSyncProfile = action - 1000 ; 229 mCurrentSyncProfile = action - 1000 ;
230 mCurrentSyncDevice = mSyncProfileNames[mCurrentSyncProfile] ; 230 mCurrentSyncDevice = mSyncProfileNames[mCurrentSyncProfile] ;
231 mCurrentSyncName = mLocalMachineName ; 231 mCurrentSyncName = mLocalMachineName ;
232 KConfig config ( locateLocal( "config","ksyncprofilesrc" ) ); 232 KConfig config ( locateLocal( "config","ksyncprofilesrc" ) );
233 KSyncProfile* temp = new KSyncProfile (); 233 KSyncProfile* temp = new KSyncProfile ();
234 temp->setName(mSyncProfileNames[mCurrentSyncProfile]); 234 temp->setName(mSyncProfileNames[mCurrentSyncProfile]);
235 temp->readConfig(&config); 235 temp->readConfig(&config);
236 if (silent) { 236 if (silent) {
237 mAskForPreferences = false; 237 mAskForPreferences = false;
238 mShowSyncSummary = false; 238 mShowSyncSummary = false;
239 mWriteBackFile = true; 239 mWriteBackFile = true;
240 mSyncAlgoPrefs = 2;// take newest 240 mSyncAlgoPrefs = 2;// take newest
241 } 241 }
242 else { 242 else {
243 mAskForPreferences = temp->getAskForPreferences(); 243 mAskForPreferences = temp->getAskForPreferences();
244 mShowSyncSummary = temp->getShowSummaryAfterSync(); 244 mShowSyncSummary = temp->getShowSummaryAfterSync();
245 mWriteBackFile = temp->getWriteBackFile(); 245 mWriteBackFile = temp->getWriteBackFile();
246 mSyncAlgoPrefs = temp->getSyncPrefs(); 246 mSyncAlgoPrefs = temp->getSyncPrefs();
247 } 247 }
248 mWriteBackExistingOnly = temp->getWriteBackExisting(); 248 mWriteBackExistingOnly = temp->getWriteBackExisting();
249 mIsKapiFile = temp->getIsKapiFile(); 249 mIsKapiFile = temp->getIsKapiFile();
250 mWriteBackInFuture = 0; 250 mWriteBackInFuture = 0;
251 if ( temp->getWriteBackFuture() ) 251 if ( temp->getWriteBackFuture() )
252 mWriteBackInFuture = temp->getWriteBackFutureWeeks( ); 252 mWriteBackInFuture = temp->getWriteBackFutureWeeks( );
253 253
254 if ( action == 1000 ) { 254 if ( action == 1000 ) {
255 mIsKapiFile = false; 255 mIsKapiFile = false;
256#ifdef DESKTOP_VERSION 256#ifdef DESKTOP_VERSION
257 syncKDE(); 257 syncKDE();
258#else 258#else
259 syncSharp(); 259 syncSharp();
260#endif 260#endif
261 261
262 } else if ( action == 1001 ) { 262 } else if ( action == 1001 ) {
263 syncLocalFile(); 263 syncLocalFile();
264 264
265 } else if ( action == 1002 ) { 265 } else if ( action == 1002 ) {
266 mWriteBackFile = false; 266 mWriteBackFile = false;
267 mAskForPreferences = false; 267 mAskForPreferences = false;
268 mShowSyncSummary = false; 268 mShowSyncSummary = false;
269 mSyncAlgoPrefs = 3; 269 mSyncAlgoPrefs = 3;
270 quickSyncLocalFile(); 270 quickSyncLocalFile();
271 271
272 } else if ( action >= 1003 ) { 272 } else if ( action >= 1003 ) {
273 if ( temp->getIsLocalFileSync() ) { 273 if ( temp->getIsLocalFileSync() ) {
274 switch(mTargetApp) 274 switch(mTargetApp)
275 { 275 {
276 case (KAPI): 276 case (KAPI):
277 if ( syncWithFile( temp->getRemoteFileNameAB( ), false ) ) 277 if ( syncWithFile( temp->getRemoteFileNameAB( ), false ) )
278 mPrefs->mLastSyncedLocalFile = temp->getRemoteFileNameAB(); 278 mPrefs->mLastSyncedLocalFile = temp->getRemoteFileNameAB();
279 break; 279 break;
280 case (KOPI): 280 case (KOPI):
281 if ( syncWithFile( temp->getRemoteFileName( ), false ) ) 281 if ( syncWithFile( temp->getRemoteFileName( ), false ) )
282 mPrefs->mLastSyncedLocalFile = temp->getRemoteFileName(); 282 mPrefs->mLastSyncedLocalFile = temp->getRemoteFileName();
283 break; 283 break;
284 case (PWMPI): 284 case (PWMPI):
285 if ( syncWithFile( temp->getRemoteFileNamePWM( ), false ) ) 285 if ( syncWithFile( temp->getRemoteFileNamePWM( ), false ) )
286 mPrefs->mLastSyncedLocalFile = temp->getRemoteFileNamePWM(); 286 mPrefs->mLastSyncedLocalFile = temp->getRemoteFileNamePWM();
287 break; 287 break;
288 default: 288 default:
289 qDebug("KSyncManager::slotSyncMenu: invalid apptype selected"); 289 qDebug("KSyncManager::slotSyncMenu: invalid apptype selected");
290 break; 290 break;
291 291
292 } 292 }
293 } else { 293 } else {
294 if ( temp->getIsPhoneSync() ) { 294 if ( temp->getIsPhoneSync() ) {
295 mPhoneDevice = temp->getPhoneDevice( ) ; 295 mPhoneDevice = temp->getPhoneDevice( ) ;
296 mPhoneConnection = temp->getPhoneConnection( ); 296 mPhoneConnection = temp->getPhoneConnection( );
297 mPhoneModel = temp->getPhoneModel( ); 297 mPhoneModel = temp->getPhoneModel( );
298 syncPhone(); 298 syncPhone();
299 } else if ( temp->getIsPiSync() ) { 299 } else if ( temp->getIsPiSync() ) {
300 if ( mTargetApp == KAPI ) { 300 if ( mTargetApp == KAPI ) {
301 mPassWordPiSync = temp->getRemotePwAB(); 301 mPassWordPiSync = temp->getRemotePwAB();
302 mActiveSyncPort = temp->getRemotePortAB(); 302 mActiveSyncPort = temp->getRemotePortAB();
303 mActiveSyncIP = temp->getRemoteIPAB(); 303 mActiveSyncIP = temp->getRemoteIPAB();
304 } else if ( mTargetApp == KOPI ) { 304 } else if ( mTargetApp == KOPI ) {
305 mPassWordPiSync = temp->getRemotePw(); 305 mPassWordPiSync = temp->getRemotePw();
306 mActiveSyncPort = temp->getRemotePort(); 306 mActiveSyncPort = temp->getRemotePort();
307 mActiveSyncIP = temp->getRemoteIP(); 307 mActiveSyncIP = temp->getRemoteIP();
308 } else { 308 } else {
309 mPassWordPiSync = temp->getRemotePwPWM(); 309 mPassWordPiSync = temp->getRemotePwPWM();
310 mActiveSyncPort = temp->getRemotePortPWM(); 310 mActiveSyncPort = temp->getRemotePortPWM();
311 mActiveSyncIP = temp->getRemoteIPPWM(); 311 mActiveSyncIP = temp->getRemoteIPPWM();
312 } 312 }
313 syncPi(); 313 syncPi();
314 while ( !mPisyncFinished ) { 314 while ( !mPisyncFinished ) {
315 //qDebug("waiting "); 315 //qDebug("waiting ");
316 qApp->processEvents(); 316 qApp->processEvents();
317 } 317 }
318 } else 318 } else
319 syncRemote( temp ); 319 syncRemote( temp );
320 320
321 } 321 }
322 } 322 }
323 delete temp; 323 delete temp;
324 setBlockSave(false); 324 setBlockSave(false);
325} 325}
326 326
327void KSyncManager::enableQuick( bool ask ) 327void KSyncManager::enableQuick( bool ask )
328{ 328{
329 bool autoStart; 329 bool autoStart;
330 bool changed = false; 330 bool changed = false;
331 if ( ask ) { 331 if ( ask ) {
332 QDialog dia ( 0, "input-dialog", true ); 332 QDialog dia ( 0, "input-dialog", true );
333 QLineEdit lab ( &dia ); 333 QLineEdit lab ( &dia );
334 QVBoxLayout lay( &dia ); 334 QVBoxLayout lay( &dia );
335 lab.setText( mPrefs->mPassiveSyncPort ); 335 lab.setText( mPrefs->mPassiveSyncPort );
336 lay.setMargin(7); 336 lay.setMargin(7);
337 lay.setSpacing(7); 337 lay.setSpacing(7);
338 int po = 9197+mTargetApp; 338 int po = 9197+mTargetApp;
339 QLabel label ( i18n("Port number (Default: %1)").arg(po), &dia ); 339 QLabel label ( i18n("Port number (Default: %1)").arg(po), &dia );
340 lay.addWidget( &label); 340 lay.addWidget( &label);
341 lay.addWidget( &lab); 341 lay.addWidget( &lab);
342 342
343 QLineEdit lepw ( &dia ); 343 QLineEdit lepw ( &dia );
344 lepw.setText( mPrefs->mPassiveSyncPw ); 344 lepw.setText( mPrefs->mPassiveSyncPw );
345 QLabel label2 ( i18n("Password to enable\naccess from remote:"), &dia ); 345 QLabel label2 ( i18n("Password to enable\naccess from remote:"), &dia );
346 lay.addWidget( &label2); 346 lay.addWidget( &label2);
347 lay.addWidget( &lepw); 347 lay.addWidget( &lepw);
348 QCheckBox autostart(i18n("Automatically start\nat application startup"), &dia ); 348 QCheckBox autostart(i18n("Automatically start\nat application startup"), &dia );
349 lay.addWidget( &autostart); 349 lay.addWidget( &autostart);
350 autostart.setChecked( mPrefs->mPassiveSyncAutoStart ); 350 autostart.setChecked( mPrefs->mPassiveSyncAutoStart );
351#ifdef DESKTOP_VERSION 351#ifdef DESKTOP_VERSION
352#ifdef _WIN32_ 352#ifdef _WIN32_
353 QCheckBox syncdesktop( i18n("Automatically sync with Outlook\nwhen receiving sync request"),&dia ); 353 QCheckBox syncdesktop( i18n("Automatically sync with Outlook\nwhen receiving sync request"),&dia );
354 syncdesktop.hide();// not implemented!
354#else 355#else
355 QCheckBox syncdesktop( i18n("Automatically sync with KDE-Desktop\nwhen receiving sync request"),&dia ); 356 QCheckBox syncdesktop( i18n("Automatically sync with KDE-Desktop\nwhen receiving sync request"),&dia );
356#endif 357#endif
357 lay.addWidget( &syncdesktop); 358 lay.addWidget( &syncdesktop);
358#else 359#else
359 mPrefs->mPassiveSyncWithDesktop = false; 360 mPrefs->mPassiveSyncWithDesktop = false;
360 QCheckBox syncdesktop( i18n("Automatically sync\nwith KDE-Desktop"),&dia ); 361 QCheckBox syncdesktop( i18n("Automatically sync\nwith KDE-Desktop"),&dia );
361 syncdesktop.hide(); 362 syncdesktop.hide();
362#endif 363#endif
363 syncdesktop.setChecked( mPrefs->mPassiveSyncWithDesktop ); 364 syncdesktop.setChecked( mPrefs->mPassiveSyncWithDesktop );
364 365
365 dia.setFixedSize( 230,120 ); 366 dia.setFixedSize( 230,120 );
366 dia.setCaption( i18n("Enter port for Pi-Sync") ); 367 dia.setCaption( i18n("Enter port for Pi-Sync") );
367 QPushButton pb ( "OK", &dia); 368 QPushButton pb ( "OK", &dia);
368 lay.addWidget( &pb ); 369 lay.addWidget( &pb );
369 connect(&pb, SIGNAL( clicked() ), &dia, SLOT ( accept() ) ); 370 connect(&pb, SIGNAL( clicked() ), &dia, SLOT ( accept() ) );
370 dia.show(); 371 dia.show();
371 if ( ! dia.exec() ) 372 if ( ! dia.exec() )
372 return; 373 return;
373 dia.hide(); 374 dia.hide();
374 qApp->processEvents(); 375 qApp->processEvents();
375 if ( mPrefs->mPassiveSyncPw != lepw.text() ) { 376 if ( mPrefs->mPassiveSyncPw != lepw.text() ) {
376 changed = true; 377 changed = true;
377 mPrefs->mPassiveSyncPw = lepw.text(); 378 mPrefs->mPassiveSyncPw = lepw.text();
378 } 379 }
379 if ( mPrefs->mPassiveSyncPort != lab.text() ) { 380 if ( mPrefs->mPassiveSyncPort != lab.text() ) {
380 mPrefs->mPassiveSyncPort = lab.text(); 381 mPrefs->mPassiveSyncPort = lab.text();
381 changed = true; 382 changed = true;
382 } 383 }
383 autoStart = autostart.isChecked(); 384 autoStart = autostart.isChecked();
384 if (mPrefs->mPassiveSyncWithDesktop != syncdesktop.isChecked() ) { 385 if (mPrefs->mPassiveSyncWithDesktop != syncdesktop.isChecked() ) {
385 changed = true; 386 changed = true;
386 mPrefs->mPassiveSyncWithDesktop = syncdesktop.isChecked(); 387 mPrefs->mPassiveSyncWithDesktop = syncdesktop.isChecked();
387 } 388 }
388 } 389 }
389 else 390 else
390 autoStart = mPrefs->mPassiveSyncAutoStart; 391 autoStart = mPrefs->mPassiveSyncAutoStart;
391 if ( autoStart != mPrefs->mPassiveSyncAutoStart ) 392 if ( autoStart != mPrefs->mPassiveSyncAutoStart )
392 changed = true; 393 changed = true;
393 bool ok; 394 bool ok;
394 mPrefs->mPassiveSyncAutoStart = false; 395 mPrefs->mPassiveSyncAutoStart = false;
395 Q_UINT16 port = mPrefs->mPassiveSyncPort.toUInt(&ok); 396 Q_UINT16 port = mPrefs->mPassiveSyncPort.toUInt(&ok);
396 if ( ! ok ) { 397 if ( ! ok ) {
397 KMessageBox::information( 0, i18n("No valid port")); 398 KMessageBox::information( 0, i18n("No valid port"));
398 return; 399 return;
399 } 400 }
400 //qDebug("port %d ", port); 401 //qDebug("port %d ", port);
401 mServerSocket = new KServerSocket ( mPrefs->mPassiveSyncPw, port ,1 ); 402 mServerSocket = new KServerSocket ( mPrefs->mPassiveSyncPw, port ,1 );
402 mServerSocket->setFileName( defaultFileName() ); 403 mServerSocket->setFileName( defaultFileName() );
403 //qDebug("connected "); 404 //qDebug("connected ");
404 if ( !mServerSocket->ok() ) { 405 if ( !mServerSocket->ok() ) {
405 KMessageBox::information( 0, i18n("Failed to bind or\nlisten to the port!")); 406 KMessageBox::information( 0, i18n("Failed to bind or\nlisten to the port!"));
406 delete mServerSocket; 407 delete mServerSocket;
407 mServerSocket = 0; 408 mServerSocket = 0;
408 return; 409 return;
409 } 410 }
410 mPrefs->mPassiveSyncAutoStart = autoStart; 411 mPrefs->mPassiveSyncAutoStart = autoStart;
411 if ( changed ) { 412 if ( changed ) {
412 mPrefs->writeConfig(); 413 mPrefs->writeConfig();
413 } 414 }
414 connect( mServerSocket, SIGNAL ( request_file() ),this, SIGNAL ( request_file() ) ); 415 connect( mServerSocket, SIGNAL ( request_file() ),this, SIGNAL ( request_file() ) );
415 connect( mServerSocket, SIGNAL ( file_received( bool ) ), this, SIGNAL ( getFile( bool ) ) ); 416 connect( mServerSocket, SIGNAL ( file_received( bool ) ), this, SIGNAL ( getFile( bool ) ) );
416} 417}
417 418
418void KSyncManager::syncLocalFile() 419void KSyncManager::syncLocalFile()
419{ 420{
420 421
421 QString fn =mPrefs->mLastSyncedLocalFile; 422 QString fn =mPrefs->mLastSyncedLocalFile;
422 QString ext; 423 QString ext;
423 424
424 switch(mTargetApp) 425 switch(mTargetApp)
425 { 426 {
426 case (KAPI): 427 case (KAPI):
427 ext = "(*.vcf)"; 428 ext = "(*.vcf)";
428 break; 429 break;
429 case (KOPI): 430 case (KOPI):
430 ext = "(*.ics/*.vcs)"; 431 ext = "(*.ics/*.vcs)";
431 break; 432 break;
432 case (PWMPI): 433 case (PWMPI):
433 ext = "(*.pwm)"; 434 ext = "(*.pwm)";
434 break; 435 break;
435 default: 436 default:
436 qDebug("KSyncManager::syncLocalFile: invalid apptype selected"); 437 qDebug("KSyncManager::syncLocalFile: invalid apptype selected");
437 break; 438 break;
438 439
439 } 440 }
440 441
441 fn =KFileDialog:: getOpenFileName( fn, i18n("Sync filename"+ext), mParent ); 442 fn =KFileDialog:: getOpenFileName( fn, i18n("Sync filename"+ext), mParent );
442 if ( fn == "" ) 443 if ( fn == "" )
443 return; 444 return;
444 if ( syncWithFile( fn, false ) ) { 445 if ( syncWithFile( fn, false ) ) {
445 qDebug("syncLocalFile() successful "); 446 qDebug("syncLocalFile() successful ");
446 } 447 }
447 448
448} 449}
449 450
450bool KSyncManager::syncWithFile( QString fn , bool quick ) 451bool KSyncManager::syncWithFile( QString fn , bool quick )
451{ 452{
452 bool ret = false; 453 bool ret = false;
453 QFileInfo info; 454 QFileInfo info;
454 info.setFile( fn ); 455 info.setFile( fn );
455 QString mess; 456 QString mess;
456 bool loadbup = true; 457 bool loadbup = true;
457 if ( !info. exists() ) { 458 if ( !info. exists() ) {
458 mess = i18n( "Sync file \n...%1\ndoes not exist!\nNothing synced!\n").arg(fn.right( 30) ); 459 mess = i18n( "Sync file \n...%1\ndoes not exist!\nNothing synced!\n").arg(fn.right( 30) );
459 int result = QMessageBox::warning( mParent, i18n("Warning!"), 460 int result = QMessageBox::warning( mParent, i18n("Warning!"),
460 mess ); 461 mess );
461 return ret; 462 return ret;
462 } 463 }
463 int result = 0; 464 int result = 0;
464 if ( !quick ) { 465 if ( !quick ) {
465 mess = i18n("Sync with file \n...%1\nfrom:\n%2\n").arg(fn.right( 25)).arg(KGlobal::locale()->formatDateTime(info.lastModified (), true, false )); 466 mess = i18n("Sync with file \n...%1\nfrom:\n%2\n").arg(fn.right( 25)).arg(KGlobal::locale()->formatDateTime(info.lastModified (), true, false ));
466 result = QMessageBox::warning( mParent, i18n("Warning!"), 467 result = QMessageBox::warning( mParent, i18n("Warning!"),
467 mess, 468 mess,
468 i18n("Sync"), i18n("Cancel"), 0, 469 i18n("Sync"), i18n("Cancel"), 0,
469 0, 1 ); 470 0, 1 );
470 if ( result ) 471 if ( result )
471 return false; 472 return false;
472 } 473 }
473 if ( mAskForPreferences ) 474 if ( mAskForPreferences )
474 if ( !edit_sync_options()) { 475 if ( !edit_sync_options()) {
475 mParent->topLevelWidget()->setCaption( i18n("Syncing aborted. Nothing synced.") ); 476 mParent->topLevelWidget()->setCaption( i18n("Syncing aborted. Nothing synced.") );
476 return false; 477 return false;
477 } 478 }
478 if ( result == 0 ) { 479 if ( result == 0 ) {
479 //qDebug("Now sycing ... "); 480 //qDebug("Now sycing ... ");
480 if ( ret = mImplementation->sync( this, fn, mSyncAlgoPrefs ) ) 481 if ( ret = mImplementation->sync( this, fn, mSyncAlgoPrefs ) )
481 mParent->topLevelWidget()->setCaption( i18n("Synchronization successful") ); 482 mParent->topLevelWidget()->setCaption( i18n("Synchronization successful") );
482 else 483 else
483 mParent->topLevelWidget()->setCaption( i18n("Sync cancelled or failed.") ); 484 mParent->topLevelWidget()->setCaption( i18n("Sync cancelled or failed.") );
484 if ( ! quick ) 485 if ( ! quick )
485 mPrefs->mLastSyncedLocalFile = fn; 486 mPrefs->mLastSyncedLocalFile = fn;
486 } 487 }
487 return ret; 488 return ret;
488} 489}
489 490
490void KSyncManager::quickSyncLocalFile() 491void KSyncManager::quickSyncLocalFile()
491{ 492{
492 493
493 if ( syncWithFile( mPrefs->mLastSyncedLocalFile, true ) ) { 494 if ( syncWithFile( mPrefs->mLastSyncedLocalFile, true ) ) {
494 qDebug("quick syncLocalFile() successful "); 495 qDebug("quick syncLocalFile() successful ");
495 496
496 } 497 }
497} 498}
498 499
499void KSyncManager::multiSync( bool askforPrefs ) 500void KSyncManager::multiSync( bool askforPrefs )
500{ 501{
501 if (blockSave()) 502 if (blockSave())
502 return; 503 return;
503 setBlockSave(true); 504 setBlockSave(true);
504 QString question = i18n("Do you really want\nto multiple sync\nwith all checked profiles?\nSyncing takes some\ntime - all profiles\nare synced twice!"); 505 QString question = i18n("Do you really want\nto multiple sync\nwith all checked profiles?\nSyncing takes some\ntime - all profiles\nare synced twice!");
505 if ( QMessageBox::information( mParent, i18n("KDE-Pim Sync"), 506 if ( QMessageBox::information( mParent, i18n("KDE-Pim Sync"),
506 question, 507 question,
507 i18n("Yes"), i18n("No"), 508 i18n("Yes"), i18n("No"),
508 0, 0 ) != 0 ) { 509 0, 0 ) != 0 ) {
509 setBlockSave(false); 510 setBlockSave(false);
510 mParent->topLevelWidget()->setCaption(i18n("Aborted! Nothing synced!")); 511 mParent->topLevelWidget()->setCaption(i18n("Aborted! Nothing synced!"));
511 return; 512 return;
512 } 513 }
513 mCurrentSyncDevice = i18n("Multiple profiles") ; 514 mCurrentSyncDevice = i18n("Multiple profiles") ;
514 mSyncAlgoPrefs = mPrefs->mRingSyncAlgoPrefs; 515 mSyncAlgoPrefs = mPrefs->mRingSyncAlgoPrefs;
515 if ( askforPrefs ) { 516 if ( askforPrefs ) {
516 if ( !edit_sync_options()) { 517 if ( !edit_sync_options()) {
517 mParent->topLevelWidget()->setCaption( i18n("Syncing aborted.") ); 518 mParent->topLevelWidget()->setCaption( i18n("Syncing aborted.") );
518 return; 519 return;
519 } 520 }
520 mPrefs->mRingSyncAlgoPrefs = mSyncAlgoPrefs; 521 mPrefs->mRingSyncAlgoPrefs = mSyncAlgoPrefs;
521 } 522 }
522 mParent->topLevelWidget()->setCaption(i18n("Multiple sync started.") ); 523 mParent->topLevelWidget()->setCaption(i18n("Multiple sync started.") );
523 qApp->processEvents(); 524 qApp->processEvents();
524 int num = ringSync() ; 525 int num = ringSync() ;
525 if ( num > 1 ) 526 if ( num > 1 )
526 ringSync(); 527 ringSync();
527 setBlockSave(false); 528 setBlockSave(false);
528 if ( num ) 529 if ( num )
529 emit save(); 530 emit save();
530 if ( num ) 531 if ( num )
531 mParent->topLevelWidget()->setCaption(i18n("%1 profiles synced. Multiple sync complete!").arg(num) ); 532 mParent->topLevelWidget()->setCaption(i18n("%1 profiles synced. Multiple sync complete!").arg(num) );
532 else 533 else
533 mParent->topLevelWidget()->setCaption(i18n("Nothing synced! No profiles defined for multisync!")); 534 mParent->topLevelWidget()->setCaption(i18n("Nothing synced! No profiles defined for multisync!"));
534 return; 535 return;
535} 536}
536 537
537int KSyncManager::ringSync() 538int KSyncManager::ringSync()
538{ 539{
539 int syncedProfiles = 0; 540 int syncedProfiles = 0;
540 unsigned int i; 541 unsigned int i;
541 QTime timer; 542 QTime timer;
542 KConfig config ( locateLocal( "config","ksyncprofilesrc" ) ); 543 KConfig config ( locateLocal( "config","ksyncprofilesrc" ) );
543 QStringList syncProfileNames = mSyncProfileNames; 544 QStringList syncProfileNames = mSyncProfileNames;
544 KSyncProfile* temp = new KSyncProfile (); 545 KSyncProfile* temp = new KSyncProfile ();
545 mAskForPreferences = false; 546 mAskForPreferences = false;
546 for ( i = 0; i < syncProfileNames.count(); ++i ) { 547 for ( i = 0; i < syncProfileNames.count(); ++i ) {
547 mCurrentSyncProfile = i; 548 mCurrentSyncProfile = i;
548 temp->setName(syncProfileNames[mCurrentSyncProfile]); 549 temp->setName(syncProfileNames[mCurrentSyncProfile]);
549 temp->readConfig(&config); 550 temp->readConfig(&config);
550 551
551 bool includeInRingSync; 552 bool includeInRingSync;
552 switch(mTargetApp) 553 switch(mTargetApp)
553 { 554 {
554 case (KAPI): 555 case (KAPI):
555 includeInRingSync = temp->getIncludeInRingSyncAB(); 556 includeInRingSync = temp->getIncludeInRingSyncAB();
556 break; 557 break;
557 case (KOPI): 558 case (KOPI):
558 includeInRingSync = temp->getIncludeInRingSync(); 559 includeInRingSync = temp->getIncludeInRingSync();
559 break; 560 break;
560 case (PWMPI): 561 case (PWMPI):
561 includeInRingSync = temp->getIncludeInRingSyncPWM(); 562 includeInRingSync = temp->getIncludeInRingSyncPWM();
562 break; 563 break;
563 default: 564 default:
564 qDebug("KSyncManager::ringSync: invalid apptype selected"); 565 qDebug("KSyncManager::ringSync: invalid apptype selected");
565 break; 566 break;
566 567
567 } 568 }
568 569
569 570
570 if ( includeInRingSync && ( i < 1 || i > 2 )) { 571 if ( includeInRingSync && ( i < 1 || i > 2 )) {
571 mParent->topLevelWidget()->setCaption(i18n("Profile ")+syncProfileNames[mCurrentSyncProfile]+ i18n(" is synced ... ")); 572 mParent->topLevelWidget()->setCaption(i18n("Profile ")+syncProfileNames[mCurrentSyncProfile]+ i18n(" is synced ... "));
572 ++syncedProfiles; 573 ++syncedProfiles;
573 // mAskForPreferences = temp->getAskForPreferences(); 574 // mAskForPreferences = temp->getAskForPreferences();
574 mWriteBackFile = temp->getWriteBackFile(); 575 mWriteBackFile = temp->getWriteBackFile();
575 mWriteBackExistingOnly = temp->getWriteBackExisting(); 576 mWriteBackExistingOnly = temp->getWriteBackExisting();
577 mIsKapiFile = temp->getIsKapiFile();
576 mWriteBackInFuture = 0; 578 mWriteBackInFuture = 0;
577 if ( temp->getWriteBackFuture() ) 579 if ( temp->getWriteBackFuture() )
578 mWriteBackInFuture = temp->getWriteBackFutureWeeks( ); 580 mWriteBackInFuture = temp->getWriteBackFutureWeeks( );
579 mShowSyncSummary = false; 581 mShowSyncSummary = false;
580 mCurrentSyncDevice = syncProfileNames[i] ; 582 mCurrentSyncDevice = syncProfileNames[i] ;
581 mCurrentSyncName = mLocalMachineName; 583 mCurrentSyncName = mLocalMachineName;
582 if ( i == 0 ) { 584 if ( i == 0 ) {
585 mIsKapiFile = false;
583#ifdef DESKTOP_VERSION 586#ifdef DESKTOP_VERSION
584 syncKDE(); 587 syncKDE();
585#else 588#else
586 syncSharp(); 589 syncSharp();
587#endif 590#endif
588 } else { 591 } else {
589 if ( temp->getIsLocalFileSync() ) { 592 if ( temp->getIsLocalFileSync() ) {
590 switch(mTargetApp) 593 switch(mTargetApp)
591 { 594 {
592 case (KAPI): 595 case (KAPI):
593 if ( syncWithFile( temp->getRemoteFileNameAB( ), false ) ) 596 if ( syncWithFile( temp->getRemoteFileNameAB( ), false ) )
594 mPrefs->mLastSyncedLocalFile = temp->getRemoteFileNameAB(); 597 mPrefs->mLastSyncedLocalFile = temp->getRemoteFileNameAB();
595 break; 598 break;
596 case (KOPI): 599 case (KOPI):
597 if ( syncWithFile( temp->getRemoteFileName( ), false ) ) 600 if ( syncWithFile( temp->getRemoteFileName( ), false ) )
598 mPrefs->mLastSyncedLocalFile = temp->getRemoteFileName(); 601 mPrefs->mLastSyncedLocalFile = temp->getRemoteFileName();
599 break; 602 break;
600 case (PWMPI): 603 case (PWMPI):
601 if ( syncWithFile( temp->getRemoteFileNamePWM( ), false ) ) 604 if ( syncWithFile( temp->getRemoteFileNamePWM( ), false ) )
602 mPrefs->mLastSyncedLocalFile = temp->getRemoteFileNamePWM(); 605 mPrefs->mLastSyncedLocalFile = temp->getRemoteFileNamePWM();
603 break; 606 break;
604 default: 607 default:
605 qDebug("KSyncManager::slotSyncMenu: invalid apptype selected"); 608 qDebug("KSyncManager::slotSyncMenu: invalid apptype selected");
606 break; 609 break;
607 } 610 }
608 } else { 611 } else {
609 if ( temp->getIsPhoneSync() ) { 612 if ( temp->getIsPhoneSync() ) {
610 mPhoneDevice = temp->getPhoneDevice( ) ; 613 mPhoneDevice = temp->getPhoneDevice( ) ;
611 mPhoneConnection = temp->getPhoneConnection( ); 614 mPhoneConnection = temp->getPhoneConnection( );
612 mPhoneModel = temp->getPhoneModel( ); 615 mPhoneModel = temp->getPhoneModel( );
613 syncPhone(); 616 syncPhone();
614 } else if ( temp->getIsPiSync() ) { 617 } else if ( temp->getIsPiSync() ) {
615 if ( mTargetApp == KAPI ) { 618 if ( mTargetApp == KAPI ) {
616 mPassWordPiSync = temp->getRemotePwAB(); 619 mPassWordPiSync = temp->getRemotePwAB();
617 mActiveSyncPort = temp->getRemotePortAB(); 620 mActiveSyncPort = temp->getRemotePortAB();
618 mActiveSyncIP = temp->getRemoteIPAB(); 621 mActiveSyncIP = temp->getRemoteIPAB();
619 } else if ( mTargetApp == KOPI ) { 622 } else if ( mTargetApp == KOPI ) {
620 mPassWordPiSync = temp->getRemotePw(); 623 mPassWordPiSync = temp->getRemotePw();
621 mActiveSyncPort = temp->getRemotePort(); 624 mActiveSyncPort = temp->getRemotePort();
622 mActiveSyncIP = temp->getRemoteIP(); 625 mActiveSyncIP = temp->getRemoteIP();
623 } else { 626 } else {
624 mPassWordPiSync = temp->getRemotePwPWM(); 627 mPassWordPiSync = temp->getRemotePwPWM();
625 mActiveSyncPort = temp->getRemotePortPWM(); 628 mActiveSyncPort = temp->getRemotePortPWM();
626 mActiveSyncIP = temp->getRemoteIPPWM(); 629 mActiveSyncIP = temp->getRemoteIPPWM();
627 } 630 }
628 syncPi(); 631 syncPi();
629 while ( !mPisyncFinished ) { 632 while ( !mPisyncFinished ) {
630 //qDebug("waiting "); 633 //qDebug("waiting ");
631 qApp->processEvents(); 634 qApp->processEvents();
632 } 635 }
633 timer.start(); 636 timer.start();
634 while ( timer.elapsed () < 2000 ) { 637 while ( timer.elapsed () < 2000 ) {
635 qApp->processEvents(); 638 qApp->processEvents();
636 } 639 }
637 } else 640 } else
638 syncRemote( temp, false ); 641 syncRemote( temp, false );
639 642
640 } 643 }
641 } 644 }
642 timer.start(); 645 timer.start();
643 mParent->topLevelWidget()->setCaption(i18n("Multiple sync in progress ... please wait!") ); 646 mParent->topLevelWidget()->setCaption(i18n("Multiple sync in progress ... please wait!") );
644 while ( timer.elapsed () < 2000 ) { 647 while ( timer.elapsed () < 2000 ) {
645 qApp->processEvents(); 648 qApp->processEvents();
646#ifndef _WIN32_ 649#ifndef _WIN32_
647 sleep (1); 650 sleep (1);
648#endif 651#endif
649 } 652 }
650 653
651 } 654 }
652 655
653 } 656 }
654 delete temp; 657 delete temp;
655 return syncedProfiles; 658 return syncedProfiles;
656} 659}
657 660
658void KSyncManager::syncRemote( KSyncProfile* prof, bool ask) 661void KSyncManager::syncRemote( KSyncProfile* prof, bool ask)
659{ 662{
660 QString question; 663 QString question;
661 if ( ask ) { 664 if ( ask ) {
662 question = i18n("Do you really want\nto remote sync\nwith profile \n")+ prof->getName()+" ?\n"; 665 question = i18n("Do you really want\nto remote sync\nwith profile \n")+ prof->getName()+" ?\n";
663 if ( QMessageBox::information( mParent, i18n("Sync"), 666 if ( QMessageBox::information( mParent, i18n("Sync"),
664 question, 667 question,
665 i18n("Yes"), i18n("No"), 668 i18n("Yes"), i18n("No"),
666 0, 0 ) != 0 ) 669 0, 0 ) != 0 )
667 return; 670 return;
668 } 671 }
669 672
670 QString preCommand; 673 QString preCommand;
671 QString localTempFile; 674 QString localTempFile;
672 QString postCommand; 675 QString postCommand;
673 676
674 switch(mTargetApp) 677 switch(mTargetApp)
675 { 678 {
676 case (KAPI): 679 case (KAPI):
677 preCommand = prof->getPreSyncCommandAB(); 680 preCommand = prof->getPreSyncCommandAB();
678 postCommand = prof->getPostSyncCommandAB(); 681 postCommand = prof->getPostSyncCommandAB();
679 localTempFile = prof->getLocalTempFileAB(); 682 localTempFile = prof->getLocalTempFileAB();
680 break; 683 break;
681 case (KOPI): 684 case (KOPI):
682 preCommand = prof->getPreSyncCommand(); 685 preCommand = prof->getPreSyncCommand();
683 postCommand = prof->getPostSyncCommand(); 686 postCommand = prof->getPostSyncCommand();
684 localTempFile = prof->getLocalTempFile(); 687 localTempFile = prof->getLocalTempFile();
685 break; 688 break;
686 case (PWMPI): 689 case (PWMPI):
687 preCommand = prof->getPreSyncCommandPWM(); 690 preCommand = prof->getPreSyncCommandPWM();
688 postCommand = prof->getPostSyncCommandPWM(); 691 postCommand = prof->getPostSyncCommandPWM();
689 localTempFile = prof->getLocalTempFilePWM(); 692 localTempFile = prof->getLocalTempFilePWM();
690 break; 693 break;
691 default: 694 default:
692 qDebug("KSyncManager::syncRemote: invalid apptype selected"); 695 qDebug("KSyncManager::syncRemote: invalid apptype selected");
693 break; 696 break;
694 } 697 }
695 698
696 699
697 int fi; 700 int fi;
698 if ( (fi = preCommand.find("$PWD$")) > 0 ) { 701 if ( (fi = preCommand.find("$PWD$")) > 0 ) {
699 QString pwd = getPassword(); 702 QString pwd = getPassword();
700 preCommand = preCommand.left( fi )+ pwd + preCommand.mid( fi+5 ); 703 preCommand = preCommand.left( fi )+ pwd + preCommand.mid( fi+5 );
701 704
702 } 705 }
703 int maxlen = 30; 706 int maxlen = 30;
704 if ( QApplication::desktop()->width() > 320 ) 707 if ( QApplication::desktop()->width() > 320 )
705 maxlen += 25; 708 maxlen += 25;
706 mParent->topLevelWidget()->setCaption ( i18n( "Copy remote file to local machine..." ) ); 709 mParent->topLevelWidget()->setCaption ( i18n( "Copy remote file to local machine..." ) );
707 int fileSize = 0; 710 int fileSize = 0;
708 int result = system ( preCommand ); 711 int result = system ( preCommand );
709 // 0 : okay 712 // 0 : okay
710 // 256: no such file or dir 713 // 256: no such file or dir
711 // 714 //
712 qDebug("Sync: Remote copy result(0 = okay): %d ",result ); 715 qDebug("Sync: Remote copy result(0 = okay): %d ",result );
713 if ( result != 0 ) { 716 if ( result != 0 ) {
714 unsigned int len = maxlen; 717 unsigned int len = maxlen;
715 while ( len < preCommand.length() ) { 718 while ( len < preCommand.length() ) {
716 preCommand.insert( len , "\n" ); 719 preCommand.insert( len , "\n" );
717 len += maxlen +2; 720 len += maxlen +2;
718 } 721 }
719 question = i18n("Sorry, the copy command failed!\nCommand was:\n%1\n \nTry command on console to get more\ndetailed info about the reason.\n").arg (preCommand) ; 722 question = i18n("Sorry, the copy command failed!\nCommand was:\n%1\n \nTry command on console to get more\ndetailed info about the reason.\n").arg (preCommand) ;
720 QMessageBox::information( mParent, i18n("Sync - ERROR"), 723 QMessageBox::information( mParent, i18n("Sync - ERROR"),
721 question, 724 question,
722 i18n("Okay!")) ; 725 i18n("Okay!")) ;
723 mParent->topLevelWidget()->setCaption ("KDE-Pim"); 726 mParent->topLevelWidget()->setCaption ("KDE-Pim");
724 return; 727 return;
725 } 728 }
726 mParent->topLevelWidget()->setCaption ( i18n( "Copying succeed." ) ); 729 mParent->topLevelWidget()->setCaption ( i18n( "Copying succeed." ) );
727 //qDebug(" file **%s** ",prof->getLocalTempFile().latin1() ); 730 //qDebug(" file **%s** ",prof->getLocalTempFile().latin1() );
728 731
729 if ( syncWithFile( localTempFile, true ) ) { 732 if ( syncWithFile( localTempFile, true ) ) {
730 733
731 if ( mWriteBackFile ) { 734 if ( mWriteBackFile ) {
732 int fi; 735 int fi;
733 if ( (fi = postCommand.find("$PWD$")) > 0 ) { 736 if ( (fi = postCommand.find("$PWD$")) > 0 ) {
734 QString pwd = getPassword(); 737 QString pwd = getPassword();
735 postCommand = postCommand.left( fi )+ pwd + postCommand.mid( fi+5 ); 738 postCommand = postCommand.left( fi )+ pwd + postCommand.mid( fi+5 );
736 739
737 } 740 }
738 mParent->topLevelWidget()->setCaption ( i18n( "Writing back file ..." ) ); 741 mParent->topLevelWidget()->setCaption ( i18n( "Writing back file ..." ) );
739 result = system ( postCommand ); 742 result = system ( postCommand );
740 qDebug("Sync:Writing back file result: %d ", result); 743 qDebug("Sync:Writing back file result: %d ", result);
741 if ( result != 0 ) { 744 if ( result != 0 ) {
742 mParent->topLevelWidget()->setCaption ( i18n( "Writing back file result: " )+QString::number( result ) ); 745 mParent->topLevelWidget()->setCaption ( i18n( "Writing back file result: " )+QString::number( result ) );
743 return; 746 return;
744 } else { 747 } else {
745 mParent->topLevelWidget()->setCaption ( i18n( "Syncronization sucessfully completed" ) ); 748 mParent->topLevelWidget()->setCaption ( i18n( "Syncronization sucessfully completed" ) );
746 } 749 }
747 } 750 }
748 } 751 }
749 return; 752 return;
750} 753}
751bool KSyncManager::edit_pisync_options() 754bool KSyncManager::edit_pisync_options()
752{ 755{
753 QDialog dia( mParent, "dia", true ); 756 QDialog dia( mParent, "dia", true );
754 dia.setCaption( i18n("Pi-Sync options for device: " ) +mCurrentSyncDevice ); 757 dia.setCaption( i18n("Pi-Sync options for device: " ) +mCurrentSyncDevice );
755 QVBoxLayout lay ( &dia ); 758 QVBoxLayout lay ( &dia );
756 lay.setSpacing( 5 ); 759 lay.setSpacing( 5 );
757 lay.setMargin( 3 ); 760 lay.setMargin( 3 );
758 QLabel lab1 ( i18n("Password for remote access:"), &dia); 761 QLabel lab1 ( i18n("Password for remote access:"), &dia);
759 lay.addWidget( &lab1 ); 762 lay.addWidget( &lab1 );
760 QLineEdit le1 (&dia ); 763 QLineEdit le1 (&dia );
761 lay.addWidget( &le1 ); 764 lay.addWidget( &le1 );
762 QLabel lab2 ( i18n("Remote IP address:"), &dia); 765 QLabel lab2 ( i18n("Remote IP address:"), &dia);
763 lay.addWidget( &lab2 ); 766 lay.addWidget( &lab2 );
764 QLineEdit le2 (&dia ); 767 QLineEdit le2 (&dia );
765 lay.addWidget( &le2 ); 768 lay.addWidget( &le2 );
766 QLabel lab3 ( i18n("Remote port number:"), &dia); 769 QLabel lab3 ( i18n("Remote port number:"), &dia);
767 lay.addWidget( &lab3 ); 770 lay.addWidget( &lab3 );
768 QLineEdit le3 (&dia ); 771 QLineEdit le3 (&dia );
769 lay.addWidget( &le3 ); 772 lay.addWidget( &le3 );
770 QPushButton pb ( "OK", &dia); 773 QPushButton pb ( "OK", &dia);
771 lay.addWidget( &pb ); 774 lay.addWidget( &pb );
772 connect(&pb, SIGNAL( clicked() ), &dia, SLOT ( accept() ) ); 775 connect(&pb, SIGNAL( clicked() ), &dia, SLOT ( accept() ) );
773 le1.setText( mPassWordPiSync ); 776 le1.setText( mPassWordPiSync );
774 le2.setText( mActiveSyncIP ); 777 le2.setText( mActiveSyncIP );
@@ -832,597 +835,619 @@ bool KSyncManager::edit_sync_options()
832 } 835 }
833 return false; 836 return false;
834} 837}
835 838
836QString KSyncManager::getPassword( ) 839QString KSyncManager::getPassword( )
837{ 840{
838 QString retfile = ""; 841 QString retfile = "";
839 QDialog dia ( mParent, "input-dialog", true ); 842 QDialog dia ( mParent, "input-dialog", true );
840 QLineEdit lab ( &dia ); 843 QLineEdit lab ( &dia );
841 lab.setEchoMode( QLineEdit::Password ); 844 lab.setEchoMode( QLineEdit::Password );
842 QVBoxLayout lay( &dia ); 845 QVBoxLayout lay( &dia );
843 lay.setMargin(7); 846 lay.setMargin(7);
844 lay.setSpacing(7); 847 lay.setSpacing(7);
845 lay.addWidget( &lab); 848 lay.addWidget( &lab);
846 dia.setFixedSize( 230,50 ); 849 dia.setFixedSize( 230,50 );
847 dia.setCaption( i18n("Enter password") ); 850 dia.setCaption( i18n("Enter password") );
848 QPushButton pb ( "OK", &dia); 851 QPushButton pb ( "OK", &dia);
849 lay.addWidget( &pb ); 852 lay.addWidget( &pb );
850 connect(&pb, SIGNAL( clicked() ), &dia, SLOT ( accept() ) ); 853 connect(&pb, SIGNAL( clicked() ), &dia, SLOT ( accept() ) );
851 dia.show(); 854 dia.show();
852 int res = dia.exec(); 855 int res = dia.exec();
853 if ( res ) 856 if ( res )
854 retfile = lab.text(); 857 retfile = lab.text();
855 dia.hide(); 858 dia.hide();
856 qApp->processEvents(); 859 qApp->processEvents();
857 return retfile; 860 return retfile;
858 861
859} 862}
860 863
861 864
862void KSyncManager::confSync() 865void KSyncManager::confSync()
863{ 866{
864 static KSyncPrefsDialog* sp = 0; 867 static KSyncPrefsDialog* sp = 0;
865 if ( ! sp ) { 868 if ( ! sp ) {
866 sp = new KSyncPrefsDialog( mParent, "syncprefs", true ); 869 sp = new KSyncPrefsDialog( mParent, "syncprefs", true );
867 } 870 }
868 sp->usrReadConfig(); 871 sp->usrReadConfig();
869#ifndef DESKTOP_VERSION 872#ifndef DESKTOP_VERSION
870 sp->showMaximized(); 873 sp->showMaximized();
871#else 874#else
872 sp->show(); 875 sp->show();
873#endif 876#endif
874 sp->exec(); 877 sp->exec();
875 QStringList oldSyncProfileNames = mSyncProfileNames; 878 QStringList oldSyncProfileNames = mSyncProfileNames;
876 mSyncProfileNames = sp->getSyncProfileNames(); 879 mSyncProfileNames = sp->getSyncProfileNames();
877 mLocalMachineName = sp->getLocalMachineName (); 880 mLocalMachineName = sp->getLocalMachineName ();
878 int ii; 881 int ii;
879 for ( ii = 0; ii < oldSyncProfileNames.count(); ++ii ) { 882 for ( ii = 0; ii < oldSyncProfileNames.count(); ++ii ) {
880 if ( ! mSyncProfileNames.contains( oldSyncProfileNames[ii] ) ) 883 if ( ! mSyncProfileNames.contains( oldSyncProfileNames[ii] ) )
881 mImplementation->removeSyncInfo( oldSyncProfileNames[ii] ); 884 mImplementation->removeSyncInfo( oldSyncProfileNames[ii] );
882 } 885 }
883 QTimer::singleShot ( 1, this, SLOT ( fillSyncMenu() ) ); 886 QTimer::singleShot ( 1, this, SLOT ( fillSyncMenu() ) );
884} 887}
885void KSyncManager::syncKDE() 888void KSyncManager::syncKDE()
886{ 889{
887 mSyncWithDesktop = true; 890 mSyncWithDesktop = true;
888 emit save(); 891 emit save();
889 switch(mTargetApp) 892 switch(mTargetApp)
890 { 893 {
891 case (KAPI): 894 case (KAPI):
892 { 895 {
893#ifdef DESKTOP_VERSION 896#ifdef DESKTOP_VERSION
894 QString command = qApp->applicationDirPath () + "/kdeabdump"; 897 QString command = qApp->applicationDirPath () + "/kdeabdump";
895#else 898#else
896 QString command = "kdeabdump"; 899 QString command = "kdeabdump";
897#endif 900#endif
898 if ( ! QFile::exists ( command ) ) 901 if ( ! QFile::exists ( command ) )
899 command = "kdeabdump"; 902 command = "kdeabdump";
900 QString fileName = QDir::homeDirPath ()+"/.kdeaddressbookdump.vcf"; 903 QString fileName = QDir::homeDirPath ()+"/.kdeaddressbookdump.vcf";
901 system ( command.latin1()); 904 system ( command.latin1());
902 if ( syncWithFile( fileName,true ) ) { 905 if ( syncWithFile( fileName,true ) ) {
903 if ( mWriteBackFile ) { 906 if ( mWriteBackFile ) {
904 command += " --read"; 907 command += " --read";
905 system ( command.latin1()); 908 system ( command.latin1());
906 } 909 }
907 } 910 }
908 911
909 } 912 }
910 break; 913 break;
911 case (KOPI): 914 case (KOPI):
912 { 915 {
913#ifdef DESKTOP_VERSION 916#ifdef DESKTOP_VERSION
914 QString command = qApp->applicationDirPath () + "/kdecaldump"; 917 QString command = qApp->applicationDirPath () + "/kdecaldump";
915#else 918#else
916 QString command = "kdecaldump"; 919 QString command = "kdecaldump";
917#endif 920#endif
918 if ( ! QFile::exists ( command ) ) 921 if ( ! QFile::exists ( command ) )
919 command = "kdecaldump"; 922 command = "kdecaldump";
920 QString fileName = QDir::homeDirPath ()+"/.kdecalendardump.ics"; 923 QString fileName = QDir::homeDirPath ()+"/.kdecalendardump.ics";
921 system ( command.latin1()); 924 system ( command.latin1());
922 if ( syncWithFile( fileName,true ) ) { 925 if ( syncWithFile( fileName,true ) ) {
923 if ( mWriteBackFile ) { 926 if ( mWriteBackFile ) {
924 command += " --read"; 927 command += " --read";
925 system ( command.latin1()); 928 system ( command.latin1());
926 } 929 }
927 } 930 }
928 931
929 } 932 }
930 break; 933 break;
931 case (PWMPI): 934 case (PWMPI):
932 935
933 break; 936 break;
934 default: 937 default:
935 qDebug("KSyncManager::slotSyncMenu: invalid apptype selected"); 938 qDebug("KSyncManager::slotSyncMenu: invalid apptype selected");
936 break; 939 break;
937 940
938 } 941 }
939} 942}
940 943
941void KSyncManager::syncSharp() 944void KSyncManager::syncSharp()
942{ 945{
943 946
944 if ( ! syncExternalApplication("sharp") ) 947 if ( ! syncExternalApplication("sharp") )
945 qDebug("ERROR sync sharp "); 948 qDebug("ERROR sync sharp ");
946} 949}
947 950
948bool KSyncManager::syncExternalApplication(QString resource) 951bool KSyncManager::syncExternalApplication(QString resource)
949{ 952{
950 953
951 emit save(); 954 emit save();
952 955
953 if ( mAskForPreferences ) 956 if ( mAskForPreferences )
954 if ( !edit_sync_options()) { 957 if ( !edit_sync_options()) {
955 mParent->topLevelWidget()->setCaption( i18n("Syncing aborted. Nothing synced.") ); 958 mParent->topLevelWidget()->setCaption( i18n("Syncing aborted. Nothing synced.") );
956 return false; 959 return false;
957 } 960 }
958 961
959 qDebug("Sync extern %s", resource.latin1()); 962 qDebug("Sync extern %s", resource.latin1());
960 963
961 bool syncOK = mImplementation->syncExternal(this, resource); 964 bool syncOK = mImplementation->syncExternal(this, resource);
962 965
963 return syncOK; 966 return syncOK;
964 967
965} 968}
966 969
967void KSyncManager::syncPhone() 970void KSyncManager::syncPhone()
968{ 971{
969 972
970 syncExternalApplication("phone"); 973 syncExternalApplication("phone");
971 974
972} 975}
973 976
974void KSyncManager::showProgressBar(int percentage, QString caption, int total) 977void KSyncManager::showProgressBar(int percentage, QString caption, int total)
975{ 978{
976 if (!bar->isVisible()) 979 if (!bar->isVisible())
977 { 980 {
978 bar->setCaption (caption); 981 bar->setCaption (caption);
979 bar->setTotalSteps ( total ) ; 982 bar->setTotalSteps ( total ) ;
980 983
981 bar->show(); 984 bar->show();
982 } 985 }
983 986
984 bar->setProgress( percentage ); 987 bar->setProgress( percentage );
985} 988}
986 989
987void KSyncManager::hideProgressBar() 990void KSyncManager::hideProgressBar()
988{ 991{
989 bar->hide(); 992 bar->hide();
990} 993}
991 994
992bool KSyncManager::isProgressBarCanceled() 995bool KSyncManager::isProgressBarCanceled()
993{ 996{
994 return !bar->isVisible(); 997 return !bar->isVisible();
995} 998}
996 999
997QString KSyncManager::syncFileName() 1000QString KSyncManager::syncFileName()
998{ 1001{
999 1002
1000 QString fn = "tempfile"; 1003 QString fn = "tempfile";
1001 switch(mTargetApp) 1004 switch(mTargetApp)
1002 { 1005 {
1003 case (KAPI): 1006 case (KAPI):
1004 fn = "tempsyncab.vcf"; 1007 fn = "tempsyncab.vcf";
1005 break; 1008 break;
1006 case (KOPI): 1009 case (KOPI):
1007 fn = "tempsynccal.ics"; 1010 fn = "tempsynccal.ics";
1008 break; 1011 break;
1009 case (PWMPI): 1012 case (PWMPI):
1010 fn = "tempsyncpw.pwm"; 1013 fn = "tempsyncpw.pwm";
1011 break; 1014 break;
1012 default: 1015 default:
1013 break; 1016 break;
1014 } 1017 }
1015#ifdef _WIN32_ 1018#ifdef _WIN32_
1016 return locateLocal( "tmp", fn ); 1019 return locateLocal( "tmp", fn );
1017#else 1020#else
1018 return (QString( "/tmp/" )+ fn ); 1021 return (QString( "/tmp/" )+ fn );
1019#endif 1022#endif
1020} 1023}
1021 1024
1022void KSyncManager::syncPi() 1025void KSyncManager::syncPi()
1023{ 1026{
1027 mIsKapiFile = true;
1024 mPisyncFinished = false; 1028 mPisyncFinished = false;
1025 qApp->processEvents(); 1029 qApp->processEvents();
1026 if ( mAskForPreferences ) 1030 if ( mAskForPreferences )
1027 if ( !edit_pisync_options()) { 1031 if ( !edit_pisync_options()) {
1028 mParent->topLevelWidget()->setCaption( i18n("Syncing aborted. Nothing synced.") ); 1032 mParent->topLevelWidget()->setCaption( i18n("Syncing aborted. Nothing synced.") );
1029 return; 1033 return;
1030 } 1034 }
1031 bool ok; 1035 bool ok;
1032 Q_UINT16 port = mActiveSyncPort.toUInt(&ok); 1036 Q_UINT16 port = mActiveSyncPort.toUInt(&ok);
1033 if ( ! ok ) { 1037 if ( ! ok ) {
1034 mParent->topLevelWidget()->setCaption( i18n("Sorry, no valid port.Syncing cancelled.") ); 1038 mParent->topLevelWidget()->setCaption( i18n("Sorry, no valid port.Syncing cancelled.") );
1035 return; 1039 return;
1036 } 1040 }
1037 KCommandSocket* commandSocket = new KCommandSocket( mPassWordPiSync, port, mActiveSyncIP, this ); 1041 KCommandSocket* commandSocket = new KCommandSocket( mPassWordPiSync, port, mActiveSyncIP, this );
1038 connect( commandSocket, SIGNAL(commandFinished( KCommandSocket*, int )), this, SLOT(deleteCommandSocket(KCommandSocket*, int)) ); 1042 connect( commandSocket, SIGNAL(commandFinished( KCommandSocket*, int )), this, SLOT(deleteCommandSocket(KCommandSocket*, int)) );
1039 mParent->topLevelWidget()->setCaption( i18n("Sending request for remote file ...") ); 1043 mParent->topLevelWidget()->setCaption( i18n("Sending request for remote file ...") );
1040 commandSocket->readFile( syncFileName() ); 1044 commandSocket->readFile( syncFileName() );
1041} 1045}
1042 1046
1043void KSyncManager::deleteCommandSocket(KCommandSocket*s, int state) 1047void KSyncManager::deleteCommandSocket(KCommandSocket*s, int state)
1044{ 1048{
1045 //enum { success, errorW, errorR, quiet }; 1049 //enum { success, errorW, errorR, quiet };
1046 if ( state == KCommandSocket::errorR ||state == KCommandSocket::errorTO ) { 1050 if ( state == KCommandSocket::errorR ||state == KCommandSocket::errorTO ) {
1047 mParent->topLevelWidget()->setCaption( i18n("ERROR: Receiving remote file failed.") ); 1051 mParent->topLevelWidget()->setCaption( i18n("ERROR: Receiving remote file failed.") );
1048 delete s; 1052 delete s;
1049 if ( state == KCommandSocket::errorR ) { 1053 if ( state == KCommandSocket::errorR ) {
1050 KCommandSocket* commandSocket = new KCommandSocket( mPassWordPiSync, mActiveSyncPort.toUInt(), mActiveSyncIP, this ); 1054 KCommandSocket* commandSocket = new KCommandSocket( mPassWordPiSync, mActiveSyncPort.toUInt(), mActiveSyncIP, this );
1051 connect( commandSocket, SIGNAL(commandFinished( KCommandSocket*, int)), this, SLOT(deleteCommandSocket(KCommandSocket*, int )) ); 1055 connect( commandSocket, SIGNAL(commandFinished( KCommandSocket*, int)), this, SLOT(deleteCommandSocket(KCommandSocket*, int )) );
1052 commandSocket->sendStop(); 1056 commandSocket->sendStop();
1053 } 1057 }
1054 mPisyncFinished = true; 1058 mPisyncFinished = true;
1055 return; 1059 return;
1056 1060
1057 } else if ( state == KCommandSocket::errorW ) { 1061 } else if ( state == KCommandSocket::errorW ) {
1058 mParent->topLevelWidget()->setCaption( i18n("ERROR:Writing back file failed.") ); 1062 mParent->topLevelWidget()->setCaption( i18n("ERROR:Writing back file failed.") );
1059 mPisyncFinished = true; 1063 mPisyncFinished = true;
1060 1064
1061 } else if ( state == KCommandSocket::successR ) { 1065 } else if ( state == KCommandSocket::successR ) {
1062 QTimer::singleShot( 1, this , SLOT ( readFileFromSocket())); 1066 QTimer::singleShot( 1, this , SLOT ( readFileFromSocket()));
1063 1067
1064 } else if ( state == KCommandSocket::successW ) { 1068 } else if ( state == KCommandSocket::successW ) {
1065 mParent->topLevelWidget()->setCaption( i18n("Pi-Sync succesful!") ); 1069 mParent->topLevelWidget()->setCaption( i18n("Pi-Sync succesful!") );
1066 mPisyncFinished = true; 1070 mPisyncFinished = true;
1067 } 1071 }
1068 1072
1069 delete s; 1073 delete s;
1070} 1074}
1071 1075
1072void KSyncManager::readFileFromSocket() 1076void KSyncManager::readFileFromSocket()
1073{ 1077{
1074 QString fileName = syncFileName(); 1078 QString fileName = syncFileName();
1075 mParent->topLevelWidget()->setCaption( i18n("Remote file saved to temp file.") ); 1079 mParent->topLevelWidget()->setCaption( i18n("Remote file saved to temp file.") );
1076 if ( ! syncWithFile( fileName , true ) ) { 1080 if ( ! syncWithFile( fileName , true ) ) {
1077 mParent->topLevelWidget()->setCaption( i18n("Syncing failed.") ); 1081 mParent->topLevelWidget()->setCaption( i18n("Syncing failed.") );
1078 mPisyncFinished = true; 1082 mPisyncFinished = true;
1079 return; 1083 return;
1080 } 1084 }
1081 KCommandSocket* commandSocket = new KCommandSocket( mPassWordPiSync, mActiveSyncPort.toUInt(), mActiveSyncIP, this ); 1085 KCommandSocket* commandSocket = new KCommandSocket( mPassWordPiSync, mActiveSyncPort.toUInt(), mActiveSyncIP, this );
1082 connect( commandSocket, SIGNAL(commandFinished( KCommandSocket*, int)), this, SLOT(deleteCommandSocket(KCommandSocket*, int )) ); 1086 connect( commandSocket, SIGNAL(commandFinished( KCommandSocket*, int)), this, SLOT(deleteCommandSocket(KCommandSocket*, int )) );
1083 if ( mWriteBackFile ) 1087 if ( mWriteBackFile )
1084 commandSocket->writeFile( fileName ); 1088 commandSocket->writeFile( fileName );
1085 else { 1089 else {
1086 commandSocket->sendStop(); 1090 commandSocket->sendStop();
1087 mParent->topLevelWidget()->setCaption( i18n("Pi-Sync succesful!") ); 1091 mParent->topLevelWidget()->setCaption( i18n("Pi-Sync succesful!") );
1088 mPisyncFinished = true; 1092 mPisyncFinished = true;
1089 } 1093 }
1090} 1094}
1091 1095
1092KServerSocket:: KServerSocket ( QString pw, Q_UINT16 port, int backlog, QObject * parent, const char * name ) : QServerSocket( port, backlog, parent, name ) 1096KServerSocket:: KServerSocket ( QString pw, Q_UINT16 port, int backlog, QObject * parent, const char * name ) : QServerSocket( port, backlog, parent, name )
1093{ 1097{
1094 mPassWord = pw; 1098 mPassWord = pw;
1095 mSocket = 0; 1099 mSocket = 0;
1096 mSyncActionDialog = 0; 1100 mSyncActionDialog = 0;
1097 blockRC = false; 1101 blockRC = false;
1098}; 1102};
1099 1103
1100void KServerSocket::newConnection ( int socket ) 1104void KServerSocket::newConnection ( int socket )
1101{ 1105{
1102 // qDebug("KServerSocket:New connection %d ", socket); 1106 // qDebug("KServerSocket:New connection %d ", socket);
1103 if ( mSocket ) { 1107 if ( mSocket ) {
1104 qDebug("KServerSocket::newConnection Socket deleted! "); 1108 qDebug("KServerSocket::newConnection Socket deleted! ");
1105 delete mSocket; 1109 delete mSocket;
1106 mSocket = 0; 1110 mSocket = 0;
1107 } 1111 }
1108 mSocket = new QSocket( this ); 1112 mSocket = new QSocket( this );
1109 connect( mSocket , SIGNAL(readyRead()), this, SLOT(readClient()) ); 1113 connect( mSocket , SIGNAL(readyRead()), this, SLOT(readClient()) );
1110 connect( mSocket , SIGNAL(delayedCloseFinished()), this, SLOT(discardClient()) ); 1114 connect( mSocket , SIGNAL(delayedCloseFinished()), this, SLOT(discardClient()) );
1111 mSocket->setSocket( socket ); 1115 mSocket->setSocket( socket );
1112} 1116}
1113 1117
1114void KServerSocket::discardClient() 1118void KServerSocket::discardClient()
1115{ 1119{
1116 //qDebug(" KServerSocket::discardClient()"); 1120 //qDebug(" KServerSocket::discardClient()");
1117 if ( mSocket ) { 1121 if ( mSocket ) {
1118 delete mSocket; 1122 delete mSocket;
1119 mSocket = 0; 1123 mSocket = 0;
1120 } 1124 }
1121 //emit endConnect(); 1125 //emit endConnect();
1122} 1126}
1123void KServerSocket::readClient() 1127void KServerSocket::readClient()
1124{ 1128{
1125 if ( blockRC ) 1129 if ( blockRC )
1126 return; 1130 return;
1127 if ( mSocket == 0 ) { 1131 if ( mSocket == 0 ) {
1128 qDebug("ERROR::KServerSocket::readClient(): mSocket == 0 "); 1132 qDebug("ERROR::KServerSocket::readClient(): mSocket == 0 ");
1129 return; 1133 return;
1130 } 1134 }
1131 //qDebug("KServerSocket::readClient()"); 1135 //qDebug("KServerSocket::readClient()");
1132 if ( mSocket->canReadLine() ) { 1136 if ( mSocket->canReadLine() ) {
1133 QString line = mSocket->readLine(); 1137 QString line = mSocket->readLine();
1134 //qDebug("KServerSocket readline: %s ", line.latin1()); 1138 //qDebug("KServerSocket readline: %s ", line.latin1());
1135 QStringList tokens = QStringList::split( QRegExp("[ \r\n][ \r\n]*"), line ); 1139 QStringList tokens = QStringList::split( QRegExp("[ \r\n][ \r\n]*"), line );
1136 if ( tokens[0] == "GET" ) { 1140 if ( tokens[0] == "GET" ) {
1137 if ( tokens[1] == mPassWord ) { 1141 if ( tokens[1] == mPassWord ) {
1138 //emit sendFile( mSocket ); 1142 //emit sendFile( mSocket );
1139 bool ok = false; 1143 bool ok = false;
1140 QDateTime dt = KGlobal::locale()->readDateTime( tokens[2], KLocale::ISODate, &ok); 1144 QDateTime dt = KGlobal::locale()->readDateTime( tokens[2], KLocale::ISODate, &ok);
1141 if ( ok ) 1145 if ( ok ) {
1142 KSyncManager::mRequestedSyncEvent = dt; 1146 KSyncManager::mRequestedSyncEvent = dt;
1147 }
1143 else 1148 else
1144 KSyncManager::mRequestedSyncEvent = QDateTime(); 1149 KSyncManager::mRequestedSyncEvent = QDateTime();
1145 send_file(); 1150 send_file();
1146 } 1151 }
1147 else { 1152 else {
1148 KMessageBox::error( 0, i18n("Got send file request\nwith invalid password")); 1153 KMessageBox::error( 0, i18n("Got send file request\nwith invalid password"));
1149 //qDebug("password %s, invalid password %s ",mPassWord.latin1(), tokens[1].latin1() ); 1154 //qDebug("password %s, invalid password %s ",mPassWord.latin1(), tokens[1].latin1() );
1150 } 1155 }
1151 } 1156 }
1152 if ( tokens[0] == "PUT" ) { 1157 if ( tokens[0] == "PUT" ) {
1153 if ( tokens[1] == mPassWord ) { 1158 if ( tokens[1] == mPassWord ) {
1154 //emit getFile( mSocket ); 1159 //emit getFile( mSocket );
1155 blockRC = true; 1160 blockRC = true;
1156 get_file(); 1161 get_file();
1157 } 1162 }
1158 else { 1163 else {
1159 KMessageBox::error( 0, i18n("Got receive file request\nwith invalid password")); 1164 KMessageBox::error( 0, i18n("Got receive file request\nwith invalid password"));
1160 //qDebug("password %s, invalid password %s ",mPassWord.latin1(), tokens[1].latin1() ); 1165 //qDebug("password %s, invalid password %s ",mPassWord.latin1(), tokens[1].latin1() );
1161 } 1166 }
1162 } 1167 }
1163 if ( tokens[0] == "STOP" ) { 1168 if ( tokens[0] == "STOP" ) {
1164 //emit endConnect(); 1169 //emit endConnect();
1165 end_connect(); 1170 end_connect();
1166 } 1171 }
1167 } 1172 }
1168} 1173}
1169void KServerSocket::end_connect() 1174void KServerSocket::end_connect()
1170{ 1175{
1171 delete mSyncActionDialog; 1176 delete mSyncActionDialog;
1172 mSyncActionDialog = 0; 1177 mSyncActionDialog = 0;
1173} 1178}
1174void KServerSocket::send_file() 1179void KServerSocket::send_file()
1175{ 1180{
1176 //qDebug("MainWindow::sendFile(QSocket* s) "); 1181 //qDebug("MainWindow::sendFile(QSocket* s) ");
1177 if ( mSyncActionDialog ) 1182 if ( mSyncActionDialog )
1178 delete mSyncActionDialog; 1183 delete mSyncActionDialog;
1179 mSyncActionDialog = new QDialog ( 0, "input-dialog", true ); 1184 mSyncActionDialog = new QDialog ( 0, "input-dialog", true );
1180 mSyncActionDialog->setCaption(i18n("Received sync request")); 1185 mSyncActionDialog->setCaption(i18n("Received sync request"));
1181 QLabel* label = new QLabel( i18n("Synchronizing from remote ...\n\nDo not use this application!\n\nIf syncing fails\nyou can close this dialog."), mSyncActionDialog ); 1186 QLabel* label = new QLabel( i18n("Synchronizing from remote ...\n\nDo not use this application!\n\nIf syncing fails\nyou can close this dialog."), mSyncActionDialog );
1182 QVBoxLayout* lay = new QVBoxLayout( mSyncActionDialog ); 1187 QVBoxLayout* lay = new QVBoxLayout( mSyncActionDialog );
1183 lay->addWidget( label); 1188 lay->addWidget( label);
1184 lay->setMargin(7); 1189 lay->setMargin(7);
1185 lay->setSpacing(7); 1190 lay->setSpacing(7);
1186 mSyncActionDialog->setFixedSize( 230, 120); 1191 if ( KSyncManager::mRequestedSyncEvent.isValid() ) {
1192 int secs = QDateTime::currentDateTime().secsTo( KSyncManager::mRequestedSyncEvent );
1193 //if ( secs > 30 )
1194 if ( true )
1195 {
1196 QString warning = i18n("Clock skew of\nsyncing devices\nis %1 seconds!").arg( secs );
1197 QLabel* label = new QLabel( warning, mSyncActionDialog );
1198 if ( secs > 600 )
1199 {
1200 QFont f = label->font();
1201 f. setBold (true );
1202 f.setPointSize ( f.pointSize() + 10);
1203 label->setFont( f );
1204 }
1205 lay->addWidget( label);
1206 mSyncActionDialog->setFixedSize( 230, 200);
1207 } else {
1208 mSyncActionDialog->setFixedSize( 230, 120);
1209 }
1210 } else
1211 mSyncActionDialog->setFixedSize( 230, 120);
1187 mSyncActionDialog->show(); 1212 mSyncActionDialog->show();
1188 mSyncActionDialog->raise(); 1213 mSyncActionDialog->raise();
1189 emit request_file(); 1214 emit request_file();
1190 qApp->processEvents(); 1215 qApp->processEvents();
1191 QString fileName = mFileName; 1216 QString fileName = mFileName;
1192 QFile file( fileName ); 1217 QFile file( fileName );
1193 if (!file.open( IO_ReadOnly ) ) { 1218 if (!file.open( IO_ReadOnly ) ) {
1194 delete mSyncActionDialog; 1219 delete mSyncActionDialog;
1195 mSyncActionDialog = 0; 1220 mSyncActionDialog = 0;
1196 qDebug("KSS::error open file "); 1221 qDebug("KSS::error open file ");
1197 mSocket->close(); 1222 mSocket->close();
1198 if ( mSocket->state() == QSocket::Idle ) 1223 if ( mSocket->state() == QSocket::Idle )
1199 QTimer::singleShot( 10, this , SLOT ( discardClient())); 1224 QTimer::singleShot( 10, this , SLOT ( discardClient()));
1200 return ; 1225 return ;
1201 1226
1202 } 1227 }
1203 mSyncActionDialog->setCaption( i18n("Sending file...") ); 1228 mSyncActionDialog->setCaption( i18n("Sending file...") );
1204 QTextStream ts( &file ); 1229 QTextStream ts( &file );
1205 ts.setEncoding( QTextStream::Latin1 ); 1230 ts.setEncoding( QTextStream::Latin1 );
1206 1231
1207 QTextStream os( mSocket ); 1232 QTextStream os( mSocket );
1208 os.setEncoding( QTextStream::Latin1 ); 1233 os.setEncoding( QTextStream::Latin1 );
1209 while ( ! ts.atEnd() ) { 1234 while ( ! ts.atEnd() ) {
1210 os << ts.readLine() << "\r\n"; 1235 os << ts.readLine() << "\r\n";
1211 } 1236 }
1212 //os << ts.read(); 1237 //os << ts.read();
1213 file.close(); 1238 file.close();
1214 mSyncActionDialog->setCaption( i18n("Waiting for synced file...") ); 1239 mSyncActionDialog->setCaption( i18n("Waiting for synced file...") );
1215 mSocket->close(); 1240 mSocket->close();
1216 if ( mSocket->state() == QSocket::Idle ) 1241 if ( mSocket->state() == QSocket::Idle )
1217 QTimer::singleShot( 10, this , SLOT ( discardClient())); 1242 QTimer::singleShot( 10, this , SLOT ( discardClient()));
1218} 1243}
1219void KServerSocket::get_file() 1244void KServerSocket::get_file()
1220{ 1245{
1221 mSyncActionDialog->setCaption( i18n("Receiving synced file...") ); 1246 mSyncActionDialog->setCaption( i18n("Receiving synced file...") );
1222 1247
1223 piTime.start(); 1248 piTime.start();
1224 piFileString = ""; 1249 piFileString = "";
1225 QTimer::singleShot( 1, this , SLOT (readBackFileFromSocket( ) )); 1250 QTimer::singleShot( 1, this , SLOT (readBackFileFromSocket( ) ));
1226} 1251}
1227 1252
1228 1253
1229void KServerSocket::readBackFileFromSocket() 1254void KServerSocket::readBackFileFromSocket()
1230{ 1255{
1231 //qDebug("readBackFileFromSocket() %d ", piTime.elapsed ()); 1256 //qDebug("readBackFileFromSocket() %d ", piTime.elapsed ());
1232 while ( mSocket->canReadLine () ) { 1257 while ( mSocket->canReadLine () ) {
1233 piTime.restart(); 1258 piTime.restart();
1234 QString line = mSocket->readLine (); 1259 QString line = mSocket->readLine ();
1235 piFileString += line; 1260 piFileString += line;
1236 //qDebug("readline: %s ", line.latin1()); 1261 //qDebug("readline: %s ", line.latin1());
1237 mSyncActionDialog->setCaption( i18n("Received %1 bytes").arg( piFileString.length() ) ); 1262 mSyncActionDialog->setCaption( i18n("Received %1 bytes").arg( piFileString.length() ) );
1238 1263
1239 } 1264 }
1240 if ( piTime.elapsed () < 3000 ) { 1265 if ( piTime.elapsed () < 3000 ) {
1241 // wait for more 1266 // wait for more
1242 //qDebug("waitformore "); 1267 //qDebug("waitformore ");
1243 QTimer::singleShot( 100, this , SLOT (readBackFileFromSocket( ) )); 1268 QTimer::singleShot( 100, this , SLOT (readBackFileFromSocket( ) ));
1244 return; 1269 return;
1245 } 1270 }
1246 QString fileName = mFileName; 1271 QString fileName = mFileName;
1247 QFile file ( fileName ); 1272 QFile file ( fileName );
1248 if (!file.open( IO_WriteOnly ) ) { 1273 if (!file.open( IO_WriteOnly ) ) {
1249 delete mSyncActionDialog; 1274 delete mSyncActionDialog;
1250 mSyncActionDialog = 0; 1275 mSyncActionDialog = 0;
1251 qDebug("KSS:Error open read back file "); 1276 qDebug("KSS:Error open read back file ");
1252 piFileString = ""; 1277 piFileString = "";
1253 emit file_received( false ); 1278 emit file_received( false );
1254 blockRC = false; 1279 blockRC = false;
1255 return ; 1280 return ;
1256 1281
1257 } 1282 }
1258 1283
1259 // mView->setLoadedFileVersion(QDateTime::currentDateTime().addSecs( -1)); 1284 // mView->setLoadedFileVersion(QDateTime::currentDateTime().addSecs( -1));
1260 QTextStream ts ( &file ); 1285 QTextStream ts ( &file );
1261 ts.setEncoding( QTextStream::Latin1 ); 1286 ts.setEncoding( QTextStream::Latin1 );
1262 mSyncActionDialog->setCaption( i18n("Writing file to disk...") ); 1287 mSyncActionDialog->setCaption( i18n("Writing file to disk...") );
1263 ts << piFileString; 1288 ts << piFileString;
1264 mSocket->close(); 1289 mSocket->close();
1265 if ( mSocket->state() == QSocket::Idle ) 1290 if ( mSocket->state() == QSocket::Idle )
1266 QTimer::singleShot( 10, this , SLOT ( discardClient())); 1291 QTimer::singleShot( 10, this , SLOT ( discardClient()));
1267 file.close(); 1292 file.close();
1268 piFileString = ""; 1293 piFileString = "";
1269 emit file_received( true ); 1294 emit file_received( true );
1270 delete mSyncActionDialog; 1295 delete mSyncActionDialog;
1271 mSyncActionDialog = 0; 1296 mSyncActionDialog = 0;
1272 blockRC = false; 1297 blockRC = false;
1273 1298
1274} 1299}
1275 1300
1276KCommandSocket::KCommandSocket ( QString password, Q_UINT16 port, QString host, QObject * parent, const char * name ): QObject( parent, name ) 1301KCommandSocket::KCommandSocket ( QString password, Q_UINT16 port, QString host, QObject * parent, const char * name ): QObject( parent, name )
1277{ 1302{
1278 mPassWord = password; 1303 mPassWord = password;
1279 mSocket = 0; 1304 mSocket = 0;
1280 mPort = port; 1305 mPort = port;
1281 mHost = host; 1306 mHost = host;
1282 1307
1283 mRetVal = quiet; 1308 mRetVal = quiet;
1284 mTimerSocket = new QTimer ( this ); 1309 mTimerSocket = new QTimer ( this );
1285 connect( mTimerSocket, SIGNAL ( timeout () ), this, SLOT ( deleteSocket() ) ); 1310 connect( mTimerSocket, SIGNAL ( timeout () ), this, SLOT ( deleteSocket() ) );
1286} 1311}
1287void KCommandSocket::readFile( QString fn ) 1312void KCommandSocket::readFile( QString fn )
1288{ 1313{
1289 if ( !mSocket ) { 1314 if ( !mSocket ) {
1290 mSocket = new QSocket( this ); 1315 mSocket = new QSocket( this );
1291 connect( mSocket, SIGNAL(readyRead()), this, SLOT(startReadFileFromSocket()) ); 1316 connect( mSocket, SIGNAL(readyRead()), this, SLOT(startReadFileFromSocket()) );
1292 connect( mSocket, SIGNAL(delayedCloseFinished ()), this, SLOT(deleteSocket()) ); 1317 connect( mSocket, SIGNAL(delayedCloseFinished ()), this, SLOT(deleteSocket()) );
1293 } 1318 }
1294 mFileString = ""; 1319 mFileString = "";
1295 mFileName = fn; 1320 mFileName = fn;
1296 mFirst = true; 1321 mFirst = true;
1297 mSocket->connectToHost( mHost, mPort ); 1322 mSocket->connectToHost( mHost, mPort );
1298 QTextStream os( mSocket ); 1323 QTextStream os( mSocket );
1299 os.setEncoding( QTextStream::Latin1 ); 1324 os.setEncoding( QTextStream::Latin1 );
1300 1325
1301 QString curDt = KGlobal::locale()->formatDateTime(QDateTime::currentDateTime().addSecs(-1),true, true,KLocale::ISODate ); 1326 QString curDt = " " +KGlobal::locale()->formatDateTime(QDateTime::currentDateTime().addSecs(-1),true, true,KLocale::ISODate );
1302 os << "GET " << mPassWord << curDt <<"\r\n"; 1327 os << "GET " << mPassWord << curDt <<"\r\n";
1303 mTimerSocket->start( 20000 ); 1328 mTimerSocket->start( 20000 );
1304} 1329}
1305 1330
1306void KCommandSocket::writeFile( QString fileName ) 1331void KCommandSocket::writeFile( QString fileName )
1307{ 1332{
1308 if ( !mSocket ) { 1333 if ( !mSocket ) {
1309 mSocket = new QSocket( this ); 1334 mSocket = new QSocket( this );
1310 connect( mSocket, SIGNAL(delayedCloseFinished ()), this, SLOT(deleteSocket()) ); 1335 connect( mSocket, SIGNAL(delayedCloseFinished ()), this, SLOT(deleteSocket()) );
1311 connect( mSocket, SIGNAL(connected ()), this, SLOT(writeFileToSocket()) ); 1336 connect( mSocket, SIGNAL(connected ()), this, SLOT(writeFileToSocket()) );
1312 } 1337 }
1313 mFileName = fileName ; 1338 mFileName = fileName ;
1314 mSocket->connectToHost( mHost, mPort ); 1339 mSocket->connectToHost( mHost, mPort );
1315} 1340}
1316void KCommandSocket::writeFileToSocket() 1341void KCommandSocket::writeFileToSocket()
1317{ 1342{
1318 QFile file2( mFileName ); 1343 QFile file2( mFileName );
1319 if (!file2.open( IO_ReadOnly ) ) { 1344 if (!file2.open( IO_ReadOnly ) ) {
1320 mRetVal= errorW; 1345 mRetVal= errorW;
1321 mSocket->close(); 1346 mSocket->close();
1322 if ( mSocket->state() == QSocket::Idle ) 1347 if ( mSocket->state() == QSocket::Idle )
1323 QTimer::singleShot( 10, this , SLOT ( deleteSocket())); 1348 QTimer::singleShot( 10, this , SLOT ( deleteSocket()));
1324 return ; 1349 return ;
1325 } 1350 }
1326 QTextStream ts2( &file2 ); 1351 QTextStream ts2( &file2 );
1327 ts2.setEncoding( QTextStream::Latin1 ); 1352 ts2.setEncoding( QTextStream::Latin1 );
1328 QTextStream os2( mSocket ); 1353 QTextStream os2( mSocket );
1329 os2.setEncoding( QTextStream::Latin1 ); 1354 os2.setEncoding( QTextStream::Latin1 );
1330 os2 << "PUT " << mPassWord << "\r\n";; 1355 os2 << "PUT " << mPassWord << "\r\n";;
1331 while ( ! ts2.atEnd() ) { 1356 while ( ! ts2.atEnd() ) {
1332 os2 << ts2.readLine() << "\r\n"; 1357 os2 << ts2.readLine() << "\r\n";
1333 } 1358 }
1334 mRetVal= successW; 1359 mRetVal= successW;
1335 file2.close(); 1360 file2.close();
1336 mSocket->close(); 1361 mSocket->close();
1337 if ( mSocket->state() == QSocket::Idle ) 1362 if ( mSocket->state() == QSocket::Idle )
1338 QTimer::singleShot( 10, this , SLOT ( deleteSocket())); 1363 QTimer::singleShot( 10, this , SLOT ( deleteSocket()));
1339} 1364}
1340void KCommandSocket::sendStop() 1365void KCommandSocket::sendStop()
1341{ 1366{
1342 if ( !mSocket ) { 1367 if ( !mSocket ) {
1343 mSocket = new QSocket( this ); 1368 mSocket = new QSocket( this );
1344 connect( mSocket, SIGNAL(delayedCloseFinished ()), this, SLOT(deleteSocket()) ); 1369 connect( mSocket, SIGNAL(delayedCloseFinished ()), this, SLOT(deleteSocket()) );
1345 } 1370 }
1346 mSocket->connectToHost( mHost, mPort ); 1371 mSocket->connectToHost( mHost, mPort );
1347 QTextStream os2( mSocket ); 1372 QTextStream os2( mSocket );
1348 os2.setEncoding( QTextStream::Latin1 ); 1373 os2.setEncoding( QTextStream::Latin1 );
1349 os2 << "STOP\r\n"; 1374 os2 << "STOP\r\n";
1350 mSocket->close(); 1375 mSocket->close();
1351 if ( mSocket->state() == QSocket::Idle ) 1376 if ( mSocket->state() == QSocket::Idle )
1352 QTimer::singleShot( 10, this , SLOT ( deleteSocket())); 1377 QTimer::singleShot( 10, this , SLOT ( deleteSocket()));
1353} 1378}
1354 1379
1355void KCommandSocket::startReadFileFromSocket() 1380void KCommandSocket::startReadFileFromSocket()
1356{ 1381{
1357 if ( ! mFirst ) 1382 if ( ! mFirst )
1358 return; 1383 return;
1359 mFirst = false; 1384 mFirst = false;
1360 mTimerSocket->stop(); 1385 mTimerSocket->stop();
1361 mFileString = ""; 1386 mFileString = "";
1362 mTime.start(); 1387 mTime.start();
1363 QTimer::singleShot( 1, this , SLOT (readFileFromSocket( ) )); 1388 QTimer::singleShot( 1, this , SLOT (readFileFromSocket( ) ));
1364 1389
1365} 1390}
1366void KCommandSocket::readFileFromSocket() 1391void KCommandSocket::readFileFromSocket()
1367{ 1392{
1368 //qDebug("readBackFileFromSocket() %d ", mTime.elapsed ()); 1393 //qDebug("readBackFileFromSocket() %d ", mTime.elapsed ());
1369 while ( mSocket->canReadLine () ) { 1394 while ( mSocket->canReadLine () ) {
1370 mTime.restart(); 1395 mTime.restart();
1371 QString line = mSocket->readLine (); 1396 QString line = mSocket->readLine ();
1372 mFileString += line; 1397 mFileString += line;
1373 //qDebug("readline: %s ", line.latin1()); 1398 //qDebug("readline: %s ", line.latin1());
1374 } 1399 }
1375 if ( mTime.elapsed () < 3000 ) { 1400 if ( mTime.elapsed () < 3000 ) {
1376 // wait for more 1401 // wait for more
1377 //qDebug("waitformore "); 1402 //qDebug("waitformore ");
1378 QTimer::singleShot( 100, this , SLOT (readFileFromSocket( ) )); 1403 QTimer::singleShot( 100, this , SLOT (readFileFromSocket( ) ));
1379 return; 1404 return;
1380 } 1405 }
1381 QString fileName = mFileName; 1406 QString fileName = mFileName;
1382 QFile file ( fileName ); 1407 QFile file ( fileName );
1383 if (!file.open( IO_WriteOnly ) ) { 1408 if (!file.open( IO_WriteOnly ) ) {
1384 mFileString = ""; 1409 mFileString = "";
1385 mRetVal = errorR; 1410 mRetVal = errorR;
1386 qDebug("KSS:Error open temp sync file for writing: %s",fileName.latin1() ); 1411 qDebug("KSS:Error open temp sync file for writing: %s",fileName.latin1() );
1387 deleteSocket(); 1412 deleteSocket();
1388 return ; 1413 return ;
1389 1414
1390 } 1415 }
1391 // mView->setLoadedFileVersion(QDateTime::currentDateTime().addSecs( -1)); 1416 // mView->setLoadedFileVersion(QDateTime::currentDateTime().addSecs( -1));
1392 QTextStream ts ( &file ); 1417 QTextStream ts ( &file );
1393 ts.setEncoding( QTextStream::Latin1 ); 1418 ts.setEncoding( QTextStream::Latin1 );
1394 ts << mFileString; 1419 ts << mFileString;
1395 file.close(); 1420 file.close();
1396 mFileString = ""; 1421 mFileString = "";
1397 mRetVal = successR; 1422 mRetVal = successR;
1398 mSocket->close(); 1423 mSocket->close();
1399 // if state is not idle, deleteSocket(); is called via 1424 // if state is not idle, deleteSocket(); is called via
1400 // connect( mSocket, SIGNAL(delayedCloseFinished ()), this, SLOT(deleteSocket()) ); 1425 // connect( mSocket, SIGNAL(delayedCloseFinished ()), this, SLOT(deleteSocket()) );
1401 if ( mSocket->state() == QSocket::Idle ) 1426 if ( mSocket->state() == QSocket::Idle )
1402 deleteSocket(); 1427 deleteSocket();
1403} 1428}
1404 1429
1405void KCommandSocket::deleteSocket() 1430void KCommandSocket::deleteSocket()
1406{ 1431{
1407 //qDebug("KCommandSocket::deleteSocket() "); 1432 //qDebug("KCommandSocket::deleteSocket() ");
1408 if ( mTimerSocket->isActive () ) { 1433 if ( mTimerSocket->isActive () ) {
1409 mTimerSocket->stop(); 1434 mTimerSocket->stop();
1410 mRetVal = errorTO; 1435 mRetVal = errorTO;
1411 qDebug("Connection to remote host timed out"); 1436 qDebug("Connection to remote host timed out");
1412 if ( mSocket ) { 1437 if ( mSocket ) {
1413 mSocket->close(); 1438 mSocket->close();
1414 //if ( mSocket->state() == QSocket::Idle ) 1439 //if ( mSocket->state() == QSocket::Idle )
1415 // deleteSocket(); 1440 // deleteSocket();
1416 delete mSocket; 1441 delete mSocket;
1417 mSocket = 0; 1442 mSocket = 0;
1418 } 1443 }
1419 KMessageBox::error( 0, i18n("Connection to remote\nhost timed out!\nDid you forgot to enable\nsyncing on remote host? ")); 1444 KMessageBox::error( 0, i18n("Connection to remote\nhost timed out!\nDid you forgot to enable\nsyncing on remote host? "));
1420 emit commandFinished( this, mRetVal ); 1445 emit commandFinished( this, mRetVal );
1421 return; 1446 return;
1422 } 1447 }
1423 //qDebug("KCommandSocket::deleteSocket() %d", mRetVal ); 1448 //qDebug("KCommandSocket::deleteSocket() %d", mRetVal );
1424 if ( mSocket) 1449 if ( mSocket)
1425 delete mSocket; 1450 delete mSocket;
1426 mSocket = 0; 1451 mSocket = 0;
1427 emit commandFinished( this, mRetVal ); 1452 emit commandFinished( this, mRetVal );
1428} 1453}