Index: session.h =================================================================== --- session.h (revision 1206657) +++ session.h (working copy) @@ -95,6 +95,15 @@ */ void clear(); + Q_SIGNALS: + /** + * This signal is emitted whenever the session has been reconnected + * to the server (e.g. after a server crash). + * + * @since 4.6 + */ + void reconnected(); + protected: /** * Creates a new session with shared private object. Index: session.cpp =================================================================== --- session.cpp (revision 1206657) +++ session.cpp (working copy) @@ -152,6 +152,8 @@ tcpSocket->connectToHost( serverAddress, port ); } #endif + + emit mParent->reconnected(); } void SessionPrivate::socketError( QLocalSocket::LocalSocketError ) Index: resourcebase.cpp =================================================================== --- resourcebase.cpp (revision 1206657) +++ resourcebase.cpp (working copy) @@ -132,6 +132,13 @@ void changeCommittedResult( KJob* job ); + void slotSessionReconnected() + { + Q_Q( ResourceBase ); + + new ResourceSelectJob( q->identifier() ); + } + void createItemSyncInstanceIfMissing() { Q_Q( ResourceBase ); @@ -219,6 +226,8 @@ DBusConnectionPool::threadConnection().registerObject( QLatin1String( "/Debug" ), d, QDBusConnection::ExportScriptableSlots ); new ResourceSelectJob( identifier() ); + + connect( d->mChangeRecorder->session(), SIGNAL( reconnected() ), SLOT( slotSessionReconnected() ) ); } ResourceBase::~ResourceBase() Index: resourcebase.h =================================================================== --- resourcebase.h (revision 1206657) +++ resourcebase.h (working copy) @@ -592,6 +592,7 @@ Q_PRIVATE_SLOT( d_func(), void slotPrepareItemRetrieval( const Akonadi::Item& item ) ) Q_PRIVATE_SLOT( d_func(), void slotPrepareItemRetrievalResult( KJob* ) ) Q_PRIVATE_SLOT( d_func(), void changeCommittedResult( KJob* ) ) + Q_PRIVATE_SLOT( d_func(), void slotSessionReconnected() ) }; }