void CalendarResource::itemAdded(const Akonadi::Item &item, const Akonadi::Collection &collection) { if ((!collection.contentMimeTypes().contains(KCalCore::Event::eventMimeType()) && !collection.contentMimeTypes().contains(KCalCore::Todo::todoMimeType())) || (!canPerformTask<KCalCore::Event::Ptr>(item, KCalCore::Event::eventMimeType()) && !canPerformTask<KCalCore::Todo::Ptr>(item, KCalCore::Todo::todoMimeType()))) { return; } if (collection.parentCollection() == Akonadi::Collection::root()) { cancelTask(i18n("The top-level collection cannot contain any tasks or events")); return; } KGAPI2::Job *job = Q_NULLPTR; if (item.hasPayload<KCalCore::Event::Ptr>()) { KCalCore::Event::Ptr event = item.payload<KCalCore::Event::Ptr>(); EventPtr kevent(new Event(*event)); kevent->setUid(QLatin1String("")); job = new EventCreateJob(kevent, collection.remoteId(), account(), this); } else if (item.hasPayload<KCalCore::Todo::Ptr>()) { KCalCore::Todo::Ptr todo = item.payload<KCalCore::Todo::Ptr>(); TaskPtr ktodo(new Task(*todo)); ktodo->setUid(QLatin1String("")); if (!ktodo->relatedTo(KCalCore::Incidence::RelTypeParent).isEmpty()) { Akonadi::Item parentItem; parentItem.setGid(ktodo->relatedTo(KCalCore::Incidence::RelTypeParent)); ItemFetchJob *fetchJob = new ItemFetchJob(parentItem, this); fetchJob->setProperty(ITEM_PROPERTY, QVariant::fromValue(item)); fetchJob->setProperty(TASK_PROPERTY, QVariant::fromValue(ktodo)); connect(fetchJob, &ItemFetchJob::finished, this, &CalendarResource::slotTaskAddedSearchFinished); return; } else { job = new TaskCreateJob(ktodo, collection.remoteId(), account(), this); } } else { cancelTask(i18n("Invalid payload type")); return; } job->setProperty(ITEM_PROPERTY, QVariant::fromValue(item)); connect(job, &EventCreateJob::finished, this, &CalendarResource::slotCreateJobFinished); }
void CollectionGeneralPage::init(const Akonadi::Collection &collection) { QVBoxLayout *topLayout = new QVBoxLayout(this); QHBoxLayout *hbox = new QHBoxLayout(); topLayout->addItem(hbox); QLabel *label = new QLabel(i18nc("@label:textbox Name of the folder.", "&Name:"), this); hbox->addWidget(label); mNameEdit = new QLineEdit(this); mNameEdit->setToolTip( i18nc("@info:tooltip", "Set the folder name")); mNameEdit->setWhatsThis( i18nc("@info:whatsthis", "Enter a name here to set the name of this folder.")); label->setBuddy(mNameEdit); hbox->addWidget(mNameEdit); // should replies to mails in this folder be kept in this same folder? hbox = new QHBoxLayout(); topLayout->addItem(hbox); mBlockAlarmsCheckBox = new QCheckBox(i18nc("@option:check", "Block reminders locally"), this); mBlockAlarmsCheckBox->setToolTip( i18nc("@info:tooltip", "Ignore reminders from this calendar")); mBlockAlarmsCheckBox->setWhatsThis( i18nc("@info:whatsthis", "Check this box if you do not want to receive reminders from items " "associated with this calendar.")); hbox->addWidget(mBlockAlarmsCheckBox); hbox = new QHBoxLayout(); topLayout->addItem(hbox); mIconCheckBox = new QCheckBox(i18nc("@option:check", "&Use custom icon:"), this); mIconCheckBox->setToolTip( i18nc("@info:tooltip", "Set a custom icon")); mIconCheckBox->setWhatsThis( i18nc("@info:whatsthis", "Check this box if you want to set a custom icon for this folder.")); mIconButton = new KIconButton(this); mIconButton->setIconSize(16); hbox->addWidget(mIconCheckBox); hbox->addWidget(mIconButton); hbox->addStretch(); if ((collection.parentCollection() != Akonadi::Collection::root()) && PimCommon::Util::isImapResource(collection.resource())) { const MailCommon::CollectionAnnotationsAttribute *annotationAttribute = collection.attribute<MailCommon::CollectionAnnotationsAttribute>(); const QMap<QByteArray, QByteArray> annotations = (annotationAttribute ? annotationAttribute->annotations() : QMap<QByteArray, QByteArray>()); MailCommon::CollectionTypeUtil collectionUtil; const MailCommon::CollectionTypeUtil::IncidencesFor incidencesFor = collectionUtil.incidencesForFromString(QLatin1String(annotations.value(MailCommon::CollectionTypeUtil::kolabIncidencesFor()))); hbox = new QHBoxLayout(); topLayout->addItem(hbox); mIncidencesForComboBox = new MailCommon::IncidencesForWidget(this); hbox->addWidget(mIncidencesForComboBox); mIncidencesForComboBox->setCurrentIndex(incidencesFor); } topLayout->addStretch(100); // eat all superfluous space }