void CollectionGeneralPage::load(const Akonadi::Collection &collection) { init(collection); mNameEdit->setEnabled(collection.rights() & Collection::CanChangeCollection); const QString displayName = collection.displayName(); mNameEdit->setText(displayName); mBlockAlarmsCheckBox->setChecked(collection.hasAttribute<BlockAlarmsAttribute>() && collection.attribute<BlockAlarmsAttribute>()->isEverythingBlocked()); QString iconName; if (collection.hasAttribute<EntityDisplayAttribute>()) { iconName = collection.attribute<EntityDisplayAttribute>()->iconName(); } if (iconName.isEmpty()) { const QStringList mimeTypes = collection.contentMimeTypes(); if (collection.contentMimeTypes().count() > 1 || collection.contentMimeTypes().contains(KCalCore::Event::eventMimeType())) { mIconButton->setIcon(QIcon::fromTheme(QStringLiteral("view-pim-calendar"))); } else if (collection.contentMimeTypes().contains(KCalCore::Todo::todoMimeType())) { mIconButton->setIcon(QIcon::fromTheme(QStringLiteral("view-pim-tasks"))); } else if (collection.contentMimeTypes().contains(KCalCore::Journal::journalMimeType())) { mIconButton->setIcon(QIcon::fromTheme(QStringLiteral("view-pim-journal"))); } else if (mimeTypes.isEmpty()) { mIconButton->setIcon(QIcon::fromTheme(QStringLiteral("folder-grey"))); } else { mIconButton->setIcon(QIcon::fromTheme(QStringLiteral("folder"))); } } else { mIconButton->setIcon(iconName); } mIconCheckBox->setChecked(!iconName.isEmpty()); }
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 CollectionInternalsPage::load(const Akonadi::Collection & col) { ui.idLabel->setText( QString::number( col.id() ) ); ui.ridEdit->setText( col.remoteId() ); ui.rrevEdit->setText( col.remoteRevision() ); ui.resourceLabel->setText( col.resource() ); ui.contentTypes->setItems( col.contentMimeTypes() ); ui.virtCheck->setChecked( col.isVirtual() ); }
void CalendarResource::retrieveItems(const Akonadi::Collection &collection) { if (!canPerformTask()) { return; } // https://bugs.kde.org/show_bug.cgi?id=308122: we can only request changes in // max. last 25 days, otherwise we get an error. int lastSyncDelta = -1; if (!collection.remoteRevision().isEmpty()) { lastSyncDelta = QDateTime::currentDateTimeUtc().toTime_t() - collection.remoteRevision().toUInt(); } KGAPI2::Job *job = Q_NULLPTR; if (collection.contentMimeTypes().contains(KCalCore::Event::eventMimeType())) { EventFetchJob *fetchJob = new EventFetchJob(collection.remoteId(), account(), this); if (lastSyncDelta > -1 && lastSyncDelta < 25 * 24 * 3600) { fetchJob->setFetchOnlyUpdated(collection.remoteRevision().toULongLong()); } if (!Settings::self()->eventsSince().isEmpty()) { const QDate date = QDate::fromString(Settings::self()->eventsSince(), Qt::ISODate); fetchJob->setTimeMin(QDateTime(date).toTime_t()); } job = fetchJob; } else if (collection.contentMimeTypes().contains(KCalCore::Todo::todoMimeType())) { TaskFetchJob *fetchJob = new TaskFetchJob(collection.remoteId(), account(), this); if (lastSyncDelta > -1 && lastSyncDelta < 25 * 25 * 3600) { fetchJob->setFetchOnlyUpdated(collection.remoteRevision().toULongLong()); } job = fetchJob; } else { itemsRetrieved(Item::List()); return; } job->setProperty(COLLECTION_PROPERTY, QVariant::fromValue(collection)); connect(job, &KGAPI2::Job::progress, this, &CalendarResource::emitPercent); connect(job, &KGAPI2::Job::finished, this, &CalendarResource::slotItemsRetrieved); }
bool CollectionFilterModel::filterAcceptsRow(int row, const QModelIndex &parent) const { bool accepted = true; const QModelIndex index = sourceModel()->index(row, 0, parent); const Akonadi::Collection collection = index.data(Akonadi::EntityTreeModel::CollectionRole).value<Akonadi::Collection>(); if (!collection.isValid()) { return false; } if (!mContentMimeTypes.isEmpty()) { QSet<QString> contentMimeTypes = collection.contentMimeTypes().toSet(); accepted = accepted && !(contentMimeTypes.intersect(mContentMimeTypes).isEmpty()); } if (mRights != Akonadi::Collection::ReadOnly) { accepted = accepted && (collection.rights() & mRights); } return accepted; }
void CreateCommand::onTargetFetched(KJob *job) { if (job->error()!=0) { emit error(ki18nc("@info:shell", "Cannot fetch parent collection '%1', %2") .subs(mParentCollection) .subs(job->errorString()).toString()); emit finished(RuntimeError); return; } Q_ASSERT(job==mResolveJob); Akonadi::Collection parentCollection = mResolveJob->collection(); Q_ASSERT(parentCollection.isValid()); // Warning for bug 319513 if ((mNewCollectionName=="cur") || (mNewCollectionName=="new") || (mNewCollectionName=="tmp")) { QString parentResource = parentCollection.resource(); if (parentResource.startsWith(QLatin1String("akonadi_maildir_resource"))) { ErrorReporter::warning(i18n("Creating a maildir folder named '%1' may not work", mNewCollectionName)); } } Akonadi::Collection newCollection; newCollection.setParentCollection(parentCollection); newCollection.setName(mNewCollectionName); newCollection.setContentMimeTypes(parentCollection.contentMimeTypes()); if (!mDryRun) { CollectionCreateJob *createJob = new CollectionCreateJob(newCollection); connect(createJob, SIGNAL(result(KJob *)), this, SLOT(onCollectionCreated(KJob *))); }
bool Akonadi::Serializer::isTaskCollection(Akonadi::Collection collection) { return collection.contentMimeTypes().contains(KCalCore::Todo::todoMimeType()); }
bool Akonadi::Serializer::isNoteCollection(Akonadi::Collection collection) { return collection.contentMimeTypes().contains(NoteUtils::noteMimeType()); }