void CalendarResource::itemRemoved(const Akonadi::Item &item) { if (!canPerformTask()) { return; } if (item.mimeType() == KCalCore::Event::eventMimeType()) { KGAPI2::Job *job = new EventDeleteJob(item.remoteId(), item.parentCollection().remoteId(), account(), this); job->setProperty(ITEM_PROPERTY, QVariant::fromValue(item)); connect(job, &EventCreateJob::finished, this, &CalendarResource::slotGenericJobFinished); } else if (item.mimeType() == KCalCore::Todo::todoMimeType()) { /* Google always automatically removes tasks with all their subtasks. In KOrganizer * by default we only remove the item we are given. For this reason we have to first * fetch all tasks, find all sub-tasks for the task being removed and detach them * from the task. Only then the task can be safely removed. */ ItemFetchJob *fetchJob = new ItemFetchJob(item.parentCollection()); fetchJob->setAutoDelete(true); fetchJob->fetchScope().fetchFullPayload(true); fetchJob->setProperty(ITEM_PROPERTY, qVariantFromValue(item)); connect(fetchJob, &ItemFetchJob::finished, this, &CalendarResource::slotRemoveTaskFetchJobFinished); fetchJob->start(); } else { cancelTask(i18n("Invalid payload type. Expected event or todo, got %1", item.mimeType())); } }
void CalendarResource::itemChanged(const Akonadi::Item &item, const QSet< QByteArray > &partIdentifiers) { Q_UNUSED(partIdentifiers); if (!canPerformTask<KCalCore::Event::Ptr>(item, KCalCore::Event::eventMimeType()) && !canPerformTask<KCalCore::Todo::Ptr>(item, KCalCore::Todo::todoMimeType())) { 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(item.remoteId()); job = new EventModifyJob(kevent, item.parentCollection().remoteId(), account(), this); connect(job, &EventCreateJob::finished, this, &CalendarResource::slotGenericJobFinished); } else if (item.hasPayload<KCalCore::Todo::Ptr>()) { KCalCore::Todo::Ptr todo = item.payload<KCalCore::Todo::Ptr>(); TaskPtr ktodo(new Task(*todo)); QString parentUid = todo->relatedTo(KCalCore::Incidence::RelTypeParent); job = new TaskMoveJob(item.remoteId(), item.parentCollection().remoteId(), parentUid, account(), this); job->setProperty(ITEM_PROPERTY, QVariant::fromValue(item)); connect(job, &EventCreateJob::finished, this, &CalendarResource::slotModifyTaskReparentFinished); } else { cancelTask(i18n("Invalid payload type")); return; } job->setProperty(ITEM_PROPERTY, QVariant::fromValue(item)); }
void KMReaderWin::slotUrlClicked(const Akonadi::Item &item, const QUrl &url) { if (item.isValid() && item.parentCollection().isValid()) { QSharedPointer<FolderCollection> fd = FolderCollection::forCollection( MailCommon::Util::updatedCollection(item.parentCollection()), false); KMail::Util::handleClickedURL(url, fd); return; } //No folder so we can't have identity and template. KMail::Util::handleClickedURL(url); }
void KMReaderWin::slotDeleteMessage(const Akonadi::Item &item) { if (!item.isValid()) { return; } KMTrashMsgCommand *command = new KMTrashMsgCommand(item.parentCollection(), item, -1); command->start(); }
void shouldAllowToSetParent() { // GIVEN Akonadi::Item item = GenTodo().withParent(42); // THEN QCOMPARE(item.parentCollection().id(), 42LL); }
Akonadi::Item::Id KMail::Util::putRepliesInSameFolder( const Akonadi::Item& item ) { Akonadi::Collection parentCollection = item.parentCollection(); if ( parentCollection.isValid() ) { const QSharedPointer<FolderCollection> fd = FolderCollection::forCollection( parentCollection, false ); if( fd->putRepliesInSameFolder() ) { return parentCollection.id(); } } return -1; }
void AlarmDialog::addIncidence( const Akonadi::Item &incidenceitem, const QDateTime &reminderAt, const QString &displayText ) { Incidence::Ptr incidence = CalendarSupport::incidence( incidenceitem ); ReminderListItem *item = searchByItem( incidenceitem ); if ( !item ) { item = new ReminderListItem( incidenceitem, mIncidenceTree ); } item->mNotified = false; item->mHappening = KDateTime(); item->mRemindAt = reminderAt; item->mTrigger = KDateTime::currentLocalDateTime(); item->mDisplayText = displayText; item->setText( 0, cleanSummary( incidence->summary() ) ); Event::Ptr event; Todo::Ptr todo; QString displayStr; const KDateTime dateTime = triggerDateForIncidence( incidence, reminderAt, displayStr ); if ( incidence->type() == Incidence::TypeEvent ) { item->setIcon( 0, SmallIcon( "view-calendar-day" ) ); } else if ( incidence->type() == Incidence::TypeTodo ) { item->setIcon( 0, SmallIcon( "view-calendar-tasks" ) ); } item->mHappening = dateTime; item->setText( 1, displayStr ); item->setText( 2, IncidenceFormatter::dateTimeToString( item->mTrigger, false, true, KDateTime::Spec::LocalZone() ) ); QString tip = IncidenceFormatter::toolTipStr( CalendarSupport::displayName( mCalendar, incidenceitem.parentCollection() ), incidence, item->mRemindAt.date(), true, KDateTime::Spec::LocalZone() ); if ( !item->mDisplayText.isEmpty() ) { tip += "<br>" + item->mDisplayText; } item->setToolTip( 0, tip ); item->setToolTip( 1, tip ); item->setToolTip( 2, tip ); item->setData( 0, QTreeWidgetItem::UserType, false ); mIncidenceTree->setCurrentItem( item ); showDetails(); slotSave(); }
KMime::Types::Mailbox::List KMail::Util::mailingListsFromMessage( const Akonadi::Item& item ) { KMime::Types::Mailbox::List addresses; // determine the mailing list posting address Akonadi::Collection parentCollection = item.parentCollection(); if ( parentCollection.isValid() ) { const QSharedPointer<FolderCollection> fd = FolderCollection::forCollection( parentCollection, false ); if ( fd->isMailingListEnabled() && !fd->mailingListPostAddress().isEmpty() ) { addresses << MessageCore::StringUtil::mailboxFromUnicodeString( fd->mailingListPostAddress() ); } } return addresses; }
TomboyItemUploadJob::TomboyItemUploadJob(const Akonadi::Item &item, JobType jobType, KIO::AccessManager *manager, QObject *parent) : TomboyJobBase(manager, parent), mSourceItem(item), mJobType(jobType) { mSourceItem = Akonadi::Item(item); if (item.hasPayload<KMime::Message::Ptr>()) { mNoteContent = item.payload<KMime::Message::Ptr>(); } mRemoteRevision = item.parentCollection().remoteRevision().toInt(); // Create random remote id if adding new item if (jobType == JobType::AddItem) { mSourceItem.setRemoteId(QUuid::createUuid().toString()); } }