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.cpp236
1 files changed, 73 insertions, 163 deletions
diff --git a/korganizer/mainwindow.cpp b/korganizer/mainwindow.cpp
index da73caf..bce2a54 100644
--- a/korganizer/mainwindow.cpp
+++ b/korganizer/mainwindow.cpp
@@ -65,26 +65,24 @@ using namespace KCal;
#include "koimportoldialog.h"
#endif
#include "mainwindow.h"
int globalFlagBlockStartup;
MainWindow::MainWindow( QWidget *parent, const char *name, QString msg) :
QMainWindow( parent, name )
{
mPassWordPiSync = "abc";
#ifdef DESKTOP_VERSION
setFont( QFont("Arial"), 14 );
#endif
- mCommandSocket = 0;
- mCommandSocketFinish = 0;
mSyncActionDialog = 0;
mServerSocket = 0;
mClosed = false;
//QString confFile = KStandardDirs::appDir() + "config/korganizerrc";
QString confFile = locateLocal("config","korganizerrc");
QFileInfo finf ( confFile );
bool showWarning = !finf.exists();
setIcon(SmallIcon( "ko24" ) );
mBlockAtStartup = true;
mFlagKeyPressed = false;
setCaption("KOrganizer/Pi");
KOPrefs *p = KOPrefs::instance();
@@ -1933,142 +1931,39 @@ void MainWindow::enableQuick()
qDebug("connected ");
if ( !mServerSocket->ok() ) {
qWarning("Failed to bind to port %d", port);
delete mServerSocket;
mServerSocket = 0;
return;
}
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 )
- delete mSyncActionDialog;
- mSyncActionDialog = new QDialog ( this, "input-dialog", true );
- mSyncActionDialog->setCaption(i18n("KO/Pi - WARNING"));
- QLabel* label = new QLabel( i18n("Synchronizing...\nDo not use\nthis application!\n"), mSyncActionDialog );
- QVBoxLayout* lay = new QVBoxLayout( mSyncActionDialog );
- lay->addWidget( label);
- lay->setMargin(7);
- lay->setSpacing(7);
- mSyncActionDialog->setFixedSize( 200,100 );
- mSyncActionDialog->show();
- qDebug("saving ... ");
- save();
- qApp->processEvents();
- QString fileName = defaultFileName();
- QFile file( fileName );
- if (!file.open( IO_ReadOnly ) ) {
- setCaption( i18n("Error open file") );
- delete mSyncActionDialog;
- mSyncActionDialog = 0;
- qDebug("error open cal file ");
- return ;
-
- }
- setCaption( i18n("Sending file...") );
- QTextStream ts( &file );
- ts.setCodec( QTextCodec::codecForName("utf8") );
- QTextStream os( socket );
- os.setCodec( QTextCodec::codecForName("utf8") );
- //os.setEncoding( QTextStream::UnicodeUTF8 );
- while ( ! ts.atEnd() ) {
- os << ts.readLine() << "\n";
- }
- //os << ts.read();
- socket->close();
- file.close();
- setCaption( i18n("File sent. Waiting to get back synced file") );
- qDebug("file sent ");
-}
+
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 () ) {
- 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 );
- if (!file.open( IO_WriteOnly ) ) {
- setCaption( i18n("Error open file for writing!") );
- delete mSyncActionDialog;
- mSyncActionDialog = 0;
- qDebug("error open cal file ");
- piFileString = "";
- return ;
-
- }
-
- mView->setLoadedFileVersion(QDateTime::currentDateTime().addSecs( -1));
- QTextStream ts ( &file );
- ts.setCodec( QTextCodec::codecForName("utf8") );
- qDebug("finish ");
- setCaption( i18n("Writing file to disk...") );
- ts << piFileString;
- setCaption( i18n("File received - reloading calendar...") );
- piSocket->close();
- file.close();
- mView->watchSavedFile();
- mView->openCalendar( defaultFileName() );
- setCaption( i18n("Pi-Sync successful!") );
- delete mSyncActionDialog;
- mSyncActionDialog = 0;
- piFileString = "";
-
-}
-void MainWindow::endConnect()
-{
- setCaption( i18n("No file received - syncing successful") );
- delete mSyncActionDialog;
- mSyncActionDialog = 0;
-}
void MainWindow::performQuick()
{
setCaption( i18n("Please input connection settings") );
QString retfile = "";
QDialog dia ( this, "input-dialog", true );
QLineEdit lab ( &dia );
QVBoxLayout lay( &dia );
QLabel label ( i18n("IP address\n(Example: 192.168.0.40)"), &dia );
lay.addWidget( &label);
lab.setText( KOPrefs::instance()->mActiveSyncIP );
lay.setMargin(7);
@@ -2106,54 +2001,58 @@ void MainWindow::performQuick()
}
void MainWindow::performQuickQuick()
{
// setCaption( i18n("") );
bool ok;
Q_UINT16 port = KOPrefs::instance()->mActiveSyncPort.toUInt(&ok);
if ( ! ok ) {
setCaption( i18n("Sorry, no valid port.Syncing cancelled.") );
return;
}
- mCommandSocket = new KCommandSocket( mPassWordPiSync, port, KOPrefs::instance()->mActiveSyncIP, this );
- connect( mCommandSocket, SIGNAL(commandFinished( bool )), this, SLOT(deleteCommandSocket(bool)) );
+ KCommandSocket* commandSocket = new KCommandSocket( mPassWordPiSync, port, KOPrefs::instance()->mActiveSyncIP, this );
+ connect( commandSocket, SIGNAL(commandFinished( KCommandSocket*, bool )), this, SLOT(deleteCommandSocket(KCommandSocket*,bool)) );
setCaption( i18n("Sending request for remote file ...") );
QString fileName;
#ifdef _WIN32_
fileName = defaultFileName() +"sync";
#else
fileName = "/tmp/kopitempfile.ics";
#endif
- mCommandSocket->readFile( fileName );
+ commandSocket->readFile( fileName );
}
-void MainWindow::deleteCommandSocket( bool success)
+void MainWindow::deleteCommandSocket(KCommandSocket*s, bool success)
{
if ( ! success ) {
setCaption( i18n("ERROR:Receiving remote file failed.") );
+ delete s;
// pending : send stop
return;
}
QTimer::singleShot( 1, this , SLOT ( readFileFromSocket()));
- delete mCommandSocket;
+ qDebug("MainWindow::deleteCommandSocket ");
+ delete s;
}
-void MainWindow::deleteCommandSocketFinish()
+void MainWindow::deleteCommandSocketFinish(KCommandSocket* s, bool success )
{
- if ( ! mCommandSocketFinish)
- return;
- // KMessageBox::information( 0, i18n("MainWindow::deleteCommandSocketFinish() "));
- qDebug("MainWindow::deletemCommandSocketFinish() ");
- delete mCommandSocketFinish;
- mCommandSocketFinish = 0;
+ if ( ! success ) {
+ setCaption( i18n("ERROR:Writing back file failed.") );
+ } else {
+ qDebug("Syncing succesful! ");
+ setCaption( i18n("Pi-Sync succesful!") );
+ }
+ qDebug("MainWindow::deleteCommandSocketFinish ");
+ delete s;
}
void MainWindow::readFileFromSocket()
{
// mTimerCommandSocket->stop();
setCaption( i18n("Receiving remote file ...") );
qDebug("MainWindow::readFileFromSocket() ");
QString fileName;
#ifdef _WIN32_
fileName = defaultFileName() +"sync";
#else
fileName = "/tmp/kopitempfile.ics";
#endif
@@ -2174,61 +2073,30 @@ void MainWindow::readFileFromSocket()
KOPrefs::instance()->mWriteBackInFuture = 0;
if ( temp->getWriteBackFuture() )
KOPrefs::instance()->mWriteBackInFuture = temp->getWriteBackFutureWeeks( );
KOPrefs::instance()->mShowSyncSummary = temp->getShowSummaryAfterSync();
delete temp;
setCaption( i18n("Remote file saved to temp file.") );
if ( ! syncWithFile( fileName , true ) ) {
setCaption( i18n("Syncing failed.") );
qDebug("Syncing failed ");
return;
}
- if ( !mCommandSocketFinish ) {
- mCommandSocketFinish = new QSocket( this );
- connect( mCommandSocketFinish, SIGNAL(delayedCloseFinished ()), this, SLOT(deleteCommandSocketFinish()) );
- }
- mCommandSocketFinish->connectToHost( KOPrefs::instance()->mActiveSyncIP, KOPrefs::instance()->mActiveSyncPort.toUInt() );
-
- QString host = KOPrefs::instance()->mActiveSyncIP;
- QFile file2( fileName );
- if (!file2.open( IO_ReadOnly ) ) {
- setCaption( i18n("Error: Cannot open temp file for read.") );
- qDebug("error open cal file ");
- return ;
-
- }
- QTextStream ts2( &file2 );
- ts2.setCodec( QTextCodec::codecForName("utf8") );
- QTextStream os2( mCommandSocketFinish );
- os2.setCodec( QTextCodec::codecForName("utf8") );
- //os.setEncoding( QTextStream::UnicodeUTF8 );
- if ( KOPrefs::instance()->mWriteBackFile ) {
- setCaption( i18n("Sending back synced file...") );
- os2 << "PUT " << mPassWordPiSync << "\r\n";;
- while ( ! ts2.atEnd() ) {
- os2 << ts2.readLine() << "\n";
- }
- } else {
- os2 << "STOP\r\n";
- }
- mCommandSocketFinish->close();
- if ( mCommandSocketFinish->state() == QSocket::Idle )
- QTimer::singleShot( 10, this , SLOT ( deleteCommandSocketFinish()));
- file2.close();
- qDebug("Syncing succesful! ");
- setCaption( i18n("Pi-Sync succesful!") );
-
- // KMessageBox::information( 0, i18n(" Pi-Sync succesful! "));
-
+ KCommandSocket* commandSocket = new KCommandSocket( mPassWordPiSync, KOPrefs::instance()->mActiveSyncPort.toUInt(), KOPrefs::instance()->mActiveSyncIP, this );
+ connect( commandSocket, SIGNAL(commandFinished( KCommandSocket*, bool )), this, SLOT(deleteCommandSocketFinish(KCommandSocket*,bool)) );
+ if ( KOPrefs::instance()->mWriteBackFile )
+ commandSocket->writeFile( fileName );
+ else
+ commandSocket->sendStop();
}
void MainWindow::syncLocalFile()
{
QString fn =KOPrefs::instance()->mLastSyncedLocalFile;
fn =KFileDialog:: getOpenFileName( fn, i18n("Sync filename(*.ics/*.vcs)"), this );
if ( fn == "" )
return;
//mView->setSyncDevice("local-file" );
if ( syncWithFile( fn, false ) ) {
@@ -2551,29 +2419,34 @@ void KServerSocket::readClient()
}
}
if ( tokens[0] == "PUT" ) {
if ( tokens[1] == mPassWord )
//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();
+ //emit endConnect();
+ end_connect();
}
}
}
-
+void KServerSocket::end_connect()
+{
+ delete mSyncActionDialog;
+ mSyncActionDialog = 0;
+}
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);
@@ -2686,28 +2559,66 @@ void KCommandSocket::readFile( QString fn )
connect( mSocket, SIGNAL(delayedCloseFinished ()), this, SLOT(deleteSocket()) );
}
mFileString = "";
mFileName = fn;
mFirst = true;
mSocket->connectToHost( mHost, mPort );
QTextStream os( mSocket );
os.setEncoding( QTextStream::UnicodeUTF8 );
os << "GET " << mPassWord << "\r\n";
mTimerSocket->start( 10000 );
}
-void KCommandSocket::writeFile( QString )
+void KCommandSocket::writeFile( QString fileName )
{
+ QFile file2( fileName );
+ if (!file2.open( IO_ReadOnly ) ) {
+ mRetVal= false;
+ deleteSocket();
+ return ;
+
+ }
+ if ( !mSocket ) {
+ mSocket = new QSocket( this );
+ connect( mSocket, SIGNAL(delayedCloseFinished ()), this, SLOT(deleteSocket()) );
+ }
+ QTextStream ts2( &file2 );
+ ts2.setCodec( QTextCodec::codecForName("utf8") );
+ QTextStream os2( mSocket );
+ os2.setCodec( QTextCodec::codecForName("utf8") );
+ os2 << "PUT " << mPassWord << "\r\n";;
+ while ( ! ts2.atEnd() ) {
+ os2 << ts2.readLine() << "\n";
+ }
+ mSocket->close();
+ if ( mSocket->state() == QSocket::Idle )
+ QTimer::singleShot( 10, this , SLOT ( deleteSocket()));
+ file2.close();
+}
+void KCommandSocket::sendStop()
+{
+ if ( !mSocket ) {
+ mSocket = new QSocket( this );
+ connect( mSocket, SIGNAL(delayedCloseFinished ()), this, SLOT(deleteSocket()) );
+ }
+ QTextStream os2( mSocket );
+ os2.setCodec( QTextCodec::codecForName("utf8") );
+ os2 << "STOP\r\n";
+ mRetVal= true;
+ mSocket->close();
+ if ( mSocket->state() == QSocket::Idle )
+ QTimer::singleShot( 10, this , SLOT ( deleteSocket()));
}
+
void KCommandSocket::startReadFileFromSocket()
{
if ( ! mFirst )
return;
mFirst = false;
mTimerSocket->stop();
mFileString = "";
mTime.start();
QTimer::singleShot( 1, this , SLOT (readFileFromSocket( ) ));
}
void KCommandSocket::readFileFromSocket()
@@ -2743,25 +2654,24 @@ void KCommandSocket::readFileFromSocket()
file.close();
mFileString = "";
mRetVal = true;
mSocket->close();
// if state is not idle, deleteSocket(); is called via
// connect( mSocket, SIGNAL(delayedCloseFinished ()), this, SLOT(deleteSocket()) );
if ( mSocket->state() == QSocket::Idle )
deleteSocket();
}
void KCommandSocket::deleteSocket()
{
- if ( !mSocket)
- return;
if ( mTimerSocket->isActive () ) {
mTimerSocket->stop();
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;
+ qDebug("KCommandSocket::deleteSocket() %d", mRetVal );
+ if ( mSocket)
+ delete mSocket;
mSocket = 0;
- emit commandFinished( mRetVal );
+ emit commandFinished( this, mRetVal );
}