20 #include "specialmailcollections.h"
21 #include "akonadi/specialcollectionattribute_p.h"
22 #include "akonadi/entitydisplayattribute.h"
23 #include "akonadi/collectionmodifyjob.h"
24 #include "specialmailcollectionssettings.h"
27 #include <KLocalizedString>
28 #include "akonadi/agentinstance.h"
29 #include "akonadi/servermanager.h"
31 using namespace Akonadi;
33 class Akonadi::SpecialMailCollectionsPrivate
36 SpecialMailCollectionsPrivate();
37 ~SpecialMailCollectionsPrivate();
42 typedef SpecialMailCollectionsSettings Settings;
44 K_GLOBAL_STATIC( SpecialMailCollectionsPrivate, sInstance )
56 static const int s_numTypes =
sizeof s_specialCollectionTypes /
sizeof *s_specialCollectionTypes;
62 return s_specialCollectionTypes[value];
67 for (
int i = 0; i < s_numTypes; ++i) {
68 if (type == s_specialCollectionTypes[i]) {
75 SpecialMailCollectionsPrivate::SpecialMailCollectionsPrivate()
80 SpecialMailCollectionsPrivate::~SpecialMailCollectionsPrivate()
85 static KCoreConfigSkeleton *getConfig(
const QString &filename)
87 Settings::instance( ServerManager::addNamespace(filename) );
88 return Settings::self();
91 SpecialMailCollections::SpecialMailCollections( SpecialMailCollectionsPrivate *dd )
92 : SpecialCollections( getConfig(QLatin1String(
"specialmailcollectionsrc")) ),
99 return sInstance->mInstance;
104 return SpecialCollections::hasCollection( enumToType( type ), instance );
109 return SpecialCollections::collection( enumToType( type ), instance );
114 return SpecialCollections::registerCollection( enumToType( type ), collection );
119 return SpecialCollections::hasDefaultCollection( enumToType( type ) );
124 return SpecialCollections::defaultCollection( enumToType( type ) );
127 void SpecialMailCollections::verifyI18nDefaultCollection( Type type )
134 defaultI18n = i18nc(
"local mail folder",
"inbox" );
137 defaultI18n = i18nc(
"local mail folder",
"outbox" );
140 defaultI18n = i18nc(
"local mail folder",
"sent-mail" );
143 defaultI18n = i18nc(
"local mail folder",
"trash" );
146 defaultI18n = i18nc(
"local mail folder",
"drafts" );
149 defaultI18n = i18nc(
"local mail folder",
"templates" );
154 if(!defaultI18n.isEmpty()) {
155 if(collection.hasAttribute<Akonadi::EntityDisplayAttribute>()) {
156 if( collection.attribute<Akonadi::EntityDisplayAttribute>()->displayName() != defaultI18n) {
157 collection.attribute<Akonadi::EntityDisplayAttribute>()->setDisplayName( defaultI18n );
158 Akonadi::CollectionModifyJob *job =
new Akonadi::CollectionModifyJob( collection,
this );
159 connect( job, SIGNAL(result(KJob*)),
this, SLOT(slotCollectionModified(KJob*)) );
165 void SpecialMailCollections::slotCollectionModified(KJob*job)
167 if ( job->error() ) {
168 kDebug()<<
" Error when we modified collection";
175 if (!collection.hasAttribute<SpecialCollectionAttribute>()) {
178 return typeToEnum(collection.attribute<SpecialCollectionAttribute>()->collectionType());