summaryrefslogtreecommitdiffabout
path: root/libkdepim/ksyncmanager.cpp
Side-by-side diff
Diffstat (limited to 'libkdepim/ksyncmanager.cpp') (more/less context) (ignore whitespace changes)
-rw-r--r--libkdepim/ksyncmanager.cpp94
1 files changed, 69 insertions, 25 deletions
diff --git a/libkdepim/ksyncmanager.cpp b/libkdepim/ksyncmanager.cpp
index d8ca3ba..47d00a4 100644
--- a/libkdepim/ksyncmanager.cpp
+++ b/libkdepim/ksyncmanager.cpp
@@ -1069,13 +1069,23 @@ void KSyncManager::syncPi()
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 ) {
KCommandSocket* commandSocket = new KCommandSocket( mPassWordPiSync, mActiveSyncPort.toUInt(), mActiveSyncIP, this, mParent->topLevelWidget());
connect( commandSocket, SIGNAL(commandFinished( KCommandSocket*, int)), this, SLOT(deleteCommandSocket(KCommandSocket*, int )) );
@@ -1131,8 +1141,9 @@ KServerSocket:: KServerSocket ( QString pw, Q_UINT16 port, int backlog, QObject
mPassWord = pw;
mSocket = 0;
mSyncActionDialog = 0;
blockRC = false;
+ mErrorMessage = 0;
}
void KServerSocket::newConnection ( int socket )
{
@@ -1149,14 +1160,19 @@ 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()
{
if ( blockRC )
@@ -1164,8 +1180,14 @@ void KServerSocket::readClient()
if ( mSocket == 0 ) {
qDebug("ERROR::KSS::readClient(): mSocket == 0 ");
return;
}
+ if ( mErrorMessage ) {
+ mErrorMessage = 999;
+ error_connect("ERROR_UN\r\n\r\n");
+ return;
+ }
+ mErrorMessage = 0;
//qDebug("KServerSocket::readClient()");
if ( mSocket->canReadLine() ) {
QString line = mSocket->readLine();
//qDebug("KServerSocket readline: %s ", line.latin1());
@@ -1182,11 +1204,10 @@ void KServerSocket::readClient()
KSyncManager::mRequestedSyncEvent = QDateTime();
send_file();
}
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");
}
}
if ( tokens[0] == "PUT" ) {
if ( tokens[1] == mPassWord ) {
@@ -1194,28 +1215,36 @@ void KServerSocket::readClient()
blockRC = true;
get_file();
}
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() );
}
}
if ( tokens[0] == "STOP" ) {
//emit endConnect();
end_connect();
}
}
}
-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()
{
delete mSyncActionDialog;
@@ -1235,8 +1264,9 @@ void KServerSocket::send_file()
lay->setMargin(7);
lay->setSpacing(7);
if ( KSyncManager::mRequestedSyncEvent.isValid() ) {
int secs = QDateTime::currentDateTime().secsTo( KSyncManager::mRequestedSyncEvent );
+ secs = 333;
if ( secs < 0 )
secs = secs * (-1);
if ( secs > 30 )
//if ( true )
@@ -1248,9 +1278,12 @@ void KServerSocket::send_file()
if ( secs > 180 )
{
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 ;
}
}
QFont f = label->font();
@@ -1277,16 +1310,12 @@ void KServerSocket::send_file()
qApp->processEvents();
QString fileName = mFileName;
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...") );
QTextStream ts( &file );
ts.setEncoding( QTextStream::Latin1 );
@@ -1475,10 +1504,25 @@ void KCommandSocket::readFileFromSocket()
mTime.restart();
QString line = mSocket->readLine ();
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 ;
}
}