-rw-r--r-- | libkdepim/ksyncmanager.cpp | 48 | ||||
-rw-r--r-- | libkdepim/ksyncmanager.h | 2 |
2 files changed, 43 insertions, 7 deletions
diff --git a/libkdepim/ksyncmanager.cpp b/libkdepim/ksyncmanager.cpp index e1b15d2..8bf0d27 100644 --- a/libkdepim/ksyncmanager.cpp +++ b/libkdepim/ksyncmanager.cpp @@ -1159,18 +1159,29 @@ void KSyncManager::syncPi() mCurrentResourceRemote = mSpecificResources[ startRemote ]; //qDebug ( "KSM: AAASyncing resources: Local: %s --- Remote: %s ",mCurrentResourceLocal.latin1(), mCurrentResourceRemote.latin1() ); if ( !mCurrentResourceRemote.isEmpty() ) { qDebug ( "KSM: Syncing resources: Local: %s --- Remote: %s ",mCurrentResourceLocal.latin1(), mCurrentResourceRemote.latin1() ); + KCommandSocket* commandSocket = new KCommandSocket( mCurrentResourceRemote, mPassWordPiSync, port, mActiveSyncIP, this, mParent->topLevelWidget() ); connect( commandSocket, SIGNAL(commandFinished( KCommandSocket*, int )), this, SLOT(deleteCommandSocket(KCommandSocket*, int)) ); - commandSocket->readFile( syncFileName() ); + commandSocket->readFile( syncFileName() ); + mParent->topLevelWidget()->setCaption( i18n("Syncing %1 <-> %2").arg( mCurrentResourceLocal ).arg( mCurrentResourceRemote ) ); while ( !mPisyncFinished ) { //qDebug("waiting "); qApp->processEvents(); } + if ( startLocal+1 < mSpecificResources.count()/2 ) { + mParent->topLevelWidget()->setCaption( i18n("Waiting 2 secs before syncing next resource...") ); + QTime timer; + timer.start(); + while ( timer.elapsed () < 2000 ) { + qApp->processEvents(); + } + } } ++startRemote; - ++startLocal; + ++startLocal; + } mPisyncFinished = true; } else { KCommandSocket* commandSocket = new KCommandSocket( "", mPassWordPiSync, port, mActiveSyncIP, this, mParent->topLevelWidget() ); @@ -1253,23 +1264,44 @@ void KSyncManager::readFileFromSocket() } KServerSocket:: KServerSocket ( QString pw, Q_UINT16 port, int backlog, QObject * parent, const char * name ) : QServerSocket( port, backlog, parent, name ) { + mPendingConnect = 0; mPassWord = pw; mSocket = 0; mSyncActionDialog = 0; blockRC = false; mErrorMessage = 0; } - +void KServerSocket::waitForSocketFinish() +{ + if ( mSocket ) { + qDebug("KSS:: waiting for finish operation"); + QTimer::singleShot( 250, this , SLOT ( waitForSocketFinish())); + return; + } + mSocket = new QSocket( this ); + connect( mSocket , SIGNAL(readyRead()), this, SLOT(readClient()) ); + connect( mSocket , SIGNAL(delayedCloseFinished()), this, SLOT(discardClient()) ); + mSocket->setSocket( mPendingConnect ); + mPendingConnect = 0; +} void KServerSocket::newConnection ( int socket ) { // qDebug("KServerSocket:New connection %d ", socket); + if ( mPendingConnect ) { + qDebug("KSS::Error : new Connection"); + return; + } if ( mSocket ) { + mPendingConnect = socket; + QTimer::singleShot( 250, this , SLOT ( waitForSocketFinish())); + return; qDebug("KSS::newConnection Socket deleted! "); delete mSocket; mSocket = 0; } + mPendingConnect = 0; mSocket = new QSocket( this ); connect( mSocket , SIGNAL(readyRead()), this, SLOT(readClient()) ); connect( mSocket , SIGNAL(delayedCloseFinished()), this, SLOT(discardClient()) ); mSocket->setSocket( socket ); @@ -1542,8 +1574,9 @@ void KCommandSocket::sendFileRequest() tlw->setCaption( i18n("Connected! Sending request for remote file ...") ); mConnectProgress.hide(); mConnectCount = 300;mConnectMax = 300; mConnectProgress.setCaption( i18n("Pi-Sync: Connected!") ); + mConnectProgress.setLabelText( i18n("Waiting for remote file...") ); mTimerSocket->start( 100, true ); QTextStream os( mSocket ); os.setEncoding( QTextStream::Latin1 ); @@ -1553,9 +1586,10 @@ void KCommandSocket::sendFileRequest() void KCommandSocket::readFile( QString fn ) { if ( !mSocket ) { - mSocket = new QSocket( this ); + mSocket = new QSocket( this ); + qDebug("KCS: read file - new socket"); connect( mSocket, SIGNAL(readyRead()), this, SLOT(startReadFileFromSocket()) ); connect( mSocket, SIGNAL(delayedCloseFinished ()), this, SLOT(deleteSocket()) ); connect( mSocket, SIGNAL(connected ()), this, SLOT(sendFileRequest() )); } @@ -1566,20 +1600,20 @@ void KCommandSocket::readFile( QString fn ) tlw->setCaption( i18n("Trying to connect to remote...") ); mConnectCount = 30;mConnectMax = 30; mTimerSocket->start( 1000, true ); mSocket->connectToHost( mHost, mPort ); - qDebug("KSS: Waiting for connection"); + qDebug("KCS: Waiting for connection"); } void KCommandSocket::updateConnectDialog() { if ( mConnectCount == mConnectMax ) { - //qDebug("MAXX %d", mConnectMax); + qDebug("MAXX %d", mConnectMax); mConnectProgress.setTotalSteps ( 30 ); mConnectProgress.show(); mConnectProgress.setLabelText( i18n("Trying to connect to remote...") ); } - //qDebug("updateConnectDialog() %d", mConnectCount); + qDebug("updateConnectDialog() %d", mConnectCount); mConnectProgress.raise(); mConnectProgress.setProgress( (mConnectMax - mConnectCount)%30 ); --mConnectCount; if ( mConnectCount > 0 ) diff --git a/libkdepim/ksyncmanager.h b/libkdepim/ksyncmanager.h index 53c611d..604adb8 100644 --- a/libkdepim/ksyncmanager.h +++ b/libkdepim/ksyncmanager.h @@ -57,14 +57,16 @@ class KServerSocket : public QServerSocket void request_file(const QString &); void saveFile(); void endConnect(); private slots: + void waitForSocketFinish(); void discardClient(); void deleteSocket(); void readClient(); void displayErrorMessage(); void readBackFileFromSocket(); private : + int mPendingConnect; QString mResource; int mErrorMessage; bool blockRC; void send_file(); |