summaryrefslogtreecommitdiffabout
path: root/korganizer/mainwindow.cpp
Side-by-side diff
Diffstat (limited to 'korganizer/mainwindow.cpp') (more/less context) (ignore whitespace changes)
-rw-r--r--korganizer/mainwindow.cpp133
1 files changed, 126 insertions, 7 deletions
diff --git a/korganizer/mainwindow.cpp b/korganizer/mainwindow.cpp
index e4b7869..da73caf 100644
--- a/korganizer/mainwindow.cpp
+++ b/korganizer/mainwindow.cpp
@@ -1926,21 +1926,24 @@ void MainWindow::enableQuick()
if ( ! ok ) {
KMessageBox::information( this, i18n("No valid port"));
return;
}
qDebug("port %d ", port);
mServerSocket = new KServerSocket ( passWordPiSync, port ,1 );
+ mServerSocket->setFileName( defaultFileName() );
qDebug("connected ");
if ( !mServerSocket->ok() ) {
qWarning("Failed to bind to port %d", port);
delete mServerSocket;
mServerSocket = 0;
return;
}
- 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*) ) );
}
void MainWindow::sendFile(QSocket* socket)
{
setCaption( i18n("Received request for file") );
qDebug("MainWindow::sendFile(QSocket* s) ");
if ( mSyncActionDialog )
@@ -1979,21 +1982,32 @@ void MainWindow::sendFile(QSocket* socket)
//os << ts.read();
socket->close();
file.close();
setCaption( i18n("File sent. Waiting to get back synced file") );
qDebug("file sent ");
}
-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...") );
piTime.start();
piSocket = socket;
piFileString = "";
QTimer::singleShot( 1, this , SLOT (readBackFileFromSocket( ) ));
-
+#endif
}
void MainWindow::readBackFileFromSocket()
{
qDebug("readBackFileFromSocket() %d ", piTime.elapsed ());
while ( piSocket->canReadLine () ) {
@@ -2487,12 +2501,13 @@ void MainWindow::printCal()
KServerSocket:: KServerSocket ( QString pw, Q_UINT16 port, int backlog, QObject * parent, const char * name ) : QServerSocket( port, backlog, parent, name )
{
mPassWord = pw;
mSocket = 0;
+ mSyncActionDialog = 0;
};
void KServerSocket::newConnection ( int socket )
{
qDebug("KServerSocket:New connection %d ", socket);
if ( mSocket ) {
@@ -2525,32 +2540,136 @@ void KServerSocket::readClient()
qDebug("KServerSocket readClient()");
if ( mSocket->canReadLine() ) {
QStringList tokens = QStringList::split( QRegExp("[ \r\n][ \r\n]*"), mSocket->readLine() );
qDebug("KServerSocket socket->canReadLine()");
if ( tokens[0] == "GET" ) {
if ( tokens[1] == mPassWord )
- emit sendFile( mSocket );
+ //emit sendFile( mSocket );
+ send_file();
else {
KMessageBox::information( 0, i18n("ERROR:\nGot send file request\nwith invalid password"));
qDebug("password %s, invalid password %s ",mPassWord.latin1(), tokens[1].latin1() );
}
}
if ( tokens[0] == "PUT" ) {
if ( tokens[1] == mPassWord )
- emit getFile( mSocket );
+ //emit getFile( mSocket );
+ get_file();
else {
KMessageBox::information( 0, i18n("ERROR:\nGot receive file request\nwith invalid password"));
qDebug("password %s, invalid password %s ",mPassWord.latin1(), tokens[1].latin1() );
}
}
if ( tokens[0] == "STOP" ) {
emit endConnect();
}
}
}
+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 )
{
mPassWord = password;
mSocket = 0;
mPort = port;
mHost = host;
@@ -2634,13 +2753,13 @@ void KCommandSocket::readFileFromSocket()
void KCommandSocket::deleteSocket()
{
if ( !mSocket)
return;
if ( mTimerSocket->isActive () ) {
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;
}
qDebug("KCommandSocket::deleteSocket() %d", mRetVal);
delete mSocket;
mSocket = 0;
emit commandFinished( mRetVal );