summaryrefslogtreecommitdiffabout
authorzautrix <zautrix>2004-09-18 13:13:58 (UTC)
committer zautrix <zautrix>2004-09-18 13:13:58 (UTC)
commitbb16660f29fc709791aa0ee4cb63a40710a994a8 (patch) (unidiff)
tree5d7387987848039bb3594a624b819d136a38b0cd
parent4ec7c78ebd2c5a79ff224e9b07d9a3164f7fe602 (diff)
downloadkdepimpi-bb16660f29fc709791aa0ee4cb63a40710a994a8.zip
kdepimpi-bb16660f29fc709791aa0ee4cb63a40710a994a8.tar.gz
kdepimpi-bb16660f29fc709791aa0ee4cb63a40710a994a8.tar.bz2
more AB syncing
Diffstat (more/less context) (show whitespace changes)
-rw-r--r--kabc/addressbook.cpp27
-rw-r--r--kabc/addressbook.h5
-rw-r--r--kabc/addressee.cpp54
-rw-r--r--kabc/addressee.h12
-rw-r--r--kaddressbook/kabcore.cpp93
-rw-r--r--kaddressbook/kabcore.h2
6 files changed, 156 insertions, 37 deletions
diff --git a/kabc/addressbook.cpp b/kabc/addressbook.cpp
index 70eda1b..9332e21 100644
--- a/kabc/addressbook.cpp
+++ b/kabc/addressbook.cpp
@@ -39,12 +39,13 @@ $Id$
39*/ 39*/
40#include <qptrlist.h> 40#include <qptrlist.h>
41 41
42#include <kglobal.h> 42#include <kglobal.h>
43#include <klocale.h> 43#include <klocale.h>
44#include <kdebug.h> 44#include <kdebug.h>
45#include <libkcal/syncdefines.h>
45#include "addressbook.h" 46#include "addressbook.h"
46#include "resource.h" 47#include "resource.h"
47 48
48//US #include "addressbook.moc" 49//US #include "addressbook.moc"
49 50
50using namespace KABC; 51using namespace KABC;
@@ -509,12 +510,38 @@ Addressee AddressBook::findByUid( const QString &uid )
509 if ( uid == (*it).uid() ) { 510 if ( uid == (*it).uid() ) {
510 return *it; 511 return *it;
511 } 512 }
512 } 513 }
513 return Addressee(); 514 return Addressee();
514} 515}
516Addressee::List AddressBook::getExternLastSyncAddressees()
517{
518 Addressee::List results;
519
520 Iterator it;
521 for ( it = begin(); it != end(); ++it ) {
522 if ( (*it).uid().left( 20 ) == "last-syncAddressee-" ) {
523 if ( (*it).familyName().left(3) == "E: " )
524 results.append( *it );
525 }
526 }
527
528 return results;
529}
530void AddressBook::resetTempSyncStat()
531{
532
533
534 Iterator it;
535 for ( it = begin(); it != end(); ++it ) {
536 (*it).setTempSyncStat ( SYNC_TEMPSTATE_INITIAL );
537 }
538
539}
540
541
515 542
516Addressee::List AddressBook::allAddressees() 543Addressee::List AddressBook::allAddressees()
517{ 544{
518 return d->mAddressees; 545 return d->mAddressees;
519} 546}
520 547
diff --git a/kabc/addressbook.h b/kabc/addressbook.h
index e43de31..05225f9 100644
--- a/kabc/addressbook.h
+++ b/kabc/addressbook.h
@@ -285,12 +285,17 @@ class AddressBook : public QObject
285 285
286 /** 286 /**
287 Query all resources to clean up their lock files 287 Query all resources to clean up their lock files
288 */ 288 */
289 void cleanUp(); 289 void cleanUp();
290 290
291 // sync stuff
292 Addressee::List getExternLastSyncAddressees();
293 void resetTempSyncStat();
294
295
291 signals: 296 signals:
292 /** 297 /**
293 Emitted, when the address book has changed on disk. 298 Emitted, when the address book has changed on disk.
294 */ 299 */
295 void addressBookChanged( AddressBook * ); 300 void addressBookChanged( AddressBook * );
296 301
diff --git a/kabc/addressee.cpp b/kabc/addressee.cpp
index 4cdd5e5..fb32f6e 100644
--- a/kabc/addressee.cpp
+++ b/kabc/addressee.cpp
@@ -29,14 +29,16 @@ $Id$
29#include <kconfig.h> 29#include <kconfig.h>
30 30
31#include <ksharedptr.h> 31#include <ksharedptr.h>
32#include <kdebug.h> 32#include <kdebug.h>
33#include <kapplication.h> 33#include <kapplication.h>
34#include <klocale.h> 34#include <klocale.h>
35#include <kidmanager.h>
35//US 36//US
36#include <kstandarddirs.h> 37#include <kstandarddirs.h>
38#include <libkcal/syncdefines.h>
37 39
38//US #include "resource.h" 40//US #include "resource.h"
39#include "addressee.h" 41#include "addressee.h"
40 42
41using namespace KABC; 43using namespace KABC;
42 44
@@ -67,13 +69,13 @@ struct Addressee::AddresseeData : public KShared
67 KURL url; 69 KURL url;
68 Secrecy secrecy; 70 Secrecy secrecy;
69 Picture logo; 71 Picture logo;
70 Picture photo; 72 Picture photo;
71 Sound sound; 73 Sound sound;
72 Agent agent; 74 Agent agent;
73 75 QString mExternalId;
74 PhoneNumber::List phoneNumbers; 76 PhoneNumber::List phoneNumbers;
75 Address::List addresses; 77 Address::List addresses;
76 Key::List keys; 78 Key::List keys;
77 QStringList emails; 79 QStringList emails;
78 QStringList categories; 80 QStringList categories;
79 QStringList custom; 81 QStringList custom;
@@ -87,21 +89,24 @@ struct Addressee::AddresseeData : public KShared
87Addressee::Addressee() 89Addressee::Addressee()
88{ 90{
89 mData = new AddresseeData; 91 mData = new AddresseeData;
90 mData->empty = true; 92 mData->empty = true;
91 mData->changed = false; 93 mData->changed = false;
92 mData->resource = 0; 94 mData->resource = 0;
95 mData->mExternalId = ":";
96 mTempSyncStat = SYNC_TEMPSTATE_INITIAL;
93} 97}
94 98
95Addressee::~Addressee() 99Addressee::~Addressee()
96{ 100{
97} 101}
98 102
99Addressee::Addressee( const Addressee &a ) 103Addressee::Addressee( const Addressee &a )
100{ 104{
101 mData = a.mData; 105 mData = a.mData;
106 mTempSyncStat = SYNC_TEMPSTATE_INITIAL;
102} 107}
103 108
104Addressee &Addressee::operator=( const Addressee &a ) 109Addressee &Addressee::operator=( const Addressee &a )
105{ 110{
106 mData = a.mData; 111 mData = a.mData;
107 return (*this); 112 return (*this);
@@ -165,12 +170,59 @@ bool Addressee::operator!=( const Addressee &a ) const
165} 170}
166 171
167bool Addressee::isEmpty() const 172bool Addressee::isEmpty() const
168{ 173{
169 return mData->empty; 174 return mData->empty;
170} 175}
176void Addressee::removeID(const QString &prof)
177{
178 detach();
179 mData->mExternalId = KIdManager::removeId ( mData->mExternalId, prof);
180
181}
182void Addressee::setID( const QString & prof , const QString & id )
183{
184 detach();
185 mData->mExternalId = KIdManager::setId ( mData->mExternalId, prof, id );
186}
187void Addressee::setTempSyncStat( int id )
188{
189 mTempSyncStat = id;
190}
191int Addressee::tempSyncStat() const
192{
193 return mTempSyncStat;
194}
195
196QString Addressee::getID( const QString & prof)
197{
198 return KIdManager::getId ( mData->mExternalId, prof );
199}
200
201void Addressee::setCsum( const QString & prof , const QString & id )
202{
203 detach();
204 mData->mExternalId = KIdManager::setCsum ( mData->mExternalId, prof, id );
205}
206
207QString Addressee::getCsum( const QString & prof)
208{
209 return KIdManager::getCsum ( mData->mExternalId, prof );
210}
211
212void Addressee::setIDStr( const QString & s )
213{
214 detach();
215 mData->mExternalId = s;
216}
217
218QString Addressee::IDStr() const
219{
220 return mData->mExternalId;
221}
222
171 223
172void Addressee::setUid( const QString &id ) 224void Addressee::setUid( const QString &id )
173{ 225{
174 if ( id == mData->uid ) return; 226 if ( id == mData->uid ) return;
175 detach(); 227 detach();
176 mData->empty = false; 228 mData->empty = false;
diff --git a/kabc/addressee.h b/kabc/addressee.h
index 27782f9..f098371 100644
--- a/kabc/addressee.h
+++ b/kabc/addressee.h
@@ -93,13 +93,22 @@ class Addressee
93 93
94 Addressee( const Addressee & ); 94 Addressee( const Addressee & );
95 Addressee &operator=( const Addressee & ); 95 Addressee &operator=( const Addressee & );
96 96
97 bool operator==( const Addressee & ) const; 97 bool operator==( const Addressee & ) const;
98 bool operator!=( const Addressee & ) const; 98 bool operator!=( const Addressee & ) const;
99 99 // sync stuff
100 void setTempSyncStat(int id);
101 int tempSyncStat() const;
102 void setIDStr( const QString & );
103 QString IDStr() const;
104 void setID( const QString &, const QString & );
105 QString getID( const QString & );
106 void setCsum( const QString &, const QString & );
107 QString getCsum( const QString & );
108 void removeID(const QString &);
100 /** 109 /**
101 Return, if the address book entry is empty. 110 Return, if the address book entry is empty.
102 */ 111 */
103 bool isEmpty() const; 112 bool isEmpty() const;
104 113
105 /** 114 /**
@@ -812,12 +821,13 @@ class Addressee
812 */ 821 */
813 bool changed() const; 822 bool changed() const;
814 823
815 private: 824 private:
816 Addressee copy(); 825 Addressee copy();
817 void detach(); 826 void detach();
827 int mTempSyncStat;
818 828
819 struct AddresseeData; 829 struct AddresseeData;
820 mutable KSharedPtr<AddresseeData> mData; 830 mutable KSharedPtr<AddresseeData> mData;
821}; 831};
822 832
823QDataStream &operator<<( QDataStream &, const Addressee & ); 833QDataStream &operator<<( QDataStream &, const Addressee & );
diff --git a/kaddressbook/kabcore.cpp b/kaddressbook/kabcore.cpp
index 1196360..53c63ff 100644
--- a/kaddressbook/kabcore.cpp
+++ b/kaddressbook/kabcore.cpp
@@ -2510,76 +2510,99 @@ QString KABCore::getPassword( )
2510 retfile = lab.text(); 2510 retfile = lab.text();
2511 dia.hide(); 2511 dia.hide();
2512 qApp->processEvents(); 2512 qApp->processEvents();
2513 return retfile; 2513 return retfile;
2514 2514
2515} 2515}
2516#include <libkcal/syncdefines.h>
2517
2518KABC::Addressee KABCore::getLastSyncAddressee()
2519{
2520 Addressee lse;
2521 //qDebug("CurrentSyncDevice %s ",mCurrentSyncDevice .latin1() );
2522 lse = mAddressBook->findByUid( "last-syncAddressee-"+mCurrentSyncDevice );
2523 if (lse.isEmpty()) {
2524 lse.setUid( "last-syncEvent-"+mCurrentSyncDevice );
2525 QString sum = "";
2526 if ( KABPrefs::instance()->mExternSyncProfiles.contains( mCurrentSyncDevice ) )
2527 sum = "E: ";
2528 lse.setFamilyName(sum+mCurrentSyncDevice + i18n(" - sync event"));
2529 lse.setRevision( mLastAddressbookSync );
2530 lse.setCategories( i18n("SyncEvent") );
2531 mAddressBook->insertAddressee( lse );
2532 }
2533 return lse;
2534}
2535
2516bool KABCore::synchronizeAddressbooks( KABC::AddressBook* local, KABC::AddressBook* remote,int mode) 2536bool KABCore::synchronizeAddressbooks( KABC::AddressBook* local, KABC::AddressBook* remote,int mode)
2517{ 2537{
2518#if 0
2519 bool syncOK = true; 2538 bool syncOK = true;
2520 int addedAddressee = 0; 2539 int addedAddressee = 0;
2521 int addedAddresseeR = 0; 2540 int addedAddresseeR = 0;
2522 int deletedAddresseeR = 0; 2541 int deletedAddresseeR = 0;
2523 int deletedAddresseeL = 0; 2542 int deletedAddresseeL = 0;
2524 int changedLocal = 0; 2543 int changedLocal = 0;
2525 int changedRemote = 0; 2544 int changedRemote = 0;
2526 //QPtrList<Addressee> el = local->rawAddressees(); 2545 //QPtrList<Addressee> el = local->rawAddressees();
2527 Addressee* addresseeR; 2546 Addressee addresseeR;
2528 QString uid; 2547 QString uid;
2529 int take; 2548 int take;
2530 Addressee* addresseeL; 2549 Addressee addresseeL;
2531 Addressee* addresseeRSync; 2550 Addressee addresseeRSync;
2532 Addressee* addresseeLSync; 2551 Addressee addresseeLSync;
2533 QPtrList<Addressee> addresseeRSyncSharp = remote->getExternLastSyncAddressees(); 2552 KABC::Addressee::List addresseeRSyncSharp = remote->getExternLastSyncAddressees();
2534 QPtrList<Addressee> addresseeLSyncSharp = local->getExternLastSyncAddressees(); 2553 KABC::Addressee::List addresseeLSyncSharp = local->getExternLastSyncAddressees();
2535 bool fullDateRange = false; 2554 bool fullDateRange = false;
2536 local->resetTempSyncStat(); 2555 local->resetTempSyncStat();
2537 mLastCalendarSync = QDateTime::currentDateTime(); 2556 mLastAddressbookSync = QDateTime::currentDateTime();
2538 QDateTime modifiedCalendar = mLastCalendarSync;; 2557 QDateTime modifiedCalendar = mLastAddressbookSync;;
2539 addresseeLSync = getLastSyncAddressee(); 2558 addresseeLSync = getLastSyncAddressee();
2540 addresseeR = remote->addressee("last-syncAddressee-"+mCurrentSyncName ); 2559 addresseeR = remote->findByUid("last-syncAddressee-"+mCurrentSyncName );
2541 if ( addresseeR ) { 2560 if ( !addresseeR.isEmpty() ) {
2542 addresseeRSync = (Addressee*) addresseeR->clone(); 2561 addresseeRSync = addresseeR;
2543 remote->deleteAddressee(addresseeR ); 2562 remote->removeAddressee(addresseeR );
2544 2563
2545 } else { 2564 } else {
2546 if ( mGlobalSyncMode == SYNC_MODE_EXTERNAL ) { 2565 if ( mGlobalSyncMode == SYNC_MODE_EXTERNAL ) {
2547 addresseeRSync = (Addressee*)addresseeLSync->clone(); 2566 addresseeRSync = addresseeLSync ;
2548 } else { 2567 } else {
2549 fullDateRange = true; 2568 fullDateRange = true;
2550 addresseeRSync = new Addressee(); 2569 Addressee newAdd;
2551 addresseeRSync->setSummary(mCurrentSyncName + i18n(" - sync addressee")); 2570 addresseeRSync = newAdd;
2552 addresseeRSync->setUid("last-syncAddressee-"+mCurrentSyncName ); 2571 addresseeRSync.setFamilyName(mCurrentSyncName + i18n(" - sync addressee"));
2553 addresseeRSync->setDtStart( mLastCalendarSync ); 2572 addresseeRSync.setUid("last-syncAddressee-"+mCurrentSyncName );
2554 addresseeRSync->setDtEnd( mLastCalendarSync.addSecs( 7200 ) ); 2573 addresseeRSync.setRevision( mLastAddressbookSync );
2555 addresseeRSync->setCategories( i18n("SyncAddressee") ); 2574 addresseeRSync.setCategories( i18n("SyncAddressee") );
2556 } 2575 }
2557 } 2576 }
2558 if ( addresseeLSync->dtStart() == mLastCalendarSync ) 2577 if ( addresseeLSync.revision() == mLastAddressbookSync )
2559 fullDateRange = true; 2578 fullDateRange = true;
2560
2561 if ( ! fullDateRange ) { 2579 if ( ! fullDateRange ) {
2562 if ( addresseeLSync->dtStart() != addresseeRSync->dtStart() ) { 2580 if ( addresseeLSync.revision() != addresseeRSync.revision() ) {
2563 2581
2564 // qDebug("set fulldate to true %s %s" ,addresseeLSync->dtStart().toString().latin1(), addresseeRSync->dtStart().toString().latin1() ); 2582 // qDebug("set fulldate to true %s %s" ,addresseeLSync->dtStart().toString().latin1(), addresseeRSync->dtStart().toString().latin1() );
2565 //qDebug("%d %d %d %d ", addresseeLSync->dtStart().time().second(), addresseeLSync->dtStart().time().msec() , addresseeRSync->dtStart().time().second(), addresseeRSync->dtStart().time().msec()); 2583 //qDebug("%d %d %d %d ", addresseeLSync->dtStart().time().second(), addresseeLSync->dtStart().time().msec() , addresseeRSync->dtStart().time().second(), addresseeRSync->dtStart().time().msec());
2566 fullDateRange = true; 2584 fullDateRange = true;
2567 } 2585 }
2568 } 2586 }
2569 if ( fullDateRange ) 2587 if ( fullDateRange )
2570 mLastCalendarSync = QDateTime::currentDateTime().addDays( -100*365); 2588 mLastAddressbookSync = QDateTime::currentDateTime().addDays( -100*365);
2571 else 2589 else
2572 mLastCalendarSync = addresseeLSync->dtStart(); 2590 mLastAddressbookSync = addresseeLSync.revision();
2573 // for resyncing if own file has changed 2591 // for resyncing if own file has changed
2592 // PENDING fixme later when implemented
2593#if 0
2574 if ( mCurrentSyncDevice == "deleteaftersync" ) { 2594 if ( mCurrentSyncDevice == "deleteaftersync" ) {
2575 mLastCalendarSync = loadedFileVersion; 2595 mLastAddressbookSync = loadedFileVersion;
2576 qDebug("setting mLastCalendarSync "); 2596 qDebug("setting mLastAddressbookSync ");
2577 } 2597 }
2598#endif
2599
2600 #if 0
2578 //qDebug("*************************** "); 2601 //qDebug("*************************** ");
2579 qDebug("mLastCalendarSync %s ",mLastCalendarSync.toString().latin1() ); 2602 qDebug("mLastAddressbookSync %s ",mLastAddressbookSync.toString().latin1() );
2580 QPtrList<Incidence> er = remote->rawIncidences(); 2603 QPtrList<Incidence> er = remote->rawIncidences();
2581 Incidence* inR = er.first(); 2604 Incidence* inR = er.first();
2582 Incidence* inL; 2605 Incidence* inL;
2583 QProgressBar bar( er.count(),0 ); 2606 QProgressBar bar( er.count(),0 );
2584 bar.setCaption (i18n("Syncing - close to abort!") ); 2607 bar.setCaption (i18n("Syncing - close to abort!") );
2585 2608
@@ -2654,13 +2677,13 @@ bool KABCore::synchronizeAddressbooks( KABC::AddressBook* local, KABC::AddressBo
2654 inR->setLastModified( modifiedCalendar ); 2677 inR->setLastModified( modifiedCalendar );
2655 inL = inR->clone(); 2678 inL = inR->clone();
2656 local->addIncidence( inL ); 2679 local->addIncidence( inL );
2657 ++addedAddressee; 2680 ++addedAddressee;
2658 } 2681 }
2659 } else { 2682 } else {
2660 if ( inR->lastModified() > mLastCalendarSync || mode == 5 ) { 2683 if ( inR->lastModified() > mLastAddressbookSync || mode == 5 ) {
2661 inR->setLastModified( modifiedCalendar ); 2684 inR->setLastModified( modifiedCalendar );
2662 local->addIncidence( inR->clone() ); 2685 local->addIncidence( inR->clone() );
2663 ++addedAddressee; 2686 ++addedAddressee;
2664 } else { 2687 } else {
2665 checkExternSyncAddressee(addresseeRSyncSharp, inR); 2688 checkExternSyncAddressee(addresseeRSyncSharp, inR);
2666 remote->deleteIncidence( inR ); 2689 remote->deleteIncidence( inR );
@@ -2710,13 +2733,13 @@ bool KABCore::synchronizeAddressbooks( KABC::AddressBook* local, KABC::AddressBo
2710 inR = inL->clone(); 2733 inR = inL->clone();
2711 inR->setTempSyncStat( SYNC_TEMPSTATE_INITIAL ); 2734 inR->setTempSyncStat( SYNC_TEMPSTATE_INITIAL );
2712 remote->addIncidence( inR ); 2735 remote->addIncidence( inR );
2713 } 2736 }
2714 } 2737 }
2715 } else { 2738 } else {
2716 if ( inL->lastModified() < mLastCalendarSync && mode != 4 ) { 2739 if ( inL->lastModified() < mLastAddressbookSync && mode != 4 ) {
2717 checkExternSyncAddressee(addresseeLSyncSharp, inL); 2740 checkExternSyncAddressee(addresseeLSyncSharp, inL);
2718 local->deleteIncidence( inL ); 2741 local->deleteIncidence( inL );
2719 ++deletedAddresseeL; 2742 ++deletedAddresseeL;
2720 } else { 2743 } else {
2721 if ( ! KOPrefs::instance()->mWriteBackExistingOnly ) { 2744 if ( ! KOPrefs::instance()->mWriteBackExistingOnly ) {
2722 ++addedAddresseeR; 2745 ++addedAddresseeR;
@@ -2757,18 +2780,18 @@ bool KABCore::synchronizeAddressbooks( KABC::AddressBook* local, KABC::AddressBo
2757 ++delFut; 2780 ++delFut;
2758 } 2781 }
2759 inR = er.next(); 2782 inR = er.next();
2760 } 2783 }
2761 } 2784 }
2762 bar.hide(); 2785 bar.hide();
2763 mLastCalendarSync = QDateTime::currentDateTime().addSecs( 1 ); 2786 mLastAddressbookSync = QDateTime::currentDateTime().addSecs( 1 );
2764 addresseeLSync->setReadOnly( false ); 2787 addresseeLSync->setReadOnly( false );
2765 addresseeLSync->setDtStart( mLastCalendarSync ); 2788 addresseeLSync->setDtStart( mLastAddressbookSync );
2766 addresseeRSync->setDtStart( mLastCalendarSync ); 2789 addresseeRSync->setDtStart( mLastAddressbookSync );
2767 addresseeLSync->setDtEnd( mLastCalendarSync.addSecs( 3600 ) ); 2790 addresseeLSync->setDtEnd( mLastAddressbookSync.addSecs( 3600 ) );
2768 addresseeRSync->setDtEnd( mLastCalendarSync.addSecs( 3600 ) ); 2791 addresseeRSync->setDtEnd( mLastAddressbookSync.addSecs( 3600 ) );
2769 addresseeRSync->setLocation( i18n("Remote from: ")+mCurrentSyncName ) ; 2792 addresseeRSync->setLocation( i18n("Remote from: ")+mCurrentSyncName ) ;
2770 addresseeLSync->setLocation(i18n("Local from: ") + mCurrentSyncName ); 2793 addresseeLSync->setLocation(i18n("Local from: ") + mCurrentSyncName );
2771 addresseeLSync->setReadOnly( true ); 2794 addresseeLSync->setReadOnly( true );
2772 if ( mGlobalSyncMode == SYNC_MODE_NORMAL) 2795 if ( mGlobalSyncMode == SYNC_MODE_NORMAL)
2773 remote->addAddressee( addresseeRSync ); 2796 remote->addAddressee( addresseeRSync );
2774 QString mes; 2797 QString mes;
diff --git a/kaddressbook/kabcore.h b/kaddressbook/kabcore.h
index 4487a8a..c67cee6 100644
--- a/kaddressbook/kabcore.h
+++ b/kaddressbook/kabcore.h
@@ -469,12 +469,14 @@ class KABCore : public QWidget
469 void edit_sync_options(); 469 void edit_sync_options();
470 bool syncAB(QString filename, int mode); 470 bool syncAB(QString filename, int mode);
471 int ringSync(); 471 int ringSync();
472 QString getPassword( ); 472 QString getPassword( );
473 int mGlobalSyncMode; 473 int mGlobalSyncMode;
474 bool synchronizeAddressbooks( KABC::AddressBook* local, KABC::AddressBook* remote,int mode); 474 bool synchronizeAddressbooks( KABC::AddressBook* local, KABC::AddressBook* remote,int mode);
475 KABC::Addressee getLastSyncAddressee();
476 QDateTime mLastAddressbookSync;
475 public slots: 477 public slots:
476 void confSync(); 478 void confSync();
477 // ********************* 479 // *********************
478 480
479}; 481};
480 482