20 #ifndef AKONADI_COLLECTIONUTILS_P_H
21 #define AKONADI_COLLECTIONUTILS_P_H
23 #include <QtCore/QStringList>
24 #include <akonadi/entitydisplayattribute.h>
25 #include <akonadi/collectionstatistics.h>
26 #include <akonadi/item.h>
33 namespace CollectionUtils
35 inline bool isVirtualParent(
const Collection &collection )
37 return (collection.parentCollection() == Collection::root() &&
38 ( collection.resource() == QLatin1String(
"akonadi_search_resource" ) || collection.resource() == QLatin1String(
"akonadi_nepomuktag_resource" ) ) );
41 inline bool isVirtual(
const Collection &collection )
43 return ( (collection.resource() == QLatin1String(
"akonadi_search_resource" ) || collection.resource() == QLatin1String(
"akonadi_nepomuktag_resource" ) ) );
46 inline bool isReadOnly(
const Collection &collection )
48 return !(collection.rights() & Collection::CanCreateItem);
51 inline bool isRoot(
const Collection &collection )
53 return (collection == Collection::root());
56 inline bool isResource(
const Collection &collection )
58 return (collection.parentCollection() == Collection::root());
61 inline bool isStructural(
const Collection &collection )
63 return collection.contentMimeTypes().isEmpty();
66 inline bool isFolder(
const Collection &collection )
68 return (!isRoot( collection ) &&
69 !isResource( collection ) &&
70 !isStructural( collection ) &&
71 collection.resource() != QLatin1String(
"akonadi_search_resource" ) &&
72 collection.resource() != QLatin1String(
"akonadi_nepomuktag_resource" ));
75 inline QString defaultIconName(
const Collection &col )
77 if ( CollectionUtils::isVirtualParent( col ) )
78 return QLatin1String(
"edit-find" );
79 if ( CollectionUtils::isVirtual( col ) )
80 return QLatin1String(
"document-preview" );
81 if ( CollectionUtils::isResource( col ) )
82 return QLatin1String(
"network-server" );
83 if ( CollectionUtils::isStructural( col ) )
84 return QLatin1String(
"folder-grey" );
85 if ( CollectionUtils::isReadOnly( col ) )
86 return QLatin1String(
"folder-grey" );
88 const QStringList content = col.contentMimeTypes();
89 if ( content.size() == 1 || (content.size() == 2 && content.contains( Collection::mimeType() )) ) {
90 if ( content.contains( QLatin1String(
"text/x-vcard" ) ) || content.contains( QLatin1String(
"text/directory" ) )
91 || content.contains( QLatin1String(
"text/vcard" ) ) )
92 return QLatin1String(
"x-office-address-book" );
94 if ( content.contains( QLatin1String(
"akonadi/event" ) ) || content.contains( QLatin1String(
"text/ical" ) ) )
95 return QLatin1String(
"view-pim-calendar" );
96 if ( content.contains( QLatin1String(
"akonadi/task" ) ) )
97 return QLatin1String(
"view-pim-tasks" );
98 }
else if ( content.isEmpty() ) {
99 return QLatin1String(
"folder-grey" );
101 return QLatin1String(
"folder" );
103 inline QString displayIconName(
const Collection &col )
105 QString iconName = defaultIconName( col );
106 if ( col.hasAttribute<EntityDisplayAttribute>() &&
107 !col.attribute<EntityDisplayAttribute>()->iconName().isEmpty() ) {
108 if ( !col.attribute<EntityDisplayAttribute>()->activeIconName().isEmpty() && col.statistics().unreadCount()> 0) {
109 iconName = col.attribute<EntityDisplayAttribute>()->activeIconName();
112 iconName = col.attribute<EntityDisplayAttribute>()->iconName();
117 inline bool hasValidHierarchicalRID(
const Collection &col )
119 if ( col == Collection::root() )
121 if ( col.remoteId().isEmpty() )
123 return hasValidHierarchicalRID( col.parentCollection() );
125 inline bool hasValidHierarchicalRID(
const Item &item )
127 return !item.remoteId().isEmpty() && hasValidHierarchicalRID( item.parentCollection() );