Changeset View
Changeset View
Standalone View
Standalone View
incidenceeditor-ng/incidencecategories.cpp
Show First 20 Lines • Show All 98 Lines • ▼ Show 20 Lines | |||||
{ | { | ||||
kDebug() << "mSelectedCategories = " << categories(); | kDebug() << "mSelectedCategories = " << categories(); | ||||
kDebug() << "mLoadedIncidence->categories() = " << mLoadedIncidence->categories(); | kDebug() << "mLoadedIncidence->categories() = " << mLoadedIncidence->categories(); | ||||
} | } | ||||
void IncidenceCategories::checkForUnknownCategories( const QStringList &categoriesToCheck ) | void IncidenceCategories::checkForUnknownCategories( const QStringList &categoriesToCheck ) | ||||
{ | { | ||||
Akonadi::TagFetchJob *fetchJob = new Akonadi::TagFetchJob(); | 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(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) | void IncidenceCategories::onTagsReceived(const Akonadi::Tag::List &tags) | ||||
{ | { | ||||
QStringList tagsToCheck = sender()->property("categoriesToCheck").toStringList(); | |||||
foreach (const Akonadi::Tag &tag, tags) { | 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; | mSelectedTags << tag; | ||||
} | } | ||||
tagsToCheck.removeAll(tag.gid()); | mCategoriesToCheck.removeAll(tag.gid()); | ||||
tagsToCheck.removeAll(tag.name()); | mCategoriesToCheck.removeAll(tag.name()); | ||||
} | } | ||||
mUi->mTagWidget->setSelection(mSelectedTags); | mUi->mTagWidget->setSelection(mSelectedTags); | ||||
} | |||||
foreach ( const QString &category, tagsToCheck ) { | void IncidenceCategories::onTagsFetchResult() | ||||
{ | |||||
foreach ( const QString &category, mCategoriesToCheck ) { | |||||
kDebug() << "Creating tag: " << category; | kDebug() << "Creating tag: " << category; | ||||
Akonadi::Tag tag = Akonadi::Tag::genericTag(category); | Akonadi::Tag tag = Akonadi::Tag::genericTag(category); | ||||
tag.setGid(category.toUtf8()); | tag.setGid(category.toUtf8()); | ||||
Akonadi::TagCreateJob *tagCreateJob = new Akonadi::TagCreateJob(tag, this); | Akonadi::TagCreateJob *tagCreateJob = new Akonadi::TagCreateJob(tag, this); | ||||
connect(tagCreateJob, SIGNAL(result(KJob*)), this, SLOT(onTagCreated(KJob*))); | connect(tagCreateJob, SIGNAL(result(KJob*)), this, SLOT(onTagCreated(KJob*))); | ||||
tagCreateJob->setMergeIfExisting(true); | tagCreateJob->setMergeIfExisting(true); | ||||
} | } | ||||
} | } | ||||
void IncidenceCategories::onTagCreated(KJob *job) | void IncidenceCategories::onTagCreated(KJob *job) | ||||
{ | { | ||||
const Akonadi::Tag createdTag = static_cast<Akonadi::TagCreateJob*>(job)->tag(); | const Akonadi::Tag createdTag = static_cast<Akonadi::TagCreateJob*>(job)->tag(); | ||||
kDebug() << "Created tag: " << createdTag; | kDebug() << "Created tag: " << createdTag; | ||||
mSelectedTags << createdTag; | mSelectedTags << createdTag; | ||||
mUi->mTagWidget->setSelection(mSelectedTags); | mUi->mTagWidget->setSelection(mSelectedTags); | ||||
} | } |