summaryrefslogtreecommitdiffabout
path: root/libkdepim/ksyncmanager.cpp
authorzautrix <zautrix>2004-10-07 09:56:31 (UTC)
committer zautrix <zautrix>2004-10-07 09:56:31 (UTC)
commitedd36b813763c304b104f276437c2c60ee9bd1f1 (patch) (unidiff)
treeda3a9f6fbd905fe876131af5025690806ce60704 /libkdepim/ksyncmanager.cpp
parent9345818e9c291130691288e4b065190259eb4e01 (diff)
downloadkdepimpi-edd36b813763c304b104f276437c2c60ee9bd1f1.zip
kdepimpi-edd36b813763c304b104f276437c2c60ee9bd1f1.tar.gz
kdepimpi-edd36b813763c304b104f276437c2c60ee9bd1f1.tar.bz2
sync fixes
Diffstat (limited to 'libkdepim/ksyncmanager.cpp') (more/less context) (ignore whitespace changes)
-rw-r--r--libkdepim/ksyncmanager.cpp5
1 files changed, 3 insertions, 2 deletions
diff --git a/libkdepim/ksyncmanager.cpp b/libkdepim/ksyncmanager.cpp
index 5d48884..ea543dd 100644
--- a/libkdepim/ksyncmanager.cpp
+++ b/libkdepim/ksyncmanager.cpp
@@ -22,513 +22,514 @@
22 22
23#include "ksyncmanager.h" 23#include "ksyncmanager.h"
24 24
25#include <stdlib.h> 25#include <stdlib.h>
26 26
27#ifndef _WIN32_ 27#ifndef _WIN32_
28#include <unistd.h> 28#include <unistd.h>
29#endif 29#endif
30 30
31 31
32#include "ksyncprofile.h" 32#include "ksyncprofile.h"
33#include "ksyncprefsdialog.h" 33#include "ksyncprefsdialog.h"
34#include "kpimprefs.h" 34#include "kpimprefs.h"
35#include <kmessagebox.h> 35#include <kmessagebox.h>
36 36
37#include <qdir.h> 37#include <qdir.h>
38#include <qprogressbar.h> 38#include <qprogressbar.h>
39#include <qpopupmenu.h> 39#include <qpopupmenu.h>
40#include <qpushbutton.h> 40#include <qpushbutton.h>
41#include <qradiobutton.h> 41#include <qradiobutton.h>
42#include <qbuttongroup.h> 42#include <qbuttongroup.h>
43#include <qtimer.h> 43#include <qtimer.h>
44#include <qmessagebox.h> 44#include <qmessagebox.h>
45#include <qapplication.h> 45#include <qapplication.h>
46#include <qlineedit.h> 46#include <qlineedit.h>
47#include <qdialog.h> 47#include <qdialog.h>
48#include <qlayout.h> 48#include <qlayout.h>
49#include <qtextcodec.h> 49#include <qtextcodec.h>
50#include <qlabel.h> 50#include <qlabel.h>
51 51
52#include <klocale.h> 52#include <klocale.h>
53#include <kglobal.h> 53#include <kglobal.h>
54#include <kconfig.h> 54#include <kconfig.h>
55#include <kfiledialog.h> 55#include <kfiledialog.h>
56 56
57KSyncManager::KSyncManager(QWidget* parent, KSyncInterface* implementation, TargetApp ta, KPimPrefs* prefs, QPopupMenu* syncmenu) 57KSyncManager::KSyncManager(QWidget* parent, KSyncInterface* implementation, TargetApp ta, KPimPrefs* prefs, QPopupMenu* syncmenu)
58 : QObject(), mParent(parent), mImplementation(implementation), mTargetApp(ta), mPrefs(prefs ),mSyncMenu(syncmenu) 58 : QObject(), mParent(parent), mImplementation(implementation), mTargetApp(ta), mPrefs(prefs ),mSyncMenu(syncmenu)
59{ 59{
60 mServerSocket = 0; 60 mServerSocket = 0;
61 bar = new QProgressBar ( 1, 0 ); 61 bar = new QProgressBar ( 1, 0 );
62 bar->setCaption (""); 62 bar->setCaption ("");
63 63
64 int w = 300; 64 int w = 300;
65 if ( QApplication::desktop()->width() < 320 ) 65 if ( QApplication::desktop()->width() < 320 )
66 w = 220; 66 w = 220;
67 int h = bar->sizeHint().height() ; 67 int h = bar->sizeHint().height() ;
68 int dw = QApplication::desktop()->width(); 68 int dw = QApplication::desktop()->width();
69 int dh = QApplication::desktop()->height(); 69 int dh = QApplication::desktop()->height();
70 bar->setGeometry( (dw-w)/2, (dh - h )/2 ,w,h ); 70 bar->setGeometry( (dw-w)/2, (dh - h )/2 ,w,h );
71 71
72} 72}
73 73
74KSyncManager::~KSyncManager() 74KSyncManager::~KSyncManager()
75{ 75{
76 delete bar; 76 delete bar;
77} 77}
78 78
79//LR ok 79//LR ok
80void KSyncManager::fillSyncMenu() 80void KSyncManager::fillSyncMenu()
81{ 81{
82 if ( mSyncMenu->count() ) 82 if ( mSyncMenu->count() )
83 mSyncMenu->clear(); 83 mSyncMenu->clear();
84 84
85 mSyncMenu->insertItem( i18n("Configure..."), 0 ); 85 mSyncMenu->insertItem( i18n("Configure..."), 0 );
86 mSyncMenu->insertSeparator(); 86 mSyncMenu->insertSeparator();
87 if ( mServerSocket == 0 ) { 87 if ( mServerSocket == 0 ) {
88 mSyncMenu->insertItem( i18n("Enable Pi-Sync"), 2 ); 88 mSyncMenu->insertItem( i18n("Enable Pi-Sync"), 2 );
89 } else { 89 } else {
90 mSyncMenu->insertItem( i18n("Disable Pi-Sync"), 3 ); 90 mSyncMenu->insertItem( i18n("Disable Pi-Sync"), 3 );
91 } 91 }
92 mSyncMenu->insertSeparator(); 92 mSyncMenu->insertSeparator();
93 mSyncMenu->insertItem( i18n("Multiple sync"), 1 ); 93 mSyncMenu->insertItem( i18n("Multiple sync"), 1 );
94 mSyncMenu->insertSeparator(); 94 mSyncMenu->insertSeparator();
95 95
96 KConfig config ( locateLocal( "config","ksyncprofilesrc" ) ); 96 KConfig config ( locateLocal( "config","ksyncprofilesrc" ) );
97 config.setGroup("General"); 97 config.setGroup("General");
98 QStringList prof = config.readListEntry("SyncProfileNames"); 98 QStringList prof = config.readListEntry("SyncProfileNames");
99 mLocalMachineName = config.readEntry("LocalMachineName","undefined"); 99 mLocalMachineName = config.readEntry("LocalMachineName","undefined");
100 if ( prof.count() < 2 ) { 100 if ( prof.count() < 2 ) {
101 prof.clear(); 101 prof.clear();
102 prof << i18n("Sharp_DTM"); 102 prof << i18n("Sharp_DTM");
103 prof << i18n("Local_file"); 103 prof << i18n("Local_file");
104 KSyncProfile* temp = new KSyncProfile (); 104 KSyncProfile* temp = new KSyncProfile ();
105 temp->setName( prof[0] ); 105 temp->setName( prof[0] );
106 temp->writeConfig(&config); 106 temp->writeConfig(&config);
107 temp->setName( prof[1] ); 107 temp->setName( prof[1] );
108 temp->writeConfig(&config); 108 temp->writeConfig(&config);
109 config.setGroup("General"); 109 config.setGroup("General");
110 config.writeEntry("SyncProfileNames",prof); 110 config.writeEntry("SyncProfileNames",prof);
111 config.writeEntry("ExternSyncProfiles","Sharp_DTM"); 111 config.writeEntry("ExternSyncProfiles","Sharp_DTM");
112 config.sync(); 112 config.sync();
113 delete temp; 113 delete temp;
114 } 114 }
115 mExternSyncProfiles = config.readListEntry("ExternSyncProfiles"); 115 mExternSyncProfiles = config.readListEntry("ExternSyncProfiles");
116 mSyncProfileNames = prof; 116 mSyncProfileNames = prof;
117 unsigned int i; 117 unsigned int i;
118 for ( i = 0; i < prof.count(); ++i ) { 118 for ( i = 0; i < prof.count(); ++i ) {
119 mSyncMenu->insertItem( prof[i], 1000+i ); 119 mSyncMenu->insertItem( prof[i], 1000+i );
120 if ( i == 2 ) 120 if ( i == 2 )
121 mSyncMenu->insertSeparator(); 121 mSyncMenu->insertSeparator();
122 } 122 }
123 QDir app_dir; 123 QDir app_dir;
124 //US do not display SharpDTM if app is pwmpi, or no sharpfiles available 124 //US do not display SharpDTM if app is pwmpi, or no sharpfiles available
125 if ( mTargetApp == PWMPI) { 125 if ( mTargetApp == PWMPI) {
126 mSyncMenu->removeItem( 1000 ); 126 mSyncMenu->removeItem( 1000 );
127 } 127 }
128 else if (!app_dir.exists(QDir::homeDirPath()+"/Applications/dtm" ) ) { 128 else if (!app_dir.exists(QDir::homeDirPath()+"/Applications/dtm" ) ) {
129 mSyncMenu->setItemEnabled( 1000, false ); 129 mSyncMenu->setItemEnabled( 1000, false );
130 } 130 }
131} 131}
132 132
133void KSyncManager::slotSyncMenu( int action ) 133void KSyncManager::slotSyncMenu( int action )
134{ 134{
135 //qDebug("syncaction %d ", action); 135 //qDebug("syncaction %d ", action);
136 if ( action == 0 ) { 136 if ( action == 0 ) {
137 137
138 // seems to be a Qt2 event handling bug 138 // seems to be a Qt2 event handling bug
139 // syncmenu.clear causes a segfault at first time 139 // syncmenu.clear causes a segfault at first time
140 // when we call it after the main event loop, it is ok 140 // when we call it after the main event loop, it is ok
141 // same behaviour when calling OM/Pi via QCOP for the first time 141 // same behaviour when calling OM/Pi via QCOP for the first time
142 QTimer::singleShot ( 1, this, SLOT ( confSync() ) ); 142 QTimer::singleShot ( 1, this, SLOT ( confSync() ) );
143 //confSync(); 143 //confSync();
144 144
145 return; 145 return;
146 } 146 }
147 if ( action == 1 ) { 147 if ( action == 1 ) {
148 multiSync( true ); 148 multiSync( true );
149 return; 149 return;
150 } 150 }
151 if ( action == 2 ) { 151 if ( action == 2 ) {
152 enableQuick(); 152 enableQuick();
153 QTimer::singleShot ( 1, this, SLOT ( fillSyncMenu() ) ); 153 QTimer::singleShot ( 1, this, SLOT ( fillSyncMenu() ) );
154 return; 154 return;
155 } 155 }
156 if ( action == 3 ) { 156 if ( action == 3 ) {
157 delete mServerSocket; 157 delete mServerSocket;
158 mServerSocket = 0; 158 mServerSocket = 0;
159 QTimer::singleShot ( 1, this, SLOT ( fillSyncMenu() ) ); 159 QTimer::singleShot ( 1, this, SLOT ( fillSyncMenu() ) );
160 return; 160 return;
161 } 161 }
162 162
163 if (blockSave()) 163 if (blockSave())
164 return; 164 return;
165 165
166 setBlockSave(true); 166 setBlockSave(true);
167 167
168 mCurrentSyncProfile = action - 1000 ; 168 mCurrentSyncProfile = action - 1000 ;
169 mCurrentSyncDevice = mSyncProfileNames[mCurrentSyncProfile] ; 169 mCurrentSyncDevice = mSyncProfileNames[mCurrentSyncProfile] ;
170 mCurrentSyncName = mLocalMachineName ; 170 mCurrentSyncName = mLocalMachineName ;
171 KConfig config ( locateLocal( "config","ksyncprofilesrc" ) ); 171 KConfig config ( locateLocal( "config","ksyncprofilesrc" ) );
172 KSyncProfile* temp = new KSyncProfile (); 172 KSyncProfile* temp = new KSyncProfile ();
173 temp->setName(mSyncProfileNames[mCurrentSyncProfile]); 173 temp->setName(mSyncProfileNames[mCurrentSyncProfile]);
174 temp->readConfig(&config); 174 temp->readConfig(&config);
175 mAskForPreferences = temp->getAskForPreferences(); 175 mAskForPreferences = temp->getAskForPreferences();
176 mSyncAlgoPrefs = temp->getSyncPrefs(); 176 mSyncAlgoPrefs = temp->getSyncPrefs();
177 mWriteBackFile = temp->getWriteBackFile(); 177 mWriteBackFile = temp->getWriteBackFile();
178 mWriteBackExistingOnly = temp->getWriteBackExisting(); 178 mWriteBackExistingOnly = temp->getWriteBackExisting();
179 mWriteBackInFuture = 0; 179 mWriteBackInFuture = 0;
180 if ( temp->getWriteBackFuture() ) 180 if ( temp->getWriteBackFuture() )
181 mWriteBackInFuture = temp->getWriteBackFutureWeeks( ); 181 mWriteBackInFuture = temp->getWriteBackFutureWeeks( );
182 mShowSyncSummary = temp->getShowSummaryAfterSync(); 182 mShowSyncSummary = temp->getShowSummaryAfterSync();
183 if ( action == 1000 ) { 183 if ( action == 1000 ) {
184 syncSharp(); 184 syncSharp();
185 185
186 } else if ( action == 1001 ) { 186 } else if ( action == 1001 ) {
187 syncLocalFile(); 187 syncLocalFile();
188 188
189 } else if ( action == 1002 ) { 189 } else if ( action == 1002 ) {
190 quickSyncLocalFile(); 190 quickSyncLocalFile();
191 191
192 } else if ( action >= 1003 ) { 192 } else if ( action >= 1003 ) {
193 if ( temp->getIsLocalFileSync() ) { 193 if ( temp->getIsLocalFileSync() ) {
194 switch(mTargetApp) 194 switch(mTargetApp)
195 { 195 {
196 case (KAPI): 196 case (KAPI):
197 if ( syncWithFile( temp->getRemoteFileNameAB( ), false ) ) 197 if ( syncWithFile( temp->getRemoteFileNameAB( ), false ) )
198 mLastSyncedLocalFile = temp->getRemoteFileNameAB(); 198 mLastSyncedLocalFile = temp->getRemoteFileNameAB();
199 break; 199 break;
200 case (KOPI): 200 case (KOPI):
201 if ( syncWithFile( temp->getRemoteFileName( ), false ) ) 201 if ( syncWithFile( temp->getRemoteFileName( ), false ) )
202 mLastSyncedLocalFile = temp->getRemoteFileName(); 202 mLastSyncedLocalFile = temp->getRemoteFileName();
203 break; 203 break;
204 case (PWMPI): 204 case (PWMPI):
205 if ( syncWithFile( temp->getRemoteFileNamePWM( ), false ) ) 205 if ( syncWithFile( temp->getRemoteFileNamePWM( ), false ) )
206 mLastSyncedLocalFile = temp->getRemoteFileNamePWM(); 206 mLastSyncedLocalFile = temp->getRemoteFileNamePWM();
207 break; 207 break;
208 default: 208 default:
209 qDebug("KSyncManager::slotSyncMenu: invalid apptype selected"); 209 qDebug("KSyncManager::slotSyncMenu: invalid apptype selected");
210 break; 210 break;
211 211
212 } 212 }
213 } else { 213 } else {
214 if ( temp->getIsPhoneSync() ) { 214 if ( temp->getIsPhoneSync() ) {
215 mPhoneDevice = temp->getPhoneDevice( ) ; 215 mPhoneDevice = temp->getPhoneDevice( ) ;
216 mPhoneConnection = temp->getPhoneConnection( ); 216 mPhoneConnection = temp->getPhoneConnection( );
217 mPhoneModel = temp->getPhoneModel( ); 217 mPhoneModel = temp->getPhoneModel( );
218 syncPhone(); 218 syncPhone();
219 } else if ( temp->getIsPiSync() ) { 219 } else if ( temp->getIsPiSync() ) {
220 mPassWordPiSync = temp->getRemotePw(); 220 mPassWordPiSync = temp->getRemotePw();
221 mActiveSyncPort = temp->getRemotePort(); 221 mActiveSyncPort = temp->getRemotePort();
222 mActiveSyncIP = temp->getRemoteIP(); 222 mActiveSyncIP = temp->getRemoteIP();
223 syncPi(); 223 syncPi();
224 } 224 }
225 syncRemote( temp ); 225 syncRemote( temp );
226 226
227 } 227 }
228 } 228 }
229 delete temp; 229 delete temp;
230 setBlockSave(false); 230 setBlockSave(false);
231} 231}
232void KSyncManager::enableQuick() 232void KSyncManager::enableQuick()
233{ 233{
234 QDialog dia ( 0, "input-dialog", true ); 234 QDialog dia ( 0, "input-dialog", true );
235 QLineEdit lab ( &dia ); 235 QLineEdit lab ( &dia );
236 QVBoxLayout lay( &dia ); 236 QVBoxLayout lay( &dia );
237 lab.setText( mPrefs->mPassiveSyncPort ); 237 lab.setText( mPrefs->mPassiveSyncPort );
238 lay.setMargin(7); 238 lay.setMargin(7);
239 lay.setSpacing(7); 239 lay.setSpacing(7);
240 int po = 9197+mTargetApp; 240 int po = 9197+mTargetApp;
241 QLabel label ( i18n("Port number (Default: %1)").arg(po), &dia ); 241 QLabel label ( i18n("Port number (Default: %1)").arg(po), &dia );
242 lay.addWidget( &label); 242 lay.addWidget( &label);
243 lay.addWidget( &lab); 243 lay.addWidget( &lab);
244 244
245 QLineEdit lepw ( &dia ); 245 QLineEdit lepw ( &dia );
246 lepw.setText( mPrefs->mPassiveSyncPw ); 246 lepw.setText( mPrefs->mPassiveSyncPw );
247 QLabel label2 ( i18n("Password to enable\naccess from remote:"), &dia ); 247 QLabel label2 ( i18n("Password to enable\naccess from remote:"), &dia );
248 lay.addWidget( &label2); 248 lay.addWidget( &label2);
249 lay.addWidget( &lepw); 249 lay.addWidget( &lepw);
250 dia.setFixedSize( 230,80 ); 250 dia.setFixedSize( 230,80 );
251 dia.setCaption( i18n("Enter port for Pi-Sync") ); 251 dia.setCaption( i18n("Enter port for Pi-Sync") );
252 QPushButton pb ( "OK", &dia); 252 QPushButton pb ( "OK", &dia);
253 lay.addWidget( &pb ); 253 lay.addWidget( &pb );
254 connect(&pb, SIGNAL( clicked() ), &dia, SLOT ( accept() ) ); 254 connect(&pb, SIGNAL( clicked() ), &dia, SLOT ( accept() ) );
255 dia.show(); 255 dia.show();
256 if ( ! dia.exec() ) 256 if ( ! dia.exec() )
257 return; 257 return;
258 dia.hide(); 258 dia.hide();
259 qApp->processEvents(); 259 qApp->processEvents();
260 mPrefs->mPassiveSyncPw = lepw.text(); 260 mPrefs->mPassiveSyncPw = lepw.text();
261 mPrefs->mPassiveSyncPort = lab.text(); 261 mPrefs->mPassiveSyncPort = lab.text();
262 bool ok; 262 bool ok;
263 Q_UINT16 port = mPrefs->mPassiveSyncPort.toUInt(&ok); 263 Q_UINT16 port = mPrefs->mPassiveSyncPort.toUInt(&ok);
264 if ( ! ok ) { 264 if ( ! ok ) {
265 KMessageBox::information( 0, i18n("No valid port")); 265 KMessageBox::information( 0, i18n("No valid port"));
266 return; 266 return;
267 } 267 }
268 //qDebug("port %d ", port); 268 //qDebug("port %d ", port);
269 mServerSocket = new KServerSocket ( mPrefs->mPassiveSyncPw, port ,1 ); 269 mServerSocket = new KServerSocket ( mPrefs->mPassiveSyncPw, port ,1 );
270 mServerSocket->setFileName( defaultFileName() ); 270 mServerSocket->setFileName( defaultFileName() );
271 //qDebug("connected "); 271 //qDebug("connected ");
272 if ( !mServerSocket->ok() ) { 272 if ( !mServerSocket->ok() ) {
273 KMessageBox::information( 0, i18n("Failed to bind or\nlisten to the port!")); 273 KMessageBox::information( 0, i18n("Failed to bind or\nlisten to the port!"));
274 delete mServerSocket; 274 delete mServerSocket;
275 mServerSocket = 0; 275 mServerSocket = 0;
276 return; 276 return;
277 } 277 }
278 connect( mServerSocket, SIGNAL ( saveFile() ),this, SIGNAL ( save() ) ); 278 //connect( mServerSocket, SIGNAL ( saveFile() ),this, SIGNAL ( save() ) );
279 connect( mServerSocket, SIGNAL ( request_file() ),this, SIGNAL ( request_file() ) );
279 connect( mServerSocket, SIGNAL ( file_received( bool ) ), this, SIGNAL ( getFile( bool ) ) ); 280 connect( mServerSocket, SIGNAL ( file_received( bool ) ), this, SIGNAL ( getFile( bool ) ) );
280} 281}
281 282
282void KSyncManager::syncLocalFile() 283void KSyncManager::syncLocalFile()
283{ 284{
284 285
285 QString fn =mLastSyncedLocalFile; 286 QString fn =mLastSyncedLocalFile;
286 QString ext; 287 QString ext;
287 288
288 switch(mTargetApp) 289 switch(mTargetApp)
289 { 290 {
290 case (KAPI): 291 case (KAPI):
291 ext = "(*.vcf)"; 292 ext = "(*.vcf)";
292 break; 293 break;
293 case (KOPI): 294 case (KOPI):
294 ext = "(*.ics/*.vcs)"; 295 ext = "(*.ics/*.vcs)";
295 break; 296 break;
296 case (PWMPI): 297 case (PWMPI):
297 ext = "(*.pwm)"; 298 ext = "(*.pwm)";
298 break; 299 break;
299 default: 300 default:
300 qDebug("KSyncManager::syncLocalFile: invalid apptype selected"); 301 qDebug("KSyncManager::syncLocalFile: invalid apptype selected");
301 break; 302 break;
302 303
303 } 304 }
304 305
305 fn =KFileDialog:: getOpenFileName( fn, i18n("Sync filename"+ext), mParent ); 306 fn =KFileDialog:: getOpenFileName( fn, i18n("Sync filename"+ext), mParent );
306 if ( fn == "" ) 307 if ( fn == "" )
307 return; 308 return;
308 if ( syncWithFile( fn, false ) ) { 309 if ( syncWithFile( fn, false ) ) {
309 qDebug("syncLocalFile() successful "); 310 qDebug("syncLocalFile() successful ");
310 } 311 }
311 312
312} 313}
313bool KSyncManager::syncWithFile( QString fn , bool quick ) 314bool KSyncManager::syncWithFile( QString fn , bool quick )
314{ 315{
315 bool ret = false; 316 bool ret = false;
316 QFileInfo info; 317 QFileInfo info;
317 info.setFile( fn ); 318 info.setFile( fn );
318 QString mess; 319 QString mess;
319 bool loadbup = true; 320 bool loadbup = true;
320 if ( !info. exists() ) { 321 if ( !info. exists() ) {
321 mess = i18n( "Sync file \n...%1\ndoes not exist!\nNothing synced!\n").arg(fn.right( 30) ); 322 mess = i18n( "Sync file \n...%1\ndoes not exist!\nNothing synced!\n").arg(fn.right( 30) );
322 int result = QMessageBox::warning( mParent, i18n("Warning!"), 323 int result = QMessageBox::warning( mParent, i18n("Warning!"),
323 mess ); 324 mess );
324 return ret; 325 return ret;
325 } 326 }
326 int result = 0; 327 int result = 0;
327 if ( !quick ) { 328 if ( !quick ) {
328 mess = i18n("Sync with file \n...%1\nfrom:\n%2\n").arg(fn.right( 25)).arg(KGlobal::locale()->formatDateTime(info.lastModified (), true, false )); 329 mess = i18n("Sync with file \n...%1\nfrom:\n%2\n").arg(fn.right( 25)).arg(KGlobal::locale()->formatDateTime(info.lastModified (), true, false ));
329 result = QMessageBox::warning( mParent, i18n("Warning!"), 330 result = QMessageBox::warning( mParent, i18n("Warning!"),
330 mess, 331 mess,
331 i18n("Sync"), i18n("Cancel"), 0, 332 i18n("Sync"), i18n("Cancel"), 0,
332 0, 1 ); 333 0, 1 );
333 if ( result ) 334 if ( result )
334 return false; 335 return false;
335 } 336 }
336 if ( mAskForPreferences ) 337 if ( mAskForPreferences )
337 edit_sync_options(); 338 edit_sync_options();
338 if ( result == 0 ) { 339 if ( result == 0 ) {
339 //qDebug("Now sycing ... "); 340 //qDebug("Now sycing ... ");
340 if ( ret = mImplementation->sync( this, fn, mSyncAlgoPrefs ) ) 341 if ( ret = mImplementation->sync( this, fn, mSyncAlgoPrefs ) )
341 mParent->setCaption( i18n("Synchronization successful") ); 342 mParent->setCaption( i18n("Synchronization successful") );
342 else 343 else
343 mParent->setCaption( i18n("Sync cancelled or failed. Nothing synced.") ); 344 mParent->setCaption( i18n("Sync cancelled or failed. Nothing synced.") );
344 if ( ! quick ) 345 if ( ! quick )
345 mLastSyncedLocalFile = fn; 346 mLastSyncedLocalFile = fn;
346 } 347 }
347 return ret; 348 return ret;
348} 349}
349void KSyncManager::quickSyncLocalFile() 350void KSyncManager::quickSyncLocalFile()
350{ 351{
351 352
352 if ( syncWithFile( mLastSyncedLocalFile, false ) ) { 353 if ( syncWithFile( mLastSyncedLocalFile, false ) ) {
353 qDebug("quick syncLocalFile() successful "); 354 qDebug("quick syncLocalFile() successful ");
354 355
355 } 356 }
356} 357}
357void KSyncManager::multiSync( bool askforPrefs ) 358void KSyncManager::multiSync( bool askforPrefs )
358{ 359{
359 if (blockSave()) 360 if (blockSave())
360 return; 361 return;
361 setBlockSave(true); 362 setBlockSave(true);
362 QString question = i18n("Do you really want\nto multiple sync\nwith all checked profiles?\nSyncing takes some\ntime - all profiles\nare synced twice!"); 363 QString question = i18n("Do you really want\nto multiple sync\nwith all checked profiles?\nSyncing takes some\ntime - all profiles\nare synced twice!");
363 if ( QMessageBox::information( mParent, i18n("Sync"), 364 if ( QMessageBox::information( mParent, i18n("Sync"),
364 question, 365 question,
365 i18n("Yes"), i18n("No"), 366 i18n("Yes"), i18n("No"),
366 0, 0 ) != 0 ) { 367 0, 0 ) != 0 ) {
367 setBlockSave(false); 368 setBlockSave(false);
368 mParent->setCaption(i18n("Aborted! Nothing synced!")); 369 mParent->setCaption(i18n("Aborted! Nothing synced!"));
369 return; 370 return;
370 } 371 }
371 mCurrentSyncDevice = i18n("Multiple profiles") ; 372 mCurrentSyncDevice = i18n("Multiple profiles") ;
372 mSyncAlgoPrefs = mRingSyncAlgoPrefs; 373 mSyncAlgoPrefs = mRingSyncAlgoPrefs;
373 if ( askforPrefs ) { 374 if ( askforPrefs ) {
374 edit_sync_options(); 375 edit_sync_options();
375 mRingSyncAlgoPrefs = mSyncAlgoPrefs; 376 mRingSyncAlgoPrefs = mSyncAlgoPrefs;
376 } 377 }
377 mParent->setCaption(i18n("Multiple sync started.") ); 378 mParent->setCaption(i18n("Multiple sync started.") );
378 qApp->processEvents(); 379 qApp->processEvents();
379 int num = ringSync() ; 380 int num = ringSync() ;
380 if ( num > 1 ) 381 if ( num > 1 )
381 ringSync(); 382 ringSync();
382 setBlockSave(false); 383 setBlockSave(false);
383 if ( num ) 384 if ( num )
384 emit save(); 385 emit save();
385 if ( num ) 386 if ( num )
386 mParent->setCaption(i18n("%1 profiles synced. Multiple sync completed!").arg(num) ); 387 mParent->setCaption(i18n("%1 profiles synced. Multiple sync completed!").arg(num) );
387 else 388 else
388 mParent->setCaption(i18n("Nothing synced! No profiles defined for multisync!")); 389 mParent->setCaption(i18n("Nothing synced! No profiles defined for multisync!"));
389 return; 390 return;
390} 391}
391int KSyncManager::ringSync() 392int KSyncManager::ringSync()
392{ 393{
393 int syncedProfiles = 0; 394 int syncedProfiles = 0;
394 unsigned int i; 395 unsigned int i;
395 QTime timer; 396 QTime timer;
396 KConfig config ( locateLocal( "config","ksyncprofilesrc" ) ); 397 KConfig config ( locateLocal( "config","ksyncprofilesrc" ) );
397 QStringList syncProfileNames = mSyncProfileNames; 398 QStringList syncProfileNames = mSyncProfileNames;
398 KSyncProfile* temp = new KSyncProfile (); 399 KSyncProfile* temp = new KSyncProfile ();
399 mAskForPreferences = false; 400 mAskForPreferences = false;
400 for ( i = 0; i < syncProfileNames.count(); ++i ) { 401 for ( i = 0; i < syncProfileNames.count(); ++i ) {
401 mCurrentSyncProfile = i; 402 mCurrentSyncProfile = i;
402 temp->setName(syncProfileNames[mCurrentSyncProfile]); 403 temp->setName(syncProfileNames[mCurrentSyncProfile]);
403 temp->readConfig(&config); 404 temp->readConfig(&config);
404 405
405 QString includeInRingSync; 406 QString includeInRingSync;
406 switch(mTargetApp) 407 switch(mTargetApp)
407 { 408 {
408 case (KAPI): 409 case (KAPI):
409 includeInRingSync = temp->getIncludeInRingSyncAB(); 410 includeInRingSync = temp->getIncludeInRingSyncAB();
410 break; 411 break;
411 case (KOPI): 412 case (KOPI):
412 includeInRingSync = temp->getIncludeInRingSync(); 413 includeInRingSync = temp->getIncludeInRingSync();
413 break; 414 break;
414 case (PWMPI): 415 case (PWMPI):
415 includeInRingSync = temp->getIncludeInRingSyncPWM(); 416 includeInRingSync = temp->getIncludeInRingSyncPWM();
416 break; 417 break;
417 default: 418 default:
418 qDebug("KSyncManager::ringSync: invalid apptype selected"); 419 qDebug("KSyncManager::ringSync: invalid apptype selected");
419 break; 420 break;
420 421
421 } 422 }
422 423
423 424
424 if ( includeInRingSync && ( i < 1 || i > 2 )) { 425 if ( includeInRingSync && ( i < 1 || i > 2 )) {
425 mParent->setCaption(i18n("Profile ")+syncProfileNames[mCurrentSyncProfile]+ i18n(" is synced ... ")); 426 mParent->setCaption(i18n("Profile ")+syncProfileNames[mCurrentSyncProfile]+ i18n(" is synced ... "));
426 ++syncedProfiles; 427 ++syncedProfiles;
427 // mAskForPreferences = temp->getAskForPreferences(); 428 // mAskForPreferences = temp->getAskForPreferences();
428 mWriteBackFile = temp->getWriteBackFile(); 429 mWriteBackFile = temp->getWriteBackFile();
429 mWriteBackExistingOnly = temp->getWriteBackExisting(); 430 mWriteBackExistingOnly = temp->getWriteBackExisting();
430 mWriteBackInFuture = 0; 431 mWriteBackInFuture = 0;
431 if ( temp->getWriteBackFuture() ) 432 if ( temp->getWriteBackFuture() )
432 mWriteBackInFuture = temp->getWriteBackFutureWeeks( ); 433 mWriteBackInFuture = temp->getWriteBackFutureWeeks( );
433 mShowSyncSummary = false; 434 mShowSyncSummary = false;
434 mCurrentSyncDevice = syncProfileNames[i] ; 435 mCurrentSyncDevice = syncProfileNames[i] ;
435 mCurrentSyncName = mLocalMachineName; 436 mCurrentSyncName = mLocalMachineName;
436 if ( i == 0 ) { 437 if ( i == 0 ) {
437 syncSharp(); 438 syncSharp();
438 } else { 439 } else {
439 if ( temp->getIsLocalFileSync() ) { 440 if ( temp->getIsLocalFileSync() ) {
440 switch(mTargetApp) 441 switch(mTargetApp)
441 { 442 {
442 case (KAPI): 443 case (KAPI):
443 if ( syncWithFile( temp->getRemoteFileNameAB( ), false ) ) 444 if ( syncWithFile( temp->getRemoteFileNameAB( ), false ) )
444 mLastSyncedLocalFile = temp->getRemoteFileNameAB(); 445 mLastSyncedLocalFile = temp->getRemoteFileNameAB();
445 break; 446 break;
446 case (KOPI): 447 case (KOPI):
447 if ( syncWithFile( temp->getRemoteFileName( ), false ) ) 448 if ( syncWithFile( temp->getRemoteFileName( ), false ) )
448 mLastSyncedLocalFile = temp->getRemoteFileName(); 449 mLastSyncedLocalFile = temp->getRemoteFileName();
449 break; 450 break;
450 case (PWMPI): 451 case (PWMPI):
451 if ( syncWithFile( temp->getRemoteFileNamePWM( ), false ) ) 452 if ( syncWithFile( temp->getRemoteFileNamePWM( ), false ) )
452 mLastSyncedLocalFile = temp->getRemoteFileNamePWM(); 453 mLastSyncedLocalFile = temp->getRemoteFileNamePWM();
453 break; 454 break;
454 default: 455 default:
455 qDebug("KSyncManager::slotSyncMenu: invalid apptype selected"); 456 qDebug("KSyncManager::slotSyncMenu: invalid apptype selected");
456 break; 457 break;
457 } 458 }
458 } else { 459 } else {
459 if ( temp->getIsPhoneSync() ) { 460 if ( temp->getIsPhoneSync() ) {
460 mPhoneDevice = temp->getPhoneDevice( ) ; 461 mPhoneDevice = temp->getPhoneDevice( ) ;
461 mPhoneConnection = temp->getPhoneConnection( ); 462 mPhoneConnection = temp->getPhoneConnection( );
462 mPhoneModel = temp->getPhoneModel( ); 463 mPhoneModel = temp->getPhoneModel( );
463 syncPhone(); 464 syncPhone();
464 } else 465 } else
465 syncRemote( temp, false ); 466 syncRemote( temp, false );
466 467
467 } 468 }
468 } 469 }
469 timer.start(); 470 timer.start();
470 mParent->setCaption(i18n("Multiple sync in progress ... please wait!") ); 471 mParent->setCaption(i18n("Multiple sync in progress ... please wait!") );
471 while ( timer.elapsed () < 2000 ) { 472 while ( timer.elapsed () < 2000 ) {
472 qApp->processEvents(); 473 qApp->processEvents();
473#ifndef _WIN32_ 474#ifndef _WIN32_
474 sleep (1); 475 sleep (1);
475#endif 476#endif
476 } 477 }
477 478
478 } 479 }
479 480
480 } 481 }
481 delete temp; 482 delete temp;
482 return syncedProfiles; 483 return syncedProfiles;
483} 484}
484 485
485void KSyncManager::syncRemote( KSyncProfile* prof, bool ask) 486void KSyncManager::syncRemote( KSyncProfile* prof, bool ask)
486{ 487{
487 QString question; 488 QString question;
488 if ( ask ) { 489 if ( ask ) {
489 question = i18n("Do you really want\nto remote sync\nwith profile \n")+ prof->getName()+" ?\n"; 490 question = i18n("Do you really want\nto remote sync\nwith profile \n")+ prof->getName()+" ?\n";
490 if ( QMessageBox::information( mParent, i18n("Sync"), 491 if ( QMessageBox::information( mParent, i18n("Sync"),
491 question, 492 question,
492 i18n("Yes"), i18n("No"), 493 i18n("Yes"), i18n("No"),
493 0, 0 ) != 0 ) 494 0, 0 ) != 0 )
494 return; 495 return;
495 } 496 }
496 497
497 QString preCommand; 498 QString preCommand;
498 QString localTempFile; 499 QString localTempFile;
499 QString postCommand; 500 QString postCommand;
500 501
501 switch(mTargetApp) 502 switch(mTargetApp)
502 { 503 {
503 case (KAPI): 504 case (KAPI):
504 preCommand = prof->getPreSyncCommandAB(); 505 preCommand = prof->getPreSyncCommandAB();
505 postCommand = prof->getPostSyncCommandAB(); 506 postCommand = prof->getPostSyncCommandAB();
506 localTempFile = prof->getLocalTempFileAB(); 507 localTempFile = prof->getLocalTempFileAB();
507 break; 508 break;
508 case (KOPI): 509 case (KOPI):
509 preCommand = prof->getPreSyncCommand(); 510 preCommand = prof->getPreSyncCommand();
510 postCommand = prof->getPostSyncCommand(); 511 postCommand = prof->getPostSyncCommand();
511 localTempFile = prof->getLocalTempFile(); 512 localTempFile = prof->getLocalTempFile();
512 break; 513 break;
513 case (PWMPI): 514 case (PWMPI):
514 preCommand = prof->getPreSyncCommandPWM(); 515 preCommand = prof->getPreSyncCommandPWM();
515 postCommand = prof->getPostSyncCommandPWM(); 516 postCommand = prof->getPostSyncCommandPWM();
516 localTempFile = prof->getLocalTempFilePWM(); 517 localTempFile = prof->getLocalTempFilePWM();
517 break; 518 break;
518 default: 519 default:
519 qDebug("KSyncManager::syncRemote: invalid apptype selected"); 520 qDebug("KSyncManager::syncRemote: invalid apptype selected");
520 break; 521 break;
521 } 522 }
522 523
523 524
524 int fi; 525 int fi;
525 if ( (fi = preCommand.find("$PWD$")) > 0 ) { 526 if ( (fi = preCommand.find("$PWD$")) > 0 ) {
526 QString pwd = getPassword(); 527 QString pwd = getPassword();
527 preCommand = preCommand.left( fi )+ pwd + preCommand.mid( fi+5 ); 528 preCommand = preCommand.left( fi )+ pwd + preCommand.mid( fi+5 );
528 529
529 } 530 }
530 int maxlen = 30; 531 int maxlen = 30;
531 if ( QApplication::desktop()->width() > 320 ) 532 if ( QApplication::desktop()->width() > 320 )
532 maxlen += 25; 533 maxlen += 25;
533 mParent->setCaption ( i18n( "Copy remote file to local machine..." ) ); 534 mParent->setCaption ( i18n( "Copy remote file to local machine..." ) );
534 int fileSize = 0; 535 int fileSize = 0;
@@ -675,484 +676,484 @@ void KSyncManager::confSync()
675 mSyncProfileNames = sp->getSyncProfileNames(); 676 mSyncProfileNames = sp->getSyncProfileNames();
676 mLocalMachineName = sp->getLocalMachineName (); 677 mLocalMachineName = sp->getLocalMachineName ();
677 fillSyncMenu(); 678 fillSyncMenu();
678} 679}
679 680
680void KSyncManager::syncSharp() 681void KSyncManager::syncSharp()
681{ 682{
682 if ( ! syncExternalApplication("sharp") ) 683 if ( ! syncExternalApplication("sharp") )
683 qDebug("ERROR sync sharp ");; 684 qDebug("ERROR sync sharp ");;
684} 685}
685 686
686bool KSyncManager::syncExternalApplication(QString resource) 687bool KSyncManager::syncExternalApplication(QString resource)
687{ 688{
688 689
689 emit save(); 690 emit save();
690 691
691 if ( mAskForPreferences ) 692 if ( mAskForPreferences )
692 edit_sync_options(); 693 edit_sync_options();
693 694
694 qDebug("sync %s", resource.latin1()); 695 qDebug("sync %s", resource.latin1());
695 696
696 bool syncOK = mImplementation->syncExternal(this, resource); 697 bool syncOK = mImplementation->syncExternal(this, resource);
697 698
698 return syncOK; 699 return syncOK;
699 700
700} 701}
701 702
702void KSyncManager::syncPhone() 703void KSyncManager::syncPhone()
703{ 704{
704 emit save(); 705 emit save();
705 706
706 qDebug("pending syncPhone(); "); 707 qDebug("pending syncPhone(); ");
707 //mView->syncPhone(); 708 //mView->syncPhone();
708 709
709} 710}
710 711
711void KSyncManager::showProgressBar(int percentage, QString caption, int total) 712void KSyncManager::showProgressBar(int percentage, QString caption, int total)
712{ 713{
713 if (!bar->isVisible()) 714 if (!bar->isVisible())
714 { 715 {
715 bar->setCaption (caption); 716 bar->setCaption (caption);
716 bar->setTotalSteps ( total ) ; 717 bar->setTotalSteps ( total ) ;
717 718
718 bar->show(); 719 bar->show();
719 } 720 }
720 721
721 bar->setProgress( percentage ); 722 bar->setProgress( percentage );
722} 723}
723 724
724void KSyncManager::hideProgressBar() 725void KSyncManager::hideProgressBar()
725{ 726{
726 bar->hide(); 727 bar->hide();
727} 728}
728 729
729bool KSyncManager::isProgressBarCanceled() 730bool KSyncManager::isProgressBarCanceled()
730{ 731{
731 return !bar->isVisible(); 732 return !bar->isVisible();
732} 733}
733 734
734QString KSyncManager::syncFileName() 735QString KSyncManager::syncFileName()
735{ 736{
736 737
737 QString fn = "tempfile"; 738 QString fn = "tempfile";
738 switch(mTargetApp) 739 switch(mTargetApp)
739 { 740 {
740 case (KAPI): 741 case (KAPI):
741 fn = "addressbook.vcf"; 742 fn = "addressbook.vcf";
742 break; 743 break;
743 case (KOPI): 744 case (KOPI):
744 fn = "synccalendar.ics"; 745 fn = "synccalendar.ics";
745 break; 746 break;
746 case (PWMPI): 747 case (PWMPI):
747 fn = "manager.pwm"; 748 fn = "manager.pwm";
748 break; 749 break;
749 default: 750 default:
750 break; 751 break;
751 } 752 }
752#ifdef _WIN32_ 753#ifdef _WIN32_
753 return locateLocal( "tmp", fn ); 754 return locateLocal( "tmp", fn );
754#else 755#else
755 return (QString( "/tmp/" )+ fn ); 756 return (QString( "/tmp/" )+ fn );
756#endif 757#endif
757} 758}
758 759
759void KSyncManager::syncPi() 760void KSyncManager::syncPi()
760{ 761{
761 qApp->processEvents(); 762 qApp->processEvents();
762 bool ok; 763 bool ok;
763 Q_UINT16 port = mActiveSyncPort.toUInt(&ok); 764 Q_UINT16 port = mActiveSyncPort.toUInt(&ok);
764 if ( ! ok ) { 765 if ( ! ok ) {
765 mParent->setCaption( i18n("Sorry, no valid port.Syncing cancelled.") ); 766 mParent->setCaption( i18n("Sorry, no valid port.Syncing cancelled.") );
766 return; 767 return;
767 } 768 }
768 KCommandSocket* commandSocket = new KCommandSocket( mPassWordPiSync, port, mActiveSyncIP, this ); 769 KCommandSocket* commandSocket = new KCommandSocket( mPassWordPiSync, port, mActiveSyncIP, this );
769 connect( commandSocket, SIGNAL(commandFinished( KCommandSocket*, int )), this, SLOT(deleteCommandSocket(KCommandSocket*, int)) ); 770 connect( commandSocket, SIGNAL(commandFinished( KCommandSocket*, int )), this, SLOT(deleteCommandSocket(KCommandSocket*, int)) );
770 mParent->setCaption( i18n("Sending request for remote file ...") ); 771 mParent->setCaption( i18n("Sending request for remote file ...") );
771 commandSocket->readFile( syncFileName() ); 772 commandSocket->readFile( syncFileName() );
772} 773}
773 774
774void KSyncManager::deleteCommandSocket(KCommandSocket*s, int state) 775void KSyncManager::deleteCommandSocket(KCommandSocket*s, int state)
775{ 776{
776 qDebug("MainWindow::deleteCommandSocket %d", state); 777 qDebug("MainWindow::deleteCommandSocket %d", state);
777 778
778 //enum { success, errorW, errorR, quiet }; 779 //enum { success, errorW, errorR, quiet };
779 if ( state == KCommandSocket::errorR ) { 780 if ( state == KCommandSocket::errorR ) {
780 mParent->setCaption( i18n("ERROR: Receiving remote file failed.") ); 781 mParent->setCaption( i18n("ERROR: Receiving remote file failed.") );
781 delete s; 782 delete s;
782 KCommandSocket* commandSocket = new KCommandSocket( mPassWordPiSync, mActiveSyncPort.toUInt(), mActiveSyncIP, this ); 783 KCommandSocket* commandSocket = new KCommandSocket( mPassWordPiSync, mActiveSyncPort.toUInt(), mActiveSyncIP, this );
783 connect( commandSocket, SIGNAL(commandFinished( KCommandSocket*, int)), this, SLOT(deleteCommandSocket(KCommandSocket*, int )) ); 784 connect( commandSocket, SIGNAL(commandFinished( KCommandSocket*, int)), this, SLOT(deleteCommandSocket(KCommandSocket*, int )) );
784 commandSocket->sendStop(); 785 commandSocket->sendStop();
785 return; 786 return;
786 787
787 } else if ( state == KCommandSocket::errorW ) { 788 } else if ( state == KCommandSocket::errorW ) {
788 mParent->setCaption( i18n("ERROR:Writing back file failed.") ); 789 mParent->setCaption( i18n("ERROR:Writing back file failed.") );
789 790
790 } else if ( state == KCommandSocket::successR ) { 791 } else if ( state == KCommandSocket::successR ) {
791 QTimer::singleShot( 1, this , SLOT ( readFileFromSocket())); 792 QTimer::singleShot( 1, this , SLOT ( readFileFromSocket()));
792 793
793 } else if ( state == KCommandSocket::successW ) { 794 } else if ( state == KCommandSocket::successW ) {
794 mParent->setCaption( i18n("Pi-Sync succesful!") ); 795 mParent->setCaption( i18n("Pi-Sync succesful!") );
795 } 796 }
796 797
797 delete s; 798 delete s;
798} 799}
799 800
800void KSyncManager::readFileFromSocket() 801void KSyncManager::readFileFromSocket()
801{ 802{
802 QString fileName = syncFileName(); 803 QString fileName = syncFileName();
803 mParent->setCaption( i18n("Remote file saved to temp file.") ); 804 mParent->setCaption( i18n("Remote file saved to temp file.") );
804 if ( ! syncWithFile( fileName , true ) ) { 805 if ( ! syncWithFile( fileName , true ) ) {
805 mParent->setCaption( i18n("Syncing failed.") ); 806 mParent->setCaption( i18n("Syncing failed.") );
806 qDebug("Syncing failed "); 807 qDebug("Syncing failed ");
807 return; 808 return;
808 } 809 }
809 KCommandSocket* commandSocket = new KCommandSocket( mPassWordPiSync, mActiveSyncPort.toUInt(), mActiveSyncIP, this ); 810 KCommandSocket* commandSocket = new KCommandSocket( mPassWordPiSync, mActiveSyncPort.toUInt(), mActiveSyncIP, this );
810 connect( commandSocket, SIGNAL(commandFinished( KCommandSocket*, int)), this, SLOT(deleteCommandSocket(KCommandSocket*, int )) ); 811 connect( commandSocket, SIGNAL(commandFinished( KCommandSocket*, int)), this, SLOT(deleteCommandSocket(KCommandSocket*, int )) );
811 if ( mWriteBackFile ) 812 if ( mWriteBackFile )
812 commandSocket->writeFile( fileName ); 813 commandSocket->writeFile( fileName );
813 else { 814 else {
814 commandSocket->sendStop(); 815 commandSocket->sendStop();
815 mParent->setCaption( i18n("Pi-Sync succesful!") ); 816 mParent->setCaption( i18n("Pi-Sync succesful!") );
816 } 817 }
817} 818}
818 819
819 820
820 821
821 822
822 823
823 824
824 825
825 826
826 827
827 828
828 829
829 830
830 831
831 832
832 833
833 834
834 835
835 836
836 837
837 838
838 839
839 840
840 841
841KServerSocket:: KServerSocket ( QString pw, Q_UINT16 port, int backlog, QObject * parent, const char * name ) : QServerSocket( port, backlog, parent, name ) 842KServerSocket:: KServerSocket ( QString pw, Q_UINT16 port, int backlog, QObject * parent, const char * name ) : QServerSocket( port, backlog, parent, name )
842{ 843{
843 mPassWord = pw; 844 mPassWord = pw;
844 mSocket = 0; 845 mSocket = 0;
845 mSyncActionDialog = 0; 846 mSyncActionDialog = 0;
846 blockRC = false; 847 blockRC = false;
847}; 848};
848 849
849void KServerSocket::newConnection ( int socket ) 850void KServerSocket::newConnection ( int socket )
850{ 851{
851 // qDebug("KServerSocket:New connection %d ", socket); 852 // qDebug("KServerSocket:New connection %d ", socket);
852 if ( mSocket ) { 853 if ( mSocket ) {
853 qDebug("KServerSocket::newConnection Socket deleted! "); 854 qDebug("KServerSocket::newConnection Socket deleted! ");
854 delete mSocket; 855 delete mSocket;
855 mSocket = 0; 856 mSocket = 0;
856 } 857 }
857 mSocket = new QSocket( this ); 858 mSocket = new QSocket( this );
858 connect( mSocket , SIGNAL(readyRead()), this, SLOT(readClient()) ); 859 connect( mSocket , SIGNAL(readyRead()), this, SLOT(readClient()) );
859 connect( mSocket , SIGNAL(delayedCloseFinished()), this, SLOT(discardClient()) ); 860 connect( mSocket , SIGNAL(delayedCloseFinished()), this, SLOT(discardClient()) );
860 mSocket->setSocket( socket ); 861 mSocket->setSocket( socket );
861} 862}
862 863
863void KServerSocket::discardClient() 864void KServerSocket::discardClient()
864{ 865{
865 //qDebug(" KServerSocket::discardClient()"); 866 //qDebug(" KServerSocket::discardClient()");
866 if ( mSocket ) { 867 if ( mSocket ) {
867 delete mSocket; 868 delete mSocket;
868 mSocket = 0; 869 mSocket = 0;
869 } 870 }
870 //emit endConnect(); 871 //emit endConnect();
871} 872}
872void KServerSocket::readClient() 873void KServerSocket::readClient()
873{ 874{
874 if ( blockRC ) 875 if ( blockRC )
875 return; 876 return;
876 if ( mSocket == 0 ) { 877 if ( mSocket == 0 ) {
877 qDebug("ERROR::KServerSocket::readClient(): mSocket == 0 "); 878 qDebug("ERROR::KServerSocket::readClient(): mSocket == 0 ");
878 return; 879 return;
879 } 880 }
880 qDebug("KServerSocket readClient()"); 881 qDebug("KServerSocket readClient()");
881 if ( mSocket->canReadLine() ) { 882 if ( mSocket->canReadLine() ) {
882 QString line = mSocket->readLine(); 883 QString line = mSocket->readLine();
883 qDebug("KServerSocket readline: %s ", line.latin1()); 884 qDebug("KServerSocket readline: %s ", line.latin1());
884 QStringList tokens = QStringList::split( QRegExp("[ \r\n][ \r\n]*"), line ); 885 QStringList tokens = QStringList::split( QRegExp("[ \r\n][ \r\n]*"), line );
885 if ( tokens[0] == "GET" ) { 886 if ( tokens[0] == "GET" ) {
886 if ( tokens[1] == mPassWord ) 887 if ( tokens[1] == mPassWord )
887 //emit sendFile( mSocket ); 888 //emit sendFile( mSocket );
888 send_file(); 889 send_file();
889 else { 890 else {
890 KMessageBox::information( 0, i18n("ERROR:\nGot send file request\nwith invalid password")); 891 KMessageBox::information( 0, i18n("ERROR:\nGot send file request\nwith invalid password"));
891 qDebug("password %s, invalid password %s ",mPassWord.latin1(), tokens[1].latin1() ); 892 qDebug("password %s, invalid password %s ",mPassWord.latin1(), tokens[1].latin1() );
892 } 893 }
893 } 894 }
894 if ( tokens[0] == "PUT" ) { 895 if ( tokens[0] == "PUT" ) {
895 if ( tokens[1] == mPassWord ) { 896 if ( tokens[1] == mPassWord ) {
896 //emit getFile( mSocket ); 897 //emit getFile( mSocket );
897 blockRC = true; 898 blockRC = true;
898 get_file(); 899 get_file();
899 } 900 }
900 else { 901 else {
901 KMessageBox::information( 0, i18n("ERROR:\nGot receive file request\nwith invalid password")); 902 KMessageBox::information( 0, i18n("ERROR:\nGot receive file request\nwith invalid password"));
902 qDebug("password %s, invalid password %s ",mPassWord.latin1(), tokens[1].latin1() ); 903 qDebug("password %s, invalid password %s ",mPassWord.latin1(), tokens[1].latin1() );
903 } 904 }
904 } 905 }
905 if ( tokens[0] == "STOP" ) { 906 if ( tokens[0] == "STOP" ) {
906 //emit endConnect(); 907 //emit endConnect();
907 end_connect(); 908 end_connect();
908 } 909 }
909 } 910 }
910} 911}
911void KServerSocket::end_connect() 912void KServerSocket::end_connect()
912{ 913{
913 delete mSyncActionDialog; 914 delete mSyncActionDialog;
914 mSyncActionDialog = 0; 915 mSyncActionDialog = 0;
915} 916}
916void KServerSocket::send_file() 917void KServerSocket::send_file()
917{ 918{
918 //qDebug("MainWindow::sendFile(QSocket* s) "); 919 //qDebug("MainWindow::sendFile(QSocket* s) ");
919 if ( mSyncActionDialog ) 920 if ( mSyncActionDialog )
920 delete mSyncActionDialog; 921 delete mSyncActionDialog;
921 mSyncActionDialog = new QDialog ( 0, "input-dialog", true ); 922 mSyncActionDialog = new QDialog ( 0, "input-dialog", true );
922 mSyncActionDialog->setCaption(i18n("Received sync request")); 923 mSyncActionDialog->setCaption(i18n("Received sync request"));
923 QLabel* label = new QLabel( i18n("Synchronizing from remote ...\n\nDo not use this application!\n\nIf syncing fails\nyou can close this dialog."), mSyncActionDialog ); 924 QLabel* label = new QLabel( i18n("Synchronizing from remote ...\n\nDo not use this application!\n\nIf syncing fails\nyou can close this dialog."), mSyncActionDialog );
924 QVBoxLayout* lay = new QVBoxLayout( mSyncActionDialog ); 925 QVBoxLayout* lay = new QVBoxLayout( mSyncActionDialog );
925 lay->addWidget( label); 926 lay->addWidget( label);
926 lay->setMargin(7); 927 lay->setMargin(7);
927 lay->setSpacing(7); 928 lay->setSpacing(7);
928 mSyncActionDialog->setFixedSize( 230, 120); 929 mSyncActionDialog->setFixedSize( 230, 120);
929 mSyncActionDialog->show(); 930 mSyncActionDialog->show();
930 qDebug("KSS::saving ... "); 931 qDebug("KSS::saving ... ");
931 emit saveFile(); 932 emit request_file();
932 qApp->processEvents(); 933 qApp->processEvents();
933 QString fileName = mFileName; 934 QString fileName = mFileName;
934 QFile file( fileName ); 935 QFile file( fileName );
935 if (!file.open( IO_ReadOnly ) ) { 936 if (!file.open( IO_ReadOnly ) ) {
936 delete mSyncActionDialog; 937 delete mSyncActionDialog;
937 mSyncActionDialog = 0; 938 mSyncActionDialog = 0;
938 qDebug("KSS::error open file "); 939 qDebug("KSS::error open file ");
939 mSocket->close(); 940 mSocket->close();
940 if ( mSocket->state() == QSocket::Idle ) 941 if ( mSocket->state() == QSocket::Idle )
941 QTimer::singleShot( 10, this , SLOT ( discardClient())); 942 QTimer::singleShot( 10, this , SLOT ( discardClient()));
942 return ; 943 return ;
943 944
944 } 945 }
945 mSyncActionDialog->setCaption( i18n("Sending file...") ); 946 mSyncActionDialog->setCaption( i18n("Sending file...") );
946 QTextStream ts( &file ); 947 QTextStream ts( &file );
947 ts.setCodec( QTextCodec::codecForName("utf8") ); 948 ts.setCodec( QTextCodec::codecForName("utf8") );
948 QTextStream os( mSocket ); 949 QTextStream os( mSocket );
949 os.setCodec( QTextCodec::codecForName("utf8") ); 950 os.setCodec( QTextCodec::codecForName("utf8") );
950 //os.setEncoding( QTextStream::UnicodeUTF8 ); 951 //os.setEncoding( QTextStream::UnicodeUTF8 );
951 while ( ! ts.atEnd() ) { 952 while ( ! ts.atEnd() ) {
952 os << ts.readLine() << "\n"; 953 os << ts.readLine() << "\n";
953 } 954 }
954 //os << ts.read(); 955 //os << ts.read();
955 file.close(); 956 file.close();
956 mSyncActionDialog->setCaption( i18n("Waiting for synced file...") ); 957 mSyncActionDialog->setCaption( i18n("Waiting for synced file...") );
957 mSocket->close(); 958 mSocket->close();
958 if ( mSocket->state() == QSocket::Idle ) 959 if ( mSocket->state() == QSocket::Idle )
959 QTimer::singleShot( 10, this , SLOT ( discardClient())); 960 QTimer::singleShot( 10, this , SLOT ( discardClient()));
960} 961}
961void KServerSocket::get_file() 962void KServerSocket::get_file()
962{ 963{
963 mSyncActionDialog->setCaption( i18n("Receiving synced file...") ); 964 mSyncActionDialog->setCaption( i18n("Receiving synced file...") );
964 965
965 piTime.start(); 966 piTime.start();
966 piFileString = ""; 967 piFileString = "";
967 QTimer::singleShot( 1, this , SLOT (readBackFileFromSocket( ) )); 968 QTimer::singleShot( 1, this , SLOT (readBackFileFromSocket( ) ));
968} 969}
969 970
970 971
971void KServerSocket::readBackFileFromSocket() 972void KServerSocket::readBackFileFromSocket()
972{ 973{
973 //qDebug("readBackFileFromSocket() %d ", piTime.elapsed ()); 974 //qDebug("readBackFileFromSocket() %d ", piTime.elapsed ());
974 while ( mSocket->canReadLine () ) { 975 while ( mSocket->canReadLine () ) {
975 piTime.restart(); 976 piTime.restart();
976 QString line = mSocket->readLine (); 977 QString line = mSocket->readLine ();
977 piFileString += line; 978 piFileString += line;
978 //qDebug("readline: %s ", line.latin1()); 979 //qDebug("readline: %s ", line.latin1());
979 mSyncActionDialog->setCaption( i18n("Received %1 bytes").arg( piFileString.length() ) ); 980 mSyncActionDialog->setCaption( i18n("Received %1 bytes").arg( piFileString.length() ) );
980 981
981 } 982 }
982 if ( piTime.elapsed () < 3000 ) { 983 if ( piTime.elapsed () < 3000 ) {
983 // wait for more 984 // wait for more
984 //qDebug("waitformore "); 985 //qDebug("waitformore ");
985 QTimer::singleShot( 100, this , SLOT (readBackFileFromSocket( ) )); 986 QTimer::singleShot( 100, this , SLOT (readBackFileFromSocket( ) ));
986 return; 987 return;
987 } 988 }
988 QString fileName = mFileName; 989 QString fileName = mFileName;
989 QFile file ( fileName ); 990 QFile file ( fileName );
990 if (!file.open( IO_WriteOnly ) ) { 991 if (!file.open( IO_WriteOnly ) ) {
991 delete mSyncActionDialog; 992 delete mSyncActionDialog;
992 mSyncActionDialog = 0; 993 mSyncActionDialog = 0;
993 qDebug("error open cal file "); 994 qDebug("error open cal file ");
994 piFileString = ""; 995 piFileString = "";
995 emit file_received( false ); 996 emit file_received( false );
996 blockRC = false; 997 blockRC = false;
997 return ; 998 return ;
998 999
999 } 1000 }
1000 1001
1001 // mView->setLoadedFileVersion(QDateTime::currentDateTime().addSecs( -1)); 1002 // mView->setLoadedFileVersion(QDateTime::currentDateTime().addSecs( -1));
1002 QTextStream ts ( &file ); 1003 QTextStream ts ( &file );
1003 ts.setCodec( QTextCodec::codecForName("utf8") ); 1004 ts.setCodec( QTextCodec::codecForName("utf8") );
1004 mSyncActionDialog->setCaption( i18n("Writing file to disk...") ); 1005 mSyncActionDialog->setCaption( i18n("Writing file to disk...") );
1005 ts << piFileString; 1006 ts << piFileString;
1006 mSocket->close(); 1007 mSocket->close();
1007 if ( mSocket->state() == QSocket::Idle ) 1008 if ( mSocket->state() == QSocket::Idle )
1008 QTimer::singleShot( 10, this , SLOT ( discardClient())); 1009 QTimer::singleShot( 10, this , SLOT ( discardClient()));
1009 file.close(); 1010 file.close();
1010 delete mSyncActionDialog; 1011 delete mSyncActionDialog;
1011 mSyncActionDialog = 0; 1012 mSyncActionDialog = 0;
1012 piFileString = ""; 1013 piFileString = "";
1013 blockRC = false; 1014 blockRC = false;
1014 emit file_received( true ); 1015 emit file_received( true );
1015 1016
1016} 1017}
1017 1018
1018KCommandSocket::KCommandSocket ( QString password, Q_UINT16 port, QString host, QObject * parent, const char * name ): QObject( parent, name ) 1019KCommandSocket::KCommandSocket ( QString password, Q_UINT16 port, QString host, QObject * parent, const char * name ): QObject( parent, name )
1019{ 1020{
1020 mPassWord = password; 1021 mPassWord = password;
1021 mSocket = 0; 1022 mSocket = 0;
1022 mPort = port; 1023 mPort = port;
1023 mHost = host; 1024 mHost = host;
1024 1025
1025 mRetVal = quiet; 1026 mRetVal = quiet;
1026 mTimerSocket = new QTimer ( this ); 1027 mTimerSocket = new QTimer ( this );
1027 connect( mTimerSocket, SIGNAL ( timeout () ), this, SLOT ( deleteSocket() ) ); 1028 connect( mTimerSocket, SIGNAL ( timeout () ), this, SLOT ( deleteSocket() ) );
1028} 1029}
1029void KCommandSocket::readFile( QString fn ) 1030void KCommandSocket::readFile( QString fn )
1030{ 1031{
1031 if ( !mSocket ) { 1032 if ( !mSocket ) {
1032 mSocket = new QSocket( this ); 1033 mSocket = new QSocket( this );
1033 connect( mSocket, SIGNAL(readyRead()), this, SLOT(startReadFileFromSocket()) ); 1034 connect( mSocket, SIGNAL(readyRead()), this, SLOT(startReadFileFromSocket()) );
1034 connect( mSocket, SIGNAL(delayedCloseFinished ()), this, SLOT(deleteSocket()) ); 1035 connect( mSocket, SIGNAL(delayedCloseFinished ()), this, SLOT(deleteSocket()) );
1035 } 1036 }
1036 mFileString = ""; 1037 mFileString = "";
1037 mFileName = fn; 1038 mFileName = fn;
1038 mFirst = true; 1039 mFirst = true;
1039 mSocket->connectToHost( mHost, mPort ); 1040 mSocket->connectToHost( mHost, mPort );
1040 QTextStream os( mSocket ); 1041 QTextStream os( mSocket );
1041 os.setEncoding( QTextStream::UnicodeUTF8 ); 1042 os.setEncoding( QTextStream::UnicodeUTF8 );
1042 os << "GET " << mPassWord << "\r\n"; 1043 os << "GET " << mPassWord << "\r\n";
1043 mTimerSocket->start( 10000 ); 1044 mTimerSocket->start( 10000 );
1044} 1045}
1045 1046
1046void KCommandSocket::writeFile( QString fileName ) 1047void KCommandSocket::writeFile( QString fileName )
1047{ 1048{
1048 if ( !mSocket ) { 1049 if ( !mSocket ) {
1049 mSocket = new QSocket( this ); 1050 mSocket = new QSocket( this );
1050 connect( mSocket, SIGNAL(delayedCloseFinished ()), this, SLOT(deleteSocket()) ); 1051 connect( mSocket, SIGNAL(delayedCloseFinished ()), this, SLOT(deleteSocket()) );
1051 connect( mSocket, SIGNAL(connected ()), this, SLOT(writeFileToSocket()) ); 1052 connect( mSocket, SIGNAL(connected ()), this, SLOT(writeFileToSocket()) );
1052 } 1053 }
1053 mFileName = fileName ; 1054 mFileName = fileName ;
1054 mSocket->connectToHost( mHost, mPort ); 1055 mSocket->connectToHost( mHost, mPort );
1055} 1056}
1056void KCommandSocket::writeFileToSocket() 1057void KCommandSocket::writeFileToSocket()
1057{ 1058{
1058 QFile file2( mFileName ); 1059 QFile file2( mFileName );
1059 if (!file2.open( IO_ReadOnly ) ) { 1060 if (!file2.open( IO_ReadOnly ) ) {
1060 mRetVal= errorW; 1061 mRetVal= errorW;
1061 mSocket->close(); 1062 mSocket->close();
1062 if ( mSocket->state() == QSocket::Idle ) 1063 if ( mSocket->state() == QSocket::Idle )
1063 QTimer::singleShot( 10, this , SLOT ( deleteSocket())); 1064 QTimer::singleShot( 10, this , SLOT ( deleteSocket()));
1064 return ; 1065 return ;
1065 } 1066 }
1066 QTextStream ts2( &file2 ); 1067 QTextStream ts2( &file2 );
1067 ts2.setCodec( QTextCodec::codecForName("utf8") ); 1068 ts2.setCodec( QTextCodec::codecForName("utf8") );
1068 QTextStream os2( mSocket ); 1069 QTextStream os2( mSocket );
1069 os2.setCodec( QTextCodec::codecForName("utf8") ); 1070 os2.setCodec( QTextCodec::codecForName("utf8") );
1070 os2 << "PUT " << mPassWord << "\r\n";; 1071 os2 << "PUT " << mPassWord << "\r\n";;
1071 while ( ! ts2.atEnd() ) { 1072 while ( ! ts2.atEnd() ) {
1072 os2 << ts2.readLine() << "\n"; 1073 os2 << ts2.readLine() << "\n";
1073 } 1074 }
1074 mRetVal= successW; 1075 mRetVal= successW;
1075 file2.close(); 1076 file2.close();
1076 mSocket->close(); 1077 mSocket->close();
1077 if ( mSocket->state() == QSocket::Idle ) 1078 if ( mSocket->state() == QSocket::Idle )
1078 QTimer::singleShot( 10, this , SLOT ( deleteSocket())); 1079 QTimer::singleShot( 10, this , SLOT ( deleteSocket()));
1079} 1080}
1080void KCommandSocket::sendStop() 1081void KCommandSocket::sendStop()
1081{ 1082{
1082 if ( !mSocket ) { 1083 if ( !mSocket ) {
1083 mSocket = new QSocket( this ); 1084 mSocket = new QSocket( this );
1084 connect( mSocket, SIGNAL(delayedCloseFinished ()), this, SLOT(deleteSocket()) ); 1085 connect( mSocket, SIGNAL(delayedCloseFinished ()), this, SLOT(deleteSocket()) );
1085 } 1086 }
1086 mSocket->connectToHost( mHost, mPort ); 1087 mSocket->connectToHost( mHost, mPort );
1087 QTextStream os2( mSocket ); 1088 QTextStream os2( mSocket );
1088 os2.setCodec( QTextCodec::codecForName("utf8") ); 1089 os2.setCodec( QTextCodec::codecForName("utf8") );
1089 os2 << "STOP\r\n"; 1090 os2 << "STOP\r\n";
1090 mSocket->close(); 1091 mSocket->close();
1091 if ( mSocket->state() == QSocket::Idle ) 1092 if ( mSocket->state() == QSocket::Idle )
1092 QTimer::singleShot( 10, this , SLOT ( deleteSocket())); 1093 QTimer::singleShot( 10, this , SLOT ( deleteSocket()));
1093} 1094}
1094 1095
1095void KCommandSocket::startReadFileFromSocket() 1096void KCommandSocket::startReadFileFromSocket()
1096{ 1097{
1097 if ( ! mFirst ) 1098 if ( ! mFirst )
1098 return; 1099 return;
1099 mFirst = false; 1100 mFirst = false;
1100 mTimerSocket->stop(); 1101 mTimerSocket->stop();
1101 mFileString = ""; 1102 mFileString = "";
1102 mTime.start(); 1103 mTime.start();
1103 QTimer::singleShot( 1, this , SLOT (readFileFromSocket( ) )); 1104 QTimer::singleShot( 1, this , SLOT (readFileFromSocket( ) ));
1104 1105
1105} 1106}
1106void KCommandSocket::readFileFromSocket() 1107void KCommandSocket::readFileFromSocket()
1107{ 1108{
1108 //qDebug("readBackFileFromSocket() %d ", mTime.elapsed ()); 1109 //qDebug("readBackFileFromSocket() %d ", mTime.elapsed ());
1109 while ( mSocket->canReadLine () ) { 1110 while ( mSocket->canReadLine () ) {
1110 mTime.restart(); 1111 mTime.restart();
1111 QString line = mSocket->readLine (); 1112 QString line = mSocket->readLine ();
1112 mFileString += line; 1113 mFileString += line;
1113 //qDebug("readline: %s ", line.latin1()); 1114 //qDebug("readline: %s ", line.latin1());
1114 } 1115 }
1115 if ( mTime.elapsed () < 3000 ) { 1116 if ( mTime.elapsed () < 3000 ) {
1116 // wait for more 1117 // wait for more
1117 //qDebug("waitformore "); 1118 //qDebug("waitformore ");
1118 QTimer::singleShot( 100, this , SLOT (readFileFromSocket( ) )); 1119 QTimer::singleShot( 100, this , SLOT (readFileFromSocket( ) ));
1119 return; 1120 return;
1120 } 1121 }
1121 QString fileName = mFileName; 1122 QString fileName = mFileName;
1122 QFile file ( fileName ); 1123 QFile file ( fileName );
1123 if (!file.open( IO_WriteOnly ) ) { 1124 if (!file.open( IO_WriteOnly ) ) {
1124 mFileString = ""; 1125 mFileString = "";
1125 mRetVal = errorR; 1126 mRetVal = errorR;
1126 qDebug("Error open temp calender file for writing: %s",fileName.latin1() ); 1127 qDebug("Error open temp calender file for writing: %s",fileName.latin1() );
1127 deleteSocket(); 1128 deleteSocket();
1128 return ; 1129 return ;
1129 1130
1130 } 1131 }
1131 // mView->setLoadedFileVersion(QDateTime::currentDateTime().addSecs( -1)); 1132 // mView->setLoadedFileVersion(QDateTime::currentDateTime().addSecs( -1));
1132 QTextStream ts ( &file ); 1133 QTextStream ts ( &file );
1133 ts.setCodec( QTextCodec::codecForName("utf8") ); 1134 ts.setCodec( QTextCodec::codecForName("utf8") );
1134 ts << mFileString; 1135 ts << mFileString;
1135 file.close(); 1136 file.close();
1136 mFileString = ""; 1137 mFileString = "";
1137 mRetVal = successR; 1138 mRetVal = successR;
1138 mSocket->close(); 1139 mSocket->close();
1139 // if state is not idle, deleteSocket(); is called via 1140 // if state is not idle, deleteSocket(); is called via
1140 // connect( mSocket, SIGNAL(delayedCloseFinished ()), this, SLOT(deleteSocket()) ); 1141 // connect( mSocket, SIGNAL(delayedCloseFinished ()), this, SLOT(deleteSocket()) );
1141 if ( mSocket->state() == QSocket::Idle ) 1142 if ( mSocket->state() == QSocket::Idle )
1142 deleteSocket(); 1143 deleteSocket();
1143} 1144}
1144 1145
1145void KCommandSocket::deleteSocket() 1146void KCommandSocket::deleteSocket()
1146{ 1147{
1147 if ( mTimerSocket->isActive () ) { 1148 if ( mTimerSocket->isActive () ) {
1148 mTimerSocket->stop(); 1149 mTimerSocket->stop();
1149 KMessageBox::information( 0, i18n("ERROR:\nConnection to remote host timed out!\nDid you forgot to enable\nsyncing on remote host? ")); 1150 KMessageBox::information( 0, i18n("ERROR:\nConnection to remote host timed out!\nDid you forgot to enable\nsyncing on remote host? "));
1150 mRetVal = errorR; 1151 mRetVal = errorR;
1151 } 1152 }
1152 //qDebug("KCommandSocket::deleteSocket() %d", mRetVal ); 1153 //qDebug("KCommandSocket::deleteSocket() %d", mRetVal );
1153 if ( mSocket) 1154 if ( mSocket)
1154 delete mSocket; 1155 delete mSocket;
1155 mSocket = 0; 1156 mSocket = 0;
1156 emit commandFinished( this, mRetVal ); 1157 emit commandFinished( this, mRetVal );
1157} 1158}
1158 1159