summaryrefslogtreecommitdiffabout
authorzautrix <zautrix>2004-10-04 10:05:42 (UTC)
committer zautrix <zautrix>2004-10-04 10:05:42 (UTC)
commit743f44c45534a6e1df17ddc7b5f3c62b73921455 (patch) (side-by-side diff)
tree83795806d28b2614639082e944558a470f039daf
parentaaea91151fe9a747e9eddfb8ba7d5896744faf30 (diff)
downloadkdepimpi-743f44c45534a6e1df17ddc7b5f3c62b73921455.zip
kdepimpi-743f44c45534a6e1df17ddc7b5f3c62b73921455.tar.gz
kdepimpi-743f44c45534a6e1df17ddc7b5f3c62b73921455.tar.bz2
sync fixes
Diffstat (more/less context) (ignore whitespace changes)
-rw-r--r--korganizer/mainwindow.cpp181
-rw-r--r--korganizer/mainwindow.h14
2 files changed, 124 insertions, 71 deletions
diff --git a/korganizer/mainwindow.cpp b/korganizer/mainwindow.cpp
index 7bf33d3..8e2f956 100644
--- a/korganizer/mainwindow.cpp
+++ b/korganizer/mainwindow.cpp
@@ -71,5 +71,7 @@ MainWindow::MainWindow( QWidget *parent, const char *name, QString msg) :
QMainWindow( parent, name )
{
-
+ mPassWordPiSync = "abc";
+ mTimerCommandSocket = new QTimer ( this );
+ connect( mTimerCommandSocket, SIGNAL ( timeout () ), this, SLOT ( deleteCommandSocket() ) );
#ifdef DESKTOP_VERSION
setFont( QFont("Arial"), 14 );
@@ -1890,4 +1892,5 @@ QString MainWindow::getPassword( )
void MainWindow::enableQuick()
{
+ QString passWordPiSync = "bhdrvmk";
QString retfile = "";
QDialog dia ( this, "input-dialog", true );
@@ -1900,6 +1903,12 @@ void MainWindow::enableQuick()
lay.addWidget( &label);
lay.addWidget( &lab);
+
+ QLineEdit lepw ( &dia );
+ lepw.setText( "abc" );
+ QLabel label2 ( i18n("Password to enable\naccess from remote:"), &dia );
+ lay.addWidget( &label2);
+ lay.addWidget( &lepw);
dia.setFixedSize( 230,80 );
- dia.setCaption( i18n("Enter port for Easy-Pi-Sync") );
+ dia.setCaption( i18n("Enter port for Pi-Sync") );
QPushButton pb ( "OK", &dia);
lay.addWidget( &pb );
@@ -1912,4 +1921,5 @@ void MainWindow::enableQuick()
return;
dia.hide();
+ passWordPiSync = lepw.text();
qApp->processEvents();
KOPrefs::instance()->mPassiveSyncPort = retfile;
@@ -1917,9 +1927,9 @@ void MainWindow::enableQuick()
Q_UINT16 port = retfile.toUInt(&ok);
if ( ! ok ) {
- qDebug("no valid port ");
+ KMessageBox::information( this, i18n("No valid port"));
return;
}
qDebug("port %d ", port);
- mServerSocket = new KServerSocket ( port ,1 );
+ mServerSocket = new KServerSocket ( passWordPiSync, port ,1 );
qDebug("connected ");
if ( !mServerSocket->ok() ) {
@@ -1947,7 +1957,7 @@ void MainWindow::sendFile(QSocket* socket)
mSyncActionDialog->setFixedSize( 200,100 );
mSyncActionDialog->show();
- qApp->processEvents();
qDebug("saving ... ");
save();
+ qApp->processEvents();
QString fileName = defaultFileName();
QFile file( fileName );
@@ -1979,11 +1989,36 @@ void MainWindow::getFile(QSocket* socket)
setCaption( i18n("Receiving synced file...") );
+ piTime.start();
+ piSocket = socket;
+ piFileString = "";
+ QTimer::singleShot( 1, this , SLOT (readBackFileFromSocket( ) ));
+
+
+}
+void MainWindow::readBackFileFromSocket()
+{
+ qDebug("readBackFileFromSocket() %d ", piTime.elapsed ());
+ while ( piSocket->canReadLine () ) {
+ piTime.restart();
+ QString line = piSocket->readLine ();
+ piFileString += line;
+ qDebug("readline: %s ", line.latin1());
+ 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 = defaultFileName();
- QFile file( fileName );
+ QFile file ( fileName );
if (!file.open( IO_WriteOnly ) ) {
- setCaption( i18n("Error open file") );
+ setCaption( i18n("Error open file for writing!") );
delete mSyncActionDialog;
mSyncActionDialog = 0;
qDebug("error open cal file ");
+ piFileString = "";
return ;
@@ -1991,60 +2026,21 @@ void MainWindow::getFile(QSocket* socket)
mView->setLoadedFileVersion(QDateTime::currentDateTime().addSecs( -1));
- QTextStream ts( &file );
+ QTextStream ts ( &file );
ts.setCodec( QTextCodec::codecForName("utf8") );
- bool first = true;
- while ( socket->canReadLine () || first ) {
- first = false;
- while ( socket->canReadLine () ) {
- qDebug("avail %d ", socket->bytesAvailable () );
- ts << socket->readLine ();
- }
- QTime ti;
- ti.start();
- while ( ti.elapsed () < 5000 && !socket->canReadLine () ) {
- qDebug("waiting1a %d %d ",ti.elapsed (), socket->bytesAvailable () );
- //qApp->processEvents();
- qDebug("waiting1b %d ",ti.elapsed () );
- if ( !socket->canReadLine () ) {
- qDebug("waiting1c %d ",ti.elapsed () );
-#ifndef _WIN32_
- usleep( 100000);
-#endif
- }
- //socket->waitForMore ( 100 );
- }
- ts << socket->readLine ();
-#if 0
-#ifdef DESKTOP_VERSION
- socket->waitForMore ( 5000 );
-#else
- // socket->waitForMore ( 5000 );
- // seems to be broken in qt2
- bool stop = false;
- QTime ti;
- ti.start();
- while ( ti.elapsed < 5000 && !stop ) {
- qApp->processEvents();
- if ( socket->canReadLine () )
- stop = true ;
- else {
- usleep( 100000 );
-
- }
- }
-#endif
-#endif
- }
+ qDebug("finish ");
+ setCaption( i18n("Writing file to disk...") );
+ ts << piFileString;
setCaption( i18n("File received - reloading calendar...") );
- socket->close();
+ piSocket->close();
file.close();
mView->watchSavedFile();
mView->openCalendar( defaultFileName() );
- setCaption( i18n("Easy-Pi-Sync successful!") );
+ setCaption( i18n("Pi-Sync successful!") );
delete mSyncActionDialog;
mSyncActionDialog = 0;
+ piFileString = "";
-
-}
+
+}
void MainWindow::endConnect()
{
@@ -2055,4 +2051,5 @@ void MainWindow::endConnect()
void MainWindow::performQuick()
{
+
setCaption( i18n("Please input connection settings") );
QString retfile = "";
@@ -2071,6 +2068,13 @@ void MainWindow::performQuick()
lab2.setText( KOPrefs::instance()->mActiveSyncPort );
lay.addWidget( &lab2);
+
+ QLineEdit lepw ( &dia );
+ lepw.setText( mPassWordPiSync );
+ QLabel label3 ( i18n("Password to enable\naccess to remote:"), &dia );
+ lay.addWidget( &label3);
+ lay.addWidget( &lepw);
+
dia.setFixedSize( 230,200 );
- dia.setCaption( i18n("Enter port for Easy-Pi-Sync ") );
+ dia.setCaption( i18n("Enter port for Pi-Sync ") );
QPushButton pb ( "OK", &dia);
lay.addWidget( &pb );
@@ -2082,4 +2086,5 @@ void MainWindow::performQuick()
return;
}
+ mPassWordPiSync = lepw.text();
dia.hide();
KOPrefs::instance()->mActiveSyncPort = lab2.text();
@@ -2104,4 +2109,5 @@ void MainWindow::performQuickQuick()
//mCommandSocket = new QSocket( this );
connect( mCommandSocket, SIGNAL(readyRead()), this, SLOT(readFileFromSocket()) );
+ connect( mCommandSocket, SIGNAL(delayedCloseFinished ()), this, SLOT(deleteCommandSocket()) );
}
QString host = KOPrefs::instance()->mActiveSyncIP;
@@ -2109,12 +2115,35 @@ void MainWindow::performQuickQuick()
QTextStream os( mCommandSocket );
os.setEncoding( QTextStream::UnicodeUTF8 );
- os << "GET\r\n";
+ os << "GET " << mPassWordPiSync << "\r\n";
setCaption( i18n("Sending request for remote file ...") );
+ mTimerCommandSocket->start( 15000 );
}
+void MainWindow::deleteCommandSocket()
+{
+ if ( !mCommandSocket)
+ return;
+ if ( mTimerCommandSocket->isActive () ) {
+ KMessageBox::information( 0, i18n("ERROR:\nConnection to remote host timed out "));
+ mTimerCommandSocket->stop();
+ }
+ qDebug("MainWindow::deletemCommandSocket() ");
+ delete mCommandSocket;
+ mCommandSocket = 0;
+}
+void MainWindow::deleteCommandSocketFinish()
+{
+ if ( ! mCommandSocketFinish)
+ return;
+ //KMessageBox::information( 0, i18n("MainWindow::deleteCommandSocketFinish() "));
+ qDebug("MainWindow::deletemCommandSocketFinish() ");
+ delete mCommandSocketFinish;
+ mCommandSocketFinish = 0;
+}
void MainWindow::readFileFromSocket()
{
+ mTimerCommandSocket->stop();
setCaption( i18n("Receiving remote file ...") );
- qDebug("MainWindow::readFileFromSocket() ");
+ qDebug("MainWindow::readFileFromSocket() ");
QString fileName;
#ifdef _WIN32_
@@ -2153,4 +2182,6 @@ void MainWindow::readFileFromSocket()
file.close();
mCommandSocket->close();
+ if ( mCommandSocket->state() == QSocket::Idle )
+ deleteCommandSocket();
// pending: deleting after signal SIGNAL(delayedCloseFinished())
//delete mCommandSocket;
@@ -2172,5 +2203,5 @@ void MainWindow::readFileFromSocket()
KOPrefs::instance()->mWriteBackInFuture = temp->getWriteBackFutureWeeks( );
KOPrefs::instance()->mShowSyncSummary = temp->getShowSummaryAfterSync();
-
+ delete temp;
setCaption( i18n("Remote file saved to temp file.") );
if ( ! syncWithFile( fileName , true ) ) {
@@ -2181,5 +2212,6 @@ void MainWindow::readFileFromSocket()
if ( !mCommandSocketFinish ) {
- mCommandSocketFinish = new QSocket( this );
+ mCommandSocketFinish = new QSocket( this );
+ connect( mCommandSocketFinish, SIGNAL(delayedCloseFinished ()), this, SLOT(deleteCommandSocketFinish()) );
}
mCommandSocketFinish->connectToHost( KOPrefs::instance()->mActiveSyncIP, KOPrefs::instance()->mActiveSyncPort.toUInt() );
@@ -2201,5 +2233,5 @@ void MainWindow::readFileFromSocket()
//os.setEncoding( QTextStream::UnicodeUTF8 );
if ( KOPrefs::instance()->mWriteBackFile ) {
- os2 << "PUT\r\n";
+ os2 << "PUT " << mPassWordPiSync << "\r\n";;
while ( ! ts2.atEnd() ) {
os2 << ts2.readLine() << "\n";
@@ -2209,10 +2241,9 @@ void MainWindow::readFileFromSocket()
}
mCommandSocketFinish->close();
+ if ( mCommandSocketFinish->state() == QSocket::Idle )
+ deleteCommandSocketFinish();
file.close();
- // pending: deleting after signal SIGNAL(delayedCloseFinished())
- //delete ( mCommandSocket);
- //mCommandSocket = 0;
qDebug("Syncing succesful! ");
- setCaption( i18n("Easy-Pi-Sync succesful!") );
+ setCaption( i18n("Pi-Sync succesful!") );
@@ -2497,8 +2528,8 @@ void MainWindow::printCal()
-KServerSocket:: KServerSocket ( Q_UINT16 port, int backlog, QObject * parent, const char * name ) : QServerSocket( port, backlog, parent, name )
+KServerSocket:: KServerSocket ( QString pw, Q_UINT16 port, int backlog, QObject * parent, const char * name ) : QServerSocket( port, backlog, parent, name )
{
-
- mSocket = 0;
+ mPassWord = pw;
+ mSocket = 0;
};
@@ -2538,8 +2569,18 @@ void KServerSocket::readClient()
qDebug("KServerSocket socket->canReadLine()");
if ( tokens[0] == "GET" ) {
- emit sendFile( mSocket );
+ if ( tokens[1] == mPassWord )
+ emit sendFile( mSocket );
+ 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" ) {
- emit getFile( mSocket );
+ if ( tokens[1] == mPassWord )
+ emit getFile( mSocket );
+ 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" ) {
diff --git a/korganizer/mainwindow.h b/korganizer/mainwindow.h
index cc656a3..d217578 100644
--- a/korganizer/mainwindow.h
+++ b/korganizer/mainwindow.h
@@ -5,4 +5,7 @@
#include <qtimer.h>
#include <qdict.h>
+#include <qfile.h>
+#include <qsocket.h>
+#include <qtextstream.h>
#include <qregexp.h>
@@ -28,5 +31,5 @@ class KServerSocket : public QServerSocket
public:
- KServerSocket ( Q_UINT16 port, int backlog = 0, QObject * parent=0, const char * name=0 );
+ KServerSocket ( QString password, Q_UINT16 port, int backlog = 0, QObject * parent=0, const char * name=0 );
void newConnection ( int socket ) ;
@@ -41,4 +44,5 @@ private slots:
private :
QSocket* mSocket;
+ QString mPassWord;
};
@@ -115,10 +119,18 @@ class MainWindow : public QMainWindow
private slots:
+ QSocket* piSocket;
+ QString piFileString;
+ QTime piTime;
+ void deleteCommandSocket();
+ void deleteCommandSocketFinish();
void fillSyncMenu();
void sendFile(QSocket* s);
void getFile(QSocket* socket);
void readFileFromSocket();
+ void readBackFileFromSocket();
void endConnect();
private:
+ QTimer* mTimerCommandSocket;
+ QString mPassWordPiSync;
QSocket* mCommandSocket;
QSocket* mCommandSocketFinish;