20 #include "specialmailcollections.h"
21 #include "akonadi/entitydisplayattribute.h"
22 #include "akonadi/collectionmodifyjob.h"
23 #include "specialmailcollectionssettings.h"
27 #include "akonadi/agentinstance.h"
29 using namespace Akonadi;
31 class Akonadi::SpecialMailCollectionsPrivate
34 SpecialMailCollectionsPrivate();
35 ~SpecialMailCollectionsPrivate();
37 SpecialMailCollections *mInstance;
40 typedef SpecialMailCollectionsSettings Settings;
42 K_GLOBAL_STATIC( SpecialMailCollectionsPrivate, sInstance )
44 static inline QByteArray enumToType( SpecialMailCollections::Type type )
47 case SpecialMailCollections::Root:
return "local-mail";
break;
48 case SpecialMailCollections::Inbox:
return "inbox";
break;
49 case SpecialMailCollections::Outbox:
return "outbox";
break;
50 case SpecialMailCollections::SentMail:
return "sent-mail";
break;
51 case SpecialMailCollections::Trash:
return "trash";
break;
52 case SpecialMailCollections::Drafts:
return "drafts";
break;
53 case SpecialMailCollections::Templates:
return "templates";
break;
54 case SpecialMailCollections::LastType:
55 default:
return QByteArray();
break;
59 SpecialMailCollectionsPrivate::SpecialMailCollectionsPrivate()
60 : mInstance( new SpecialMailCollections( this ) )
64 SpecialMailCollectionsPrivate::~SpecialMailCollectionsPrivate()
69 SpecialMailCollections::SpecialMailCollections( SpecialMailCollectionsPrivate *dd )
70 : SpecialCollections( Settings::self() ),
77 return sInstance->mInstance;
80 bool SpecialMailCollections::hasCollection(
Type type,
const AgentInstance &instance )
const
82 return SpecialCollections::hasCollection( enumToType( type ), instance );
87 return SpecialCollections::collection( enumToType( type ), instance );
90 bool SpecialMailCollections::registerCollection(
Type type,
const Collection &collection )
92 return SpecialCollections::registerCollection( enumToType( type ), collection );
95 bool SpecialMailCollections::hasDefaultCollection(
Type type )
const
97 return SpecialCollections::hasDefaultCollection( enumToType( type ) );
102 return SpecialCollections::defaultCollection( enumToType( type ) );
105 void SpecialMailCollections::verifyI18nDefaultCollection( Type type )
107 Collection collection = defaultCollection( type );
111 case SpecialMailCollections::Inbox:
112 defaultI18n = i18nc(
"local mail folder",
"inbox" );
114 case SpecialMailCollections::Outbox:
115 defaultI18n = i18nc(
"local mail folder",
"outbox" );
117 case SpecialMailCollections::SentMail:
118 defaultI18n = i18nc(
"local mail folder",
"sent-mail" );
120 case SpecialMailCollections::Trash:
121 defaultI18n = i18nc(
"local mail folder",
"trash" );
123 case SpecialMailCollections::Drafts:
124 defaultI18n = i18nc(
"local mail folder",
"drafts" );
126 case SpecialMailCollections::Templates:
127 defaultI18n = i18nc(
"local mail folder",
"templates" );
132 if(!defaultI18n.isEmpty()) {
133 if(collection.
hasAttribute<Akonadi::EntityDisplayAttribute>()) {
134 if( collection.
attribute<Akonadi::EntityDisplayAttribute>()->displayName() != defaultI18n) {
135 collection.
attribute<Akonadi::EntityDisplayAttribute>()->setDisplayName( defaultI18n );
136 Akonadi::CollectionModifyJob *job =
new Akonadi::CollectionModifyJob( collection,
this );
137 connect( job, SIGNAL(result(KJob*)),
this, SLOT(slotCollectionModified(KJob*)) );
143 void SpecialMailCollections::slotCollectionModified(KJob*job)
145 if ( job->error() ) {
146 kDebug()<<
" Error when we modified collection";
151 #include "specialmailcollections.moc"