• Skip to content
  • Skip to link menu
  • KDE API Reference
  • kdepimlibs-4.11.3 API Reference
  • KDE Home
  • Contact Us
 

akonadi/kmime

  • akonadi
  • kmime
specialmailcollections.cpp
1 /*
2  Copyright (c) 2009 Constantin Berzan <exit3219@gmail.com>
3 
4  This library is free software; you can redistribute it and/or modify it
5  under the terms of the GNU Library General Public License as published by
6  the Free Software Foundation; either version 2 of the License, or (at your
7  option) any later version.
8 
9  This library is distributed in the hope that it will be useful, but WITHOUT
10  ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
11  FITNESS FOR A PARTICULAR PURPOSE. See the GNU Library General Public
12  License for more details.
13 
14  You should have received a copy of the GNU Library General Public License
15  along with this library; see the file COPYING.LIB. If not, write to the
16  Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
17  02110-1301, USA.
18 */
19 
20 #include "specialmailcollections.h"
21 #include "akonadi/specialcollectionattribute_p.h"
22 #include "akonadi/entitydisplayattribute.h"
23 #include "akonadi/collectionmodifyjob.h"
24 #include "specialmailcollectionssettings.h"
25 
26 #include <KGlobal>
27 #include <KLocalizedString>
28 #include "akonadi/agentinstance.h"
29 #include "akonadi/servermanager.h"
30 
31 using namespace Akonadi;
32 
33 class Akonadi::SpecialMailCollectionsPrivate
34 {
35  public:
36  SpecialMailCollectionsPrivate();
37  ~SpecialMailCollectionsPrivate();
38 
39  SpecialMailCollections *mInstance;
40 };
41 
42 typedef SpecialMailCollectionsSettings Settings;
43 
44 K_GLOBAL_STATIC( SpecialMailCollectionsPrivate, sInstance )
45 
46 static const char s_specialCollectionTypes[SpecialMailCollections::LastType][11] = {
47  "local-mail",
48  "inbox",
49  "outbox",
50  "sent-mail",
51  "trash",
52  "drafts",
53  "templates"
54 };
55 
56 static const int s_numTypes = sizeof s_specialCollectionTypes / sizeof *s_specialCollectionTypes;
57 
58 BOOST_STATIC_ASSERT(s_numTypes == SpecialMailCollections::LastType);
59 
60 static inline QByteArray enumToType( SpecialMailCollections::Type value )
61 {
62  return s_specialCollectionTypes[value];
63 }
64 
65 static inline SpecialMailCollections::Type typeToEnum(const QByteArray &type)
66 {
67  for (int i = 0; i < s_numTypes; ++i) {
68  if (type == s_specialCollectionTypes[i]) {
69  return static_cast<SpecialMailCollections::Type>(i);
70  }
71  }
72  return SpecialMailCollections::Invalid;
73 }
74 
75 SpecialMailCollectionsPrivate::SpecialMailCollectionsPrivate()
76  : mInstance( new SpecialMailCollections( this ) )
77 {
78 }
79 
80 SpecialMailCollectionsPrivate::~SpecialMailCollectionsPrivate()
81 {
82  delete mInstance;
83 }
84 
85 static KCoreConfigSkeleton *getConfig( const QString &filename)
86 {
87  Settings::instance( ServerManager::addNamespace(filename) );
88  return Settings::self();
89 }
90 
91 SpecialMailCollections::SpecialMailCollections( SpecialMailCollectionsPrivate *dd )
92  : SpecialCollections( getConfig(QLatin1String("specialmailcollectionsrc")) ),
93  d( dd )
94 {
95 }
96 
97 SpecialMailCollections *SpecialMailCollections::self()
98 {
99  return sInstance->mInstance;
100 }
101 
102 bool SpecialMailCollections::hasCollection( Type type, const AgentInstance &instance ) const
103 {
104  return SpecialCollections::hasCollection( enumToType( type ), instance );
105 }
106 
107 Collection SpecialMailCollections::collection( Type type, const AgentInstance &instance ) const
108 {
109  return SpecialCollections::collection( enumToType( type ), instance );
110 }
111 
112 bool SpecialMailCollections::registerCollection( Type type, const Collection &collection )
113 {
114  return SpecialCollections::registerCollection( enumToType( type ), collection );
115 }
116 
117 bool SpecialMailCollections::hasDefaultCollection( Type type ) const
118 {
119  return SpecialCollections::hasDefaultCollection( enumToType( type ) );
120 }
121 
122 Collection SpecialMailCollections::defaultCollection( Type type ) const
123 {
124  return SpecialCollections::defaultCollection( enumToType( type ) );
125 }
126 
127 void SpecialMailCollections::verifyI18nDefaultCollection( Type type )
128 {
129  Collection collection = defaultCollection( type );
130  QString defaultI18n;
131 
132  switch ( type ) {
133  case SpecialMailCollections::Inbox:
134  defaultI18n = i18nc( "local mail folder", "inbox" );
135  break;
136  case SpecialMailCollections::Outbox:
137  defaultI18n = i18nc( "local mail folder", "outbox" );
138  break;
139  case SpecialMailCollections::SentMail:
140  defaultI18n = i18nc( "local mail folder", "sent-mail" );
141  break;
142  case SpecialMailCollections::Trash:
143  defaultI18n = i18nc( "local mail folder", "trash" );
144  break;
145  case SpecialMailCollections::Drafts:
146  defaultI18n = i18nc( "local mail folder", "drafts" );
147  break;
148  case SpecialMailCollections::Templates:
149  defaultI18n = i18nc( "local mail folder", "templates" );
150  break;
151  default:
152  break;
153  }
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*)) );
160  }
161  }
162  }
163 }
164 
165 void SpecialMailCollections::slotCollectionModified(KJob*job)
166 {
167  if ( job->error() ) {
168  kDebug()<<" Error when we modified collection";
169  return;
170  }
171 }
172 
173 SpecialMailCollections::Type SpecialMailCollections::specialCollectionType(const Akonadi::Collection &collection)
174 {
175  if (!collection.hasAttribute<SpecialCollectionAttribute>()) {
176  return Invalid;
177  } else {
178  return typeToEnum(collection.attribute<SpecialCollectionAttribute>()->collectionType());
179  }
180 }
181 
Akonadi::SpecialMailCollections::hasDefaultCollection
bool hasDefaultCollection(Type type) const
Returns whether the default resource has a special mail collection of the given type.
Definition: specialmailcollections.cpp:117
Akonadi::SpecialMailCollections::Trash
The trash collection.
Definition: specialmailcollections.h:85
Akonadi::SpecialMailCollections::Templates
The templates collection.
Definition: specialmailcollections.h:87
Akonadi::SpecialMailCollections::collection
Akonadi::Collection collection(Type type, const AgentInstance &instance) const
Returns the special mail collection of the given type in the given agent instance, or an invalid collection if such a collection is unknown.
Definition: specialmailcollections.cpp:107
Akonadi::SpecialMailCollections::Inbox
The inbox collection.
Definition: specialmailcollections.h:82
Akonadi::SpecialMailCollections::Outbox
The outbox collection.
Definition: specialmailcollections.h:83
Akonadi::SpecialMailCollections::SentMail
The sent-mail collection.
Definition: specialmailcollections.h:84
Akonadi::SpecialMailCollections
Interface to special mail collections such as inbox, outbox etc.
Definition: specialmailcollections.h:67
Akonadi::SpecialMailCollections::Type
Type
Describes the possible types of special mail collections.
Definition: specialmailcollections.h:78
Akonadi::SpecialMailCollections::Invalid
An invalid special collection.
Definition: specialmailcollections.h:80
Akonadi::SpecialMailCollections::specialCollectionType
static Type specialCollectionType(const Akonadi::Collection &collection)
Returns the special collection type for a given collection, or empty if the collection doesn&#39;t have a...
Definition: specialmailcollections.cpp:173
Akonadi::SpecialMailCollections::self
static SpecialMailCollections * self()
Returns the global SpecialMailCollections instance.
Definition: specialmailcollections.cpp:97
Akonadi::SpecialMailCollections::registerCollection
bool registerCollection(Type type, const Akonadi::Collection &collection)
Registers the given collection as a special mail collection with the given type.
Definition: specialmailcollections.cpp:112
Akonadi::SpecialMailCollections::hasCollection
bool hasCollection(Type type, const AgentInstance &instance) const
Returns whether the given agent instance has a special collection of the given type.
Definition: specialmailcollections.cpp:102
Akonadi::SpecialMailCollections::Drafts
The drafts collection.
Definition: specialmailcollections.h:86
Akonadi::SpecialMailCollections::defaultCollection
Akonadi::Collection defaultCollection(Type type) const
Returns the special mail collection of given type in the default resource, or an invalid collection i...
Definition: specialmailcollections.cpp:122
Akonadi::SpecialMailCollections::LastType
Definition: specialmailcollections.h:88
This file is part of the KDE documentation.
Documentation copyright © 1996-2013 The KDE developers.
Generated on Tue Nov 26 2013 09:03:54 by doxygen 1.8.5 written by Dimitri van Heesch, © 1997-2006

KDE's Doxygen guidelines are available online.

akonadi/kmime

Skip menu "akonadi/kmime"
  • Main Page
  • Namespace List
  • Namespace Members
  • Alphabetical List
  • Class List
  • Class Members
  • File List
  • Related Pages

kdepimlibs-4.11.3 API Reference

Skip menu "kdepimlibs-4.11.3 API Reference"
  • akonadi
  •   contact
  •   kmime
  •   socialutils
  • kabc
  • kalarmcal
  • kblog
  • kcal
  • kcalcore
  • kcalutils
  • kholidays
  • kimap
  • kioslave
  •   imap4
  •   mbox
  •   nntp
  • kldap
  • kmbox
  • kmime
  • kontactinterface
  • kpimidentities
  • kpimtextedit
  • kpimutils
  • kresources
  • ktnef
  • kxmlrpcclient
  • mailtransport
  • microblog
  • qgpgme
  • syndication
  •   atom
  •   rdf
  •   rss2
Report problems with this website to our bug tracking system.
Contact the specific authors with questions and comments about the page contents.

KDE® and the K Desktop Environment® logo are registered trademarks of KDE e.V. | Legal