[prev in list] [next in list] [prev in thread] [next in thread] 

List:       kde-commits
Subject:    KDE/kdepim/akonadi/resources/kabc
From:       Volker Krause <vkrause () kde ! org>
Date:       2008-08-14 8:57:10
Message-ID: 1218704230.807105.31941.nullmailer () svn ! kde ! org
[Download RAW message or body]

SVN commit 846847 by vkrause:

- implement config reloading
- don't remove previous settings when configuring


 M  +33 -12    kabcresource.cpp  
 M  +4 -0      kabcresource.h  


--- trunk/KDE/kdepim/akonadi/resources/kabc/kabcresource.cpp #846846:846847
@@ -52,6 +52,7 @@
     QString mLastError;
 };
 
+// workaround to access protected method
 class KABCResource::AddressBook : public KABC::AddressBook
 {
   public:
@@ -72,11 +73,17 @@
     mDelayedUpdateTimer( new QTimer( this ) ),
     mErrorHandler( new ErrorHandler( this ) )
 {
-  mAddressBook->setErrorHandler( mErrorHandler );
-
   mDelayedUpdateTimer->setInterval( 10 );
   mDelayedUpdateTimer->setSingleShot( true );
 
+  load();
+  connect( this, SIGNAL(reloadConfiguration()), SLOT(reload()) );
+}
+
+void KABCResource::load()
+{
+  mAddressBook->setErrorHandler( mErrorHandler );
+
   KSharedConfig::Ptr config = KGlobal::config();
   Q_ASSERT( !config.isNull() );
 
@@ -136,6 +143,9 @@
 
 void KABCResource::aboutToQuit()
 {
+  if ( !mResource )
+    return;
+
   mErrorHandler->mLastError.clear();
 
   KABC::Ticket *ticket = mAddressBook->requestSaveTicket();
@@ -159,19 +169,15 @@
 
   QWidget *window = 0; // should use windowId somehow
 
+  KRES::Manager<KABC::Resource> *manager = mAddressBook->getResourceManager();
+
   if ( mResource != 0 ) {
-    disconnect( mResource, SIGNAL( loadingFinished( Resource* ) ),
-                this, SLOT(loadingFinished( Resource* ) ) );
-    disconnect( mResource, SIGNAL( loadingError( Resource*, const QString& ) ),
-                this, SLOT(loadingError( Resource*, const QString& ) ) );
-
-    mAddressBook->removeResource( mResource );
-    mResource = 0;
-    mLoaded = false;
+    KRES::ConfigDialog dlg( window, QLatin1String( "contact" ), mResource );
+    if ( dlg.exec() )
+      manager->writeConfig( KGlobal::config().data() );
+    return;
   }
 
-  KRES::Manager<KABC::Resource> *manager = mAddressBook->getResourceManager();
-
   QStringList types = manager->resourceTypeNames();
   QStringList descs = manager->resourceTypeDescriptions();
 
@@ -377,6 +383,21 @@
   itemsRetrieved( items );
 }
 
+void KABCResource::reload()
+{
+  kDebug();
+  KGlobal::config()->reparseConfiguration();
+  aboutToQuit();
+  delete mAddressBook;
+
+  mAddressBook = new AddressBook();
+  mResource = 0;
+  mLoaded = false;
+  mExplicitLoading = false;
+
+  load();
+}
+
 AKONADI_RESOURCE_MAIN( KABCResource )
 
 #include "kabcresource.moc"
--- trunk/KDE/kdepim/akonadi/resources/kabc/kabcresource.h #846846:846847
@@ -51,6 +51,9 @@
     virtual void itemRemoved( const Akonadi::Item &item );
 
   private:
+    void load();
+
+  private:
     class AddressBook;
     AddressBook *mAddressBook;
     KABC::Resource *mResource;
@@ -68,6 +71,7 @@
     void loadingError( Resource *resource, const QString &message );
     void addressBookChanged();
     void delayedUpdate();
+    void reload();
 };
 
 #endif
[prev in list] [next in list] [prev in thread] [next in thread] 

Configure | About | News | Add a list | Sponsored by KoreLogic