本文整理汇总了C++中akonadi::Collection::rights方法的典型用法代码示例。如果您正苦于以下问题:C++ Collection::rights方法的具体用法?C++ Collection::rights怎么用?C++ Collection::rights使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类akonadi::Collection
的用法示例。
在下文中一共展示了Collection::rights方法的5个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: fillRecentCollection
void RecentCollectionAction::fillRecentCollection()
{
delete mRecentAction->menu();
if ( mListRecentCollection.isEmpty() ) {
mRecentAction->setEnabled( false );
return;
}
QMenu* popup = new QMenu;
mRecentAction->setMenu( popup );
const int numberOfRecentCollection(mListRecentCollection.count());
for ( int i=0; i < numberOfRecentCollection; ++i )
{
const QModelIndex index = Akonadi::EntityTreeModel::modelIndexForCollection( mModel, Akonadi::Collection( mListRecentCollection.at( i ).toLongLong() ) );
const Akonadi::Collection collection = mModel->data( index, Akonadi::CollectionModel::CollectionRole ).value<Akonadi::Collection>();
if ( index.isValid() ) {
const bool canCreateNewItems = (collection.rights() & Collection::CanCreateItem);
QAction *action = popup->addAction( actionName( index ) );
const QIcon icon = mModel->data( index, Qt::DecorationRole ).value<QIcon>();
action->setIcon( icon );
action->setData( QVariant::fromValue<QModelIndex>( index ) );
action->setEnabled(canCreateNewItems);
}
}
}
示例2: load
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());
}
示例3: filterAcceptsRow
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;
}
示例4: onMailBoxesReceived
void RetrieveCollectionsTask::onMailBoxesReceived(const QList< KIMAP::MailBoxDescriptor > &descriptors,
const QList< QList<QByteArray> > &flags)
{
QStringList contentTypes;
contentTypes << KMime::Message::mimeType() << Akonadi::Collection::mimeType();
if (!descriptors.isEmpty()) {
// This is still not optimal way of getting the separator, but it's better
// than guessing every time from RID of parent collection
setSeparatorCharacter(descriptors.first().separator);
}
for (int i = 0; i < descriptors.size(); ++i) {
KIMAP::MailBoxDescriptor descriptor = descriptors[i];
// skip phantom mailboxes contained in LSUB but not LIST
if (isSubscriptionEnabled() && !m_fullReportedCollections.contains(descriptor.name)) {
qCDebug(IMAPRESOURCE_LOG) << "Got phantom mailbox: " << descriptor.name;
continue;
}
const QString separator = descriptor.separator;
Q_ASSERT(separator.size() == 1); // that's what the spec says
const QString boxName = descriptor.name.endsWith(separator)
? descriptor.name.left(descriptor.name.size() - 1)
: descriptor.name;
const QStringList pathParts = boxName.split(separator);
QString parentPath;
QString currentPath;
const int pathPartsSize(pathParts.size());
for (int j = 0; j < pathPartsSize; ++j) {
const bool isDummy = j != pathPartsSize - 1;
const QString pathPart = pathParts.at(j);
currentPath += separator + pathPart;
if (m_reportedCollections.contains(currentPath)) {
if (m_dummyCollections.contains(currentPath) && !isDummy) {
qCDebug(IMAPRESOURCE_LOG) << "Received the real collection for a dummy one : " << currentPath;
//set the correct attributes for the collection, eg. noselect needs to be removed
Akonadi::Collection c = m_reportedCollections.value(currentPath);
c.setContentMimeTypes(contentTypes);
c.setRights(Akonadi::Collection::AllRights);
c.removeAttribute<NoSelectAttribute>();
m_dummyCollections.remove(currentPath);
m_reportedCollections.remove(currentPath);
m_reportedCollections.insert(currentPath, c);
}
parentPath = currentPath;
continue;
}
const QList<QByteArray> currentFlags = isDummy ? (QList<QByteArray>() << "\\noselect") : flags[i];
Akonadi::Collection c;
c.setName(pathPart);
c.setRemoteId(separator + pathPart);
const Akonadi::Collection parentCollection = m_reportedCollections.value(parentPath);
c.setParentCollection(parentCollection);
c.setContentMimeTypes(contentTypes);
// If the folder is the Inbox, make some special settings.
if (currentPath.compare(separator + QLatin1String("INBOX"), Qt::CaseInsensitive) == 0) {
Akonadi::EntityDisplayAttribute *attr = c.attribute<Akonadi::EntityDisplayAttribute>(Akonadi::Collection::AddIfMissing);
attr->setDisplayName(i18n("Inbox"));
attr->setIconName(QStringLiteral("mail-folder-inbox"));
setIdleCollection(c);
}
// If the folder is the user top-level folder, mark it as well, even although it is not officially noted in the RFC
if (currentPath == (separator + QLatin1String("user")) && currentFlags.contains("\\noselect")) {
Akonadi::EntityDisplayAttribute *attr = c.attribute<Akonadi::EntityDisplayAttribute>(Akonadi::Collection::AddIfMissing);
attr->setDisplayName(i18n("Shared Folders"));
attr->setIconName(QStringLiteral("x-mail-distribution-list"));
}
// If this folder is a noselect folder, make some special settings.
if (currentFlags.contains("\\noselect")) {
qCDebug(IMAPRESOURCE_LOG) << "Dummy collection created: " << currentPath;
c.addAttribute(new NoSelectAttribute(true));
c.setContentMimeTypes(QStringList() << Akonadi::Collection::mimeType());
c.setRights(Akonadi::Collection::ReadOnly);
} else {
// remove the noselect attribute explicitly, in case we had set it before (eg. for non-subscribed non-leaf folders)
c.removeAttribute<NoSelectAttribute>();
}
// If this folder is a noinferiors folder, it is not allowed to create subfolders inside.
if (currentFlags.contains("\\noinferiors")) {
//qCDebug(IMAPRESOURCE_LOG) << "Noinferiors: " << currentPath;
c.addAttribute(new NoInferiorsAttribute(true));
c.setRights(c.rights() & ~Akonadi::Collection::CanCreateCollection);
}
//.........这里部分代码省略.........
示例5: updateActions
void ActionListEditor::updateActions()
{
const QItemSelectionModel * const itemSelectionModel = currentPage()->selectionModel();
const QModelIndex index = itemSelectionModel->currentIndex();
int type = index.data(Zanshin::ItemTypeRole).toInt();
Akonadi::Collection collection;
if ( type==Zanshin::Collection ) {
collection = index.data(Akonadi::EntityTreeModel::CollectionRole).value<Akonadi::Collection>();
} else if (type==Zanshin::Context) {
collection = Akonadi::StorageSettings::instance().defaultTaskCollection();
} else if (type==Zanshin::Topic) {
collection = Akonadi::StorageSettings::instance().defaultNoteCollection();
} else if (type==Zanshin::StandardTodo) {
QModelIndex parent = index;
int parentType = type;
while (parent.isValid() && parentType==Zanshin::StandardTodo) {
parent = parent.sibling(parent.row()-1, parent.column());
parentType = parent.data(Zanshin::ItemTypeRole).toInt();
}
if (parentType!=Zanshin::ProjectTodo) {
collection = Akonadi::StorageSettings::instance().defaultTaskCollection();
} else {
collection = index.data(Akonadi::EntityTreeModel::ParentCollectionRole).value<Akonadi::Collection>();
}
} else {
// We use ParentCollectionRole instead of Akonadi::Item::parentCollection() because the
// information about the rights is not valid on retrieved items.
collection = index.data(Akonadi::EntityTreeModel::ParentCollectionRole).value<Akonadi::Collection>();
}
m_add->setEnabled(index.isValid()
&& (collection.rights() & Akonadi::Collection::CanCreateItem)
&& (type==Zanshin::ProjectTodo
|| type==Zanshin::Context
|| type==Zanshin::Topic
|| type==Zanshin::Inbox
|| type==Zanshin::StandardTodo));
currentPage()->setActionEditEnabled(m_add->isEnabled());
m_remove->setEnabled(index.isValid()
&& (collection.rights() & Akonadi::Collection::CanDeleteItem)
&& ((type==Zanshin::StandardTodo)
|| type==Zanshin::ProjectTodo
|| type==Zanshin::Context
|| type==Zanshin::Topic));
m_move->setEnabled(index.isValid()
&& (collection.rights() & Akonadi::Collection::CanDeleteItem)
&& (type==Zanshin::StandardTodo
|| type==Zanshin::Context
|| type==Zanshin::Topic
|| type==Zanshin::ProjectTodo));
m_promote->setEnabled(index.isValid()
&& (collection.rights() & Akonadi::Collection::CanChangeItem)
&& type==Zanshin::StandardTodo
&& itemSelectionModel->selectedRows().size() == 1);
m_dissociate->setEnabled(index.isValid()
&& (collection.rights() & Akonadi::Collection::CanDeleteItem)
&& type==Zanshin::StandardTodo);
}