diff --git a/src/klib/akonadibackend.cpp b/src/klib/akonadibackend.cpp index d54840f..61f819e 100644 --- a/src/klib/akonadibackend.cpp +++ b/src/klib/akonadibackend.cpp @@ -206,29 +206,44 @@ Contact* AkonadiBackend::addItem(Akonadi::Item item, bool ignoreEmpty) * * ****************************************************************************/ -///Update the contact list when a new Akonadi collection is added -ContactList AkonadiBackend::update(Akonadi::Collection collection) +void AkonadiBackend::slotJobCompleted(KJob* job) { - if ( !collection.isValid() ) { - kDebug() << "The current collection is not valid"; - return ContactList(); + if (job->error()) { + kDebug() << "An Akonadi job failed"; + return; } - const bool onlyWithNumber = ConfigurationSkeleton::hideContactWithoutPhone(); - - Akonadi::RecursiveItemFetchJob *job = new Akonadi::RecursiveItemFetchJob( collection, QStringList() << KABC::Addressee::mimeType() << KABC::ContactGroup::mimeType()); - job->fetchScope().fetchFullPayload(); - if ( job->exec() ) { - const Akonadi::Item::List items = job->items(); - + Akonadi::RecursiveItemFetchJob* akojob = qobject_cast(job); + if (akojob) { + const bool onlyWithNumber = ConfigurationSkeleton::hideContactWithoutPhone(); + const Akonadi::Item::List items = akojob->items(); foreach ( const Akonadi::Item &item, items ) { addItem(item,onlyWithNumber); } beginResetModel(); + const int oldSize = m_pContacts.size(); m_pContacts = m_ContactByUid.values(); endResetModel(); + emit layoutChanged(); + if (oldSize != m_pContacts.size()) + emit collectionChanged(); } - return m_ContactByUid.values(); +} + +///Update the contact list when a new Akonadi collection is added +void AkonadiBackend::update(const Akonadi::Collection& collection) +{ + if ( !collection.isValid() ) { + kDebug() << "The current collection is not valid"; + return; + } + + Akonadi::RecursiveItemFetchJob *job = new Akonadi::RecursiveItemFetchJob( collection, QStringList() << KABC::Addressee::mimeType() << KABC::ContactGroup::mimeType()); + job->fetchScope().fetchFullPayload(); + + connect(job, SIGNAL( result( KJob* ) ), this, SLOT( slotJobCompleted( KJob* ) ) ); + job->start(); + return; } //update ///Edit backend value using an updated frontend contact diff --git a/src/klib/akonadibackend.h b/src/klib/akonadibackend.h index 7796fd8..53ba396 100644 --- a/src/klib/akonadibackend.h +++ b/src/klib/akonadibackend.h @@ -36,6 +36,7 @@ namespace KABC { class Addressee ; class PhoneNumber ; } +class KJob; namespace Akonadi { class Session ; @@ -86,12 +87,13 @@ protected: ContactList update_slot(); public Q_SLOTS: - ContactList update(Akonadi::Collection collection); + void update(const Akonadi::Collection& collection); void collectionsReceived( const Akonadi::Collection::List& ); private Q_SLOTS: void slotItemAdded(Akonadi::Item item,Akonadi::Collection coll); void slotItemChanged (const Akonadi::Item &item, const QSet< QByteArray > &partIdentifiers); void slotItemRemoved (const Akonadi::Item &item); + void slotJobCompleted(KJob* job); }; #endif diff --git a/src/widgets/videoglframe.h b/src/widgets/videoglframe.h index b69f062..b6413e7 100644 --- a/src/widgets/videoglframe.h +++ b/src/widgets/videoglframe.h @@ -18,6 +18,10 @@ #ifndef VIDEOGLFRAME_H #define VIDEOGLFRAME_H +#include +#include +#include + class VideoRenderer; class ThreadedPainter2; diff --git a/src/widgets/videoscene.cpp b/src/widgets/videoscene.cpp index 6abf313..59d8f30 100644 --- a/src/widgets/videoscene.cpp +++ b/src/widgets/videoscene.cpp @@ -18,6 +18,7 @@ #include "videoscene.h" #include #include +#include #include "videoglframe.h" #include "videotoolbar.h" diff --git a/src/widgets/videowidget2.cpp b/src/widgets/videowidget2.cpp index 3b1c68e..230803c 100644 --- a/src/widgets/videowidget2.cpp +++ b/src/widgets/videowidget2.cpp @@ -20,6 +20,9 @@ //Qt #include #include +#include +#include +#include //System #include diff --git a/src/widgets/videowidget3.cpp b/src/widgets/videowidget3.cpp index e5fbd58..67228ad 100644 --- a/src/widgets/videowidget3.cpp +++ b/src/widgets/videowidget3.cpp @@ -21,6 +21,7 @@ #include #include #include +#include //System #include