Akonadi::Item getErrorItem(Kolab::FolderType folderType, const QString &remoteId) { //TODO set title, text and icon Akonadi::Item item; item.setRemoteId(remoteId); switch (folderType) { case Kolab::EventType: { KCalCore::Event::Ptr event(new KCalCore::Event); //FIXME Use message creation date time event->setDtStart(KDateTime::currentUtcDateTime()); event->setSummary(i18n("Corrupt Event")); event->setDescription(i18n("Event could not be read. Delete this event to remove it from the server.")); item.setMimeType(KCalCore::Event::eventMimeType()); item.setPayload(event); } break; case Kolab::TaskType: { KCalCore::Todo::Ptr task(new KCalCore::Todo); //FIXME Use message creation date time task->setDtStart(KDateTime::currentUtcDateTime()); task->setSummary(i18n("Corrupt Task")); task->setDescription(i18n("Task could not be read. Delete this task to remove it from the server.")); item.setMimeType(KCalCore::Todo::todoMimeType()); item.setPayload(task); } break; case Kolab::JournalType: { KCalCore::Journal::Ptr journal(new KCalCore::Journal); //FIXME Use message creation date time journal->setDtStart(KDateTime::currentUtcDateTime()); journal->setSummary(i18n("Corrupt journal")); journal->setDescription(i18n("Journal could not be read. Delete this journal to remove it from the server.")); item.setMimeType(KCalCore::Journal::journalMimeType()); item.setPayload(journal); } break; case Kolab::ContactType: { KContacts::Addressee addressee; addressee.setName(i18n("Corrupt Contact")); addressee.setNote(i18n("Contact could not be read. Delete this contact to remove it from the server.")); item.setMimeType(KContacts::Addressee::mimeType()); item.setPayload(addressee); } break; case Kolab::NoteType: { Akonadi::NoteUtils::NoteMessageWrapper note; note.setTitle(i18n("Corrupt Note")); note.setText(i18n("Note could not be read. Delete this note to remove it from the server.")); item.setPayload(Akonadi::NoteUtils::noteMimeType()); item.setPayload(note.message()); } break; case Kolab::MailType: //We don't convert mails, so that should never fail. default: qCWarning(KOLABRESOURCE_LOG) << "unhandled folder type: " << folderType; } return item; }
Akonadi::Item TasksHandler::itemFromEntry( const TNS__Entry_value &entry, const Akonadi::Collection &parentCollection ) { Akonadi::Item item; const QList<TNS__Name_value> valueList = entry.name_value_list().items(); if ( valueList.isEmpty() ) { kWarning() << "Tasks entry for id=" << entry.id() << "has no values"; return item; } item.setRemoteId( entry.id() ); item.setParentCollection( parentCollection ); item.setMimeType( KCalCore::Todo::todoMimeType() ); KCalCore::Todo::Ptr todo( new KCalCore::Todo ); todo->setUid( entry.id() ); Q_FOREACH( const TNS__Name_value &namedValue, valueList ) { const AccessorHash::const_iterator accessIt = mAccessors->constFind( namedValue.name() ); if ( accessIt == mAccessors->constEnd() ) { // no accessor for field continue; } (*accessIt)->setter(KDCRMUtils::decodeXML(namedValue.value()), *todo ); } item.setPayload<KCalCore::Todo::Ptr>( todo ); item.setRemoteRevision( getDateModified( *todo ) ); return item; }
void LeadDetails::updateItem(Akonadi::Item &item, const QMap<QString, QString> &data) const { SugarLead lead; if (item.hasPayload<SugarLead>()) { lead = item.payload<SugarLead>(); } lead.setData(data); item.setMimeType(SugarLead::mimeType()); item.setPayload<SugarLead>(lead); }
void CampaignDetails::updateItem(Akonadi::Item &item, const QMap<QString, QString> &data) const { SugarCampaign campaign; if (item.hasPayload<SugarCampaign>()) { campaign = item.payload<SugarCampaign>(); } campaign.setData(data); item.setMimeType(SugarCampaign::mimeType()); item.setPayload<SugarCampaign>(campaign); }
void SaveDraftJob::start() { Akonadi::Item item; item.setPayload(mMsg); item.setMimeType(KMime::Message::mimeType()); item.setFlag(Akonadi::MessageFlags::Seen); Akonadi::MessageFlags::copyMessageFlags(*mMsg, item); Akonadi::ItemCreateJob *createJob = new Akonadi::ItemCreateJob(item, mCollection); connect(createJob, &Akonadi::ItemCreateJob::result, this, &SaveDraftJob::slotStoreDone); }
void XXPortManager::slotImport( const QString &identifier ) { const XXPort *xxport = mFactory.createXXPort( identifier, mParentWidget ); if( !xxport ) { return; } const KABC::Addressee::List contacts = xxport->importContacts(); delete xxport; if ( contacts.isEmpty() ) { // nothing to import return; } const QStringList mimeTypes( KABC::Addressee::mimeType() ); QPointer<Akonadi::CollectionDialog> dlg = new Akonadi::CollectionDialog( mParentWidget ); dlg->setMimeTypeFilter( mimeTypes ); dlg->setAccessRightsFilter( Akonadi::Collection::CanCreateItem ); dlg->setCaption( i18n( "Select Address Book" ) ); dlg->setDescription( i18n( "Select the address book the imported contact(s) shall be saved in:" ) ); dlg->setDefaultCollection( mDefaultAddressBook ); if ( !dlg->exec() || !dlg ) { delete dlg; return; } const Akonadi::Collection collection = dlg->selectedCollection(); delete dlg; if ( !mImportProgressDialog ) { mImportProgressDialog = new KProgressDialog( mParentWidget, i18n( "Import Contacts" ) ); mImportProgressDialog->setLabelText( i18np( "Importing one contact to %2", "Importing %1 contacts to %2", contacts.count(), collection.name() ) ); mImportProgressDialog->setAllowCancel( false ); mImportProgressDialog->setAutoClose( true ); mImportProgressDialog->progressBar()->setRange( 1, contacts.count() ); } mImportProgressDialog->show(); for ( int i = 0; i < contacts.count(); ++i ) { Akonadi::Item item; item.setPayload<KABC::Addressee>( contacts.at( i ) ); item.setMimeType( KABC::Addressee::mimeType() ); Akonadi::ItemCreateJob *job = new Akonadi::ItemCreateJob( item, collection ); connect( job, SIGNAL(result(KJob*)), SLOT(slotImportJobDone(KJob*)) ); } }
void OpportunityDetails::updateItem(Akonadi::Item &item, const QMap<QString, QString> &data) const { SugarOpportunity opportunity; if (item.hasPayload<SugarOpportunity>()) { opportunity = item.payload<SugarOpportunity>(); } opportunity.setData(data); item.setMimeType(SugarOpportunity::mimeType()); item.setPayload<SugarOpportunity>(opportunity); }
Akonadi::Item ContactsHandler::itemFromEntry(const KDSoapGenerated::TNS__Entry_value &entry, const Akonadi::Collection &parentCollection, bool &deleted) { Akonadi::Item item; const QList<KDSoapGenerated::TNS__Name_value> valueList = entry.name_value_list().items(); if (valueList.isEmpty()) { qCWarning(FATCRM_SUGARCRMRESOURCE_LOG) << "Contacts entry for id=" << entry.id() << "has no values"; return item; } item.setRemoteId(entry.id()); item.setParentCollection(parentCollection); item.setMimeType(KContacts::Addressee::mimeType()); KContacts::Addressee addressee; addressee.setUid(entry.id()); KContacts::Address workAddress, homeAddress; workAddress.setType(KContacts::Address::Work | KContacts::Address::Pref); homeAddress.setType(KContacts::Address::Home); const AccessorHash accessors = accessorHash(); Q_FOREACH (const KDSoapGenerated::TNS__Name_value &namedValue, valueList) { const QString crmFieldName = sugarFieldToCrmField(namedValue.name()); const AccessorHash::const_iterator accessIt = accessors.constFind(crmFieldName); if (accessIt == accessors.constEnd()) { // no accessor for regular field const QString customCrmFieldName = customSugarFieldToCrmField(namedValue.name()); addressee.insertCustom(QStringLiteral("FATCRM"), QStringLiteral("X-Custom-%1").arg(customCrmFieldName), KDCRMUtils::decodeXML(namedValue.value())); continue; } const QString value = KDCRMUtils::decodeXML(namedValue.value()); if (isAddressValue(crmFieldName)) { KContacts::Address &address = isPrimaryAddressValue(crmFieldName) ? workAddress : homeAddress; (*accessIt).setter.aSetter(value, address); } else { (*accessIt).setter.vSetter(value, addressee); } } addressee.insertAddress(workAddress); addressee.insertAddress(homeAddress); item.setPayload<KContacts::Addressee>(addressee); item.setRemoteRevision(getDateModified(addressee)); deleted = getDeleted(addressee) == QLatin1String("1"); return item; }
Akonadi::Item ContactsHandler::itemFromEntry(const KDSoapGenerated::TNS__Entry_value &entry, const Akonadi::Collection &parentCollection) { Akonadi::Item item; const QList<KDSoapGenerated::TNS__Name_value> valueList = entry.name_value_list().items(); if (valueList.isEmpty()) { kWarning() << "Contacts entry for id=" << entry.id() << "has no values"; return item; } item.setRemoteId(entry.id()); item.setParentCollection(parentCollection); item.setMimeType(KABC::Addressee::mimeType()); KABC::Addressee addressee; addressee.setUid(entry.id()); KABC::Address workAddress, homeAddress; workAddress.setType(KABC::Address::Work | KABC::Address::Pref); homeAddress.setType(KABC::Address::Home); Q_FOREACH (const KDSoapGenerated::TNS__Name_value &namedValue, valueList) { const ContactAccessorHash::const_iterator accessIt = mAccessors->constFind(namedValue.name()); if (accessIt == mAccessors->constEnd()) { // no accessor for field continue; } const QString value = KDCRMUtils::decodeXML(namedValue.value()); if (isAddressValue(namedValue.name())) { KABC::Address &address = isPrimaryAddressValue(namedValue.name()) ? workAddress : homeAddress; (*accessIt)->setter.aSetter(value, address); } else { (*accessIt)->setter.vSetter(value, addressee); } } addressee.insertAddress(workAddress); addressee.insertAddress(homeAddress); item.setPayload<KABC::Addressee>(addressee); item.setRemoteRevision(getDateModified(addressee)); return item; }
Akonadi::Item::List SalesforceContactsHandler::itemsFromListEntriesResponse(const TNS__QueryResult &queryResult, const Akonadi::Collection &parentCollection) { Akonadi::Item::List items; Q_FOREACH (const ENS__SObject &entry, queryResult.records()) { const QList<KDSoapValue> valueList = entry.any(); if (valueList.isEmpty()) { kWarning() << "Contacts entry for id=" << entry.id().value() << "has no values"; kDebug() << "fieldsToNull:" << entry.fieldsToNull(); continue; } Akonadi::Item item; item.setRemoteId(entry.id().value()); item.setParentCollection(parentCollection); item.setMimeType(KABC::Addressee::mimeType()); KABC::Addressee addressee; addressee.setUid(entry.id().value()); QList<KDSoapValue>::const_iterator it = valueList.constBegin(); QList<KDSoapValue>::const_iterator endIt = valueList.constEnd(); for (; it != endIt; ++it) { ContactAccessorHash::const_iterator accessorIt = mAccessors->constFind(it->name()); if (accessorIt != mAccessors->constEnd()) { if (accessorIt->isAvailable) { accessorIt->setter(it->value().value<QString>(), addressee); } } else { kWarning() << "Contacts entry for id=" << entry.id().value() << "has unknown value named" << it->name(); } } item.setPayload<KABC::Addressee>(addressee); items << item; } kDebug() << "Query result had" << items.count() << "valid contact items"; return items; }
Item Serializer::createItemFromNote(Domain::Note::Ptr note) { NoteUtils::NoteMessageWrapper builder; builder.setTitle(note->title()); builder.setText(note->text()); KMime::Message::Ptr message = builder.message(); if (!note->property("relatedUid").toString().isEmpty()) { auto relatedHeader = new KMime::Headers::Generic("X-Zanshin-RelatedProjectUid"); relatedHeader->from7BitString(note->property("relatedUid").toString().toUtf8()); message->appendHeader(relatedHeader); } Akonadi::Item item; if (note->property("itemId").isValid()) { item.setId(note->property("itemId").value<Akonadi::Item::Id>()); } item.setMimeType(Akonadi::NoteUtils::noteMimeType()); item.setPayload(message); return item; }
Akonadi::Item Serializer::createItemFromTask(Domain::Task::Ptr task) { auto todo = KCalCore::Todo::Ptr::create(); todo->setSummary(task->title()); todo->setDescription(task->text()); if (task->isDone()) todo->setCompleted(KDateTime(task->doneDate())); else todo->setCompleted(task->isDone()); todo->setDtStart(KDateTime(task->startDate())); todo->setDtDue(KDateTime(task->dueDate())); if (task->property("todoUid").isValid()) { todo->setUid(task->property("todoUid").toString()); } if (task->property("relatedUid").isValid()) { todo->setRelatedTo(task->property("relatedUid").toString()); } if (task->delegate().isValid()) { KCalCore::Attendee::Ptr attendee(new KCalCore::Attendee(task->delegate().name(), task->delegate().email(), true, KCalCore::Attendee::Delegated)); todo->addAttendee(attendee); } Akonadi::Item item; if (task->property("itemId").isValid()) { item.setId(task->property("itemId").value<Akonadi::Item::Id>()); } item.setMimeType(KCalCore::Todo::todoMimeType()); item.setPayload(todo); return item; }
void KoRdfCalendarEvent::saveToKCal() { #ifdef KDEPIMLIBS_FOUND KCalCore::Event::Ptr event = toKEvent(); Akonadi::CollectionDialog collectionDialog; collectionDialog.setMimeTypeFilter(QStringList() << event->mimeType()); collectionDialog.setAccessRightsFilter(Akonadi::Collection::CanCreateItem); collectionDialog.setDescription(i18n("Select a calendar for saving:")); if (! collectionDialog.exec()) { return; } Akonadi::Collection collection = collectionDialog.selectedCollection(); Akonadi::Item item; item.setPayload<KCalCore::Event::Ptr>(event); item.setMimeType(event->mimeType()); Akonadi::ItemCreateJob *itemCreateJob = new Akonadi::ItemCreateJob(item, collection); connect(itemCreateJob, SIGNAL(result(KJob*) ), SLOT(onCreateJobFinished(KJob*))); #endif }
Item Serializer::createItemFromProject(Domain::Project::Ptr project) { auto todo = KCalCore::Todo::Ptr::create(); todo->setSummary(project->name()); todo->setCustomProperty("Zanshin", "Project", "1"); if (project->property("todoUid").isValid()) { todo->setUid(project->property("todoUid").toString()); } Akonadi::Item item; if (project->property("itemId").isValid()) { item.setId(project->property("itemId").value<Akonadi::Item::Id>()); } if (project->property("parentCollectionId").isValid()) { auto parentId = project->property("parentCollectionId").value<Akonadi::Collection::Id>(); item.setParentCollection(Akonadi::Collection(parentId)); } item.setMimeType(KCalCore::Todo::todoMimeType()); item.setPayload(todo); return item; }
void KoRdfFoaF::saveToKABC() { kDebug(30015) << "saving name:" << m_name; #ifdef KDEPIMLIBS_FOUND Akonadi::CollectionDialog collectionDialog; collectionDialog.setMimeTypeFilter(QStringList() << KABC::Addressee::mimeType()); collectionDialog.setAccessRightsFilter(Akonadi::Collection::CanCreateItem); collectionDialog.setDescription(i18n("Select an address book for saving:")); if (! collectionDialog.exec()) { return; } Akonadi::Collection collection = collectionDialog.selectedCollection(); KABC::Addressee addressee = toKABC(); Akonadi::Item item; item.setPayload<KABC::Addressee>(addressee); item.setMimeType(KABC::Addressee::mimeType()); Akonadi::ItemCreateJob *itemCreateJob = new Akonadi::ItemCreateJob(item, collection); connect(itemCreateJob, SIGNAL(result(KJob*) ), SLOT(onCreateJobFinished(KJob*))); #endif }
Akonadi::Item DocumentsHandler::itemFromEntry(const KDSoapGenerated::TNS__Entry_value &entry, const Akonadi::Collection &parentCollection, bool &deleted) { Akonadi::Item item; const QList<KDSoapGenerated::TNS__Name_value> valueList = entry.name_value_list().items(); if (valueList.isEmpty()) { qCWarning(FATCRM_SUGARCRMRESOURCE_LOG) << "Documents entry for id=" << entry.id() << "has no values"; return item; } item.setRemoteId(entry.id()); item.setParentCollection(parentCollection); item.setMimeType(SugarDocument::mimeType()); SugarDocument document; document.setId(entry.id()); const SugarDocument::AccessorHash accessors = SugarDocument::accessorHash(); Q_FOREACH (const KDSoapGenerated::TNS__Name_value &namedValue, valueList) { const QString crmFieldName = sugarFieldToCrmField(namedValue.name()); const QString value = KDCRMUtils::decodeXML(namedValue.value()); const SugarDocument::AccessorHash::const_iterator accessIt = accessors.constFind(crmFieldName); if (accessIt == accessors.constEnd()) { const QString crmCustomFieldName = customSugarFieldToCrmField(namedValue.name()); document.setCustomField(crmCustomFieldName, value); continue; } (document.*(accessIt.value().setter))(KDCRMUtils::decodeXML(value)); } item.setPayload<SugarDocument>(document); item.setRemoteRevision(document.dateModifiedRaw()); deleted = document.deleted() == QLatin1String("1"); return item; }