summaryrefslogtreecommitdiffabout
path: root/korganizer/mainwindow.cpp
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 /korganizer/mainwindow.cpp
parentaaea91151fe9a747e9eddfb8ba7d5896744faf30 (diff)
downloadkdepimpi-743f44c45534a6e1df17ddc7b5f3c62b73921455.zip
kdepimpi-743f44c45534a6e1df17ddc7b5f3c62b73921455.tar.gz
kdepimpi-743f44c45534a6e1df17ddc7b5f3c62b73921455.tar.bz2
sync fixes
Diffstat (limited to 'korganizer/mainwindow.cpp') (more/less context) (ignore whitespace changes)
-rw-r--r--korganizer/mainwindow.cpp181
1 files changed, 111 insertions, 70 deletions
diff --git a/korganizer/mainwindow.cpp b/korganizer/mainwindow.cpp
index 7bf33d3..8e2f956 100644
--- a/korganizer/mainwindow.cpp
+++ b/korganizer/mainwindow.cpp
@@ -9,129 +9,131 @@
#include <qlineedit.h>
#include <qtextcodec.h>
#include <qfile.h>
#include <qdir.h>
#include <qapp.h>
#include <qfileinfo.h>
#include <qlabel.h>
#include <qmap.h>
#include <qwmatrix.h>
#include <qtextbrowser.h>
#include <qtextstream.h>
#ifndef DESKTOP_VERSION
#include <qpe/global.h>
#include <qpe/qpemenubar.h>
#include <qpe/qpetoolbar.h>
#include <qpe/resource.h>
#include <qpe/qpeapplication.h>
#include <qtopia/alarmserver.h>
#include <qtopia/qcopenvelope_qws.h>
#include <unistd.h> // for sleep
#else
#include <qmenubar.h>
#include <qtoolbar.h>
#include <qapplication.h>
//#include <resource.h>
#endif
#include <libkcal/calendarlocal.h>
#include <libkcal/todo.h>
#include <libkdepim/ksyncprofile.h>
#include <libkcal/kincidenceformatter.h>
#include <libkdepim/kpimglobalprefs.h>
#include "calendarview.h"
#include "koviewmanager.h"
#include "datenavigator.h"
#include "koagendaview.h"
#include "koagenda.h"
#include "kodialogmanager.h"
#include "kdialogbase.h"
#include "kapplication.h"
#include "kofilterview.h"
#include "kstandarddirs.h"
#include "koprefs.h"
#include "kfiledialog.h"
#include "koglobals.h"
#include "kglobal.h"
#include "klocale.h"
#include "kconfig.h"
#include "simplealarmclient.h"
#include "externalapphandler.h"
using namespace KCal;
#ifndef _WIN32_
#include <unistd.h>
#else
#include "koimportoldialog.h"
#endif
#include "mainwindow.h"
int globalFlagBlockStartup;
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 );
#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();
KPimGlobalPrefs::instance()->setGlobalConfig();
// if ( QApplication::desktop()->height() > 480 ) {
// if ( p->mHourSize == 4 )
// p->mHourSize = 6;
// }
if ( p->mHourSize > 18 )
p->mHourSize = 18;
QMainWindow::ToolBarDock tbd;
if ( p->mToolBarHor ) {
if ( p->mToolBarUp )
tbd = Bottom;
else
tbd = Top;
}
else {
if ( p->mToolBarUp )
tbd = Right;
else
tbd = Left;
}
if ( KOPrefs::instance()->mUseAppColors )
QApplication::setPalette( QPalette (KOPrefs::instance()->mAppColor1, KOPrefs::instance()->mAppColor2), true );
globalFlagBlockStartup = 1;
iconToolBar = new QPEToolBar( this );
addToolBar (iconToolBar , tbd );
mBlockSaveFlag = false;
mCalendarModifiedFlag = false;
QLabel* splash = new QLabel(i18n("KO/Pi is starting ... "), this );
splash->setAlignment ( AlignCenter );
setCentralWidget( splash );
#ifndef DESKTOP_VERSION
showMaximized();
#endif
//qDebug("Mainwidget x %d y %d w %d h %d", x(), y(), width(), height ());
setDefaultPreferences();
mCalendar = new CalendarLocal();
mView = new CalendarView( mCalendar, this,"mCalendar " );
mView->hide();
//mView->resize(splash->size() );
initActions();
#ifndef DESKTOP_VERSION
iconToolBar->show();
qApp->processEvents();
#endif
//qDebug("Splashwidget x %d y %d w %d h %d", splash-> x(), splash->y(), splash->width(),splash-> height ());
int vh = height() ;
@@ -1828,453 +1830,482 @@ void MainWindow::importIcal()
if ( fn == "" )
return;
importFile( fn, true );
}
void MainWindow::exportVCalendar()
{
QString fn = KOPrefs::instance()->mLastVcalFile;
fn = KFileDialog::getSaveFileName( fn, i18n("Export vcal filename(*.vcs)"), this );
if ( fn == "" )
return;
QFileInfo info;
info.setFile( fn );
QString mes;
bool createbup = true;
if ( info. exists() ) {
mes = i18n("Save file\nalready exists!\nOld save file from:\n%1\nOverwrite?\n").arg (KGlobal::locale()->formatDateTime(info.lastModified (), true, false ) );
int result = QMessageBox::warning( this, i18n("KO/Pi: Warning!"),mes,
i18n("Overwrite!"), i18n("Cancel"), 0,
0, 1 );
if ( result != 0 ) {
createbup = false;
}
}
if ( createbup ) {
if ( mView->exportVCalendar( fn ) ) {
KOPrefs::instance()->mLastVcalFile = fn;
if ( fn.length() > 20 )
mes = i18n("KO/Pi:Exported to ...%1").arg(fn.right(20)) ;
else
mes = i18n("KO/Pi:Exported to %1").arg(fn );
setCaption(mes);
}
}
}
QString MainWindow::getPassword( )
{
QString retfile = "";
QDialog dia ( this, "input-dialog", true );
QLineEdit lab ( &dia );
lab.setEchoMode( QLineEdit::Password );
QVBoxLayout lay( &dia );
lay.setMargin(7);
lay.setSpacing(7);
lay.addWidget( &lab);
dia.setFixedSize( 230,50 );
dia.setCaption( i18n("Enter password") );
QPushButton pb ( "OK", &dia);
lay.addWidget( &pb );
connect(&pb, SIGNAL( clicked() ), &dia, SLOT ( accept() ) );
dia.show();
int res = dia.exec();
if ( res )
retfile = lab.text();
dia.hide();
qApp->processEvents();
return retfile;
}
void MainWindow::enableQuick()
{
+ QString passWordPiSync = "bhdrvmk";
QString retfile = "";
QDialog dia ( this, "input-dialog", true );
QLineEdit lab ( &dia );
QVBoxLayout lay( &dia );
lab.setText( KOPrefs::instance()->mPassiveSyncPort );
lay.setMargin(7);
lay.setSpacing(7);
QLabel label ( i18n("Port number (Default: 9197)"), &dia );
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 );
connect(&pb, SIGNAL( clicked() ), &dia, SLOT ( accept() ) );
dia.show();
int res = dia.exec();
if ( res )
retfile = lab.text();
else
return;
dia.hide();
+ passWordPiSync = lepw.text();
qApp->processEvents();
KOPrefs::instance()->mPassiveSyncPort = retfile;
bool ok;
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() ) {
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*) ) );
}
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();
- qApp->processEvents();
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(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 ;
}
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()
{
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);
lay.setSpacing(7);
lay.addWidget( &lab);
QLabel label2 ( i18n("Port number (Default: 9197)"), &dia );
lay.addWidget( &label2);
QLineEdit lab2 ( &dia );
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 );
connect(&pb, SIGNAL( clicked() ), &dia, SLOT ( accept() ) );
dia.show();
int res = dia.exec();
if ( !res ) {
setCaption( i18n("Syncing cancelled!") );
return;
}
+ mPassWordPiSync = lepw.text();
dia.hide();
KOPrefs::instance()->mActiveSyncPort = lab2.text();
KOPrefs::instance()->mActiveSyncIP = lab.text();
qApp->processEvents();
performQuickQuick();
}
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;
}
if ( !mCommandSocket ) {
mCommandSocket = new QSocket( this );
// delete mCommandSocket;
//mCommandSocket = new QSocket( this );
connect( mCommandSocket, SIGNAL(readyRead()), this, SLOT(readFileFromSocket()) );
+ connect( mCommandSocket, SIGNAL(delayedCloseFinished ()), this, SLOT(deleteCommandSocket()) );
}
QString host = KOPrefs::instance()->mActiveSyncIP;
mCommandSocket->connectToHost( host, port );
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_
fileName = defaultFileName() +"sync";
#else
fileName = "/tmp/kopitempfile.ics";
#endif
QFile file( fileName );
if (!file.open( IO_WriteOnly ) ) {
setCaption( i18n("Error: Cannot open temp file for write.") );
qDebug("Error open temp calender file for writing: %s",fileName.latin1() );
return ;
}
//QTextStream os2( mCommandSocket );
//os2.setEncoding( QTextStream::UnicodeUTF8 );
QTextStream ts( &file );
ts.setCodec( QTextCodec::codecForName("utf8") );
bool first = true;
while ( mCommandSocket->canReadLine () || first) {
first = false;
while ( mCommandSocket->canReadLine () ) {
ts << mCommandSocket->readLine ();
}
QTime ti;
ti.start();
while ( ti.elapsed () < 5000 && !mCommandSocket->canReadLine () ) {
qApp->processEvents();
qDebug("waiting2 %d ",ti.elapsed () );
if ( !mCommandSocket->canReadLine () )
mCommandSocket->waitForMore ( 100 );
}
//mCommandSocket->waitForMore ( 5000 );
}
file.close();
mCommandSocket->close();
+ if ( mCommandSocket->state() == QSocket::Idle )
+ deleteCommandSocket();
// pending: deleting after signal SIGNAL(delayedCloseFinished())
//delete mCommandSocket;
setCaption( i18n("Remote file saved to temp file.") );
//mCommandSocket = 0;
mCurrentSyncProfile = 2 ; // last file
mView->setSyncDevice(KOPrefs::instance()->mSyncProfileNames[mCurrentSyncProfile] );
mView->setSyncName( KOPrefs::instance()->mLocalMachineName );
KConfig config ( locateLocal( "config","ksyncprofilesrc" ) );
KSyncProfile* temp = new KSyncProfile ();
temp->setName(KOPrefs::instance()->mSyncProfileNames[mCurrentSyncProfile]);
temp->readConfig(&config);
KOPrefs::instance()->mAskForPreferences = temp->getAskForPreferences();
KOPrefs::instance()->mSyncAlgoPrefs = temp->getSyncPrefs();
KOPrefs::instance()->mWriteBackFile = temp->getWriteBackFile();
KOPrefs::instance()->mWriteBackExistingOnly = temp->getWriteBackExisting();
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 );
+ mCommandSocketFinish = new QSocket( this );
+ connect( mCommandSocketFinish, SIGNAL(delayedCloseFinished ()), this, SLOT(deleteCommandSocketFinish()) );
}
mCommandSocketFinish->connectToHost( KOPrefs::instance()->mActiveSyncIP, KOPrefs::instance()->mActiveSyncPort.toUInt() );
// pending connect signals connected () and error to new slots
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 ;
}
setCaption( i18n("Sending back synced file...") );
QTextStream ts2( &file2 );
ts2.setCodec( QTextCodec::codecForName("utf8") );
QTextStream os2( mCommandSocketFinish );
os2.setCodec( QTextCodec::codecForName("utf8") );
//os.setEncoding( QTextStream::UnicodeUTF8 );
if ( KOPrefs::instance()->mWriteBackFile ) {
- os2 << "PUT\r\n";
+ os2 << "PUT " << mPassWordPiSync << "\r\n";;
while ( ! ts2.atEnd() ) {
os2 << ts2.readLine() << "\n";
}
} else {
os2 << "STOP\r\n";
}
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!") );
}
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 ) ) {
// Event* e = mView->getLastSyncEvent();
// e->setReadOnly( false );
// e->setLocation( i18n("Local file: ")+ KOPrefs::instance()->mLastSyncedLocalFile);
// e->setReadOnly( true );
}
}
bool MainWindow::syncWithFile( QString fn , bool quick )
{
bool ret = false;
QFileInfo info;
info.setFile( fn );
QString mess;
bool loadbup = true;
if ( !info. exists() ) {
mess = i18n( "Sync file \n...%1\ndoes not exist!\nNothing synced!\n").arg(fn.right( 30) );
int result = QMessageBox::warning( this, i18n("KO/Pi: Warning!"),
mess );
return ret;
}
int result = 0;
if ( !quick ) {
mess = i18n("Sync with file \n...%1\nfrom:\n%2\n").arg(fn.right( 25)).arg(KGlobal::locale()->formatDateTime(info.lastModified (), true, false ));
result = QMessageBox::warning( this, i18n("KO/Pi: Warning!"),
mess,
i18n("Sync"), i18n("Cancel"), 0,
0, 1 );
if ( result )
return false;
}
if ( KOPrefs::instance()->mAskForPreferences )
mView->edit_sync_options();
if ( result == 0 ) {
//qDebug("Now sycing ... ");
if ( ret = mView->syncCalendar( fn, KOPrefs::instance()->mSyncAlgoPrefs ) )
setCaption( i18n("Synchronization successful") );
else
setCaption( i18n("Sync cancelled or failed. Nothing synced.") );
if ( ! quick )
KOPrefs::instance()->mLastSyncedLocalFile = fn;
slotModifiedChanged( true );
}
return ret;
}
void MainWindow::quickSyncLocalFile()
{
//mView->setSyncDevice("local-file" );
//qDebug("quickSyncLocalFile() ");
if ( syncWithFile( KOPrefs::instance()->mLastSyncedLocalFile, false ) ) {
@@ -2435,127 +2466,137 @@ void MainWindow::syncSSH()
result = system ( command );
if ( result != 0 ) {
int len = maxlen;
while ( len < command.length() ) {
command.insert( len , "\n" );
len += maxlen +2;
}
question = i18n("Sorry, the copy back command failed!\nCommand was:\n%1\n \nTry command on console to get more\ndetailed info about the reason.\n").arg (command) ;
QMessageBox::information( this, i18n("KO/Pi Sync - ERROR"),
question,
i18n("Okay!")) ;
setCaption ("KO/Pi");
return;
} else {
setCaption ( i18n( "Syncronization sucessfully completed" ) );
}
}
}
return;
#if 0
system ("scp zaurus@192.168.0.65:/home/zaurus/Applications/korganizer/mycalendar.ics /home/polo/Applications/korganizer/z_sync.ics");
while ( timer.elapsed() < 5000 )
qApp->processEvents();
qDebug("MainWindow::merging) ");
mView->syncCalendar( "/home/polo/Applications/korganizer/z_sync.ics", 0 );
while ( mBlockSaveFlag )
qApp->processEvents();
save();
system ("scp /home/polo/Applications/korganizer/mycalendar.ics zaurus@192.168.0.65:/home/zaurus/Applications/korganizer/mycalendar.ics");
#endif
}
void MainWindow::syncSharp()
{
if ( mCalendarModifiedFlag )
save();
mView->syncSharp();
slotModifiedChanged( true );
}
void MainWindow::syncPhone()
{
if ( mCalendarModifiedFlag )
save();
mView->syncPhone();
slotModifiedChanged( true );
}
void MainWindow::printSel( )
{
mView->viewManager()->agendaView()->agenda()->printSelection();
}
void MainWindow::printCal()
{
mView->print();//mCp->showDialog();
}
-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;
};
void KServerSocket::newConnection ( int socket )
{
qDebug("KServerSocket:New connection %d ", socket);
if ( mSocket ) {
qDebug("KServerSocket::newConnection Socket deleted! ");
delete mSocket;
mSocket = 0;
}
mSocket = new QSocket( this );
connect( mSocket , SIGNAL(readyRead()), this, SLOT(readClient()) );
connect( mSocket , SIGNAL(delayedCloseFinished()), this, SLOT(discardClient()) );
mSocket->setSocket( socket );
}
void KServerSocket::discardClient()
{
qDebug(" KServerSocket::discardClient()");
if ( mSocket ) {
qDebug("delete ");
delete mSocket;
mSocket = 0;
}
//emit endConnect();
}
void KServerSocket::readClient()
{
if ( mSocket == 0 ) {
qDebug("ERROR::KServerSocket::readClient(): mSocket == 0 ");
return;
}
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" ) {
- 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" ) {
emit endConnect();
}
}
}