-rw-r--r-- | libkdepim/ksyncmanager.cpp | 18 |
1 files changed, 15 insertions, 3 deletions
diff --git a/libkdepim/ksyncmanager.cpp b/libkdepim/ksyncmanager.cpp index a64eb34..719d80b 100644 --- a/libkdepim/ksyncmanager.cpp +++ b/libkdepim/ksyncmanager.cpp | |||
@@ -192,16 +192,17 @@ void KSyncManager::slotClearMenu( int action ) | |||
192 | if ( result ) | 192 | if ( result ) |
193 | return; | 193 | return; |
194 | mImplementation->removeSyncInfo( syncDevice ); | 194 | mImplementation->removeSyncInfo( syncDevice ); |
195 | } | 195 | } |
196 | void KSyncManager::slotSyncMenu( int action ) | 196 | void KSyncManager::slotSyncMenu( int action ) |
197 | { | 197 | { |
198 | qDebug("KSM::syncaction %d ", action); | 198 | qDebug("KSM::syncaction %d ", action); |
199 | mCurrentResourceLocal = ""; | 199 | mCurrentResourceLocal = ""; |
200 | emit multiResourceSyncStart( false ); | ||
200 | if ( action == 5000 ) | 201 | if ( action == 5000 ) |
201 | return; | 202 | return; |
202 | mSyncWithDesktop = false; | 203 | mSyncWithDesktop = false; |
203 | if ( action == 0 ) { | 204 | if ( action == 0 ) { |
204 | 205 | ||
205 | // seems to be a Qt2 event handling bug | 206 | // seems to be a Qt2 event handling bug |
206 | // syncmenu.clear causes a segfault at first time | 207 | // syncmenu.clear causes a segfault at first time |
207 | // when we call it after the main event loop, it is ok | 208 | // when we call it after the main event loop, it is ok |
@@ -436,16 +437,18 @@ void KSyncManager::enableQuick( bool ask ) | |||
436 | return; | 437 | return; |
437 | } | 438 | } |
438 | mPrefs->mPassiveSyncAutoStart = autoStart; | 439 | mPrefs->mPassiveSyncAutoStart = autoStart; |
439 | if ( changed ) { | 440 | if ( changed ) { |
440 | mPrefs->writeConfig(); | 441 | mPrefs->writeConfig(); |
441 | } | 442 | } |
442 | connect( mServerSocket, SIGNAL ( request_file() ),this, SIGNAL ( request_file() ) ); | 443 | connect( mServerSocket, SIGNAL ( request_file() ),this, SIGNAL ( request_file() ) ); |
443 | connect( mServerSocket, SIGNAL ( file_received( bool ) ), this, SIGNAL ( getFile( bool ) ) ); | 444 | connect( mServerSocket, SIGNAL ( file_received( bool ) ), this, SIGNAL ( getFile( bool ) ) ); |
445 | connect( mServerSocket, SIGNAL ( request_file(const QString &) ),this, SIGNAL ( request_file(const QString &) ) ); | ||
446 | connect( mServerSocket, SIGNAL ( file_received( bool ,const QString &) ), this, SIGNAL ( getFile( bool,const QString & ) ) ); | ||
444 | } | 447 | } |
445 | void KSyncManager::displayErrorPort() | 448 | void KSyncManager::displayErrorPort() |
446 | { | 449 | { |
447 | KMessageBox::information( 0, i18n("<b>Enabling Pi-Sync failed!</b> Failed to bind or listen to the port %1! Is another instance already listening to that port?").arg( mPrefs->mPassiveSyncPort) , i18n("Pi-Sync Port Error")); | 450 | KMessageBox::information( 0, i18n("<b>Enabling Pi-Sync failed!</b> Failed to bind or listen to the port %1! Is another instance already listening to that port?").arg( mPrefs->mPassiveSyncPort) , i18n("Pi-Sync Port Error")); |
448 | } | 451 | } |
449 | void KSyncManager::syncLocalFile() | 452 | void KSyncManager::syncLocalFile() |
450 | { | 453 | { |
451 | 454 | ||
@@ -564,17 +567,17 @@ void KSyncManager::multiSync( bool askforPrefs ) | |||
564 | mParent->topLevelWidget()->setCaption(i18n("%1 profiles synced. Multiple sync complete!").arg(num) ); | 567 | mParent->topLevelWidget()->setCaption(i18n("%1 profiles synced. Multiple sync complete!").arg(num) ); |
565 | else | 568 | else |
566 | mParent->topLevelWidget()->setCaption(i18n("Nothing synced! No profiles defined for multisync!")); | 569 | mParent->topLevelWidget()->setCaption(i18n("Nothing synced! No profiles defined for multisync!")); |
567 | return; | 570 | return; |
568 | } | 571 | } |
569 | 572 | ||
570 | int KSyncManager::ringSync() | 573 | int KSyncManager::ringSync() |
571 | { | 574 | { |
572 | 575 | emit multiResourceSyncStart( false ); | |
573 | int syncedProfiles = 0; | 576 | int syncedProfiles = 0; |
574 | unsigned int i; | 577 | unsigned int i; |
575 | QTime timer; | 578 | QTime timer; |
576 | KConfig config ( locateLocal( "config","ksyncprofilesrc" ) ); | 579 | KConfig config ( locateLocal( "config","ksyncprofilesrc" ) ); |
577 | QStringList syncProfileNames = mSyncProfileNames; | 580 | QStringList syncProfileNames = mSyncProfileNames; |
578 | KSyncProfile* temp = new KSyncProfile (); | 581 | KSyncProfile* temp = new KSyncProfile (); |
579 | mAskForPreferences = false; | 582 | mAskForPreferences = false; |
580 | mCurrentResourceLocal = ""; | 583 | mCurrentResourceLocal = ""; |
@@ -1135,17 +1138,20 @@ void KSyncManager::syncPi() | |||
1135 | mPisyncFinished = true; | 1138 | mPisyncFinished = true; |
1136 | return; | 1139 | return; |
1137 | } | 1140 | } |
1138 | mCurrentResourceLocal = ""; | 1141 | mCurrentResourceLocal = ""; |
1139 | mCurrentResourceRemote = ""; | 1142 | mCurrentResourceRemote = ""; |
1140 | if ( mSpecificResources.count() ) { | 1143 | if ( mSpecificResources.count() ) { |
1141 | int startLocal = 0; | 1144 | int startLocal = 0; |
1142 | int startRemote = mSpecificResources.count()/2; | 1145 | int startRemote = mSpecificResources.count()/2; |
1146 | emit multiResourceSyncStart( true ); | ||
1143 | while ( startLocal < mSpecificResources.count()/2 ) { | 1147 | while ( startLocal < mSpecificResources.count()/2 ) { |
1148 | if ( startLocal+1 >= mSpecificResources.count()/2 ) | ||
1149 | emit multiResourceSyncStart( false ); | ||
1144 | mPisyncFinished = false; | 1150 | mPisyncFinished = false; |
1145 | mCurrentResourceLocal = mSpecificResources[ startLocal ]; | 1151 | mCurrentResourceLocal = mSpecificResources[ startLocal ]; |
1146 | mCurrentResourceRemote = mSpecificResources[ startRemote ]; | 1152 | mCurrentResourceRemote = mSpecificResources[ startRemote ]; |
1147 | KCommandSocket* commandSocket = new KCommandSocket( mCurrentResourceRemote, mPassWordPiSync, port, mActiveSyncIP, this, mParent->topLevelWidget() ); | 1153 | KCommandSocket* commandSocket = new KCommandSocket( mCurrentResourceRemote, mPassWordPiSync, port, mActiveSyncIP, this, mParent->topLevelWidget() ); |
1148 | connect( commandSocket, SIGNAL(commandFinished( KCommandSocket*, int )), this, SLOT(deleteCommandSocket(KCommandSocket*, int)) ); | 1154 | connect( commandSocket, SIGNAL(commandFinished( KCommandSocket*, int )), this, SLOT(deleteCommandSocket(KCommandSocket*, int)) ); |
1149 | commandSocket->readFile( syncFileName() ); | 1155 | commandSocket->readFile( syncFileName() ); |
1150 | while ( !mPisyncFinished ) { | 1156 | while ( !mPisyncFinished ) { |
1151 | //qDebug("waiting "); | 1157 | //qDebug("waiting "); |
@@ -1214,17 +1220,17 @@ void KSyncManager::readFileFromSocket() | |||
1214 | { | 1220 | { |
1215 | QString fileName = syncFileName(); | 1221 | QString fileName = syncFileName(); |
1216 | bool syncOK = true; | 1222 | bool syncOK = true; |
1217 | mParent->topLevelWidget()->setCaption( i18n("Remote file saved to temp file.") ); | 1223 | mParent->topLevelWidget()->setCaption( i18n("Remote file saved to temp file.") ); |
1218 | if ( ! syncWithFile( fileName , true ) ) { | 1224 | if ( ! syncWithFile( fileName , true ) ) { |
1219 | mParent->topLevelWidget()->setCaption( i18n("Syncing failed.") ); | 1225 | mParent->topLevelWidget()->setCaption( i18n("Syncing failed.") ); |
1220 | syncOK = false; | 1226 | syncOK = false; |
1221 | } | 1227 | } |
1222 | KCommandSocket* commandSocket = new KCommandSocket( "",mPassWordPiSync, mActiveSyncPort.toUInt(), mActiveSyncIP, this, mParent->topLevelWidget() ); | 1228 | KCommandSocket* commandSocket = new KCommandSocket( mCurrentResourceRemote,mPassWordPiSync, mActiveSyncPort.toUInt(), mActiveSyncIP, this, mParent->topLevelWidget() ); |
1223 | connect( commandSocket, SIGNAL(commandFinished( KCommandSocket*, int)), this, SLOT(deleteCommandSocket(KCommandSocket*, int )) ); | 1229 | connect( commandSocket, SIGNAL(commandFinished( KCommandSocket*, int)), this, SLOT(deleteCommandSocket(KCommandSocket*, int )) ); |
1224 | if ( mWriteBackFile && syncOK ) { | 1230 | if ( mWriteBackFile && syncOK ) { |
1225 | mParent->topLevelWidget()->setCaption( i18n("Sending back file ...") ); | 1231 | mParent->topLevelWidget()->setCaption( i18n("Sending back file ...") ); |
1226 | commandSocket->writeFile( fileName ); | 1232 | commandSocket->writeFile( fileName ); |
1227 | } | 1233 | } |
1228 | else { | 1234 | else { |
1229 | commandSocket->sendStop(); | 1235 | commandSocket->sendStop(); |
1230 | if ( syncOK ) | 1236 | if ( syncOK ) |
@@ -1278,43 +1284,46 @@ void KServerSocket::readClient() | |||
1278 | qDebug("ERROR::KSS::readClient(): mSocket == 0 "); | 1284 | qDebug("ERROR::KSS::readClient(): mSocket == 0 "); |
1279 | return; | 1285 | return; |
1280 | } | 1286 | } |
1281 | if ( mErrorMessage ) { | 1287 | if ( mErrorMessage ) { |
1282 | mErrorMessage = 999; | 1288 | mErrorMessage = 999; |
1283 | error_connect("ERROR_ED\r\n\r\n"); | 1289 | error_connect("ERROR_ED\r\n\r\n"); |
1284 | return; | 1290 | return; |
1285 | } | 1291 | } |
1292 | mResource = ""; | ||
1286 | mErrorMessage = 0; | 1293 | mErrorMessage = 0; |
1287 | //qDebug("KServerSocket::readClient()"); | 1294 | //qDebug("KServerSocket::readClient()"); |
1288 | if ( mSocket->canReadLine() ) { | 1295 | if ( mSocket->canReadLine() ) { |
1289 | QString line = mSocket->readLine(); | 1296 | QString line = mSocket->readLine(); |
1290 | //qDebug("KServerSocket readline: %s ", line.latin1()); | 1297 | //qDebug("KServerSocket readline: %s ", line.latin1()); |
1291 | QStringList tokens = QStringList::split( QRegExp("[ \r\n][ \r\n]*"), line ); | 1298 | QStringList tokens = QStringList::split( QRegExp("[ \r\n][ \r\n]*"), line ); |
1292 | if ( tokens[0] == "GET" ) { | 1299 | if ( tokens[0] == "GET" ) { |
1293 | if ( tokens[1] == mPassWord ) { | 1300 | if ( tokens[1] == mPassWord ) { |
1294 | //emit sendFile( mSocket ); | 1301 | //emit sendFile( mSocket ); |
1295 | bool ok = false; | 1302 | bool ok = false; |
1296 | QDateTime dt = KGlobal::locale()->readDateTime( tokens[2], KLocale::ISODate, &ok); | 1303 | QDateTime dt = KGlobal::locale()->readDateTime( tokens[2], KLocale::ISODate, &ok); |
1297 | if ( ok ) { | 1304 | if ( ok ) { |
1298 | KSyncManager::mRequestedSyncEvent = dt; | 1305 | KSyncManager::mRequestedSyncEvent = dt; |
1299 | } | 1306 | } |
1300 | else | 1307 | else |
1301 | KSyncManager::mRequestedSyncEvent = QDateTime(); | 1308 | KSyncManager::mRequestedSyncEvent = QDateTime(); |
1309 | mResource =tokens[3]; | ||
1302 | send_file(); | 1310 | send_file(); |
1303 | } | 1311 | } |
1304 | else { | 1312 | else { |
1305 | mErrorMessage = 1; | 1313 | mErrorMessage = 1; |
1306 | error_connect("ERROR_PW\r\n\r\n"); | 1314 | error_connect("ERROR_PW\r\n\r\n"); |
1307 | } | 1315 | } |
1308 | } | 1316 | } |
1309 | if ( tokens[0] == "PUT" ) { | 1317 | if ( tokens[0] == "PUT" ) { |
1310 | if ( tokens[1] == mPassWord ) { | 1318 | if ( tokens[1] == mPassWord ) { |
1311 | //emit getFile( mSocket ); | 1319 | //emit getFile( mSocket ); |
1312 | blockRC = true; | 1320 | blockRC = true; |
1321 | mResource =tokens[2]; | ||
1313 | get_file(); | 1322 | get_file(); |
1314 | } | 1323 | } |
1315 | else { | 1324 | else { |
1316 | mErrorMessage = 2; | 1325 | mErrorMessage = 2; |
1317 | error_connect("ERROR_PW\r\n\r\n"); | 1326 | error_connect("ERROR_PW\r\n\r\n"); |
1318 | end_connect(); | 1327 | end_connect(); |
1319 | } | 1328 | } |
1320 | } | 1329 | } |
@@ -1401,16 +1410,17 @@ void KServerSocket::send_file() | |||
1401 | } | 1410 | } |
1402 | } else { | 1411 | } else { |
1403 | mSyncActionDialog->setFixedSize( 230, 120); | 1412 | mSyncActionDialog->setFixedSize( 230, 120); |
1404 | } | 1413 | } |
1405 | } else | 1414 | } else |
1406 | mSyncActionDialog->setFixedSize( 230, 120); | 1415 | mSyncActionDialog->setFixedSize( 230, 120); |
1407 | mSyncActionDialog->show(); | 1416 | mSyncActionDialog->show(); |
1408 | mSyncActionDialog->raise(); | 1417 | mSyncActionDialog->raise(); |
1418 | emit request_file(mResource); | ||
1409 | emit request_file(); | 1419 | emit request_file(); |
1410 | qApp->processEvents(); | 1420 | qApp->processEvents(); |
1411 | QString fileName = mFileName; | 1421 | QString fileName = mFileName; |
1412 | QFile file( fileName ); | 1422 | QFile file( fileName ); |
1413 | if (!file.open( IO_ReadOnly ) ) { | 1423 | if (!file.open( IO_ReadOnly ) ) { |
1414 | mErrorMessage = 0; | 1424 | mErrorMessage = 0; |
1415 | end_connect(); | 1425 | end_connect(); |
1416 | error_connect("ERROR_FI\r\n\r\n"); | 1426 | error_connect("ERROR_FI\r\n\r\n"); |
@@ -1462,32 +1472,34 @@ void KServerSocket::readBackFileFromSocket() | |||
1462 | } | 1472 | } |
1463 | QString fileName = mFileName; | 1473 | QString fileName = mFileName; |
1464 | QFile file ( fileName ); | 1474 | QFile file ( fileName ); |
1465 | if (!file.open( IO_WriteOnly ) ) { | 1475 | if (!file.open( IO_WriteOnly ) ) { |
1466 | delete mSyncActionDialog; | 1476 | delete mSyncActionDialog; |
1467 | mSyncActionDialog = 0; | 1477 | mSyncActionDialog = 0; |
1468 | qDebug("KSS:Error open read back file "); | 1478 | qDebug("KSS:Error open read back file "); |
1469 | piFileString = ""; | 1479 | piFileString = ""; |
1480 | emit file_received( false, mResource); | ||
1470 | emit file_received( false ); | 1481 | emit file_received( false ); |
1471 | blockRC = false; | 1482 | blockRC = false; |
1472 | return ; | 1483 | return ; |
1473 | 1484 | ||
1474 | } | 1485 | } |
1475 | 1486 | ||
1476 | // mView->setLoadedFileVersion(QDateTime::currentDateTime().addSecs( -1)); | 1487 | // mView->setLoadedFileVersion(QDateTime::currentDateTime().addSecs( -1)); |
1477 | QTextStream ts ( &file ); | 1488 | QTextStream ts ( &file ); |
1478 | ts.setEncoding( QTextStream::Latin1 ); | 1489 | ts.setEncoding( QTextStream::Latin1 ); |
1479 | mSyncActionDialog->setCaption( i18n("Writing file to disk...") ); | 1490 | mSyncActionDialog->setCaption( i18n("Writing file to disk...") ); |
1480 | ts << piFileString; | 1491 | ts << piFileString; |
1481 | mSocket->close(); | 1492 | mSocket->close(); |
1482 | if ( mSocket->state() == QSocket::Idle ) | 1493 | if ( mSocket->state() == QSocket::Idle ) |
1483 | QTimer::singleShot( 10, this , SLOT ( discardClient())); | 1494 | QTimer::singleShot( 10, this , SLOT ( discardClient())); |
1484 | file.close(); | 1495 | file.close(); |
1485 | piFileString = ""; | 1496 | piFileString = ""; |
1497 | emit file_received( true, mResource ); | ||
1486 | emit file_received( true ); | 1498 | emit file_received( true ); |
1487 | delete mSyncActionDialog; | 1499 | delete mSyncActionDialog; |
1488 | mSyncActionDialog = 0; | 1500 | mSyncActionDialog = 0; |
1489 | blockRC = false; | 1501 | blockRC = false; |
1490 | 1502 | ||
1491 | } | 1503 | } |
1492 | 1504 | ||
1493 | KCommandSocket::KCommandSocket ( QString remres, QString password, Q_UINT16 port, QString host, QObject * parent, QWidget * cap, const char * name ): QObject( parent, name ) | 1505 | KCommandSocket::KCommandSocket ( QString remres, QString password, Q_UINT16 port, QString host, QObject * parent, QWidget * cap, const char * name ): QObject( parent, name ) |
@@ -1591,17 +1603,17 @@ void KCommandSocket::writeFileToSocket() | |||
1591 | int count = 0; | 1603 | int count = 0; |
1592 | mConnectProgress.setLabelText( i18n("Sending back synced file...") ); | 1604 | mConnectProgress.setLabelText( i18n("Sending back synced file...") ); |
1593 | mConnectProgress.setProgress( count ); | 1605 | mConnectProgress.setProgress( count ); |
1594 | mConnectProgress.blockSignals( true ); | 1606 | mConnectProgress.blockSignals( true ); |
1595 | QTextStream ts2( &file2 ); | 1607 | QTextStream ts2( &file2 ); |
1596 | ts2.setEncoding( QTextStream::Latin1 ); | 1608 | ts2.setEncoding( QTextStream::Latin1 ); |
1597 | QTextStream os2( mSocket ); | 1609 | QTextStream os2( mSocket ); |
1598 | os2.setEncoding( QTextStream::Latin1 ); | 1610 | os2.setEncoding( QTextStream::Latin1 ); |
1599 | os2 << "PUT " << mPassWord << "\r\n\r\n";; | 1611 | os2 << "PUT " << mPassWord << mRemoteResource << "\r\n\r\n";; |
1600 | int byteCount = 0; | 1612 | int byteCount = 0; |
1601 | int byteMax = file2.size()/53; | 1613 | int byteMax = file2.size()/53; |
1602 | while ( ! ts2.atEnd() ) { | 1614 | while ( ! ts2.atEnd() ) { |
1603 | qApp->processEvents(); | 1615 | qApp->processEvents(); |
1604 | if ( byteCount > byteMax ) { | 1616 | if ( byteCount > byteMax ) { |
1605 | byteCount = 0; | 1617 | byteCount = 0; |
1606 | mConnectProgress.setProgress( count ); | 1618 | mConnectProgress.setProgress( count ); |
1607 | } | 1619 | } |