summaryrefslogtreecommitdiffabout
path: root/korganizer
Unidiff
Diffstat (limited to 'korganizer') (more/less context) (ignore whitespace changes)
-rw-r--r--korganizer/mainwindow.cpp178
-rw-r--r--korganizer/mainwindow.h34
2 files changed, 142 insertions, 70 deletions
diff --git a/korganizer/mainwindow.cpp b/korganizer/mainwindow.cpp
index 10cb2a2..e4b7869 100644
--- a/korganizer/mainwindow.cpp
+++ b/korganizer/mainwindow.cpp
@@ -62,26 +62,24 @@ using namespace KCal;
62#ifndef _WIN32_ 62#ifndef _WIN32_
63#include <unistd.h> 63#include <unistd.h>
64#else 64#else
65#include "koimportoldialog.h" 65#include "koimportoldialog.h"
66#endif 66#endif
67#include "mainwindow.h" 67#include "mainwindow.h"
68 68
69int globalFlagBlockStartup; 69int globalFlagBlockStartup;
70MainWindow::MainWindow( QWidget *parent, const char *name, QString msg) : 70MainWindow::MainWindow( QWidget *parent, const char *name, QString msg) :
71 QMainWindow( parent, name ) 71 QMainWindow( parent, name )
72{ 72{
73 mPassWordPiSync = "abc"; 73 mPassWordPiSync = "abc";
74 mTimerCommandSocket = new QTimer ( this );
75 connect( mTimerCommandSocket, SIGNAL ( timeout () ), this, SLOT ( deleteCommandSocket() ) );
76#ifdef DESKTOP_VERSION 74#ifdef DESKTOP_VERSION
77 setFont( QFont("Arial"), 14 ); 75 setFont( QFont("Arial"), 14 );
78#endif 76#endif
79 mCommandSocket = 0; 77 mCommandSocket = 0;
80 mCommandSocketFinish = 0; 78 mCommandSocketFinish = 0;
81 mSyncActionDialog = 0; 79 mSyncActionDialog = 0;
82 mServerSocket = 0; 80 mServerSocket = 0;
83 mClosed = false; 81 mClosed = false;
84 //QString confFile = KStandardDirs::appDir() + "config/korganizerrc"; 82 //QString confFile = KStandardDirs::appDir() + "config/korganizerrc";
85 QString confFile = locateLocal("config","korganizerrc"); 83 QString confFile = locateLocal("config","korganizerrc");
86 QFileInfo finf ( confFile ); 84 QFileInfo finf ( confFile );
87 bool showWarning = !finf.exists(); 85 bool showWarning = !finf.exists();
@@ -2094,107 +2092,67 @@ void MainWindow::performQuick()
2094} 2092}
2095 2093
2096void MainWindow::performQuickQuick() 2094void MainWindow::performQuickQuick()
2097{ 2095{
2098 // setCaption( i18n("") ); 2096 // setCaption( i18n("") );
2099 2097
2100 bool ok; 2098 bool ok;
2101 Q_UINT16 port = KOPrefs::instance()->mActiveSyncPort.toUInt(&ok); 2099 Q_UINT16 port = KOPrefs::instance()->mActiveSyncPort.toUInt(&ok);
2102 if ( ! ok ) { 2100 if ( ! ok ) {
2103 setCaption( i18n("Sorry, no valid port.Syncing cancelled.") ); 2101 setCaption( i18n("Sorry, no valid port.Syncing cancelled.") );
2104 return; 2102 return;
2105 } 2103 }
2106 if ( !mCommandSocket ) { 2104 mCommandSocket = new KCommandSocket( mPassWordPiSync, port, KOPrefs::instance()->mActiveSyncIP, this );
2107 mCommandSocket = new QSocket( this ); 2105 connect( mCommandSocket, SIGNAL(commandFinished( bool )), this, SLOT(deleteCommandSocket(bool)) );
2108 // delete mCommandSocket;
2109 //mCommandSocket = new QSocket( this );
2110 connect( mCommandSocket, SIGNAL(readyRead()), this, SLOT(readFileFromSocket()) );
2111 connect( mCommandSocket, SIGNAL(delayedCloseFinished ()), this, SLOT(deleteCommandSocket()) );
2112 }
2113 QString host = KOPrefs::instance()->mActiveSyncIP;
2114 mCommandSocket->connectToHost( host, port );
2115 QTextStream os( mCommandSocket );
2116 os.setEncoding( QTextStream::UnicodeUTF8 );
2117 os << "GET " << mPassWordPiSync << "\r\n";
2118 setCaption( i18n("Sending request for remote file ...") ); 2106 setCaption( i18n("Sending request for remote file ...") );
2119 mTimerCommandSocket->start( 10000 ); 2107 QString fileName;
2120 2108#ifdef _WIN32_
2109 fileName = defaultFileName() +"sync";
2110#else
2111 fileName = "/tmp/kopitempfile.ics";
2112#endif
2113 mCommandSocket->readFile( fileName );
2121} 2114}
2122void MainWindow::deleteCommandSocket() 2115void MainWindow::deleteCommandSocket( bool success)
2123{ 2116{
2124 if ( !mCommandSocket) 2117 if ( ! success ) {
2118 setCaption( i18n("ERROR:Receiving remote file failed.") );
2119 // pending : send stop
2125 return; 2120 return;
2126 if ( mTimerCommandSocket->isActive () ) { 2121
2127 KMessageBox::information( 0, i18n("ERROR:\nConnection to remote host timed out "));
2128 mTimerCommandSocket->stop();
2129 } 2122 }
2130 //KMessageBox::information( 0, i18n("MainWindow::deleteCommandSocket ")); 2123 QTimer::singleShot( 1, this , SLOT ( readFileFromSocket()));
2131 qDebug("MainWindow::deletemCommandSocket() "); 2124 delete mCommandSocket;
2132 delete mCommandSocket;
2133 mCommandSocket = 0;
2134} 2125}
2135void MainWindow::deleteCommandSocketFinish() 2126void MainWindow::deleteCommandSocketFinish()
2136{ 2127{
2137 if ( ! mCommandSocketFinish) 2128 if ( ! mCommandSocketFinish)
2138 return; 2129 return;
2139 // KMessageBox::information( 0, i18n("MainWindow::deleteCommandSocketFinish() ")); 2130 // KMessageBox::information( 0, i18n("MainWindow::deleteCommandSocketFinish() "));
2140 qDebug("MainWindow::deletemCommandSocketFinish() "); 2131 qDebug("MainWindow::deletemCommandSocketFinish() ");
2141 delete mCommandSocketFinish; 2132 delete mCommandSocketFinish;
2142 mCommandSocketFinish = 0; 2133 mCommandSocketFinish = 0;
2143} 2134}
2144void MainWindow::readFileFromSocket() 2135void MainWindow::readFileFromSocket()
2145{ 2136{
2146 mTimerCommandSocket->stop(); 2137 // mTimerCommandSocket->stop();
2147 setCaption( i18n("Receiving remote file ...") ); 2138 setCaption( i18n("Receiving remote file ...") );
2148 qDebug("MainWindow::readFileFromSocket() "); 2139 qDebug("MainWindow::readFileFromSocket() ");
2149 QString fileName; 2140 QString fileName;
2150#ifdef _WIN32_ 2141#ifdef _WIN32_
2151 fileName = defaultFileName() +"sync"; 2142 fileName = defaultFileName() +"sync";
2152#else 2143#else
2153 fileName = "/tmp/kopitempfile.ics"; 2144 fileName = "/tmp/kopitempfile.ics";
2154#endif 2145#endif
2155 QFile file( fileName ); 2146
2156 if (!file.open( IO_WriteOnly ) ) {
2157 setCaption( i18n("Error: Cannot open temp file for write.") );
2158 qDebug("Error open temp calender file for writing: %s",fileName.latin1() );
2159 return ;
2160 }
2161
2162 //QTextStream os2( mCommandSocket );
2163 //os2.setEncoding( QTextStream::UnicodeUTF8 );
2164
2165 QTextStream ts( &file );
2166 ts.setCodec( QTextCodec::codecForName("utf8") );
2167 bool first = true;
2168 while ( mCommandSocket->canReadLine () || first) {
2169 first = false;
2170 while ( mCommandSocket->canReadLine () ) {
2171 ts << mCommandSocket->readLine ();
2172 }
2173 QTime ti;
2174 ti.start();
2175 while ( ti.elapsed () < 3000 && !mCommandSocket->canReadLine () ) {
2176 qApp->processEvents();
2177 qDebug("waiting2 %d ",ti.elapsed () );
2178 if ( !mCommandSocket->canReadLine () )
2179 mCommandSocket->waitForMore ( 100 );
2180 }
2181 //mCommandSocket->waitForMore ( 5000 );
2182 }
2183 file.close();
2184 mCommandSocket->close();
2185 if ( mCommandSocket->state() == QSocket::Idle )
2186 deleteCommandSocket();
2187 // pending: deleting after signal SIGNAL(delayedCloseFinished())
2188 //delete mCommandSocket;
2189 setCaption( i18n("Remote file saved to temp file.") ); 2147 setCaption( i18n("Remote file saved to temp file.") );
2190 //mCommandSocket = 0; 2148 //mCommandSocket = 0;
2191 mCurrentSyncProfile = 2 ; // last file 2149 mCurrentSyncProfile = 2 ; // last file
2192 mView->setSyncDevice(KOPrefs::instance()->mSyncProfileNames[mCurrentSyncProfile] ); 2150 mView->setSyncDevice(KOPrefs::instance()->mSyncProfileNames[mCurrentSyncProfile] );
2193 mView->setSyncName( KOPrefs::instance()->mLocalMachineName ); 2151 mView->setSyncName( KOPrefs::instance()->mLocalMachineName );
2194 KConfig config ( locateLocal( "config","ksyncprofilesrc" ) ); 2152 KConfig config ( locateLocal( "config","ksyncprofilesrc" ) );
2195 KSyncProfile* temp = new KSyncProfile (); 2153 KSyncProfile* temp = new KSyncProfile ();
2196 temp->setName(KOPrefs::instance()->mSyncProfileNames[mCurrentSyncProfile]); 2154 temp->setName(KOPrefs::instance()->mSyncProfileNames[mCurrentSyncProfile]);
2197 temp->readConfig(&config); 2155 temp->readConfig(&config);
2198 KOPrefs::instance()->mAskForPreferences = temp->getAskForPreferences(); 2156 KOPrefs::instance()->mAskForPreferences = temp->getAskForPreferences();
2199 KOPrefs::instance()->mSyncAlgoPrefs = temp->getSyncPrefs(); 2157 KOPrefs::instance()->mSyncAlgoPrefs = temp->getSyncPrefs();
2200 KOPrefs::instance()->mWriteBackFile = temp->getWriteBackFile(); 2158 KOPrefs::instance()->mWriteBackFile = temp->getWriteBackFile();
@@ -2208,25 +2166,24 @@ void MainWindow::readFileFromSocket()
2208 if ( ! syncWithFile( fileName , true ) ) { 2166 if ( ! syncWithFile( fileName , true ) ) {
2209 setCaption( i18n("Syncing failed.") ); 2167 setCaption( i18n("Syncing failed.") );
2210 qDebug("Syncing failed "); 2168 qDebug("Syncing failed ");
2211 return; 2169 return;
2212 } 2170 }
2213 2171
2214 if ( !mCommandSocketFinish ) { 2172 if ( !mCommandSocketFinish ) {
2215 mCommandSocketFinish = new QSocket( this ); 2173 mCommandSocketFinish = new QSocket( this );
2216 connect( mCommandSocketFinish, SIGNAL(delayedCloseFinished ()), this, SLOT(deleteCommandSocketFinish()) ); 2174 connect( mCommandSocketFinish, SIGNAL(delayedCloseFinished ()), this, SLOT(deleteCommandSocketFinish()) );
2217 } 2175 }
2218 mCommandSocketFinish->connectToHost( KOPrefs::instance()->mActiveSyncIP, KOPrefs::instance()->mActiveSyncPort.toUInt() ); 2176 mCommandSocketFinish->connectToHost( KOPrefs::instance()->mActiveSyncIP, KOPrefs::instance()->mActiveSyncPort.toUInt() );
2219 2177
2220 // pending connect signals connected () and error to new slots
2221 QString host = KOPrefs::instance()->mActiveSyncIP; 2178 QString host = KOPrefs::instance()->mActiveSyncIP;
2222 QFile file2( fileName ); 2179 QFile file2( fileName );
2223 if (!file2.open( IO_ReadOnly ) ) { 2180 if (!file2.open( IO_ReadOnly ) ) {
2224 setCaption( i18n("Error: Cannot open temp file for read.") ); 2181 setCaption( i18n("Error: Cannot open temp file for read.") );
2225 qDebug("error open cal file "); 2182 qDebug("error open cal file ");
2226 return ; 2183 return ;
2227 2184
2228 } 2185 }
2229 QTextStream ts2( &file2 ); 2186 QTextStream ts2( &file2 );
2230 ts2.setCodec( QTextCodec::codecForName("utf8") ); 2187 ts2.setCodec( QTextCodec::codecForName("utf8") );
2231 QTextStream os2( mCommandSocketFinish ); 2188 QTextStream os2( mCommandSocketFinish );
2232 os2.setCodec( QTextCodec::codecForName("utf8") ); 2189 os2.setCodec( QTextCodec::codecForName("utf8") );
@@ -2234,25 +2191,25 @@ void MainWindow::readFileFromSocket()
2234 if ( KOPrefs::instance()->mWriteBackFile ) { 2191 if ( KOPrefs::instance()->mWriteBackFile ) {
2235 setCaption( i18n("Sending back synced file...") ); 2192 setCaption( i18n("Sending back synced file...") );
2236 os2 << "PUT " << mPassWordPiSync << "\r\n";; 2193 os2 << "PUT " << mPassWordPiSync << "\r\n";;
2237 while ( ! ts2.atEnd() ) { 2194 while ( ! ts2.atEnd() ) {
2238 os2 << ts2.readLine() << "\n"; 2195 os2 << ts2.readLine() << "\n";
2239 } 2196 }
2240 } else { 2197 } else {
2241 os2 << "STOP\r\n"; 2198 os2 << "STOP\r\n";
2242 } 2199 }
2243 mCommandSocketFinish->close(); 2200 mCommandSocketFinish->close();
2244 if ( mCommandSocketFinish->state() == QSocket::Idle ) 2201 if ( mCommandSocketFinish->state() == QSocket::Idle )
2245 QTimer::singleShot( 10, this , SLOT ( deleteCommandSocketFinish())); 2202 QTimer::singleShot( 10, this , SLOT ( deleteCommandSocketFinish()));
2246 file.close(); 2203 file2.close();
2247 qDebug("Syncing succesful! "); 2204 qDebug("Syncing succesful! ");
2248 setCaption( i18n("Pi-Sync succesful!") ); 2205 setCaption( i18n("Pi-Sync succesful!") );
2249 2206
2250 // KMessageBox::information( 0, i18n(" Pi-Sync succesful! ")); 2207 // KMessageBox::information( 0, i18n(" Pi-Sync succesful! "));
2251 2208
2252} 2209}
2253 2210
2254void MainWindow::syncLocalFile() 2211void MainWindow::syncLocalFile()
2255{ 2212{
2256 2213
2257 QString fn =KOPrefs::instance()->mLastSyncedLocalFile; 2214 QString fn =KOPrefs::instance()->mLastSyncedLocalFile;
2258 2215
@@ -2582,23 +2539,110 @@ void KServerSocket::readClient()
2582 emit getFile( mSocket ); 2539 emit getFile( mSocket );
2583 else { 2540 else {
2584 KMessageBox::information( 0, i18n("ERROR:\nGot receive file request\nwith invalid password")); 2541 KMessageBox::information( 0, i18n("ERROR:\nGot receive file request\nwith invalid password"));
2585 qDebug("password %s, invalid password %s ",mPassWord.latin1(), tokens[1].latin1() ); 2542 qDebug("password %s, invalid password %s ",mPassWord.latin1(), tokens[1].latin1() );
2586 } 2543 }
2587 } 2544 }
2588 if ( tokens[0] == "STOP" ) { 2545 if ( tokens[0] == "STOP" ) {
2589 emit endConnect(); 2546 emit endConnect();
2590 } 2547 }
2591 } 2548 }
2592} 2549}
2593 2550
2551KCommandSocket::KCommandSocket ( QString password, Q_UINT16 port, QString host, QObject * parent, const char * name ): QObject( parent, name )
2552{
2553 mPassWord = password;
2554 mSocket = 0;
2555 mPort = port;
2556 mHost = host;
2594 2557
2558 mRetVal = false;
2559 mTimerSocket = new QTimer ( this );
2560 connect( mTimerSocket, SIGNAL ( timeout () ), this, SLOT ( deleteSocket() ) );
2561}
2562void KCommandSocket::readFile( QString fn )
2563{
2564 if ( !mSocket ) {
2565 mSocket = new QSocket( this );
2566 connect( mSocket, SIGNAL(readyRead()), this, SLOT(startReadFileFromSocket()) );
2567 connect( mSocket, SIGNAL(delayedCloseFinished ()), this, SLOT(deleteSocket()) );
2568 }
2569 mFileString = "";
2570 mFileName = fn;
2571 mFirst = true;
2572 mSocket->connectToHost( mHost, mPort );
2573 QTextStream os( mSocket );
2574 os.setEncoding( QTextStream::UnicodeUTF8 );
2575 os << "GET " << mPassWord << "\r\n";
2576 mTimerSocket->start( 10000 );
2577}
2595 2578
2579void KCommandSocket::writeFile( QString )
2580{
2596 2581
2582}
2583void KCommandSocket::startReadFileFromSocket()
2584{
2585 if ( ! mFirst )
2586 return;
2587 mFirst = false;
2588 mTimerSocket->stop();
2589 mFileString = "";
2590 mTime.start();
2591 QTimer::singleShot( 1, this , SLOT (readFileFromSocket( ) ));
2597 2592
2593}
2594void KCommandSocket::readFileFromSocket()
2595{
2596 qDebug("readBackFileFromSocket() %d ", mTime.elapsed ());
2597 while ( mSocket->canReadLine () ) {
2598 mTime.restart();
2599 QString line = mSocket->readLine ();
2600 mFileString += line;
2601 qDebug("readline: %s ", line.latin1());
2602 }
2603 if ( mTime.elapsed () < 3000 ) {
2604 // wait for more
2605 qDebug("waitformore ");
2606 QTimer::singleShot( 100, this , SLOT (readFileFromSocket( ) ));
2607 return;
2608 }
2609 QString fileName = mFileName;
2610 QFile file ( fileName );
2611 if (!file.open( IO_WriteOnly ) ) {
2612 mFileString = "";
2613 mRetVal = false;
2614 qDebug("Error open temp calender file for writing: %s",fileName.latin1() );
2615 deleteSocket();
2616 return ;
2617
2618 }
2619 // mView->setLoadedFileVersion(QDateTime::currentDateTime().addSecs( -1));
2620 QTextStream ts ( &file );
2621 ts.setCodec( QTextCodec::codecForName("utf8") );
2622 qDebug("finish ");
2623 ts << mFileString;
2624 file.close();
2625 mFileString = "";
2626 mRetVal = true;
2627 mSocket->close();
2628 // if state is not idle, deleteSocket(); is called via
2629 // connect( mSocket, SIGNAL(delayedCloseFinished ()), this, SLOT(deleteSocket()) );
2630 if ( mSocket->state() == QSocket::Idle )
2631 deleteSocket();
2632}
2598 2633
2599 2634void KCommandSocket::deleteSocket()
2600 2635{
2601 2636 if ( !mSocket)
2602 2637 return;
2603 2638 if ( mTimerSocket->isActive () ) {
2639 mTimerSocket->stop();
2640 KMessageBox::information( 0, i18n("ERROR:\nConnection to remote host timed out "));
2641 mRetVal = false;
2642 }
2643 qDebug("KCommandSocket::deleteSocket() %d", mRetVal);
2644 delete mSocket;
2645 mSocket = 0;
2646 emit commandFinished( mRetVal );
2647}
2604 2648
diff --git a/korganizer/mainwindow.h b/korganizer/mainwindow.h
index d217578..11a816c 100644
--- a/korganizer/mainwindow.h
+++ b/korganizer/mainwindow.h
@@ -37,24 +37,52 @@ public:
37signals: 37signals:
38 void sendFile(QSocket*); 38 void sendFile(QSocket*);
39 void getFile(QSocket*); 39 void getFile(QSocket*);
40 void endConnect(); 40 void endConnect();
41private slots: 41private slots:
42 void discardClient(); 42 void discardClient();
43 void readClient(); 43 void readClient();
44 private : 44 private :
45 QSocket* mSocket; 45 QSocket* mSocket;
46 QString mPassWord; 46 QString mPassWord;
47}; 47};
48 48
49class KCommandSocket : public QObject
50{
51 Q_OBJECT
52
53public:
54 KCommandSocket ( QString password, Q_UINT16 port, QString host, QObject * parent=0, const char * name=0 );
55 void readFile( QString );
56 void writeFile( QString );
57
58
59signals:
60 void commandFinished( bool );
61private slots:
62 void startReadFileFromSocket();
63 void readFileFromSocket();
64 void deleteSocket();
65 private :
66 QSocket* mSocket;
67 QString mPassWord;
68 Q_UINT16 mPort;
69 QString mHost;
70 QString mFileName;
71 QTimer* mTimerSocket;
72 bool mRetVal;
73 QTime mTime;
74 QString mFileString;
75 bool mFirst;
76};
49 77
50namespace KCal { 78namespace KCal {
51class CalendarLocal; 79class CalendarLocal;
52} 80}
53 81
54using namespace KCal; 82using namespace KCal;
55 83
56class MainWindow : public QMainWindow 84class MainWindow : public QMainWindow
57{ 85{
58 Q_OBJECT 86 Q_OBJECT
59 public: 87 public:
60 MainWindow( QWidget *parent = 0, const char *name = 0, QString command = ""); 88 MainWindow( QWidget *parent = 0, const char *name = 0, QString command = "");
@@ -112,36 +140,36 @@ class MainWindow : public QMainWindow
112 140
113 141
114 protected: 142 protected:
115 void displayText( QString, QString); 143 void displayText( QString, QString);
116 void displayFile( QString, QString); 144 void displayFile( QString, QString);
117 145
118 void enableIncidenceActions( bool ); 146 void enableIncidenceActions( bool );
119 147
120 private slots: 148 private slots:
121 QSocket* piSocket; 149 QSocket* piSocket;
122 QString piFileString; 150 QString piFileString;
123 QTime piTime; 151 QTime piTime;
124 void deleteCommandSocket(); 152 void deleteCommandSocket(bool);
125 void deleteCommandSocketFinish(); 153 void deleteCommandSocketFinish();
126 void fillSyncMenu(); 154 void fillSyncMenu();
127 void sendFile(QSocket* s); 155 void sendFile(QSocket* s);
128 void getFile(QSocket* socket); 156 void getFile(QSocket* socket);
129 void readFileFromSocket(); 157 void readFileFromSocket();
130 void readBackFileFromSocket(); 158 void readBackFileFromSocket();
131 void endConnect(); 159 void endConnect();
132 private: 160 private:
133 QTimer* mTimerCommandSocket; 161 //QTimer* mTimerCommandSocket;
134 QString mPassWordPiSync; 162 QString mPassWordPiSync;
135 QSocket* mCommandSocket; 163 KCommandSocket* mCommandSocket;
136 QSocket* mCommandSocketFinish; 164 QSocket* mCommandSocketFinish;
137 KServerSocket * mServerSocket; 165 KServerSocket * mServerSocket;
138 bool mClosed; 166 bool mClosed;
139 void saveOnClose(); 167 void saveOnClose();
140 int mCurrentSyncProfile; 168 int mCurrentSyncProfile;
141 void enableQuick(); 169 void enableQuick();
142 void performQuick(); 170 void performQuick();
143 void performQuickQuick(); 171 void performQuickQuick();
144 void syncRemote( KSyncProfile* , bool ask = true); 172 void syncRemote( KSyncProfile* , bool ask = true);
145 bool mFlagKeyPressed; 173 bool mFlagKeyPressed;
146 bool mBlockAtStartup; 174 bool mBlockAtStartup;
147 QPEToolBar *iconToolBar; 175 QPEToolBar *iconToolBar;