Sophie

Sophie

distrib > Mandriva > 2010.1 > i586 > media > main-testing-src > by-pkgid > 585206d9b4190914312662404e0cac3d > files > 4

kdepimlibs4-4.4.5-0.1mdv2010.1.src.rpm

Index: kdepimlibs/akonadi/session.h
===================================================================
--- kdepimlibs/akonadi/session.h	(révision 1088242)
+++ kdepimlibs/akonadi/session.h	(révision 1088243)
@@ -120,6 +120,7 @@
     Q_PRIVATE_SLOT( d, void jobDone( KJob* ) )
     Q_PRIVATE_SLOT( d, void jobWriteFinished( Akonadi::Job* ) )
     Q_PRIVATE_SLOT( d, void jobDestroyed( QObject* ) )
+    Q_PRIVATE_SLOT( d, void serverStateChanged( ServerManager::State ) )
     //@endcond PRIVATE
 };
 
Index: kdepimlibs/akonadi/session.cpp
===================================================================
--- kdepimlibs/akonadi/session.cpp	(révision 1088242)
+++ kdepimlibs/akonadi/session.cpp	(révision 1088243)
@@ -23,6 +23,7 @@
 #include "imapparser_p.h"
 #include "job.h"
 #include "job_p.h"
+#include "servermanager.h"
 #include "servermanager_p.h"
 #include "xdgbasedirs_p.h"
 
@@ -60,6 +61,7 @@
 #else
     const QString defaultSocketDir = XdgBaseDirs::saveDir( "data", QLatin1String( "akonadi" ) );
     const QString path = mConnectionSettings->value( QLatin1String( "Data/UnixPath" ), defaultSocketDir + QLatin1String( "/akonadiserver.socket" ) ).toString();
+    kDebug() << "connectToServer" << path;
     socket->connectToServer( path );
 #endif
   }
@@ -77,7 +79,7 @@
   if ( currentJob )
     currentJob->d_ptr->lostConnection();
   connected = false;
-  QTimer::singleShot( 1000, mParent, SLOT(reconnect()) );
+  QTimer::singleShot( 30000, mParent, SLOT(reconnect()) );
 }
 
 void SessionPrivate::dataReceived()
@@ -231,6 +233,12 @@
   socket->write( data );
 }
 
+void SessionPrivate::serverStateChanged( ServerManager::State state )
+{
+  if ( state == ServerManager::Running && !connected )
+    reconnect();
+}
+
 //@endcond
 
 
@@ -241,6 +249,7 @@
 
 void SessionPrivate::init( const QByteArray &id )
 {
+  kDebug() << id;
   parser = new ImapParser();
 
   if ( !id.isEmpty() ) {
@@ -254,14 +263,18 @@
   theNextTag = 1;
   jobRunning = false;
 
+  if ( ServerManager::state() == ServerManager::NotRunning )
+    ServerManager::start();
+
+  // TODO: shouldn't this be done in reconnect() instead? we wont read the file if the server was only started later otherwise...
   const QString connectionConfigFile = XdgBaseDirs::akonadiConnectionConfigFile();
 
   QFileInfo fileInfo( connectionConfigFile );
   if ( !fileInfo.exists() ) {
-    kWarning() << "Akonadi Client Session: connection config file '"
-               << "akonadi/akonadiconnectionrc can not be found in '"
-               << XdgBaseDirs::homePath( "config" ) << "' nor in any of "
-               << XdgBaseDirs::systemPathList( "config" );
+    kDebug() << "Akonadi Client Session: connection config file '"
+                "akonadi/akonadiconnectionrc' can not be found in"
+             << XdgBaseDirs::homePath( "config" ) << "nor in any of"
+             << XdgBaseDirs::systemPathList( "config" );
   }
 
   mConnectionSettings = new QSettings( connectionConfigFile, QSettings::IniFormat );
@@ -272,6 +285,7 @@
   mParent->connect( socket, SIGNAL(disconnected()), SLOT(socketDisconnected()) );
   mParent->connect( socket, SIGNAL(error(QLocalSocket::LocalSocketError)), SLOT(socketError(QLocalSocket::LocalSocketError)) );
   mParent->connect( socket, SIGNAL(readyRead()), SLOT(dataReceived()) );
+  mParent->connect( ServerManager::self(), SIGNAL(stateChanged(ServerManager::State)), SLOT(serverStateChanged(ServerManager::State)) );
   reconnect();
 }
 
Index: kdepimlibs/akonadi/session_p.h
===================================================================
--- kdepimlibs/akonadi/session_p.h	(révision 1088242)
+++ kdepimlibs/akonadi/session_p.h	(révision 1088243)
@@ -23,6 +23,7 @@
 #include "session.h"
 #include "imapparser_p.h"
 #include "akonadiprivate_export.h"
+#include "servermanager.h"
 
 #include <QtNetwork/QLocalSocket>
 
@@ -52,6 +53,7 @@
 
     void startNext();
     void reconnect();
+    void serverStateChanged( ServerManager::State );
     void socketDisconnected();
     void socketError( QLocalSocket::LocalSocketError error );
     void dataReceived();