-rw-r--r-- | libkdepim/ksyncmanager.cpp | 94 | ||||
-rw-r--r-- | libkdepim/ksyncmanager.h | 7 |
2 files changed, 74 insertions, 27 deletions
diff --git a/libkdepim/ksyncmanager.cpp b/libkdepim/ksyncmanager.cpp index d8ca3ba..47d00a4 100644 --- a/libkdepim/ksyncmanager.cpp +++ b/libkdepim/ksyncmanager.cpp @@ -1071,9 +1071,19 @@ void KSyncManager::deleteCommandSocket(KCommandSocket*s, int state) { //enum { success, errorW, errorR, quiet }; - if ( state == KCommandSocket::errorR ||state == KCommandSocket::errorTO ||state == KCommandSocket::errorPW ) { + + + + if ( state == KCommandSocket::errorR ||state == KCommandSocket::errorTO ||state == KCommandSocket::errorPW || + state == KCommandSocket::errorCA ||state == KCommandSocket::errorFI ||state == KCommandSocket::errorUN ) { if ( state == KCommandSocket::errorPW ) mParent->topLevelWidget()->setCaption( i18n("Wrong password: Receiving remote file failed.") ); - else + else if ( state == KCommandSocket::errorR ||state == KCommandSocket::errorTO ) mParent->topLevelWidget()->setCaption( i18n("ERROR: Receiving remote file failed.") ); + else if ( state == KCommandSocket::errorCA ) + mParent->topLevelWidget()->setCaption( i18n("Sync cancelled from remote.") ); + else if ( state == KCommandSocket::errorFI ) + mParent->topLevelWidget()->setCaption( i18n("File error on remote.") ); + else if ( state == KCommandSocket::errorUN ) + mParent->topLevelWidget()->setCaption( i18n("Unknown error on remote.") ); delete s; if ( state == KCommandSocket::errorR ) { @@ -1133,4 +1143,5 @@ KServerSocket:: KServerSocket ( QString pw, Q_UINT16 port, int backlog, QObject mSyncActionDialog = 0; blockRC = false; + mErrorMessage = 0; } @@ -1151,10 +1162,15 @@ void KServerSocket::newConnection ( int socket ) void KServerSocket::discardClient() { - //qDebug(" KServerSocket::discardClient()"); + QTimer::singleShot( 10, this , SLOT ( deleteSocket())); +} +void KServerSocket::deleteSocket() +{ + qDebug("KSS::deleteSocket"); if ( mSocket ) { delete mSocket; mSocket = 0; } - //emit endConnect(); + if ( mErrorMessage ) + QTimer::singleShot( 10, this , SLOT ( displayErrorMessage())); } void KServerSocket::readClient() @@ -1166,4 +1182,10 @@ void KServerSocket::readClient() return; } + if ( mErrorMessage ) { + mErrorMessage = 999; + error_connect("ERROR_UN\r\n\r\n"); + return; + } + mErrorMessage = 0; //qDebug("KServerSocket::readClient()"); if ( mSocket->canReadLine() ) { @@ -1184,7 +1206,6 @@ void KServerSocket::readClient() } else { - error_connect(); - KMessageBox::error( 0, i18n("Got send file request\nwith invalid password")); - //qDebug("password %s, invalid password %s ",mPassWord.latin1(), tokens[1].latin1() ); + mErrorMessage = 1; + error_connect("ERROR_PW\r\n\r\n"); } } @@ -1196,8 +1217,7 @@ void KServerSocket::readClient() } else { - error_connect(); + mErrorMessage = 2; + error_connect("ERROR_PW\r\n\r\n"); end_connect(); - KMessageBox::error( 0, i18n("Got receive file request\nwith invalid password")); - //qDebug("password %s, invalid password %s ",mPassWord.latin1(), tokens[1].latin1() ); } } @@ -1208,12 +1228,21 @@ void KServerSocket::readClient() } } -void KServerSocket::error_connect() +void KServerSocket::displayErrorMessage() +{ + if ( mErrorMessage == 1 ) + KMessageBox::error( 0, i18n("Got send file request\nwith invalid password")); + else if ( mErrorMessage == 2 ) + KMessageBox::error( 0, i18n("Got receive file request\nwith invalid password")); + mErrorMessage = 0; +} +void KServerSocket::error_connect( QString errmess ) { QTextStream os( mSocket ); os.setEncoding( QTextStream::Latin1 ); - os << "ERROR_PW\r\n\r\n"; + os << errmess ; mSocket->close(); - if ( mSocket->state() == QSocket::Idle ) - QTimer::singleShot( 10, this , SLOT ( discardClient())); + if ( mSocket->state() == QSocket::Idle ) { + QTimer::singleShot( 0, this , SLOT ( discardClient())); + } } void KServerSocket::end_connect() @@ -1237,4 +1266,5 @@ void KServerSocket::send_file() if ( KSyncManager::mRequestedSyncEvent.isValid() ) { int secs = QDateTime::currentDateTime().secsTo( KSyncManager::mRequestedSyncEvent ); + secs = 333; if ( secs < 0 ) secs = secs * (-1); @@ -1250,5 +1280,8 @@ void KServerSocket::send_file() if ( secs > 300 ) { if ( KMessageBox::Cancel == KMessageBox::warningContinueCancel(0, i18n("The clocks of the syncing\ndevices have a difference\nof more than 5 minutes.\nPlease adjust your clocks.\nYou may get wrong syncing results!\nPlease confirm synchronization!"), i18n("High clock skew!"),i18n("Synchronize!"))) { - qDebug("KSS::Sync cancelled ,cs"); + qDebug("KSS::Sync cancelled ,cs"); + mErrorMessage = 0; + end_connect(); + error_connect("ERROR_CA\r\n\r\n"); return ; } @@ -1279,12 +1312,8 @@ void KServerSocket::send_file() QFile file( fileName ); if (!file.open( IO_ReadOnly ) ) { - delete mSyncActionDialog; - mSyncActionDialog = 0; - qDebug("KSS::error open sync file: %s ", fileName.latin1()); - mSocket->close(); - if ( mSocket->state() == QSocket::Idle ) - QTimer::singleShot( 10, this , SLOT ( discardClient())); - return ; - + mErrorMessage = 0; + end_connect(); + error_connect("ERROR_FI\r\n\r\n"); + return ; } mSyncActionDialog->setCaption( i18n("Sending file...") ); @@ -1477,6 +1506,21 @@ void KCommandSocket::readFileFromSocket() if ( mFirstLine ) { mFirstLine = false; - if ( line.left( 8 ) == "ERROR_PW" ) { - mRetVal = errorPW; + if ( line.left( 6 ) == "ERROR_" ) { + if ( line.left( 8 ) == "ERROR_PW" ) { + mRetVal = errorPW; + deleteSocket(); + return ; + } + if ( line.left( 8 ) == "ERROR_CA" ) { + mRetVal = errorCA; + deleteSocket(); + return ; + } + if ( line.left( 8 ) == "ERROR_FI" ) { + mRetVal = errorFI; + deleteSocket(); + return ; + } + mRetVal = errorUN; deleteSocket(); return ; diff --git a/libkdepim/ksyncmanager.h b/libkdepim/ksyncmanager.h index 810a515..bd3ecdc 100644 --- a/libkdepim/ksyncmanager.h +++ b/libkdepim/ksyncmanager.h @@ -56,12 +56,15 @@ class KServerSocket : public QServerSocket private slots: void discardClient(); + void deleteSocket(); void readClient(); + void displayErrorMessage(); void readBackFileFromSocket(); private : + int mErrorMessage; bool blockRC; void send_file(); void get_file(); void end_connect(); - void error_connect(); + void error_connect( QString ); QDialog* mSyncActionDialog; QSocket* mSocket; @@ -76,5 +79,5 @@ class KCommandSocket : public QObject Q_OBJECT public: - enum state { successR, errorR, successW, errorW, errorTO, errorPW,quiet }; + enum state { successR, errorR, successW, errorW, errorTO, errorPW, errorCA, errorFI, errorUN,quiet }; KCommandSocket ( QString password, Q_UINT16 port, QString host, QObject * parent=0, QWidget* cap = 0, const char * name=0 ); void readFile( QString ); |