summaryrefslogtreecommitdiffabout
Unidiff
Diffstat (more/less context) (ignore whitespace changes)
-rw-r--r--korganizer/mainwindow.cpp133
-rw-r--r--korganizer/mainwindow.h17
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
@@ -1929,6 +1929,7 @@ void MainWindow::enableQuick()
1929 } 1929 }
1930 qDebug("port %d ", port); 1930 qDebug("port %d ", port);
1931 mServerSocket = new KServerSocket ( passWordPiSync, port ,1 ); 1931 mServerSocket = new KServerSocket ( passWordPiSync, port ,1 );
1932 mServerSocket->setFileName( defaultFileName() );
1932 qDebug("connected "); 1933 qDebug("connected ");
1933 if ( !mServerSocket->ok() ) { 1934 if ( !mServerSocket->ok() ) {
1934 qWarning("Failed to bind to port %d", port); 1935 qWarning("Failed to bind to port %d", port);
@@ -1936,8 +1937,10 @@ void MainWindow::enableQuick()
1936 mServerSocket = 0; 1937 mServerSocket = 0;
1937 return; 1938 return;
1938 } 1939 }
1939 connect( mServerSocket, SIGNAL ( sendFile(QSocket*) ), this, SLOT ( sendFile(QSocket*) ) ); 1940 connect( mServerSocket, SIGNAL ( saveFile() ), this, SLOT ( save() ) );
1940 connect( mServerSocket, SIGNAL ( getFile(QSocket*) ), this, SLOT ( getFile(QSocket*) ) ); 1941 connect( mServerSocket, SIGNAL ( file_received( bool ) ), this, SLOT ( getFile( bool ) ) );
1942 // connect( mServerSocket, SIGNAL ( sendFile(QSocket*) ), this, SLOT ( sendFile(QSocket*) ) );
1943 //connect( mServerSocket, SIGNAL ( getFile(QSocket*) ), this, SLOT ( getFile(QSocket*) ) );
1941} 1944}
1942void MainWindow::sendFile(QSocket* socket) 1945void MainWindow::sendFile(QSocket* socket)
1943{ 1946{
@@ -1982,15 +1985,26 @@ void MainWindow::sendFile(QSocket* socket)
1982 setCaption( i18n("File sent. Waiting to get back synced file") ); 1985 setCaption( i18n("File sent. Waiting to get back synced file") );
1983 qDebug("file sent "); 1986 qDebug("file sent ");
1984} 1987}
1985void MainWindow::getFile(QSocket* socket) 1988void MainWindow::getFile( bool success )
1986{ 1989{
1990 if ( ! success ) {
1991 setCaption( i18n("Error receiving file. Nothing changed!") );
1992 return;
1993 }
1994 // pending adjust time for watchSavedFile()
1995 //mView->watchSavedFile();
1996 mView->openCalendar( defaultFileName() );
1997 setCaption( i18n("Pi-Sync successful!") );
1998
1999
2000#if 0
1987 setCaption( i18n("Receiving synced file...") ); 2001 setCaption( i18n("Receiving synced file...") );
1988 2002
1989 piTime.start(); 2003 piTime.start();
1990 piSocket = socket; 2004 piSocket = socket;
1991 piFileString = ""; 2005 piFileString = "";
1992 QTimer::singleShot( 1, this , SLOT (readBackFileFromSocket( ) )); 2006 QTimer::singleShot( 1, this , SLOT (readBackFileFromSocket( ) ));
1993 2007#endif
1994 2008
1995} 2009}
1996void MainWindow::readBackFileFromSocket() 2010void MainWindow::readBackFileFromSocket()
@@ -2490,6 +2504,7 @@ KServerSocket:: KServerSocket ( QString pw, Q_UINT16 port, int backlog, QObject
2490{ 2504{
2491 mPassWord = pw; 2505 mPassWord = pw;
2492 mSocket = 0; 2506 mSocket = 0;
2507 mSyncActionDialog = 0;
2493}; 2508};
2494 2509
2495void KServerSocket::newConnection ( int socket ) 2510void KServerSocket::newConnection ( int socket )
@@ -2528,7 +2543,8 @@ void KServerSocket::readClient()
2528 qDebug("KServerSocket socket->canReadLine()"); 2543 qDebug("KServerSocket socket->canReadLine()");
2529 if ( tokens[0] == "GET" ) { 2544 if ( tokens[0] == "GET" ) {
2530 if ( tokens[1] == mPassWord ) 2545 if ( tokens[1] == mPassWord )
2531 emit sendFile( mSocket ); 2546 //emit sendFile( mSocket );
2547 send_file();
2532 else { 2548 else {
2533 KMessageBox::information( 0, i18n("ERROR:\nGot send file request\nwith invalid password")); 2549 KMessageBox::information( 0, i18n("ERROR:\nGot send file request\nwith invalid password"));
2534 qDebug("password %s, invalid password %s ",mPassWord.latin1(), tokens[1].latin1() ); 2550 qDebug("password %s, invalid password %s ",mPassWord.latin1(), tokens[1].latin1() );
@@ -2536,7 +2552,8 @@ void KServerSocket::readClient()
2536 } 2552 }
2537 if ( tokens[0] == "PUT" ) { 2553 if ( tokens[0] == "PUT" ) {
2538 if ( tokens[1] == mPassWord ) 2554 if ( tokens[1] == mPassWord )
2539 emit getFile( mSocket ); 2555 //emit getFile( mSocket );
2556 get_file();
2540 else { 2557 else {
2541 KMessageBox::information( 0, i18n("ERROR:\nGot receive file request\nwith invalid password")); 2558 KMessageBox::information( 0, i18n("ERROR:\nGot receive file request\nwith invalid password"));
2542 qDebug("password %s, invalid password %s ",mPassWord.latin1(), tokens[1].latin1() ); 2559 qDebug("password %s, invalid password %s ",mPassWord.latin1(), tokens[1].latin1() );
@@ -2548,6 +2565,108 @@ void KServerSocket::readClient()
2548 } 2565 }
2549} 2566}
2550 2567
2568void KServerSocket::send_file()
2569{
2570 qDebug("MainWindow::sendFile(QSocket* s) ");
2571 if ( mSyncActionDialog )
2572 delete mSyncActionDialog;
2573 mSyncActionDialog = new QDialog ( 0, "input-dialog", true );
2574 mSyncActionDialog->setCaption(i18n("Received sync request"));
2575 QLabel* label = new QLabel( i18n("Synchronizing...\nDo not use this application!\n\nIf syncing fails you can close this dialog."), mSyncActionDialog );
2576 QVBoxLayout* lay = new QVBoxLayout( mSyncActionDialog );
2577 lay->addWidget( label);
2578 lay->setMargin(7);
2579 lay->setSpacing(7);
2580 mSyncActionDialog->setFixedSize( 230, 120);
2581 mSyncActionDialog->show();
2582 qDebug("KSS::saving ... ");
2583 emit saveFile();
2584 qApp->processEvents();
2585 QString fileName = mFileName;
2586 QFile file( fileName );
2587 if (!file.open( IO_ReadOnly ) ) {
2588 delete mSyncActionDialog;
2589 mSyncActionDialog = 0;
2590 qDebug("KSS::error open file ");
2591 mSocket->close();
2592 if ( mSocket->state() == QSocket::Idle )
2593 QTimer::singleShot( 10, this , SLOT ( discardClient()));
2594 return ;
2595
2596 }
2597 mSyncActionDialog->setCaption( i18n("Sending file...") );
2598 QTextStream ts( &file );
2599 ts.setCodec( QTextCodec::codecForName("utf8") );
2600 QTextStream os( mSocket );
2601 os.setCodec( QTextCodec::codecForName("utf8") );
2602 //os.setEncoding( QTextStream::UnicodeUTF8 );
2603 while ( ! ts.atEnd() ) {
2604 os << ts.readLine() << "\n";
2605 }
2606 //os << ts.read();
2607 file.close();
2608 mSyncActionDialog->setCaption( i18n("Waiting to get back synced file") );
2609 qDebug("file sent ");
2610 mSocket->close();
2611 if ( mSocket->state() == QSocket::Idle )
2612 QTimer::singleShot( 10, this , SLOT ( discardClient()));
2613}
2614void KServerSocket::get_file()
2615{
2616 mSyncActionDialog->setCaption( i18n("Receiving synced file...") );
2617
2618 piTime.start();
2619 piFileString = "";
2620 QTimer::singleShot( 1, this , SLOT (readBackFileFromSocket( ) ));
2621}
2622
2623
2624void KServerSocket::readBackFileFromSocket()
2625{
2626 qDebug("readBackFileFromSocket() %d ", piTime.elapsed ());
2627 while ( mSocket->canReadLine () ) {
2628 piTime.restart();
2629 QString line = mSocket->readLine ();
2630 piFileString += line;
2631 qDebug("readline: %s ", line.latin1());
2632 mSyncActionDialog->setCaption( i18n("Received %1 bytes").arg( piFileString.length() ) );
2633
2634 }
2635 if ( piTime.elapsed () < 3000 ) {
2636 // wait for more
2637 qDebug("waitformore ");
2638 QTimer::singleShot( 100, this , SLOT (readBackFileFromSocket( ) ));
2639 return;
2640 }
2641 QString fileName = mFileName;
2642 QFile file ( fileName );
2643 if (!file.open( IO_WriteOnly ) ) {
2644 delete mSyncActionDialog;
2645 mSyncActionDialog = 0;
2646 qDebug("error open cal file ");
2647 piFileString = "";
2648 emit file_received( false );
2649 return ;
2650
2651 }
2652
2653 // mView->setLoadedFileVersion(QDateTime::currentDateTime().addSecs( -1));
2654 QTextStream ts ( &file );
2655 ts.setCodec( QTextCodec::codecForName("utf8") );
2656 qDebug("finish ");
2657 mSyncActionDialog->setCaption( i18n("Writing file to disk...") );
2658 ts << piFileString;
2659 mSocket->close();
2660 if ( mSocket->state() == QSocket::Idle )
2661 QTimer::singleShot( 10, this , SLOT ( discardClient()));
2662 file.close();
2663 delete mSyncActionDialog;
2664 mSyncActionDialog = 0;
2665 piFileString = "";
2666 emit file_received( true );
2667
2668}
2669
2551KCommandSocket::KCommandSocket ( QString password, Q_UINT16 port, QString host, QObject * parent, const char * name ): QObject( parent, name ) 2670KCommandSocket::KCommandSocket ( QString password, Q_UINT16 port, QString host, QObject * parent, const char * name ): QObject( parent, name )
2552{ 2671{
2553 mPassWord = password; 2672 mPassWord = password;
@@ -2637,7 +2756,7 @@ void KCommandSocket::deleteSocket()
2637 return; 2756 return;
2638 if ( mTimerSocket->isActive () ) { 2757 if ( mTimerSocket->isActive () ) {
2639 mTimerSocket->stop(); 2758 mTimerSocket->stop();
2640 KMessageBox::information( 0, i18n("ERROR:\nConnection to remote host timed out ")); 2759 KMessageBox::information( 0, i18n("ERROR:\nConnection to remote host timed out!\nDid you forgot to enable\nsyncing on remote host? "));
2641 mRetVal = false; 2760 mRetVal = false;
2642 } 2761 }
2643 qDebug("KCommandSocket::deleteSocket() %d", mRetVal); 2762 qDebug("KCommandSocket::deleteSocket() %d", mRetVal);
diff --git a/korganizer/mainwindow.h b/korganizer/mainwindow.h
index 11a816c..8b76067 100644
--- a/korganizer/mainwindow.h
+++ b/korganizer/mainwindow.h
@@ -33,17 +33,28 @@ public:
33 KServerSocket ( QString password, Q_UINT16 port, int backlog = 0, QObject * parent=0, const char * name=0 ); 33 KServerSocket ( QString password, Q_UINT16 port, int backlog = 0, QObject * parent=0, const char * name=0 );
34 34
35 void newConnection ( int socket ) ; 35 void newConnection ( int socket ) ;
36 void setFileName( QString fn ) {mFileName = fn;};
36 37
37signals: 38signals:
38 void sendFile(QSocket*); 39 //void sendFile(QSocket*);
39 void getFile(QSocket*); 40 //void getFile(QSocket*);
41 void file_received( bool );
42 //void file_sent();
43 void saveFile();
40 void endConnect(); 44 void endConnect();
41private slots: 45private slots:
42 void discardClient(); 46 void discardClient();
43 void readClient(); 47 void readClient();
48 void readBackFileFromSocket();
44 private : 49 private :
50 void send_file();
51 void get_file();
52 QDialog* mSyncActionDialog;
45 QSocket* mSocket; 53 QSocket* mSocket;
46 QString mPassWord; 54 QString mPassWord;
55 QString mFileName;
56 QTime piTime;
57 QString piFileString;
47}; 58};
48 59
49class KCommandSocket : public QObject 60class KCommandSocket : public QObject
@@ -153,7 +164,7 @@ class MainWindow : public QMainWindow
153 void deleteCommandSocketFinish(); 164 void deleteCommandSocketFinish();
154 void fillSyncMenu(); 165 void fillSyncMenu();
155 void sendFile(QSocket* s); 166 void sendFile(QSocket* s);
156 void getFile(QSocket* socket); 167 void getFile( bool );
157 void readFileFromSocket(); 168 void readFileFromSocket();
158 void readBackFileFromSocket(); 169 void readBackFileFromSocket();
159 void endConnect(); 170 void endConnect();