author | zautrix <zautrix> | 2004-10-20 16:27:05 (UTC) |
---|---|---|
committer | zautrix <zautrix> | 2004-10-20 16:27:05 (UTC) |
commit | 46ea2933c9f67e77fb5c6cd93237efc755f28b62 (patch) (unidiff) | |
tree | 8025e9caceb2f62cd5b1d4b78b359545d38b39c5 /libkdepim/ksyncmanager.cpp | |
parent | 5cf3c1bce58a6487af166e637e54571e98156fd0 (diff) | |
download | kdepimpi-46ea2933c9f67e77fb5c6cd93237efc755f28b62.zip kdepimpi-46ea2933c9f67e77fb5c6cd93237efc755f28b62.tar.gz kdepimpi-46ea2933c9f67e77fb5c6cd93237efc755f28b62.tar.bz2 |
made KDE sync perfect
-rw-r--r-- | libkdepim/ksyncmanager.cpp | 63 |
1 files changed, 46 insertions, 17 deletions
diff --git a/libkdepim/ksyncmanager.cpp b/libkdepim/ksyncmanager.cpp index 7ca3ee0..554c6e5 100644 --- a/libkdepim/ksyncmanager.cpp +++ b/libkdepim/ksyncmanager.cpp | |||
@@ -160,65 +160,80 @@ void KSyncManager::slotSyncMenu( int action ) | |||
160 | //confSync(); | 160 | //confSync(); |
161 | 161 | ||
162 | return; | 162 | return; |
163 | } | 163 | } |
164 | if ( action == 1 ) { | 164 | if ( action == 1 ) { |
165 | multiSync( true ); | 165 | multiSync( true ); |
166 | return; | 166 | return; |
167 | } | 167 | } |
168 | if ( action == 2 ) { | 168 | if ( action == 2 ) { |
169 | enableQuick(); | 169 | enableQuick(); |
170 | QTimer::singleShot ( 1, this, SLOT ( fillSyncMenu() ) ); | 170 | QTimer::singleShot ( 1, this, SLOT ( fillSyncMenu() ) ); |
171 | return; | 171 | return; |
172 | } | 172 | } |
173 | if ( action == 3 ) { | 173 | if ( action == 3 ) { |
174 | delete mServerSocket; | 174 | delete mServerSocket; |
175 | mServerSocket = 0; | 175 | mServerSocket = 0; |
176 | QTimer::singleShot ( 1, this, SLOT ( fillSyncMenu() ) ); | 176 | QTimer::singleShot ( 1, this, SLOT ( fillSyncMenu() ) ); |
177 | return; | 177 | return; |
178 | } | 178 | } |
179 | 179 | ||
180 | if (blockSave()) | 180 | if (blockSave()) |
181 | return; | 181 | return; |
182 | 182 | ||
183 | setBlockSave(true); | 183 | setBlockSave(true); |
184 | bool silent = false; | ||
185 | if ( action == 999 ) { | ||
186 | //special mode for silent syncing | ||
187 | action = 1000; | ||
188 | silent = true; | ||
189 | } | ||
184 | 190 | ||
185 | mCurrentSyncProfile = action - 1000 ; | 191 | mCurrentSyncProfile = action - 1000 ; |
186 | mCurrentSyncDevice = mSyncProfileNames[mCurrentSyncProfile] ; | 192 | mCurrentSyncDevice = mSyncProfileNames[mCurrentSyncProfile] ; |
187 | mCurrentSyncName = mLocalMachineName ; | 193 | mCurrentSyncName = mLocalMachineName ; |
188 | KConfig config ( locateLocal( "config","ksyncprofilesrc" ) ); | 194 | KConfig config ( locateLocal( "config","ksyncprofilesrc" ) ); |
189 | KSyncProfile* temp = new KSyncProfile (); | 195 | KSyncProfile* temp = new KSyncProfile (); |
190 | temp->setName(mSyncProfileNames[mCurrentSyncProfile]); | 196 | temp->setName(mSyncProfileNames[mCurrentSyncProfile]); |
191 | temp->readConfig(&config); | 197 | temp->readConfig(&config); |
192 | mAskForPreferences = temp->getAskForPreferences(); | 198 | if (silent) { |
193 | mSyncAlgoPrefs = temp->getSyncPrefs(); | 199 | mAskForPreferences = false; |
194 | mWriteBackFile = temp->getWriteBackFile(); | 200 | mShowSyncSummary = false; |
201 | mWriteBackFile = true; | ||
202 | mSyncAlgoPrefs = 2;// take newest | ||
203 | } | ||
204 | else { | ||
205 | mAskForPreferences = temp->getAskForPreferences(); | ||
206 | mShowSyncSummary = temp->getShowSummaryAfterSync(); | ||
207 | mWriteBackFile = temp->getWriteBackFile(); | ||
208 | mSyncAlgoPrefs = temp->getSyncPrefs(); | ||
209 | } | ||
195 | mWriteBackExistingOnly = temp->getWriteBackExisting(); | 210 | mWriteBackExistingOnly = temp->getWriteBackExisting(); |
196 | mIsKapiFile = temp->getIsKapiFile(); | 211 | mIsKapiFile = temp->getIsKapiFile(); |
197 | mWriteBackInFuture = 0; | 212 | mWriteBackInFuture = 0; |
198 | if ( temp->getWriteBackFuture() ) | 213 | if ( temp->getWriteBackFuture() ) |
199 | mWriteBackInFuture = temp->getWriteBackFutureWeeks( ); | 214 | mWriteBackInFuture = temp->getWriteBackFutureWeeks( ); |
200 | mShowSyncSummary = temp->getShowSummaryAfterSync(); | 215 | |
201 | if ( action == 1000 ) { | 216 | if ( action == 1000 ) { |
202 | #ifdef DESKTOP_VERSION | 217 | #ifdef DESKTOP_VERSION |
203 | syncKDE(); | 218 | syncKDE(); |
204 | #else | 219 | #else |
205 | syncSharp(); | 220 | syncSharp(); |
206 | #endif | 221 | #endif |
207 | 222 | ||
208 | } else if ( action == 1001 ) { | 223 | } else if ( action == 1001 ) { |
209 | syncLocalFile(); | 224 | syncLocalFile(); |
210 | 225 | ||
211 | } else if ( action == 1002 ) { | 226 | } else if ( action == 1002 ) { |
212 | mWriteBackFile = false; | 227 | mWriteBackFile = false; |
213 | mAskForPreferences = false; | 228 | mAskForPreferences = false; |
214 | mShowSyncSummary = false; | 229 | mShowSyncSummary = false; |
215 | mSyncAlgoPrefs = 3; | 230 | mSyncAlgoPrefs = 3; |
216 | quickSyncLocalFile(); | 231 | quickSyncLocalFile(); |
217 | 232 | ||
218 | } else if ( action >= 1003 ) { | 233 | } else if ( action >= 1003 ) { |
219 | if ( temp->getIsLocalFileSync() ) { | 234 | if ( temp->getIsLocalFileSync() ) { |
220 | switch(mTargetApp) | 235 | switch(mTargetApp) |
221 | { | 236 | { |
222 | case (KAPI): | 237 | case (KAPI): |
223 | if ( syncWithFile( temp->getRemoteFileNameAB( ), false ) ) | 238 | if ( syncWithFile( temp->getRemoteFileNameAB( ), false ) ) |
224 | mPrefs->mLastSyncedLocalFile = temp->getRemoteFileNameAB(); | 239 | mPrefs->mLastSyncedLocalFile = temp->getRemoteFileNameAB(); |
@@ -281,48 +296,49 @@ void KSyncManager::enableQuick( bool ask ) | |||
281 | lab.setText( mPrefs->mPassiveSyncPort ); | 296 | lab.setText( mPrefs->mPassiveSyncPort ); |
282 | lay.setMargin(7); | 297 | lay.setMargin(7); |
283 | lay.setSpacing(7); | 298 | lay.setSpacing(7); |
284 | int po = 9197+mTargetApp; | 299 | int po = 9197+mTargetApp; |
285 | QLabel label ( i18n("Port number (Default: %1)").arg(po), &dia ); | 300 | QLabel label ( i18n("Port number (Default: %1)").arg(po), &dia ); |
286 | lay.addWidget( &label); | 301 | lay.addWidget( &label); |
287 | lay.addWidget( &lab); | 302 | lay.addWidget( &lab); |
288 | 303 | ||
289 | QLineEdit lepw ( &dia ); | 304 | QLineEdit lepw ( &dia ); |
290 | lepw.setText( mPrefs->mPassiveSyncPw ); | 305 | lepw.setText( mPrefs->mPassiveSyncPw ); |
291 | QLabel label2 ( i18n("Password to enable\naccess from remote:"), &dia ); | 306 | QLabel label2 ( i18n("Password to enable\naccess from remote:"), &dia ); |
292 | lay.addWidget( &label2); | 307 | lay.addWidget( &label2); |
293 | lay.addWidget( &lepw); | 308 | lay.addWidget( &lepw); |
294 | QCheckBox autostart(i18n("Automatically start\nat application startup"), &dia ); | 309 | QCheckBox autostart(i18n("Automatically start\nat application startup"), &dia ); |
295 | lay.addWidget( &autostart); | 310 | lay.addWidget( &autostart); |
296 | autostart.setChecked( mPrefs->mPassiveSyncAutoStart ); | 311 | autostart.setChecked( mPrefs->mPassiveSyncAutoStart ); |
297 | #ifdef DESKTOP_VERSION | 312 | #ifdef DESKTOP_VERSION |
298 | #ifdef _WIN32_ | 313 | #ifdef _WIN32_ |
299 | QCheckBox syncdesktop( i18n("Automatically sync with Outlook\nwhen receiving sync request"),&dia ); | 314 | QCheckBox syncdesktop( i18n("Automatically sync with Outlook\nwhen receiving sync request"),&dia ); |
300 | #else | 315 | #else |
301 | QCheckBox syncdesktop( i18n("Automatically sync with KDE-Desktop\nwhen receiving sync request"),&dia ); | 316 | QCheckBox syncdesktop( i18n("Automatically sync with KDE-Desktop\nwhen receiving sync request"),&dia ); |
302 | #endif | 317 | #endif |
303 | lay.addWidget( &syncdesktop); | 318 | lay.addWidget( &syncdesktop); |
304 | #else | 319 | #else |
320 | mPrefs->mPassiveSyncWithDesktop = false; | ||
305 | QCheckBox syncdesktop( i18n("Automatically sync\nwith KDE-Desktop"),&dia ); | 321 | QCheckBox syncdesktop( i18n("Automatically sync\nwith KDE-Desktop"),&dia ); |
306 | syncdesktop.hide(); | 322 | syncdesktop.hide(); |
307 | #endif | 323 | #endif |
308 | syncdesktop.setChecked( mPrefs->mPassiveSyncWithDesktop ); | 324 | syncdesktop.setChecked( mPrefs->mPassiveSyncWithDesktop ); |
309 | 325 | ||
310 | dia.setFixedSize( 230,120 ); | 326 | dia.setFixedSize( 230,120 ); |
311 | dia.setCaption( i18n("Enter port for Pi-Sync") ); | 327 | dia.setCaption( i18n("Enter port for Pi-Sync") ); |
312 | QPushButton pb ( "OK", &dia); | 328 | QPushButton pb ( "OK", &dia); |
313 | lay.addWidget( &pb ); | 329 | lay.addWidget( &pb ); |
314 | connect(&pb, SIGNAL( clicked() ), &dia, SLOT ( accept() ) ); | 330 | connect(&pb, SIGNAL( clicked() ), &dia, SLOT ( accept() ) ); |
315 | dia.show(); | 331 | dia.show(); |
316 | if ( ! dia.exec() ) | 332 | if ( ! dia.exec() ) |
317 | return; | 333 | return; |
318 | dia.hide(); | 334 | dia.hide(); |
319 | qApp->processEvents(); | 335 | qApp->processEvents(); |
320 | if ( mPrefs->mPassiveSyncPw != lepw.text() ) { | 336 | if ( mPrefs->mPassiveSyncPw != lepw.text() ) { |
321 | changed = true; | 337 | changed = true; |
322 | mPrefs->mPassiveSyncPw = lepw.text(); | 338 | mPrefs->mPassiveSyncPw = lepw.text(); |
323 | } | 339 | } |
324 | if ( mPrefs->mPassiveSyncPort != lab.text() ) { | 340 | if ( mPrefs->mPassiveSyncPort != lab.text() ) { |
325 | mPrefs->mPassiveSyncPort = lab.text(); | 341 | mPrefs->mPassiveSyncPort = lab.text(); |
326 | changed = true; | 342 | changed = true; |
327 | } | 343 | } |
328 | autoStart = autostart.isChecked(); | 344 | autoStart = autostart.isChecked(); |
@@ -395,88 +411,94 @@ void KSyncManager::syncLocalFile() | |||
395 | bool KSyncManager::syncWithFile( QString fn , bool quick ) | 411 | bool KSyncManager::syncWithFile( QString fn , bool quick ) |
396 | { | 412 | { |
397 | bool ret = false; | 413 | bool ret = false; |
398 | QFileInfo info; | 414 | QFileInfo info; |
399 | info.setFile( fn ); | 415 | info.setFile( fn ); |
400 | QString mess; | 416 | QString mess; |
401 | bool loadbup = true; | 417 | bool loadbup = true; |
402 | if ( !info. exists() ) { | 418 | if ( !info. exists() ) { |
403 | mess = i18n( "Sync file \n...%1\ndoes not exist!\nNothing synced!\n").arg(fn.right( 30) ); | 419 | mess = i18n( "Sync file \n...%1\ndoes not exist!\nNothing synced!\n").arg(fn.right( 30) ); |
404 | int result = QMessageBox::warning( mParent, i18n("Warning!"), | 420 | int result = QMessageBox::warning( mParent, i18n("Warning!"), |
405 | mess ); | 421 | mess ); |
406 | return ret; | 422 | return ret; |
407 | } | 423 | } |
408 | int result = 0; | 424 | int result = 0; |
409 | if ( !quick ) { | 425 | if ( !quick ) { |
410 | mess = i18n("Sync with file \n...%1\nfrom:\n%2\n").arg(fn.right( 25)).arg(KGlobal::locale()->formatDateTime(info.lastModified (), true, false )); | 426 | mess = i18n("Sync with file \n...%1\nfrom:\n%2\n").arg(fn.right( 25)).arg(KGlobal::locale()->formatDateTime(info.lastModified (), true, false )); |
411 | result = QMessageBox::warning( mParent, i18n("Warning!"), | 427 | result = QMessageBox::warning( mParent, i18n("Warning!"), |
412 | mess, | 428 | mess, |
413 | i18n("Sync"), i18n("Cancel"), 0, | 429 | i18n("Sync"), i18n("Cancel"), 0, |
414 | 0, 1 ); | 430 | 0, 1 ); |
415 | if ( result ) | 431 | if ( result ) |
416 | return false; | 432 | return false; |
417 | } | 433 | } |
418 | if ( mAskForPreferences ) | 434 | if ( mAskForPreferences ) |
419 | edit_sync_options(); | 435 | if ( !edit_sync_options()) { |
436 | mParent->topLevelWidget()->setCaption( i18n("Syncing aborted. Nothing synced.") ); | ||
437 | return false; | ||
438 | } | ||
420 | if ( result == 0 ) { | 439 | if ( result == 0 ) { |
421 | //qDebug("Now sycing ... "); | 440 | //qDebug("Now sycing ... "); |
422 | if ( ret = mImplementation->sync( this, fn, mSyncAlgoPrefs ) ) | 441 | if ( ret = mImplementation->sync( this, fn, mSyncAlgoPrefs ) ) |
423 | mParent->topLevelWidget()->setCaption( i18n("Synchronization successful") ); | 442 | mParent->topLevelWidget()->setCaption( i18n("Synchronization successful") ); |
424 | else | 443 | else |
425 | mParent->topLevelWidget()->setCaption( i18n("Sync cancelled or failed. Nothing synced.") ); | 444 | mParent->topLevelWidget()->setCaption( i18n("Sync cancelled or failed. Nothing synced.") ); |
426 | if ( ! quick ) | 445 | if ( ! quick ) |
427 | mPrefs->mLastSyncedLocalFile = fn; | 446 | mPrefs->mLastSyncedLocalFile = fn; |
428 | } | 447 | } |
429 | return ret; | 448 | return ret; |
430 | } | 449 | } |
431 | 450 | ||
432 | void KSyncManager::quickSyncLocalFile() | 451 | void KSyncManager::quickSyncLocalFile() |
433 | { | 452 | { |
434 | 453 | ||
435 | if ( syncWithFile( mPrefs->mLastSyncedLocalFile, true ) ) { | 454 | if ( syncWithFile( mPrefs->mLastSyncedLocalFile, true ) ) { |
436 | qDebug("quick syncLocalFile() successful "); | 455 | qDebug("quick syncLocalFile() successful "); |
437 | 456 | ||
438 | } | 457 | } |
439 | } | 458 | } |
440 | 459 | ||
441 | void KSyncManager::multiSync( bool askforPrefs ) | 460 | void KSyncManager::multiSync( bool askforPrefs ) |
442 | { | 461 | { |
443 | if (blockSave()) | 462 | if (blockSave()) |
444 | return; | 463 | return; |
445 | setBlockSave(true); | 464 | setBlockSave(true); |
446 | QString question = i18n("Do you really want\nto multiple sync\nwith all checked profiles?\nSyncing takes some\ntime - all profiles\nare synced twice!"); | 465 | QString question = i18n("Do you really want\nto multiple sync\nwith all checked profiles?\nSyncing takes some\ntime - all profiles\nare synced twice!"); |
447 | if ( QMessageBox::information( mParent, i18n("KDE-Pim Sync"), | 466 | if ( QMessageBox::information( mParent, i18n("KDE-Pim Sync"), |
448 | question, | 467 | question, |
449 | i18n("Yes"), i18n("No"), | 468 | i18n("Yes"), i18n("No"), |
450 | 0, 0 ) != 0 ) { | 469 | 0, 0 ) != 0 ) { |
451 | setBlockSave(false); | 470 | setBlockSave(false); |
452 | mParent->topLevelWidget()->setCaption(i18n("Aborted! Nothing synced!")); | 471 | mParent->topLevelWidget()->setCaption(i18n("Aborted! Nothing synced!")); |
453 | return; | 472 | return; |
454 | } | 473 | } |
455 | mCurrentSyncDevice = i18n("Multiple profiles") ; | 474 | mCurrentSyncDevice = i18n("Multiple profiles") ; |
456 | mSyncAlgoPrefs = mPrefs->mRingSyncAlgoPrefs; | 475 | mSyncAlgoPrefs = mPrefs->mRingSyncAlgoPrefs; |
457 | if ( askforPrefs ) { | 476 | if ( askforPrefs ) { |
458 | edit_sync_options(); | 477 | if ( !edit_sync_options()) { |
478 | mParent->topLevelWidget()->setCaption( i18n("Syncing aborted. Nothing synced.") ); | ||
479 | return; | ||
480 | } | ||
459 | mPrefs->mRingSyncAlgoPrefs = mSyncAlgoPrefs; | 481 | mPrefs->mRingSyncAlgoPrefs = mSyncAlgoPrefs; |
460 | } | 482 | } |
461 | mParent->topLevelWidget()->setCaption(i18n("Multiple sync started.") ); | 483 | mParent->topLevelWidget()->setCaption(i18n("Multiple sync started.") ); |
462 | qApp->processEvents(); | 484 | qApp->processEvents(); |
463 | int num = ringSync() ; | 485 | int num = ringSync() ; |
464 | if ( num > 1 ) | 486 | if ( num > 1 ) |
465 | ringSync(); | 487 | ringSync(); |
466 | setBlockSave(false); | 488 | setBlockSave(false); |
467 | if ( num ) | 489 | if ( num ) |
468 | emit save(); | 490 | emit save(); |
469 | if ( num ) | 491 | if ( num ) |
470 | mParent->topLevelWidget()->setCaption(i18n("%1 profiles synced. Multiple sync complete!").arg(num) ); | 492 | mParent->topLevelWidget()->setCaption(i18n("%1 profiles synced. Multiple sync complete!").arg(num) ); |
471 | else | 493 | else |
472 | mParent->topLevelWidget()->setCaption(i18n("Nothing synced! No profiles defined for multisync!")); | 494 | mParent->topLevelWidget()->setCaption(i18n("Nothing synced! No profiles defined for multisync!")); |
473 | return; | 495 | return; |
474 | } | 496 | } |
475 | 497 | ||
476 | int KSyncManager::ringSync() | 498 | int KSyncManager::ringSync() |
477 | { | 499 | { |
478 | int syncedProfiles = 0; | 500 | int syncedProfiles = 0; |
479 | unsigned int i; | 501 | unsigned int i; |
480 | QTime timer; | 502 | QTime timer; |
481 | KConfig config ( locateLocal( "config","ksyncprofilesrc" ) ); | 503 | KConfig config ( locateLocal( "config","ksyncprofilesrc" ) ); |
482 | QStringList syncProfileNames = mSyncProfileNames; | 504 | QStringList syncProfileNames = mSyncProfileNames; |
@@ -666,130 +688,131 @@ void KSyncManager::syncRemote( KSyncProfile* prof, bool ask) | |||
666 | //qDebug(" file **%s** ",prof->getLocalTempFile().latin1() ); | 688 | //qDebug(" file **%s** ",prof->getLocalTempFile().latin1() ); |
667 | 689 | ||
668 | if ( syncWithFile( localTempFile, true ) ) { | 690 | if ( syncWithFile( localTempFile, true ) ) { |
669 | 691 | ||
670 | if ( mWriteBackFile ) { | 692 | if ( mWriteBackFile ) { |
671 | int fi; | 693 | int fi; |
672 | if ( (fi = postCommand.find("$PWD$")) > 0 ) { | 694 | if ( (fi = postCommand.find("$PWD$")) > 0 ) { |
673 | QString pwd = getPassword(); | 695 | QString pwd = getPassword(); |
674 | postCommand = postCommand.left( fi )+ pwd + postCommand.mid( fi+5 ); | 696 | postCommand = postCommand.left( fi )+ pwd + postCommand.mid( fi+5 ); |
675 | 697 | ||
676 | } | 698 | } |
677 | mParent->topLevelWidget()->setCaption ( i18n( "Writing back file ..." ) ); | 699 | mParent->topLevelWidget()->setCaption ( i18n( "Writing back file ..." ) ); |
678 | result = system ( postCommand ); | 700 | result = system ( postCommand ); |
679 | qDebug("Sync:Writing back file result: %d ", result); | 701 | qDebug("Sync:Writing back file result: %d ", result); |
680 | if ( result != 0 ) { | 702 | if ( result != 0 ) { |
681 | mParent->topLevelWidget()->setCaption ( i18n( "Writing back file result: " )+QString::number( result ) ); | 703 | mParent->topLevelWidget()->setCaption ( i18n( "Writing back file result: " )+QString::number( result ) ); |
682 | return; | 704 | return; |
683 | } else { | 705 | } else { |
684 | mParent->topLevelWidget()->setCaption ( i18n( "Syncronization sucessfully completed" ) ); | 706 | mParent->topLevelWidget()->setCaption ( i18n( "Syncronization sucessfully completed" ) ); |
685 | } | 707 | } |
686 | } | 708 | } |
687 | } | 709 | } |
688 | return; | 710 | return; |
689 | } | 711 | } |
690 | void KSyncManager::edit_pisync_options() | 712 | bool KSyncManager::edit_pisync_options() |
691 | { | 713 | { |
692 | QDialog dia( mParent, "dia", true ); | 714 | QDialog dia( mParent, "dia", true ); |
693 | dia.setCaption( i18n("Pi-Sync options for device: " ) +mCurrentSyncDevice ); | 715 | dia.setCaption( i18n("Pi-Sync options for device: " ) +mCurrentSyncDevice ); |
694 | QVBoxLayout lay ( &dia ); | 716 | QVBoxLayout lay ( &dia ); |
695 | lay.setSpacing( 5 ); | 717 | lay.setSpacing( 5 ); |
696 | lay.setMargin( 3 ); | 718 | lay.setMargin( 3 ); |
697 | QLabel lab1 ( i18n("Password for remote access:"), &dia); | 719 | QLabel lab1 ( i18n("Password for remote access:"), &dia); |
698 | lay.addWidget( &lab1 ); | 720 | lay.addWidget( &lab1 ); |
699 | QLineEdit le1 (&dia ); | 721 | QLineEdit le1 (&dia ); |
700 | lay.addWidget( &le1 ); | 722 | lay.addWidget( &le1 ); |
701 | QLabel lab2 ( i18n("Remote IP address:"), &dia); | 723 | QLabel lab2 ( i18n("Remote IP address:"), &dia); |
702 | lay.addWidget( &lab2 ); | 724 | lay.addWidget( &lab2 ); |
703 | QLineEdit le2 (&dia ); | 725 | QLineEdit le2 (&dia ); |
704 | lay.addWidget( &le2 ); | 726 | lay.addWidget( &le2 ); |
705 | QLabel lab3 ( i18n("Remote port number:"), &dia); | 727 | QLabel lab3 ( i18n("Remote port number:"), &dia); |
706 | lay.addWidget( &lab3 ); | 728 | lay.addWidget( &lab3 ); |
707 | QLineEdit le3 (&dia ); | 729 | QLineEdit le3 (&dia ); |
708 | lay.addWidget( &le3 ); | 730 | lay.addWidget( &le3 ); |
709 | QPushButton pb ( "OK", &dia); | 731 | QPushButton pb ( "OK", &dia); |
710 | lay.addWidget( &pb ); | 732 | lay.addWidget( &pb ); |
711 | connect(&pb, SIGNAL( clicked() ), &dia, SLOT ( accept() ) ); | 733 | connect(&pb, SIGNAL( clicked() ), &dia, SLOT ( accept() ) ); |
712 | le1.setText( mPassWordPiSync ); | 734 | le1.setText( mPassWordPiSync ); |
713 | le2.setText( mActiveSyncIP ); | 735 | le2.setText( mActiveSyncIP ); |
714 | le3.setText( mActiveSyncPort ); | 736 | le3.setText( mActiveSyncPort ); |
715 | if ( dia.exec() ) { | 737 | if ( dia.exec() ) { |
716 | mPassWordPiSync = le1.text(); | 738 | mPassWordPiSync = le1.text(); |
717 | mActiveSyncPort = le3.text(); | 739 | mActiveSyncPort = le3.text(); |
718 | mActiveSyncIP = le2.text(); | 740 | mActiveSyncIP = le2.text(); |
741 | return true; | ||
719 | } | 742 | } |
720 | 743 | return false; | |
721 | } | 744 | } |
722 | void KSyncManager::edit_sync_options() | 745 | bool KSyncManager::edit_sync_options() |
723 | { | 746 | { |
724 | 747 | ||
725 | QDialog dia( mParent, "dia", true ); | 748 | QDialog dia( mParent, "dia", true ); |
726 | dia.setCaption( i18n("Device: " ) +mCurrentSyncDevice ); | 749 | dia.setCaption( i18n("Device: " ) +mCurrentSyncDevice ); |
727 | QButtonGroup gr ( 1, Qt::Horizontal, i18n("Sync preferences"), &dia); | 750 | QButtonGroup gr ( 1, Qt::Horizontal, i18n("Sync preferences"), &dia); |
728 | QVBoxLayout lay ( &dia ); | 751 | QVBoxLayout lay ( &dia ); |
729 | lay.setSpacing( 2 ); | 752 | lay.setSpacing( 2 ); |
730 | lay.setMargin( 3 ); | 753 | lay.setMargin( 3 ); |
731 | lay.addWidget(&gr); | 754 | lay.addWidget(&gr); |
732 | QRadioButton loc ( i18n("Take local entry on conflict"), &gr ); | 755 | QRadioButton loc ( i18n("Take local entry on conflict"), &gr ); |
733 | QRadioButton rem ( i18n("Take remote entry on conflict"), &gr ); | 756 | QRadioButton rem ( i18n("Take remote entry on conflict"), &gr ); |
734 | QRadioButton newest( i18n("Take newest entry on conflict"), &gr ); | 757 | QRadioButton newest( i18n("Take newest entry on conflict"), &gr ); |
735 | QRadioButton ask( i18n("Ask for every entry on conflict"), &gr ); | 758 | QRadioButton ask( i18n("Ask for every entry on conflict"), &gr ); |
736 | QRadioButton f_loc( i18n("Force: Take local entry always"), &gr ); | 759 | QRadioButton f_loc( i18n("Force: Take local entry always"), &gr ); |
737 | QRadioButton f_rem( i18n("Force: Take remote entry always"), &gr ); | 760 | QRadioButton f_rem( i18n("Force: Take remote entry always"), &gr ); |
738 | //QRadioButton both( i18n("Take both on conflict"), &gr ); | 761 | //QRadioButton both( i18n("Take both on conflict"), &gr ); |
739 | QPushButton pb ( "OK", &dia); | 762 | QPushButton pb ( "OK", &dia); |
740 | lay.addWidget( &pb ); | 763 | lay.addWidget( &pb ); |
741 | connect(&pb, SIGNAL( clicked() ), &dia, SLOT ( accept() ) ); | 764 | connect(&pb, SIGNAL( clicked() ), &dia, SLOT ( accept() ) ); |
742 | switch ( mSyncAlgoPrefs ) { | 765 | switch ( mSyncAlgoPrefs ) { |
743 | case 0: | 766 | case 0: |
744 | loc.setChecked( true); | 767 | loc.setChecked( true); |
745 | break; | 768 | break; |
746 | case 1: | 769 | case 1: |
747 | rem.setChecked( true ); | 770 | rem.setChecked( true ); |
748 | break; | 771 | break; |
749 | case 2: | 772 | case 2: |
750 | newest.setChecked( true); | 773 | newest.setChecked( true); |
751 | break; | 774 | break; |
752 | case 3: | 775 | case 3: |
753 | ask.setChecked( true); | 776 | ask.setChecked( true); |
754 | break; | 777 | break; |
755 | case 4: | 778 | case 4: |
756 | f_loc.setChecked( true); | 779 | f_loc.setChecked( true); |
757 | break; | 780 | break; |
758 | case 5: | 781 | case 5: |
759 | f_rem.setChecked( true); | 782 | f_rem.setChecked( true); |
760 | break; | 783 | break; |
761 | case 6: | 784 | case 6: |
762 | // both.setChecked( true); | 785 | // both.setChecked( true); |
763 | break; | 786 | break; |
764 | default: | 787 | default: |
765 | break; | 788 | break; |
766 | } | 789 | } |
767 | if ( dia.exec() ) { | 790 | if ( dia.exec() ) { |
768 | mSyncAlgoPrefs = rem.isChecked()*1+newest.isChecked()*2+ ask.isChecked()*3+ f_loc.isChecked()*4+ f_rem.isChecked()*5;//+ both.isChecked()*6 ; | 791 | mSyncAlgoPrefs = rem.isChecked()*1+newest.isChecked()*2+ ask.isChecked()*3+ f_loc.isChecked()*4+ f_rem.isChecked()*5;//+ both.isChecked()*6 ; |
792 | return true; | ||
769 | } | 793 | } |
770 | 794 | return false; | |
771 | |||
772 | } | 795 | } |
773 | 796 | ||
774 | QString KSyncManager::getPassword( ) | 797 | QString KSyncManager::getPassword( ) |
775 | { | 798 | { |
776 | QString retfile = ""; | 799 | QString retfile = ""; |
777 | QDialog dia ( mParent, "input-dialog", true ); | 800 | QDialog dia ( mParent, "input-dialog", true ); |
778 | QLineEdit lab ( &dia ); | 801 | QLineEdit lab ( &dia ); |
779 | lab.setEchoMode( QLineEdit::Password ); | 802 | lab.setEchoMode( QLineEdit::Password ); |
780 | QVBoxLayout lay( &dia ); | 803 | QVBoxLayout lay( &dia ); |
781 | lay.setMargin(7); | 804 | lay.setMargin(7); |
782 | lay.setSpacing(7); | 805 | lay.setSpacing(7); |
783 | lay.addWidget( &lab); | 806 | lay.addWidget( &lab); |
784 | dia.setFixedSize( 230,50 ); | 807 | dia.setFixedSize( 230,50 ); |
785 | dia.setCaption( i18n("Enter password") ); | 808 | dia.setCaption( i18n("Enter password") ); |
786 | QPushButton pb ( "OK", &dia); | 809 | QPushButton pb ( "OK", &dia); |
787 | lay.addWidget( &pb ); | 810 | lay.addWidget( &pb ); |
788 | connect(&pb, SIGNAL( clicked() ), &dia, SLOT ( accept() ) ); | 811 | connect(&pb, SIGNAL( clicked() ), &dia, SLOT ( accept() ) ); |
789 | dia.show(); | 812 | dia.show(); |
790 | int res = dia.exec(); | 813 | int res = dia.exec(); |
791 | if ( res ) | 814 | if ( res ) |
792 | retfile = lab.text(); | 815 | retfile = lab.text(); |
793 | dia.hide(); | 816 | dia.hide(); |
794 | qApp->processEvents(); | 817 | qApp->processEvents(); |
795 | return retfile; | 818 | return retfile; |
@@ -843,50 +866,53 @@ void KSyncManager::syncKDE() | |||
843 | } | 866 | } |
844 | break; | 867 | break; |
845 | case (PWMPI): | 868 | case (PWMPI): |
846 | 869 | ||
847 | break; | 870 | break; |
848 | default: | 871 | default: |
849 | qDebug("KSyncManager::slotSyncMenu: invalid apptype selected"); | 872 | qDebug("KSyncManager::slotSyncMenu: invalid apptype selected"); |
850 | break; | 873 | break; |
851 | 874 | ||
852 | } | 875 | } |
853 | } | 876 | } |
854 | 877 | ||
855 | void KSyncManager::syncSharp() | 878 | void KSyncManager::syncSharp() |
856 | { | 879 | { |
857 | 880 | ||
858 | if ( ! syncExternalApplication("sharp") ) | 881 | if ( ! syncExternalApplication("sharp") ) |
859 | qDebug("ERROR sync sharp "); | 882 | qDebug("ERROR sync sharp "); |
860 | } | 883 | } |
861 | 884 | ||
862 | bool KSyncManager::syncExternalApplication(QString resource) | 885 | bool KSyncManager::syncExternalApplication(QString resource) |
863 | { | 886 | { |
864 | 887 | ||
865 | emit save(); | 888 | emit save(); |
866 | 889 | ||
867 | if ( mAskForPreferences ) | 890 | if ( mAskForPreferences ) |
868 | edit_sync_options(); | 891 | if ( !edit_sync_options()) { |
892 | mParent->topLevelWidget()->setCaption( i18n("Syncing aborted. Nothing synced.") ); | ||
893 | return false; | ||
894 | } | ||
869 | 895 | ||
870 | qDebug("Sync extern %s", resource.latin1()); | 896 | qDebug("Sync extern %s", resource.latin1()); |
871 | 897 | ||
872 | bool syncOK = mImplementation->syncExternal(this, resource); | 898 | bool syncOK = mImplementation->syncExternal(this, resource); |
873 | 899 | ||
874 | return syncOK; | 900 | return syncOK; |
875 | 901 | ||
876 | } | 902 | } |
877 | 903 | ||
878 | void KSyncManager::syncPhone() | 904 | void KSyncManager::syncPhone() |
879 | { | 905 | { |
880 | 906 | ||
881 | syncExternalApplication("phone"); | 907 | syncExternalApplication("phone"); |
882 | 908 | ||
883 | } | 909 | } |
884 | 910 | ||
885 | void KSyncManager::showProgressBar(int percentage, QString caption, int total) | 911 | void KSyncManager::showProgressBar(int percentage, QString caption, int total) |
886 | { | 912 | { |
887 | if (!bar->isVisible()) | 913 | if (!bar->isVisible()) |
888 | { | 914 | { |
889 | bar->setCaption (caption); | 915 | bar->setCaption (caption); |
890 | bar->setTotalSteps ( total ) ; | 916 | bar->setTotalSteps ( total ) ; |
891 | 917 | ||
892 | bar->show(); | 918 | bar->show(); |
@@ -914,49 +940,52 @@ QString KSyncManager::syncFileName() | |||
914 | case (KAPI): | 940 | case (KAPI): |
915 | fn = "tempsyncab.vcf"; | 941 | fn = "tempsyncab.vcf"; |
916 | break; | 942 | break; |
917 | case (KOPI): | 943 | case (KOPI): |
918 | fn = "tempsynccal.ics"; | 944 | fn = "tempsynccal.ics"; |
919 | break; | 945 | break; |
920 | case (PWMPI): | 946 | case (PWMPI): |
921 | fn = "tempsyncpw.pwm"; | 947 | fn = "tempsyncpw.pwm"; |
922 | break; | 948 | break; |
923 | default: | 949 | default: |
924 | break; | 950 | break; |
925 | } | 951 | } |
926 | #ifdef _WIN32_ | 952 | #ifdef _WIN32_ |
927 | return locateLocal( "tmp", fn ); | 953 | return locateLocal( "tmp", fn ); |
928 | #else | 954 | #else |
929 | return (QString( "/tmp/" )+ fn ); | 955 | return (QString( "/tmp/" )+ fn ); |
930 | #endif | 956 | #endif |
931 | } | 957 | } |
932 | 958 | ||
933 | void KSyncManager::syncPi() | 959 | void KSyncManager::syncPi() |
934 | { | 960 | { |
935 | mPisyncFinished = false; | 961 | mPisyncFinished = false; |
936 | qApp->processEvents(); | 962 | qApp->processEvents(); |
937 | if ( mAskForPreferences ) | 963 | if ( mAskForPreferences ) |
938 | edit_pisync_options(); | 964 | if ( !edit_pisync_options()) { |
965 | mParent->topLevelWidget()->setCaption( i18n("Syncing aborted. Nothing synced.") ); | ||
966 | return; | ||
967 | } | ||
939 | bool ok; | 968 | bool ok; |
940 | Q_UINT16 port = mActiveSyncPort.toUInt(&ok); | 969 | Q_UINT16 port = mActiveSyncPort.toUInt(&ok); |
941 | if ( ! ok ) { | 970 | if ( ! ok ) { |
942 | mParent->topLevelWidget()->setCaption( i18n("Sorry, no valid port.Syncing cancelled.") ); | 971 | mParent->topLevelWidget()->setCaption( i18n("Sorry, no valid port.Syncing cancelled.") ); |
943 | return; | 972 | return; |
944 | } | 973 | } |
945 | KCommandSocket* commandSocket = new KCommandSocket( mPassWordPiSync, port, mActiveSyncIP, this ); | 974 | KCommandSocket* commandSocket = new KCommandSocket( mPassWordPiSync, port, mActiveSyncIP, this ); |
946 | connect( commandSocket, SIGNAL(commandFinished( KCommandSocket*, int )), this, SLOT(deleteCommandSocket(KCommandSocket*, int)) ); | 975 | connect( commandSocket, SIGNAL(commandFinished( KCommandSocket*, int )), this, SLOT(deleteCommandSocket(KCommandSocket*, int)) ); |
947 | mParent->topLevelWidget()->setCaption( i18n("Sending request for remote file ...") ); | 976 | mParent->topLevelWidget()->setCaption( i18n("Sending request for remote file ...") ); |
948 | commandSocket->readFile( syncFileName() ); | 977 | commandSocket->readFile( syncFileName() ); |
949 | } | 978 | } |
950 | 979 | ||
951 | void KSyncManager::deleteCommandSocket(KCommandSocket*s, int state) | 980 | void KSyncManager::deleteCommandSocket(KCommandSocket*s, int state) |
952 | { | 981 | { |
953 | //enum { success, errorW, errorR, quiet }; | 982 | //enum { success, errorW, errorR, quiet }; |
954 | if ( state == KCommandSocket::errorR ||state == KCommandSocket::errorTO ) { | 983 | if ( state == KCommandSocket::errorR ||state == KCommandSocket::errorTO ) { |
955 | mParent->topLevelWidget()->setCaption( i18n("ERROR: Receiving remote file failed.") ); | 984 | mParent->topLevelWidget()->setCaption( i18n("ERROR: Receiving remote file failed.") ); |
956 | delete s; | 985 | delete s; |
957 | if ( state == KCommandSocket::errorR ) { | 986 | if ( state == KCommandSocket::errorR ) { |
958 | KCommandSocket* commandSocket = new KCommandSocket( mPassWordPiSync, mActiveSyncPort.toUInt(), mActiveSyncIP, this ); | 987 | KCommandSocket* commandSocket = new KCommandSocket( mPassWordPiSync, mActiveSyncPort.toUInt(), mActiveSyncIP, this ); |
959 | connect( commandSocket, SIGNAL(commandFinished( KCommandSocket*, int)), this, SLOT(deleteCommandSocket(KCommandSocket*, int )) ); | 988 | connect( commandSocket, SIGNAL(commandFinished( KCommandSocket*, int)), this, SLOT(deleteCommandSocket(KCommandSocket*, int )) ); |
960 | commandSocket->sendStop(); | 989 | commandSocket->sendStop(); |
961 | } | 990 | } |
962 | mPisyncFinished = true; | 991 | mPisyncFinished = true; |
@@ -1145,82 +1174,82 @@ void KServerSocket::readBackFileFromSocket() | |||
1145 | return; | 1174 | return; |
1146 | } | 1175 | } |
1147 | QString fileName = mFileName; | 1176 | QString fileName = mFileName; |
1148 | QFile file ( fileName ); | 1177 | QFile file ( fileName ); |
1149 | if (!file.open( IO_WriteOnly ) ) { | 1178 | if (!file.open( IO_WriteOnly ) ) { |
1150 | delete mSyncActionDialog; | 1179 | delete mSyncActionDialog; |
1151 | mSyncActionDialog = 0; | 1180 | mSyncActionDialog = 0; |
1152 | qDebug("KSS:Error open read back file "); | 1181 | qDebug("KSS:Error open read back file "); |
1153 | piFileString = ""; | 1182 | piFileString = ""; |
1154 | emit file_received( false ); | 1183 | emit file_received( false ); |
1155 | blockRC = false; | 1184 | blockRC = false; |
1156 | return ; | 1185 | return ; |
1157 | 1186 | ||
1158 | } | 1187 | } |
1159 | 1188 | ||
1160 | // mView->setLoadedFileVersion(QDateTime::currentDateTime().addSecs( -1)); | 1189 | // mView->setLoadedFileVersion(QDateTime::currentDateTime().addSecs( -1)); |
1161 | QTextStream ts ( &file ); | 1190 | QTextStream ts ( &file ); |
1162 | ts.setEncoding( QTextStream::Latin1 ); | 1191 | ts.setEncoding( QTextStream::Latin1 ); |
1163 | mSyncActionDialog->setCaption( i18n("Writing file to disk...") ); | 1192 | mSyncActionDialog->setCaption( i18n("Writing file to disk...") ); |
1164 | ts << piFileString; | 1193 | ts << piFileString; |
1165 | mSocket->close(); | 1194 | mSocket->close(); |
1166 | if ( mSocket->state() == QSocket::Idle ) | 1195 | if ( mSocket->state() == QSocket::Idle ) |
1167 | QTimer::singleShot( 10, this , SLOT ( discardClient())); | 1196 | QTimer::singleShot( 10, this , SLOT ( discardClient())); |
1168 | file.close(); | 1197 | file.close(); |
1198 | piFileString = ""; | ||
1199 | emit file_received( true ); | ||
1169 | delete mSyncActionDialog; | 1200 | delete mSyncActionDialog; |
1170 | mSyncActionDialog = 0; | 1201 | mSyncActionDialog = 0; |
1171 | piFileString = ""; | ||
1172 | blockRC = false; | 1202 | blockRC = false; |
1173 | emit file_received( true ); | ||
1174 | 1203 | ||
1175 | } | 1204 | } |
1176 | 1205 | ||
1177 | KCommandSocket::KCommandSocket ( QString password, Q_UINT16 port, QString host, QObject * parent, const char * name ): QObject( parent, name ) | 1206 | KCommandSocket::KCommandSocket ( QString password, Q_UINT16 port, QString host, QObject * parent, const char * name ): QObject( parent, name ) |
1178 | { | 1207 | { |
1179 | mPassWord = password; | 1208 | mPassWord = password; |
1180 | mSocket = 0; | 1209 | mSocket = 0; |
1181 | mPort = port; | 1210 | mPort = port; |
1182 | mHost = host; | 1211 | mHost = host; |
1183 | 1212 | ||
1184 | mRetVal = quiet; | 1213 | mRetVal = quiet; |
1185 | mTimerSocket = new QTimer ( this ); | 1214 | mTimerSocket = new QTimer ( this ); |
1186 | connect( mTimerSocket, SIGNAL ( timeout () ), this, SLOT ( deleteSocket() ) ); | 1215 | connect( mTimerSocket, SIGNAL ( timeout () ), this, SLOT ( deleteSocket() ) ); |
1187 | } | 1216 | } |
1188 | void KCommandSocket::readFile( QString fn ) | 1217 | void KCommandSocket::readFile( QString fn ) |
1189 | { | 1218 | { |
1190 | if ( !mSocket ) { | 1219 | if ( !mSocket ) { |
1191 | mSocket = new QSocket( this ); | 1220 | mSocket = new QSocket( this ); |
1192 | connect( mSocket, SIGNAL(readyRead()), this, SLOT(startReadFileFromSocket()) ); | 1221 | connect( mSocket, SIGNAL(readyRead()), this, SLOT(startReadFileFromSocket()) ); |
1193 | connect( mSocket, SIGNAL(delayedCloseFinished ()), this, SLOT(deleteSocket()) ); | 1222 | connect( mSocket, SIGNAL(delayedCloseFinished ()), this, SLOT(deleteSocket()) ); |
1194 | } | 1223 | } |
1195 | mFileString = ""; | 1224 | mFileString = ""; |
1196 | mFileName = fn; | 1225 | mFileName = fn; |
1197 | mFirst = true; | 1226 | mFirst = true; |
1198 | mSocket->connectToHost( mHost, mPort ); | 1227 | mSocket->connectToHost( mHost, mPort ); |
1199 | QTextStream os( mSocket ); | 1228 | QTextStream os( mSocket ); |
1200 | os.setEncoding( QTextStream::Latin1 ); | 1229 | os.setEncoding( QTextStream::Latin1 ); |
1201 | os << "GET " << mPassWord << "\r\n"; | 1230 | os << "GET " << mPassWord << "\r\n"; |
1202 | mTimerSocket->start( 10000 ); | 1231 | mTimerSocket->start( 20000 ); |
1203 | } | 1232 | } |
1204 | 1233 | ||
1205 | void KCommandSocket::writeFile( QString fileName ) | 1234 | void KCommandSocket::writeFile( QString fileName ) |
1206 | { | 1235 | { |
1207 | if ( !mSocket ) { | 1236 | if ( !mSocket ) { |
1208 | mSocket = new QSocket( this ); | 1237 | mSocket = new QSocket( this ); |
1209 | connect( mSocket, SIGNAL(delayedCloseFinished ()), this, SLOT(deleteSocket()) ); | 1238 | connect( mSocket, SIGNAL(delayedCloseFinished ()), this, SLOT(deleteSocket()) ); |
1210 | connect( mSocket, SIGNAL(connected ()), this, SLOT(writeFileToSocket()) ); | 1239 | connect( mSocket, SIGNAL(connected ()), this, SLOT(writeFileToSocket()) ); |
1211 | } | 1240 | } |
1212 | mFileName = fileName ; | 1241 | mFileName = fileName ; |
1213 | mSocket->connectToHost( mHost, mPort ); | 1242 | mSocket->connectToHost( mHost, mPort ); |
1214 | } | 1243 | } |
1215 | void KCommandSocket::writeFileToSocket() | 1244 | void KCommandSocket::writeFileToSocket() |
1216 | { | 1245 | { |
1217 | QFile file2( mFileName ); | 1246 | QFile file2( mFileName ); |
1218 | if (!file2.open( IO_ReadOnly ) ) { | 1247 | if (!file2.open( IO_ReadOnly ) ) { |
1219 | mRetVal= errorW; | 1248 | mRetVal= errorW; |
1220 | mSocket->close(); | 1249 | mSocket->close(); |
1221 | if ( mSocket->state() == QSocket::Idle ) | 1250 | if ( mSocket->state() == QSocket::Idle ) |
1222 | QTimer::singleShot( 10, this , SLOT ( deleteSocket())); | 1251 | QTimer::singleShot( 10, this , SLOT ( deleteSocket())); |
1223 | return ; | 1252 | return ; |
1224 | } | 1253 | } |
1225 | QTextStream ts2( &file2 ); | 1254 | QTextStream ts2( &file2 ); |
1226 | ts2.setEncoding( QTextStream::Latin1 ); | 1255 | ts2.setEncoding( QTextStream::Latin1 ); |