summaryrefslogtreecommitdiffabout
authorzautrix <zautrix>2004-10-07 19:42:44 (UTC)
committer zautrix <zautrix>2004-10-07 19:42:44 (UTC)
commit0a661f5800b86df385cc23f4c9a8324bd0b50a5c (patch) (unidiff)
treefcc17cfad0ffd022a4b92974bc53d39ba3f650de
parent1f1538e5707b59bfcff2014901f29a65589229e3 (diff)
downloadkdepimpi-0a661f5800b86df385cc23f4c9a8324bd0b50a5c.zip
kdepimpi-0a661f5800b86df385cc23f4c9a8324bd0b50a5c.tar.gz
kdepimpi-0a661f5800b86df385cc23f4c9a8324bd0b50a5c.tar.bz2
sync fix
Diffstat (more/less context) (ignore whitespace changes)
-rw-r--r--libkdepim/ksyncmanager.cpp126
-rw-r--r--libkdepim/ksyncmanager.h93
2 files changed, 100 insertions, 119 deletions
diff --git a/libkdepim/ksyncmanager.cpp b/libkdepim/ksyncmanager.cpp
index 568c2a9..01309d5 100644
--- a/libkdepim/ksyncmanager.cpp
+++ b/libkdepim/ksyncmanager.cpp
@@ -1,42 +1,42 @@
1/* 1/*
2 This file is part of KDE-Pim/Pi. 2 This file is part of KDE-Pim/Pi.
3 Copyright (c) 2004 Ulf Schenk 3 Copyright (c) 2004 Ulf Schenk
4 4
5 This library is free software; you can redistribute it and/or 5 This library is free software; you can redistribute it and/or
6 modify it under the terms of the GNU Library General Public 6 modify it under the terms of the GNU Library General Public
7 License as published by the Free Software Foundation; either 7 License as published by the Free Software Foundation; either
8 version 2 of the License, or (at your option) any later version. 8 version 2 of the License, or (at your option) any later version.
9 9
10 This library is distributed in the hope that it will be useful, 10 This library is distributed in the hope that it will be useful,
11 but WITHOUT ANY WARRANTY; without even the implied warranty of 11 but WITHOUT ANY WARRANTY; without even the implied warranty of
12 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU 12 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
13 Library General Public License for more details. 13 Library General Public License for more details.
14 14
15 You should have received a copy of the GNU Library General Public License 15 You should have received a copy of the GNU Library General Public License
16 along with this library; see the file COPYING.LIB. If not, write to 16 along with this library; see the file COPYING.LIB. If not, write to
17 the Free Software Foundation, Inc., 59 Temple Place - Suite 330, 17 the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
18 Boston, MA 02111-1307, USA. 18 Boston, MA 02111-1307, USA.
19*/ 19*/
20 20
21// $Id$ 21// $Id$
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>
@@ -52,49 +52,49 @@
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 79
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 ) {
@@ -144,49 +144,49 @@ void KSyncManager::slotSyncMenu( int action )
144 // when we call it after the main event loop, it is ok 144 // when we call it after the main event loop, it is ok
145 // same behaviour when calling OM/Pi via QCOP for the first time 145 // same behaviour when calling OM/Pi via QCOP for the first time
146 QTimer::singleShot ( 1, this, SLOT ( confSync() ) ); 146 QTimer::singleShot ( 1, this, SLOT ( confSync() ) );
147 //confSync(); 147 //confSync();
148 148
149 return; 149 return;
150 } 150 }
151 if ( action == 1 ) { 151 if ( action == 1 ) {
152 multiSync( true ); 152 multiSync( true );
153 return; 153 return;
154 } 154 }
155 if ( action == 2 ) { 155 if ( action == 2 ) {
156 enableQuick(); 156 enableQuick();
157 QTimer::singleShot ( 1, this, SLOT ( fillSyncMenu() ) ); 157 QTimer::singleShot ( 1, this, SLOT ( fillSyncMenu() ) );
158 return; 158 return;
159 } 159 }
160 if ( action == 3 ) { 160 if ( action == 3 ) {
161 delete mServerSocket; 161 delete mServerSocket;
162 mServerSocket = 0; 162 mServerSocket = 0;
163 QTimer::singleShot ( 1, this, SLOT ( fillSyncMenu() ) ); 163 QTimer::singleShot ( 1, this, SLOT ( fillSyncMenu() ) );
164 return; 164 return;
165 } 165 }
166 166
167 if (blockSave()) 167 if (blockSave())
168 return; 168 return;
169 169
170 setBlockSave(true); 170 setBlockSave(true);
171 171
172 mCurrentSyncProfile = action - 1000 ; 172 mCurrentSyncProfile = action - 1000 ;
173 mCurrentSyncDevice = mSyncProfileNames[mCurrentSyncProfile] ; 173 mCurrentSyncDevice = mSyncProfileNames[mCurrentSyncProfile] ;
174 mCurrentSyncName = mLocalMachineName ; 174 mCurrentSyncName = mLocalMachineName ;
175 KConfig config ( locateLocal( "config","ksyncprofilesrc" ) ); 175 KConfig config ( locateLocal( "config","ksyncprofilesrc" ) );
176 KSyncProfile* temp = new KSyncProfile (); 176 KSyncProfile* temp = new KSyncProfile ();
177 temp->setName(mSyncProfileNames[mCurrentSyncProfile]); 177 temp->setName(mSyncProfileNames[mCurrentSyncProfile]);
178 temp->readConfig(&config); 178 temp->readConfig(&config);
179 mAskForPreferences = temp->getAskForPreferences(); 179 mAskForPreferences = temp->getAskForPreferences();
180 mSyncAlgoPrefs = temp->getSyncPrefs(); 180 mSyncAlgoPrefs = temp->getSyncPrefs();
181 mWriteBackFile = temp->getWriteBackFile(); 181 mWriteBackFile = temp->getWriteBackFile();
182 mWriteBackExistingOnly = temp->getWriteBackExisting(); 182 mWriteBackExistingOnly = temp->getWriteBackExisting();
183 mWriteBackInFuture = 0; 183 mWriteBackInFuture = 0;
184 if ( temp->getWriteBackFuture() ) 184 if ( temp->getWriteBackFuture() )
185 mWriteBackInFuture = temp->getWriteBackFutureWeeks( ); 185 mWriteBackInFuture = temp->getWriteBackFutureWeeks( );
186 mShowSyncSummary = temp->getShowSummaryAfterSync(); 186 mShowSyncSummary = temp->getShowSummaryAfterSync();
187 if ( action == 1000 ) { 187 if ( action == 1000 ) {
188 syncSharp(); 188 syncSharp();
189 189
190 } else if ( action == 1001 ) { 190 } else if ( action == 1001 ) {
191 syncLocalFile(); 191 syncLocalFile();
192 192
@@ -279,64 +279,64 @@ void KSyncManager::enableQuick()
279 if ( ! ok ) { 279 if ( ! ok ) {
280 KMessageBox::information( 0, i18n("No valid port")); 280 KMessageBox::information( 0, i18n("No valid port"));
281 return; 281 return;
282 } 282 }
283 //qDebug("port %d ", port); 283 //qDebug("port %d ", port);
284 mServerSocket = new KServerSocket ( mPrefs->mPassiveSyncPw, port ,1 ); 284 mServerSocket = new KServerSocket ( mPrefs->mPassiveSyncPw, port ,1 );
285 mServerSocket->setFileName( defaultFileName() ); 285 mServerSocket->setFileName( defaultFileName() );
286 //qDebug("connected "); 286 //qDebug("connected ");
287 if ( !mServerSocket->ok() ) { 287 if ( !mServerSocket->ok() ) {
288 KMessageBox::information( 0, i18n("Failed to bind or\nlisten to the port!")); 288 KMessageBox::information( 0, i18n("Failed to bind or\nlisten to the port!"));
289 delete mServerSocket; 289 delete mServerSocket;
290 mServerSocket = 0; 290 mServerSocket = 0;
291 return; 291 return;
292 } 292 }
293 connect( mServerSocket, SIGNAL ( request_file() ),this, SIGNAL ( request_file() ) ); 293 connect( mServerSocket, SIGNAL ( request_file() ),this, SIGNAL ( request_file() ) );
294 connect( mServerSocket, SIGNAL ( file_received( bool ) ), this, SIGNAL ( getFile( bool ) ) ); 294 connect( mServerSocket, SIGNAL ( file_received( bool ) ), this, SIGNAL ( getFile( bool ) ) );
295} 295}
296 296
297void KSyncManager::syncLocalFile() 297void KSyncManager::syncLocalFile()
298{ 298{
299 299
300 QString fn =mPrefs->mLastSyncedLocalFile; 300 QString fn =mPrefs->mLastSyncedLocalFile;
301 QString ext; 301 QString ext;
302 302
303 switch(mTargetApp) 303 switch(mTargetApp)
304 { 304 {
305 case (KAPI): 305 case (KAPI):
306 ext = "(*.vcf)"; 306 ext = "(*.vcf)";
307 break; 307 break;
308 case (KOPI): 308 case (KOPI):
309 ext = "(*.ics/*.vcs)"; 309 ext = "(*.ics/*.vcs)";
310 break; 310 break;
311 case (PWMPI): 311 case (PWMPI):
312 ext = "(*.pwm)"; 312 ext = "(*.pwm)";
313 break; 313 break;
314 default: 314 default:
315 qDebug("KSyncManager::syncLocalFile: invalid apptype selected"); 315 qDebug("KSyncManager::syncLocalFile: invalid apptype selected");
316 break; 316 break;
317 317
318 } 318 }
319 319
320 fn =KFileDialog:: getOpenFileName( fn, i18n("Sync filename"+ext), mParent ); 320 fn =KFileDialog:: getOpenFileName( fn, i18n("Sync filename"+ext), mParent );
321 if ( fn == "" ) 321 if ( fn == "" )
322 return; 322 return;
323 if ( syncWithFile( fn, false ) ) { 323 if ( syncWithFile( fn, false ) ) {
324 qDebug("syncLocalFile() successful "); 324 qDebug("syncLocalFile() successful ");
325 } 325 }
326 326
327} 327}
328 328
329bool KSyncManager::syncWithFile( QString fn , bool quick ) 329bool KSyncManager::syncWithFile( QString fn , bool quick )
330{ 330{
331 bool ret = false; 331 bool ret = false;
332 QFileInfo info; 332 QFileInfo info;
333 info.setFile( fn ); 333 info.setFile( fn );
334 QString mess; 334 QString mess;
335 bool loadbup = true; 335 bool loadbup = true;
336 if ( !info. exists() ) { 336 if ( !info. exists() ) {
337 mess = i18n( "Sync file \n...%1\ndoes not exist!\nNothing synced!\n").arg(fn.right( 30) ); 337 mess = i18n( "Sync file \n...%1\ndoes not exist!\nNothing synced!\n").arg(fn.right( 30) );
338 int result = QMessageBox::warning( mParent, i18n("Warning!"), 338 int result = QMessageBox::warning( mParent, i18n("Warning!"),
339 mess ); 339 mess );
340 return ret; 340 return ret;
341 } 341 }
342 int result = 0; 342 int result = 0;
@@ -369,49 +369,49 @@ void KSyncManager::quickSyncLocalFile()
369 if ( syncWithFile( mPrefs->mLastSyncedLocalFile, false ) ) { 369 if ( syncWithFile( mPrefs->mLastSyncedLocalFile, false ) ) {
370 qDebug("quick syncLocalFile() successful "); 370 qDebug("quick syncLocalFile() successful ");
371 371
372 } 372 }
373} 373}
374 374
375void KSyncManager::multiSync( bool askforPrefs ) 375void KSyncManager::multiSync( bool askforPrefs )
376{ 376{
377 if (blockSave()) 377 if (blockSave())
378 return; 378 return;
379 setBlockSave(true); 379 setBlockSave(true);
380 QString question = i18n("Do you really want\nto multiple sync\nwith all checked profiles?\nSyncing takes some\ntime - all profiles\nare synced twice!"); 380 QString question = i18n("Do you really want\nto multiple sync\nwith all checked profiles?\nSyncing takes some\ntime - all profiles\nare synced twice!");
381 if ( QMessageBox::information( mParent, i18n("KDE-Pim Sync"), 381 if ( QMessageBox::information( mParent, i18n("KDE-Pim Sync"),
382 question, 382 question,
383 i18n("Yes"), i18n("No"), 383 i18n("Yes"), i18n("No"),
384 0, 0 ) != 0 ) { 384 0, 0 ) != 0 ) {
385 setBlockSave(false); 385 setBlockSave(false);
386 mParent->topLevelWidget()->setCaption(i18n("Aborted! Nothing synced!")); 386 mParent->topLevelWidget()->setCaption(i18n("Aborted! Nothing synced!"));
387 return; 387 return;
388 } 388 }
389 mCurrentSyncDevice = i18n("Multiple profiles") ; 389 mCurrentSyncDevice = i18n("Multiple profiles") ;
390 mSyncAlgoPrefs = mPrefs->mRingSyncAlgoPrefs; 390 mSyncAlgoPrefs = mPrefs->mRingSyncAlgoPrefs;
391 if ( askforPrefs ) { 391 if ( askforPrefs ) {
392 edit_sync_options(); 392 edit_sync_options();
393 mRingSyncAlgoPrefs = mSyncAlgoPrefs; 393 mPrefs->mRingSyncAlgoPrefs = mSyncAlgoPrefs;
394 } 394 }
395 mParent->topLevelWidget()->setCaption(i18n("Multiple sync started.") ); 395 mParent->topLevelWidget()->setCaption(i18n("Multiple sync started.") );
396 qApp->processEvents(); 396 qApp->processEvents();
397 int num = ringSync() ; 397 int num = ringSync() ;
398 if ( num > 1 ) 398 if ( num > 1 )
399 ringSync(); 399 ringSync();
400 setBlockSave(false); 400 setBlockSave(false);
401 if ( num ) 401 if ( num )
402 emit save(); 402 emit save();
403 if ( num ) 403 if ( num )
404 mParent->topLevelWidget()->setCaption(i18n("%1 profiles synced. Multiple sync complete!").arg(num) ); 404 mParent->topLevelWidget()->setCaption(i18n("%1 profiles synced. Multiple sync complete!").arg(num) );
405 else 405 else
406 mParent->topLevelWidget()->setCaption(i18n("Nothing synced! No profiles defined for multisync!")); 406 mParent->topLevelWidget()->setCaption(i18n("Nothing synced! No profiles defined for multisync!"));
407 return; 407 return;
408} 408}
409 409
410int KSyncManager::ringSync() 410int KSyncManager::ringSync()
411{ 411{
412 int syncedProfiles = 0; 412 int syncedProfiles = 0;
413 unsigned int i; 413 unsigned int i;
414 QTime timer; 414 QTime timer;
415 KConfig config ( locateLocal( "config","ksyncprofilesrc" ) ); 415 KConfig config ( locateLocal( "config","ksyncprofilesrc" ) );
416 QStringList syncProfileNames = mSyncProfileNames; 416 QStringList syncProfileNames = mSyncProfileNames;
417 KSyncProfile* temp = new KSyncProfile (); 417 KSyncProfile* temp = new KSyncProfile ();
@@ -499,54 +499,54 @@ int KSyncManager::ringSync()
499 syncRemote( temp, false ); 499 syncRemote( temp, false );
500 500
501 } 501 }
502 } 502 }
503 timer.start(); 503 timer.start();
504 mParent->topLevelWidget()->setCaption(i18n("Multiple sync in progress ... please wait!") ); 504 mParent->topLevelWidget()->setCaption(i18n("Multiple sync in progress ... please wait!") );
505 while ( timer.elapsed () < 2000 ) { 505 while ( timer.elapsed () < 2000 ) {
506 qApp->processEvents(); 506 qApp->processEvents();
507#ifndef _WIN32_ 507#ifndef _WIN32_
508 sleep (1); 508 sleep (1);
509#endif 509#endif
510 } 510 }
511 511
512 } 512 }
513 513
514 } 514 }
515 delete temp; 515 delete temp;
516 return syncedProfiles; 516 return syncedProfiles;
517} 517}
518 518
519void KSyncManager::syncRemote( KSyncProfile* prof, bool ask) 519void KSyncManager::syncRemote( KSyncProfile* prof, bool ask)
520{ 520{
521 QString question; 521 QString question;
522 if ( ask ) { 522 if ( ask ) {
523 question = i18n("Do you really want\nto remote sync\nwith profile \n")+ prof->getName()+" ?\n"; 523 question = i18n("Do you really want\nto remote sync\nwith profile \n")+ prof->getName()+" ?\n";
524 if ( QMessageBox::information( mParent, i18n("Sync"), 524 if ( QMessageBox::information( mParent, i18n("Sync"),
525 question, 525 question,
526 i18n("Yes"), i18n("No"), 526 i18n("Yes"), i18n("No"),
527 0, 0 ) != 0 ) 527 0, 0 ) != 0 )
528 return; 528 return;
529 } 529 }
530 530
531 QString preCommand; 531 QString preCommand;
532 QString localTempFile; 532 QString localTempFile;
533 QString postCommand; 533 QString postCommand;
534 534
535 switch(mTargetApp) 535 switch(mTargetApp)
536 { 536 {
537 case (KAPI): 537 case (KAPI):
538 preCommand = prof->getPreSyncCommandAB(); 538 preCommand = prof->getPreSyncCommandAB();
539 postCommand = prof->getPostSyncCommandAB(); 539 postCommand = prof->getPostSyncCommandAB();
540 localTempFile = prof->getLocalTempFileAB(); 540 localTempFile = prof->getLocalTempFileAB();
541 break; 541 break;
542 case (KOPI): 542 case (KOPI):
543 preCommand = prof->getPreSyncCommand(); 543 preCommand = prof->getPreSyncCommand();
544 postCommand = prof->getPostSyncCommand(); 544 postCommand = prof->getPostSyncCommand();
545 localTempFile = prof->getLocalTempFile(); 545 localTempFile = prof->getLocalTempFile();
546 break; 546 break;
547 case (PWMPI): 547 case (PWMPI):
548 preCommand = prof->getPreSyncCommandPWM(); 548 preCommand = prof->getPreSyncCommandPWM();
549 postCommand = prof->getPostSyncCommandPWM(); 549 postCommand = prof->getPostSyncCommandPWM();
550 localTempFile = prof->getLocalTempFilePWM(); 550 localTempFile = prof->getLocalTempFilePWM();
551 break; 551 break;
552 default: 552 default:
@@ -718,67 +718,67 @@ bool KSyncManager::syncExternalApplication(QString resource)
718{ 718{
719 719
720 emit save(); 720 emit save();
721 721
722 if ( mAskForPreferences ) 722 if ( mAskForPreferences )
723 edit_sync_options(); 723 edit_sync_options();
724 724
725 qDebug("sync %s", resource.latin1()); 725 qDebug("sync %s", resource.latin1());
726 726
727 bool syncOK = mImplementation->syncExternal(this, resource); 727 bool syncOK = mImplementation->syncExternal(this, resource);
728 728
729 return syncOK; 729 return syncOK;
730 730
731} 731}
732 732
733void KSyncManager::syncPhone() 733void KSyncManager::syncPhone()
734{ 734{
735 735
736 syncExternalApplication("phone"); 736 syncExternalApplication("phone");
737 737
738} 738}
739 739
740void KSyncManager::showProgressBar(int percentage, QString caption, int total) 740void KSyncManager::showProgressBar(int percentage, QString caption, int total)
741{ 741{
742 if (!bar->isVisible()) 742 if (!bar->isVisible())
743 { 743 {
744 bar->setCaption (caption); 744 bar->setCaption (caption);
745 bar->setTotalSteps ( total ) ; 745 bar->setTotalSteps ( total ) ;
746 746
747 bar->show(); 747 bar->show();
748 } 748 }
749 749
750 bar->setProgress( percentage ); 750 bar->setProgress( percentage );
751} 751}
752 752
753void KSyncManager::hideProgressBar() 753void KSyncManager::hideProgressBar()
754{ 754{
755 bar->hide(); 755 bar->hide();
756} 756}
757 757
758bool KSyncManager::isProgressBarCanceled() 758bool KSyncManager::isProgressBarCanceled()
759{ 759{
760 return !bar->isVisible(); 760 return !bar->isVisible();
761} 761}
762 762
763QString KSyncManager::syncFileName() 763QString KSyncManager::syncFileName()
764{ 764{
765 765
766 QString fn = "tempfile"; 766 QString fn = "tempfile";
767 switch(mTargetApp) 767 switch(mTargetApp)
768 { 768 {
769 case (KAPI): 769 case (KAPI):
770 fn = "tempsyncab.vcf"; 770 fn = "tempsyncab.vcf";
771 break; 771 break;
772 case (KOPI): 772 case (KOPI):
773 fn = "tempsynccal.ics"; 773 fn = "tempsynccal.ics";
774 break; 774 break;
775 case (PWMPI): 775 case (PWMPI):
776 fn = "tempsyncpw.pwm"; 776 fn = "tempsyncpw.pwm";
777 break; 777 break;
778 default: 778 default:
779 break; 779 break;
780 } 780 }
781#ifdef _WIN32_ 781#ifdef _WIN32_
782 return locateLocal( "tmp", fn ); 782 return locateLocal( "tmp", fn );
783#else 783#else
784 return (QString( "/tmp/" )+ fn ); 784 return (QString( "/tmp/" )+ fn );
@@ -786,65 +786,65 @@ QString KSyncManager::syncFileName()
786} 786}
787 787
788 788
789void KSyncManager::syncPi() 789void KSyncManager::syncPi()
790{ 790{
791 qApp->processEvents(); 791 qApp->processEvents();
792 bool ok; 792 bool ok;
793 Q_UINT16 port = mActiveSyncPort.toUInt(&ok); 793 Q_UINT16 port = mActiveSyncPort.toUInt(&ok);
794 if ( ! ok ) { 794 if ( ! ok ) {
795 mParent->topLevelWidget()->setCaption( i18n("Sorry, no valid port.Syncing cancelled.") ); 795 mParent->topLevelWidget()->setCaption( i18n("Sorry, no valid port.Syncing cancelled.") );
796 return; 796 return;
797 } 797 }
798 KCommandSocket* commandSocket = new KCommandSocket( mPassWordPiSync, port, mActiveSyncIP, this ); 798 KCommandSocket* commandSocket = new KCommandSocket( mPassWordPiSync, port, mActiveSyncIP, this );
799 connect( commandSocket, SIGNAL(commandFinished( KCommandSocket*, int )), this, SLOT(deleteCommandSocket(KCommandSocket*, int)) ); 799 connect( commandSocket, SIGNAL(commandFinished( KCommandSocket*, int )), this, SLOT(deleteCommandSocket(KCommandSocket*, int)) );
800 mParent->topLevelWidget()->setCaption( i18n("Sending request for remote file ...") ); 800 mParent->topLevelWidget()->setCaption( i18n("Sending request for remote file ...") );
801 commandSocket->readFile( syncFileName() ); 801 commandSocket->readFile( syncFileName() );
802} 802}
803 803
804void KSyncManager::deleteCommandSocket(KCommandSocket*s, int state) 804void KSyncManager::deleteCommandSocket(KCommandSocket*s, int state)
805{ 805{
806 qDebug("MainWindow::deleteCommandSocket %d", state); 806 qDebug("MainWindow::deleteCommandSocket %d", state);
807 807
808 //enum { success, errorW, errorR, quiet }; 808 //enum { success, errorW, errorR, quiet };
809 if ( state == KCommandSocket::errorR ||state == KCommandSocket::errorTO ) { 809 if ( state == KCommandSocket::errorR ||state == KCommandSocket::errorTO ) {
810 mParent->topLevelWidget()->setCaption( i18n("ERROR: Receiving remote file failed.") ); 810 mParent->topLevelWidget()->setCaption( i18n("ERROR: Receiving remote file failed.") );
811 delete s; 811 delete s;
812 if ( state == KCommandSocket::errorR ) { 812 if ( state == KCommandSocket::errorR ) {
813 KCommandSocket* commandSocket = new KCommandSocket( mPassWordPiSync, mActiveSyncPort.toUInt(), mActiveSyncIP, this ); 813 KCommandSocket* commandSocket = new KCommandSocket( mPassWordPiSync, mActiveSyncPort.toUInt(), mActiveSyncIP, this );
814 connect( commandSocket, SIGNAL(commandFinished( KCommandSocket*, int)), this, SLOT(deleteCommandSocket(KCommandSocket*, int )) ); 814 connect( commandSocket, SIGNAL(commandFinished( KCommandSocket*, int)), this, SLOT(deleteCommandSocket(KCommandSocket*, int )) );
815 commandSocket->sendStop(); 815 commandSocket->sendStop();
816 } 816 }
817 return; 817 return;
818 818
819 } else if ( state == KCommandSocket::errorW ) { 819 } else if ( state == KCommandSocket::errorW ) {
820 mParent->topLevelWidget()->setCaption( i18n("ERROR:Writing back file failed.") ); 820 mParent->topLevelWidget()->setCaption( i18n("ERROR:Writing back file failed.") );
821 821
822 } else if ( state == KCommandSocket::successR ) { 822 } else if ( state == KCommandSocket::successR ) {
823 QTimer::singleShot( 1, this , SLOT ( readFileFromSocket())); 823 QTimer::singleShot( 1, this , SLOT ( readFileFromSocket()));
824 824
825 } else if ( state == KCommandSocket::successW ) { 825 } else if ( state == KCommandSocket::successW ) {
826 mParent->topLevelWidget()->setCaption( i18n("Pi-Sync succesful!") ); 826 mParent->topLevelWidget()->setCaption( i18n("Pi-Sync succesful!") );
827 } 827 }
828 828
829 delete s; 829 delete s;
830} 830}
831 831
832void KSyncManager::readFileFromSocket() 832void KSyncManager::readFileFromSocket()
833{ 833{
834 QString fileName = syncFileName(); 834 QString fileName = syncFileName();
835 mParent->topLevelWidget()->setCaption( i18n("Remote file saved to temp file.") ); 835 mParent->topLevelWidget()->setCaption( i18n("Remote file saved to temp file.") );
836 if ( ! syncWithFile( fileName , true ) ) { 836 if ( ! syncWithFile( fileName , true ) ) {
837 mParent->topLevelWidget()->setCaption( i18n("Syncing failed.") ); 837 mParent->topLevelWidget()->setCaption( i18n("Syncing failed.") );
838 qDebug("Syncing failed "); 838 qDebug("Syncing failed ");
839 return; 839 return;
840 } 840 }
841 KCommandSocket* commandSocket = new KCommandSocket( mPassWordPiSync, mActiveSyncPort.toUInt(), mActiveSyncIP, this ); 841 KCommandSocket* commandSocket = new KCommandSocket( mPassWordPiSync, mActiveSyncPort.toUInt(), mActiveSyncIP, this );
842 connect( commandSocket, SIGNAL(commandFinished( KCommandSocket*, int)), this, SLOT(deleteCommandSocket(KCommandSocket*, int )) ); 842 connect( commandSocket, SIGNAL(commandFinished( KCommandSocket*, int)), this, SLOT(deleteCommandSocket(KCommandSocket*, int )) );
843 if ( mWriteBackFile ) 843 if ( mWriteBackFile )
844 commandSocket->writeFile( fileName ); 844 commandSocket->writeFile( fileName );
845 else { 845 else {
846 commandSocket->sendStop(); 846 commandSocket->sendStop();
847 mParent->topLevelWidget()->setCaption( i18n("Pi-Sync succesful!") ); 847 mParent->topLevelWidget()->setCaption( i18n("Pi-Sync succesful!") );
848 } 848 }
849} 849}
850 850
@@ -1135,40 +1135,40 @@ void KCommandSocket::readFileFromSocket()
1135 mFileString = ""; 1135 mFileString = "";
1136 mRetVal = errorR; 1136 mRetVal = errorR;
1137 qDebug("Error open temp calender file for writing: %s",fileName.latin1() ); 1137 qDebug("Error open temp calender file for writing: %s",fileName.latin1() );
1138 deleteSocket(); 1138 deleteSocket();
1139 return ; 1139 return ;
1140 1140
1141 } 1141 }
1142 // mView->setLoadedFileVersion(QDateTime::currentDateTime().addSecs( -1)); 1142 // mView->setLoadedFileVersion(QDateTime::currentDateTime().addSecs( -1));
1143 QTextStream ts ( &file ); 1143 QTextStream ts ( &file );
1144 ts.setEncoding( QTextStream::Latin1 ); 1144 ts.setEncoding( QTextStream::Latin1 );
1145 ts << mFileString; 1145 ts << mFileString;
1146 file.close(); 1146 file.close();
1147 mFileString = ""; 1147 mFileString = "";
1148 mRetVal = successR; 1148 mRetVal = successR;
1149 mSocket->close(); 1149 mSocket->close();
1150 // if state is not idle, deleteSocket(); is called via 1150 // if state is not idle, deleteSocket(); is called via
1151 // connect( mSocket, SIGNAL(delayedCloseFinished ()), this, SLOT(deleteSocket()) ); 1151 // connect( mSocket, SIGNAL(delayedCloseFinished ()), this, SLOT(deleteSocket()) );
1152 if ( mSocket->state() == QSocket::Idle ) 1152 if ( mSocket->state() == QSocket::Idle )
1153 deleteSocket(); 1153 deleteSocket();
1154} 1154}
1155 1155
1156void KCommandSocket::deleteSocket() 1156void KCommandSocket::deleteSocket()
1157{ 1157{
1158 if ( mTimerSocket->isActive () ) { 1158 if ( mTimerSocket->isActive () ) {
1159 mTimerSocket->stop(); 1159 mTimerSocket->stop();
1160 KMessageBox::information( 0, i18n("ERROR:\nConnection to remote host timed out!\nDid you forgot to enable\nsyncing on remote host? ")); 1160 KMessageBox::information( 0, i18n("ERROR:\nConnection to remote host timed out!\nDid you forgot to enable\nsyncing on remote host? "));
1161 mRetVal = errorTO; 1161 mRetVal = errorTO;
1162 if ( mSocket ) { 1162 if ( mSocket ) {
1163 mSocket->close(); 1163 mSocket->close();
1164 if ( mSocket->state() == QSocket::Idle ) 1164 if ( mSocket->state() == QSocket::Idle )
1165 deleteSocket(); 1165 deleteSocket();
1166 return; 1166 return;
1167 } 1167 }
1168 } 1168 }
1169 //qDebug("KCommandSocket::deleteSocket() %d", mRetVal ); 1169 //qDebug("KCommandSocket::deleteSocket() %d", mRetVal );
1170 if ( mSocket) 1170 if ( mSocket)
1171 delete mSocket; 1171 delete mSocket;
1172 mSocket = 0; 1172 mSocket = 0;
1173 emit commandFinished( this, mRetVal ); 1173 emit commandFinished( this, mRetVal );
1174} 1174}
diff --git a/libkdepim/ksyncmanager.h b/libkdepim/ksyncmanager.h
index 7027894..1f7c7e7 100644
--- a/libkdepim/ksyncmanager.h
+++ b/libkdepim/ksyncmanager.h
@@ -1,226 +1,207 @@
1/* 1/*
2 This file is part of KDE-Pim/Pi. 2 This file is part of KDE-Pim/Pi.
3 Copyright (c) 2004 Ulf Schenk 3 Copyright (c) 2004 Ulf Schenk
4 4
5 This library is free software; you can redistribute it and/or 5 This library is free software; you can redistribute it and/or
6 modify it under the terms of the GNU Library General Public 6 modify it under the terms of the GNU Library General Public
7 License as published by the Free Software Foundation; either 7 License as published by the Free Software Foundation; either
8 version 2 of the License, or (at your option) any later version. 8 version 2 of the License, or (at your option) any later version.
9 9
10 This library is distributed in the hope that it will be useful, 10 This library is distributed in the hope that it will be useful,
11 but WITHOUT ANY WARRANTY; without even the implied warranty of 11 but WITHOUT ANY WARRANTY; without even the implied warranty of
12 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU 12 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
13 Library General Public License for more details. 13 Library General Public License for more details.
14 14
15 You should have received a copy of the GNU Library General Public License 15 You should have received a copy of the GNU Library General Public License
16 along with this library; see the file COPYING.LIB. If not, write to 16 along with this library; see the file COPYING.LIB. If not, write to
17 the Free Software Foundation, Inc., 59 Temple Place - Suite 330, 17 the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
18 Boston, MA 02111-1307, USA. 18 Boston, MA 02111-1307, USA.
19 19
20$Id$ 20 $Id$
21*/ 21*/
22#ifndef _KSYNCMANAGER_H 22#ifndef _KSYNCMANAGER_H
23#define _KSYNCMANAGER_H 23#define _KSYNCMANAGER_H
24 24
25#include <qobject.h> 25#include <qobject.h>
26#include <qstring.h> 26#include <qstring.h>
27#include <qsocket.h> 27#include <qsocket.h>
28#include <qdatetime.h> 28#include <qdatetime.h>
29#include <qserversocket.h> 29#include <qserversocket.h>
30#include <qtextstream.h> 30#include <qtextstream.h>
31#include <qregexp.h> 31#include <qregexp.h>
32 32
33class QPopupMenu; 33class QPopupMenu;
34class KSyncProfile; 34class KSyncProfile;
35class KPimPrefs; 35class KPimPrefs;
36class QWidget; 36class QWidget;
37class KSyncManager; 37class KSyncManager;
38class KSyncInterface; 38class KSyncInterface;
39class QProgressBar; 39class QProgressBar;
40 40
41 41
42class KServerSocket : public QServerSocket 42class KServerSocket : public QServerSocket
43{ 43{
44 Q_OBJECT 44 Q_OBJECT
45 45
46public: 46 public:
47 KServerSocket ( QString password, Q_UINT16 port, int backlog = 0, QObject * parent=0, const char * name=0 ); 47 KServerSocket ( QString password, Q_UINT16 port, int backlog = 0, QObject * parent=0, const char * name=0 );
48 48
49 void newConnection ( int socket ) ; 49 void newConnection ( int socket ) ;
50 void setFileName( QString fn ) {mFileName = fn;}; 50 void setFileName( QString fn ) {mFileName = fn;};
51 51 signals:
52signals:
53 void file_received( bool ); 52 void file_received( bool );
54 void request_file(); 53 void request_file();
55 void saveFile(); 54 void saveFile();
56 void endConnect(); 55 void endConnect();
57private slots: 56 private slots:
58 void discardClient(); 57 void discardClient();
59 void readClient(); 58 void readClient();
60 void readBackFileFromSocket(); 59 void readBackFileFromSocket();
61 private : 60 private :
62 bool blockRC; 61 bool blockRC;
63 void send_file(); 62 void send_file();
64 void get_file(); 63 void get_file();
65 void end_connect(); 64 void end_connect();
66 QDialog* mSyncActionDialog; 65 QDialog* mSyncActionDialog;
67 QSocket* mSocket; 66 QSocket* mSocket;
68 QString mPassWord; 67 QString mPassWord;
69 QString mFileName; 68 QString mFileName;
70 QTime piTime; 69 QTime piTime;
71 QString piFileString; 70 QString piFileString;
72}; 71};
73 72
74class KCommandSocket : public QObject 73class KCommandSocket : public QObject
75{ 74{
76 Q_OBJECT 75 Q_OBJECT
77public: 76 public:
78 enum state { successR, errorR, successW, errorW, errorTO, quiet }; 77 enum state { successR, errorR, successW, errorW, errorTO, quiet };
79 KCommandSocket ( QString password, Q_UINT16 port, QString host, QObject * parent=0, const char * name=0 ); 78 KCommandSocket ( QString password, Q_UINT16 port, QString host, QObject * parent=0, const char * name=0 );
80 void readFile( QString ); 79 void readFile( QString );
81 void writeFile( QString ); 80 void writeFile( QString );
82 void sendStop(); 81 void sendStop();
83 82
84 83 signals:
85signals:
86 void commandFinished( KCommandSocket*, int ); 84 void commandFinished( KCommandSocket*, int );
87private slots: 85 private slots:
88 void startReadFileFromSocket(); 86 void startReadFileFromSocket();
89 void readFileFromSocket(); 87 void readFileFromSocket();
90 void deleteSocket(); 88 void deleteSocket();
91 void writeFileToSocket(); 89 void writeFileToSocket();
92 private : 90 private :
93 QSocket* mSocket; 91 QSocket* mSocket;
94 QString mPassWord; 92 QString mPassWord;
95 Q_UINT16 mPort; 93 Q_UINT16 mPort;
96 QString mHost; 94 QString mHost;
97 QString mFileName; 95 QString mFileName;
98 QTimer* mTimerSocket; 96 QTimer* mTimerSocket;
99 int mRetVal; 97 int mRetVal;
100 QTime mTime; 98 QTime mTime;
101 QString mFileString; 99 QString mFileString;
102 bool mFirst; 100 bool mFirst;
103}; 101};
104 102
105 103
106class KSyncManager : public QObject 104class KSyncManager : public QObject
107{ 105{
108 Q_OBJECT 106 Q_OBJECT
109 107
110 public: 108 public:
111 enum TargetApp { 109 enum TargetApp {
112 KOPI = 0, 110 KOPI = 0,
113 KAPI = 1, 111 KAPI = 1,
114 PWMPI = 2 }; 112 PWMPI = 2 };
115
116 113
117 KSyncManager(QWidget* parent, KSyncInterface* implementation, TargetApp ta, KPimPrefs* prefs, QPopupMenu* syncmenu); 114 KSyncManager(QWidget* parent, KSyncInterface* implementation, TargetApp ta, KPimPrefs* prefs, QPopupMenu* syncmenu);
118 ~KSyncManager() ; 115 ~KSyncManager() ;
119 116
120 void multiSync( bool askforPrefs ); 117 void multiSync( bool askforPrefs );
121 bool blockSave() { return mBlockSaveFlag; } 118 bool blockSave() { return mBlockSaveFlag; }
122 void setBlockSave(bool sa) { mBlockSaveFlag = sa; } 119 void setBlockSave(bool sa) { mBlockSaveFlag = sa; }
123 void setDefaultFileName( QString s) { mDefFileName = s ;} 120 void setDefaultFileName( QString s) { mDefFileName = s ;}
124 QString defaultFileName() { return mDefFileName ;} 121 QString defaultFileName() { return mDefFileName ;}
125 QString syncFileName(); 122 QString syncFileName();
126 void fillSyncMenu();
127 123
128 QString getCurrentSyncDevice() { return mCurrentSyncDevice; } 124 QString getCurrentSyncDevice() { return mCurrentSyncDevice; }
129 QString getCurrentSyncName() { return mCurrentSyncName; } 125 QString getCurrentSyncName() { return mCurrentSyncName; }
130 126
131 void showProgressBar(int percentage, QString caption = QString::null, int total=100); 127 void showProgressBar(int percentage, QString caption = QString::null, int total=100);
132 void hideProgressBar(); 128 void hideProgressBar();
133 bool isProgressBarCanceled(); 129 bool isProgressBarCanceled();
134 130
135 // sync stuff 131 // sync stuff
136 QString mLocalMachineName; 132 QString mLocalMachineName;
137 QStringList mExternSyncProfiles; 133 QStringList mExternSyncProfiles;
138 QStringList mSyncProfileNames; 134 QStringList mSyncProfileNames;
139 bool mAskForPreferences; 135 bool mAskForPreferences;
140 bool mShowSyncSummary; 136 bool mShowSyncSummary;
141 bool mShowSyncEvents;
142 bool mShowTodoInAgenda;
143 bool mWriteBackExistingOnly; 137 bool mWriteBackExistingOnly;
144 int mSyncAlgoPrefs; 138 int mSyncAlgoPrefs;
145 int mRingSyncAlgoPrefs;
146 bool mWriteBackFile; 139 bool mWriteBackFile;
147 int mWriteBackInFuture; 140 int mWriteBackInFuture;
148 QString mPhoneDevice; 141 QString mPhoneDevice;
149 QString mPhoneConnection; 142 QString mPhoneConnection;
150 QString mPhoneModel; 143 QString mPhoneModel;
151 QString mPassWordPiSync; 144 QString mPassWordPiSync;
152 QString mActiveSyncPort; 145 QString mActiveSyncPort;
153 QString mActiveSyncIP ; 146 QString mActiveSyncIP ;
154 147
155 signals: 148 signals:
156 void save(); 149 void save();
157 void request_file(); 150 void request_file();
158 void getFile( bool ); 151 void getFile( bool );
159 152
160 public slots: 153 public slots:
161 void slotSyncMenu( int ); 154 void slotSyncMenu( int );
162 void deleteCommandSocket(KCommandSocket*s, int state); 155 void deleteCommandSocket(KCommandSocket*s, int state);
163 void readFileFromSocket(); 156 void readFileFromSocket();
157 void fillSyncMenu();
164 158
165 private: 159 private:
166 // LR *******************************
167 // sync stuff!
168 void syncPi(); 160 void syncPi();
169 KServerSocket * mServerSocket; 161 KServerSocket * mServerSocket;
170 void enableQuick(); 162 void enableQuick();
171 KPimPrefs* mPrefs; 163 KPimPrefs* mPrefs;
172 QString mDefFileName; 164 QString mDefFileName;
173 QString mCurrentSyncDevice; 165 QString mCurrentSyncDevice;
174 QString mCurrentSyncName; 166 QString mCurrentSyncName;
175 void quickSyncLocalFile(); 167 void quickSyncLocalFile();
176 bool syncWithFile( QString fn , bool quick ); 168 bool syncWithFile( QString fn , bool quick );
177 void syncLocalFile(); 169 void syncLocalFile();
178 void syncPhone(); 170 void syncPhone();
179 void syncSharp(); 171 void syncSharp();
180 bool syncExternalApplication(QString); 172 bool syncExternalApplication(QString);
181 int mCurrentSyncProfile ; 173 int mCurrentSyncProfile ;
182 void syncRemote( KSyncProfile* prof, bool ask = true); 174 void syncRemote( KSyncProfile* prof, bool ask = true);
183 void edit_sync_options(); 175 void edit_sync_options();
184 int ringSync(); 176 int ringSync();
185 QString getPassword( ); 177 QString getPassword( );
186 178
187 private slots: 179 private slots:
188 void confSync(); 180 void confSync();
189 // *********************
190
191 private: 181 private:
192 bool mBlockSaveFlag; 182 bool mBlockSaveFlag;
193
194
195 QWidget* mParent; 183 QWidget* mParent;
196 KSyncInterface* mImplementation; 184 KSyncInterface* mImplementation;
197 TargetApp mTargetApp; 185 TargetApp mTargetApp;
198 QPopupMenu* mSyncMenu; 186 QPopupMenu* mSyncMenu;
199
200 QProgressBar* bar; 187 QProgressBar* bar;
201 188
202
203
204
205
206}; 189};
207 190
208 191
209class KSyncInterface 192class KSyncInterface
210{ 193{
211
212
213 public : 194 public :
214 virtual bool sync(KSyncManager* manager, QString filename, int mode) = 0; 195 virtual bool sync(KSyncManager* manager, QString filename, int mode) = 0;
215
216 virtual bool syncExternal(KSyncManager* manager, QString resource) 196 virtual bool syncExternal(KSyncManager* manager, QString resource)
217 { 197 {
218 // empty implementation, because some syncable applications do not have an external(sharpdtm) syncmode, like pwmanager. 198 // empty implementation, because some syncable applications do not
219 return false; 199 // have an external(sharpdtm) syncmode, like pwmanager.
220 } 200 return false;
201 }
221 202
222 203
223}; 204};
224 205
225 206
226#endif 207#endif