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

akonadi

  • sources
  • kde-4.12
  • kdepimlibs
  • akonadi
mimetypechecker.cpp
1 /*
2  Copyright (c) 2009 Kevin Krammer <kevin.krammer@gmx.at>
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 "mimetypechecker.h"
21 
22 #include "mimetypechecker_p.h"
23 
24 #include "collection.h"
25 #include "item.h"
26 
27 using namespace Akonadi;
28 
29 MimeTypeChecker::MimeTypeChecker()
30 {
31  d = new MimeTypeCheckerPrivate();
32 }
33 
34 MimeTypeChecker::MimeTypeChecker( const MimeTypeChecker &other )
35  : d( other.d )
36 {
37 }
38 
39 MimeTypeChecker::~MimeTypeChecker()
40 {
41 }
42 
43 MimeTypeChecker &MimeTypeChecker::operator=( const MimeTypeChecker &other )
44 {
45  if ( &other != this )
46  d = other.d;
47 
48  return *this;
49 }
50 
51 QStringList MimeTypeChecker::wantedMimeTypes() const
52 {
53  return d->mWantedMimeTypes.values();
54 }
55 
56 void MimeTypeChecker::setWantedMimeTypes( const QStringList &mimeTypes )
57 {
58  d->mWantedMimeTypes = QSet<QString>::fromList( mimeTypes );
59 }
60 
61 void MimeTypeChecker::addWantedMimeType( const QString &mimeType )
62 {
63  d->mWantedMimeTypes.insert( mimeType );
64 }
65 
66 void MimeTypeChecker::removeWantedMimeType(const QString &mimeType )
67 {
68  d->mWantedMimeTypes.remove( mimeType );
69 }
70 
71 bool MimeTypeChecker::isWantedItem( const Item &item ) const
72 {
73  if ( d->mWantedMimeTypes.isEmpty() || !item.isValid() )
74  return false;
75 
76  const QString mimeType = item.mimeType();
77  if ( mimeType.isEmpty() )
78  return false;
79 
80  return d->isWantedMimeType( mimeType );
81 }
82 
83 bool MimeTypeChecker::isWantedCollection( const Collection &collection ) const
84 {
85  if ( d->mWantedMimeTypes.isEmpty() || !collection.isValid() )
86  return false;
87 
88  const QStringList contentMimeTypes = collection.contentMimeTypes();
89  if ( contentMimeTypes.isEmpty() )
90  return false;
91 
92  foreach ( const QString &mimeType, contentMimeTypes ) {
93  if ( mimeType.isEmpty() )
94  continue;
95 
96  if ( d->isWantedMimeType( mimeType ) )
97  return true;
98  }
99 
100  return false;
101 }
102 
103 bool MimeTypeChecker::isWantedItem( const Item &item, const QString &wantedMimeType )
104 {
105  if ( wantedMimeType.isEmpty() || !item.isValid() )
106  return false;
107 
108  const QString mimeType = item.mimeType();
109  if ( mimeType.isEmpty() )
110  return false;
111 
112  if ( mimeType == wantedMimeType )
113  return true;
114 
115  KMimeType::Ptr mimeTypePtr = KMimeType::mimeType( mimeType, KMimeType::ResolveAliases );
116  if ( mimeTypePtr.isNull() )
117  return false;
118 
119  return mimeTypePtr->is( wantedMimeType );
120 }
121 
122 bool MimeTypeChecker::isWantedCollection( const Collection &collection, const QString &wantedMimeType )
123 {
124  if ( wantedMimeType.isEmpty() || !collection.isValid() )
125  return false;
126 
127  const QStringList contentMimeTypes = collection.contentMimeTypes();
128  if ( contentMimeTypes.isEmpty() )
129  return false;
130 
131  foreach ( const QString &mimeType, contentMimeTypes ) {
132  if ( mimeType.isEmpty() )
133  continue;
134 
135  if ( mimeType == wantedMimeType )
136  return true;
137 
138  KMimeType::Ptr mimeTypePtr = KMimeType::mimeType( mimeType, KMimeType::ResolveAliases );
139  if ( mimeTypePtr.isNull() )
140  continue;
141 
142  if ( mimeTypePtr->is( wantedMimeType ) )
143  return true;
144  }
145 
146  return false;
147 }
148 
149 bool MimeTypeChecker::isWantedMimeType(const QString& mimeType) const
150 {
151  return d->isWantedMimeType( mimeType );
152 }
153 
154 bool MimeTypeChecker::containsWantedMimeType(const QStringList& mimeTypes) const
155 {
156  foreach ( const QString &mt, mimeTypes ) {
157  if ( d->isWantedMimeType( mt ) )
158  return true;
159  }
160  return false;
161 }
162 
163 // kate: space-indent on; indent-width 2; replace-tabs on;
Akonadi::Collection
Represents a collection of PIM items.
Definition: collection.h:75
Akonadi::MimeTypeCheckerPrivate
Definition: mimetypechecker_p.h:33
Akonadi::MimeTypeChecker
Helper for checking MIME types of Collections and Items.
Definition: mimetypechecker.h:109
Akonadi::MimeTypeChecker::MimeTypeChecker
MimeTypeChecker()
Creates an empty MIME type checker.
Definition: mimetypechecker.cpp:29
Akonadi::MimeTypeChecker::addWantedMimeType
void addWantedMimeType(const QString &mimeType)
Adds another MIME type to the list of wanted MIME types this instance checks against.
Definition: mimetypechecker.cpp:61
Akonadi::MimeTypeChecker::containsWantedMimeType
bool containsWantedMimeType(const QStringList &mimeTypes) const
Checks whether any of the given MIME types is covered by one of the wanted MIME types.
Definition: mimetypechecker.cpp:154
Akonadi::MimeTypeChecker::~MimeTypeChecker
~MimeTypeChecker()
Destroys the MIME type checker.
Definition: mimetypechecker.cpp:39
Akonadi::MimeTypeChecker::wantedMimeTypes
QStringList wantedMimeTypes() const
Returns the list of wanted MIME types this instance checks against.
Definition: mimetypechecker.cpp:51
Akonadi::MimeTypeChecker::isWantedCollection
bool isWantedCollection(const Collection &collection) const
Checks whether a given collection has one of the wanted MIME types.
Definition: mimetypechecker.cpp:83
Akonadi::MimeTypeChecker::isWantedMimeType
bool isWantedMimeType(const QString &mimeType) const
Checks whether a given mime type is covered by one of the wanted MIME types.
Definition: mimetypechecker.cpp:149
Akonadi::MimeTypeChecker::setWantedMimeTypes
void setWantedMimeTypes(const QStringList &mimeTypes)
Sets the list of wanted MIME types this instance checks against.
Definition: mimetypechecker.cpp:56
Akonadi::MimeTypeChecker::isWantedItem
bool isWantedItem(const Item &item) const
Checks whether a given item has one of the wanted MIME types.
Definition: mimetypechecker.cpp:71
Akonadi::MimeTypeChecker::operator=
MimeTypeChecker & operator=(const MimeTypeChecker &other)
Assigns the other to this checker and returns a reference to this checker.
Definition: mimetypechecker.cpp:43
Akonadi::Collection::contentMimeTypes
QStringList contentMimeTypes() const
Returns a list of possible content mimetypes, e.g.
Definition: collection.cpp:115
Akonadi::Entity::isValid
bool isValid() const
Returns whether the entity is valid.
Definition: entity.cpp:97
Akonadi::MimeTypeChecker::removeWantedMimeType
void removeWantedMimeType(const QString &mimeType)
Removes a MIME type from the list of wanted MIME types this instance checks against.
Definition: mimetypechecker.cpp:66
This file is part of the KDE documentation.
Documentation copyright © 1996-2014 The KDE developers.
Generated on Tue Oct 14 2014 23:00:27 by doxygen 1.8.7 written by Dimitri van Heesch, © 1997-2006

KDE's Doxygen guidelines are available online.

akonadi

Skip menu "akonadi"
  • Main Page
  • Namespace List
  • Namespace Members
  • Alphabetical List
  • Class List
  • Class Hierarchy
  • Class Members
  • File List
  • Modules
  • Related Pages

kdepimlibs API Reference

Skip menu "kdepimlibs API Reference"
  • akonadi
  •   contact
  •   kmime
  •   socialutils
  • kabc
  • kalarmcal
  • kblog
  • kcal
  • kcalcore
  • kcalutils
  • kholidays
  • kimap
  • kldap
  • kmbox
  • kmime
  • kpimidentities
  • kpimtextedit
  • kresources
  • ktnef
  • kxmlrpcclient
  • microblog

Search



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