diff --git a/incidenceeditor-ng/incidencecategories.h b/incidenceeditor-ng/incidencecategories.h --- a/incidenceeditor-ng/incidencecategories.h +++ b/incidenceeditor-ng/incidencecategories.h @@ -52,6 +52,7 @@ private slots: void onSelectionChanged(const Akonadi::Tag::List &); + void onTagsFetchResult(); void onTagsReceived(const Akonadi::Tag::List &); void onTagCreated(KJob *job); @@ -67,6 +68,7 @@ Ui::EventOrTodoDesktop *mUi; Akonadi::Tag::List mSelectedTags; + QStringList mCategoriesToCheck; bool mDirty; }; diff --git a/incidenceeditor-ng/incidencecategories.cpp b/incidenceeditor-ng/incidencecategories.cpp --- a/incidenceeditor-ng/incidencecategories.cpp +++ b/incidenceeditor-ng/incidencecategories.cpp @@ -104,23 +104,26 @@ void IncidenceCategories::checkForUnknownCategories( const QStringList &categoriesToCheck ) { Akonadi::TagFetchJob *fetchJob = new Akonadi::TagFetchJob(); - fetchJob->setProperty("categoriesToCheck", categoriesToCheck); + mCategoriesToCheck = categoriesToCheck; connect(fetchJob, SIGNAL(tagsReceived(Akonadi::Tag::List)), this, SLOT(onTagsReceived(Akonadi::Tag::List))); + connect(fetchJob, SIGNAL(result(KJob *)), this, SLOT(onTagsFetchResult())); } void IncidenceCategories::onTagsReceived(const Akonadi::Tag::List &tags) { - QStringList tagsToCheck = sender()->property("categoriesToCheck").toStringList(); foreach (const Akonadi::Tag &tag, tags) { - if (tagsToCheck.contains(tag.gid()) || tagsToCheck.contains(tag.name())) { + if (mCategoriesToCheck.contains(tag.gid()) || mCategoriesToCheck.contains(tag.name())) { mSelectedTags << tag; } - tagsToCheck.removeAll(tag.gid()); - tagsToCheck.removeAll(tag.name()); + mCategoriesToCheck.removeAll(tag.gid()); + mCategoriesToCheck.removeAll(tag.name()); } mUi->mTagWidget->setSelection(mSelectedTags); +} - foreach ( const QString &category, tagsToCheck ) { +void IncidenceCategories::onTagsFetchResult() +{ + foreach ( const QString &category, mCategoriesToCheck ) { kDebug() << "Creating tag: " << category; Akonadi::Tag tag = Akonadi::Tag::genericTag(category); tag.setGid(category.toUtf8());