-rw-r--r-- | korganizer/mainwindow.cpp | 133 | ||||
-rw-r--r-- | korganizer/mainwindow.h | 17 |
2 files changed, 140 insertions, 10 deletions
diff --git a/korganizer/mainwindow.cpp b/korganizer/mainwindow.cpp index e4b7869..da73caf 100644 --- a/korganizer/mainwindow.cpp +++ b/korganizer/mainwindow.cpp @@ -1931,2 +1931,3 @@ void MainWindow::enableQuick() mServerSocket = new KServerSocket ( passWordPiSync, port ,1 ); + mServerSocket->setFileName( defaultFileName() ); qDebug("connected "); @@ -1938,4 +1939,6 @@ void MainWindow::enableQuick() } - connect( mServerSocket, SIGNAL ( sendFile(QSocket*) ), this, SLOT ( sendFile(QSocket*) ) ); - connect( mServerSocket, SIGNAL ( getFile(QSocket*) ), this, SLOT ( getFile(QSocket*) ) ); + connect( mServerSocket, SIGNAL ( saveFile() ), this, SLOT ( save() ) ); + connect( mServerSocket, SIGNAL ( file_received( bool ) ), this, SLOT ( getFile( bool ) ) ); + // connect( mServerSocket, SIGNAL ( sendFile(QSocket*) ), this, SLOT ( sendFile(QSocket*) ) ); + //connect( mServerSocket, SIGNAL ( getFile(QSocket*) ), this, SLOT ( getFile(QSocket*) ) ); } @@ -1984,4 +1987,15 @@ void MainWindow::sendFile(QSocket* socket) } -void MainWindow::getFile(QSocket* socket) +void MainWindow::getFile( bool success ) { + if ( ! success ) { + setCaption( i18n("Error receiving file. Nothing changed!") ); + return; + } + // pending adjust time for watchSavedFile() + //mView->watchSavedFile(); + mView->openCalendar( defaultFileName() ); + setCaption( i18n("Pi-Sync successful!") ); + + +#if 0 setCaption( i18n("Receiving synced file...") ); @@ -1992,3 +2006,3 @@ void MainWindow::getFile(QSocket* socket) QTimer::singleShot( 1, this , SLOT (readBackFileFromSocket( ) )); - +#endif @@ -2492,2 +2506,3 @@ KServerSocket:: KServerSocket ( QString pw, Q_UINT16 port, int backlog, QObject mSocket = 0; + mSyncActionDialog = 0; }; @@ -2530,3 +2545,4 @@ void KServerSocket::readClient() if ( tokens[1] == mPassWord ) - emit sendFile( mSocket ); + //emit sendFile( mSocket ); + send_file(); else { @@ -2538,3 +2554,4 @@ void KServerSocket::readClient() if ( tokens[1] == mPassWord ) - emit getFile( mSocket ); + //emit getFile( mSocket ); + get_file(); else { @@ -2550,2 +2567,104 @@ void KServerSocket::readClient() +void KServerSocket::send_file() +{ + qDebug("MainWindow::sendFile(QSocket* s) "); + if ( mSyncActionDialog ) + delete mSyncActionDialog; + mSyncActionDialog = new QDialog ( 0, "input-dialog", true ); + mSyncActionDialog->setCaption(i18n("Received sync request")); + QLabel* label = new QLabel( i18n("Synchronizing...\nDo not use this application!\n\nIf syncing fails you can close this dialog."), mSyncActionDialog ); + QVBoxLayout* lay = new QVBoxLayout( mSyncActionDialog ); + lay->addWidget( label); + lay->setMargin(7); + lay->setSpacing(7); + mSyncActionDialog->setFixedSize( 230, 120); + mSyncActionDialog->show(); + qDebug("KSS::saving ... "); + emit saveFile(); + qApp->processEvents(); + QString fileName = mFileName; + QFile file( fileName ); + if (!file.open( IO_ReadOnly ) ) { + delete mSyncActionDialog; + mSyncActionDialog = 0; + qDebug("KSS::error open file "); + mSocket->close(); + if ( mSocket->state() == QSocket::Idle ) + QTimer::singleShot( 10, this , SLOT ( discardClient())); + return ; + + } + mSyncActionDialog->setCaption( i18n("Sending file...") ); + QTextStream ts( &file ); + ts.setCodec( QTextCodec::codecForName("utf8") ); + QTextStream os( mSocket ); + os.setCodec( QTextCodec::codecForName("utf8") ); + //os.setEncoding( QTextStream::UnicodeUTF8 ); + while ( ! ts.atEnd() ) { + os << ts.readLine() << "\n"; + } + //os << ts.read(); + file.close(); + mSyncActionDialog->setCaption( i18n("Waiting to get back synced file") ); + qDebug("file sent "); + mSocket->close(); + if ( mSocket->state() == QSocket::Idle ) + QTimer::singleShot( 10, this , SLOT ( discardClient())); +} +void KServerSocket::get_file() +{ + mSyncActionDialog->setCaption( i18n("Receiving synced file...") ); + + piTime.start(); + piFileString = ""; + QTimer::singleShot( 1, this , SLOT (readBackFileFromSocket( ) )); +} + + +void KServerSocket::readBackFileFromSocket() +{ + qDebug("readBackFileFromSocket() %d ", piTime.elapsed ()); + while ( mSocket->canReadLine () ) { + piTime.restart(); + QString line = mSocket->readLine (); + piFileString += line; + qDebug("readline: %s ", line.latin1()); + mSyncActionDialog->setCaption( i18n("Received %1 bytes").arg( piFileString.length() ) ); + + } + if ( piTime.elapsed () < 3000 ) { + // wait for more + qDebug("waitformore "); + QTimer::singleShot( 100, this , SLOT (readBackFileFromSocket( ) )); + return; + } + QString fileName = mFileName; + QFile file ( fileName ); + if (!file.open( IO_WriteOnly ) ) { + delete mSyncActionDialog; + mSyncActionDialog = 0; + qDebug("error open cal file "); + piFileString = ""; + emit file_received( false ); + return ; + + } + + // mView->setLoadedFileVersion(QDateTime::currentDateTime().addSecs( -1)); + QTextStream ts ( &file ); + ts.setCodec( QTextCodec::codecForName("utf8") ); + qDebug("finish "); + mSyncActionDialog->setCaption( i18n("Writing file to disk...") ); + ts << piFileString; + mSocket->close(); + if ( mSocket->state() == QSocket::Idle ) + QTimer::singleShot( 10, this , SLOT ( discardClient())); + file.close(); + delete mSyncActionDialog; + mSyncActionDialog = 0; + piFileString = ""; + emit file_received( true ); + +} + KCommandSocket::KCommandSocket ( QString password, Q_UINT16 port, QString host, QObject * parent, const char * name ): QObject( parent, name ) @@ -2639,3 +2758,3 @@ void KCommandSocket::deleteSocket() mTimerSocket->stop(); - KMessageBox::information( 0, i18n("ERROR:\nConnection to remote host timed out ")); + KMessageBox::information( 0, i18n("ERROR:\nConnection to remote host timed out!\nDid you forgot to enable\nsyncing on remote host? ")); mRetVal = false; diff --git a/korganizer/mainwindow.h b/korganizer/mainwindow.h index 11a816c..8b76067 100644 --- a/korganizer/mainwindow.h +++ b/korganizer/mainwindow.h @@ -35,6 +35,10 @@ public: void newConnection ( int socket ) ; + void setFileName( QString fn ) {mFileName = fn;}; signals: - void sendFile(QSocket*); - void getFile(QSocket*); + //void sendFile(QSocket*); + //void getFile(QSocket*); + void file_received( bool ); + //void file_sent(); + void saveFile(); void endConnect(); @@ -43,5 +47,12 @@ private slots: void readClient(); + void readBackFileFromSocket(); private : + void send_file(); + void get_file(); + QDialog* mSyncActionDialog; QSocket* mSocket; QString mPassWord; + QString mFileName; + QTime piTime; + QString piFileString; }; @@ -155,3 +166,3 @@ class MainWindow : public QMainWindow void sendFile(QSocket* s); - void getFile(QSocket* socket); + void getFile( bool ); void readFileFromSocket(); |