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

KCal Library

  • kcal
attachment.cpp
Go to the documentation of this file.
1 /*
2  This file is part of the kcal library.
3 
4  Copyright (c) 2002 Michael Brade <brade@kde.org>
5 
6  This library is free software; you can redistribute it and/or
7  modify it under the terms of the GNU Library General Public
8  License as published by the Free Software Foundation; either
9  version 2 of the License, or (at your option) any later version.
10 
11  This library is distributed in the hope that it will be useful,
12  but WITHOUT ANY WARRANTY; without even the implied warranty of
13  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
14  Library General Public License for more details.
15 
16  You should have received a copy of the GNU Library General Public License
17  along with this library; see the file COPYING.LIB. If not, write to
18  the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
19  Boston, MA 02110-1301, USA.
20 */
32 #include "attachment.h"
33 
34 #include <QtCore/QByteArray>
35 
36 using namespace KCal;
37 
42 //@cond PRIVATE
43 class KCal::Attachment::Private
44 {
45  public:
46  Private( const QString &mime, bool binary )
47  : mSize( 0 ),
48  mMimeType( mime ),
49  mData( 0 ),
50  mBinary( binary ),
51  mLocal( false ),
52  mShowInline( false )
53  {}
54  Private( const Private &other )
55  : mSize( other.mSize ),
56  mMimeType( other.mMimeType ),
57  mUri( other.mUri ),
58  mData( qstrdup( other.mData ) ),
59  mLabel( other.mLabel ),
60  mBinary( other.mBinary ),
61  mLocal( other.mLocal ),
62  mShowInline( other.mShowInline )
63  {}
64  ~Private()
65  {
66  delete[] mData;
67  }
68 
69  QByteArray mDataCache;
70  uint mSize;
71  QString mMimeType;
72  QString mUri;
73  char *mData;
74  QString mLabel;
75  bool mBinary;
76  bool mLocal;
77  bool mShowInline;
78 };
79 //@endcond
80 
81 Attachment::Attachment( const Attachment &attachment )
82  : d( new Attachment::Private( *attachment.d ) )
83 {
84 }
85 
86 Attachment::Attachment( const QString &uri, const QString &mime )
87  : d( new Attachment::Private( mime, false ) )
88 {
89  d->mUri = uri;
90 }
91 
92 Attachment::Attachment( const char *base64, const QString &mime )
93  : d( new Attachment::Private( mime, true ) )
94 {
95  d->mData = qstrdup( base64 );
96 }
97 
98 Attachment::~Attachment()
99 {
100  delete d;
101 }
102 
103 bool Attachment::isUri() const
104 {
105  return !d->mBinary;
106 }
107 
108 QString Attachment::uri() const
109 {
110  if ( !d->mBinary ) {
111  return d->mUri;
112  } else {
113  return QString();
114  }
115 }
116 
117 void Attachment::setUri( const QString &uri )
118 {
119  d->mUri = uri;
120  d->mBinary = false;
121 }
122 
123 bool Attachment::isBinary() const
124 {
125  return d->mBinary;
126 }
127 
128 char *Attachment::data() const
129 {
130  if ( d->mBinary ) {
131  return d->mData;
132  } else {
133  return 0;
134  }
135 }
136 
137 QByteArray &Attachment::decodedData() const
138 {
139  if ( d->mDataCache.isNull() ) {
140  d->mDataCache = QByteArray::fromBase64( d->mData );
141  }
142 
143  return d->mDataCache;
144 }
145 
146 void Attachment::setDecodedData( const QByteArray &data )
147 {
148  setData( data.toBase64().constData() );
149  d->mDataCache = data;
150  d->mSize = d->mDataCache.size();
151 }
152 
153 void Attachment::setData( const char *base64 )
154 {
155  delete[] d->mData;
156  d->mData = qstrdup( base64 );
157  d->mBinary = true;
158  d->mDataCache = QByteArray();
159  d->mSize = 0;
160 }
161 
162 uint Attachment::size() const
163 {
164  if ( isUri() ) {
165  return 0;
166  }
167  if ( !d->mSize ) {
168  d->mSize = decodedData().size();
169  }
170 
171  return d->mSize;
172 }
173 
174 QString Attachment::mimeType() const
175 {
176  return d->mMimeType;
177 }
178 
179 void Attachment::setMimeType( const QString &mime )
180 {
181  d->mMimeType = mime;
182 }
183 
184 bool Attachment::showInline() const
185 {
186  return d->mShowInline;
187 }
188 
189 void Attachment::setShowInline( bool showinline )
190 {
191  d->mShowInline = showinline;
192 }
193 
194 QString Attachment::label() const
195 {
196  return d->mLabel;
197 }
198 
199 void Attachment::setLabel( const QString &label )
200 {
201  d->mLabel = label;
202 }
203 
204 bool Attachment::isLocal() const
205 {
206  return d->mLocal;
207 }
208 
209 void Attachment::setLocal( bool local )
210 {
211  d->mLocal = local;
212 }
213 
214 bool Attachment::operator==( const Attachment &a2 ) const
215 {
216  return uri() == a2.uri() &&
217  d->mLabel == a2.label() &&
218  d->mLocal == a2.isLocal() &&
219  d->mBinary == a2.isBinary() &&
220  d->mShowInline == a2.showInline() &&
221  size() == a2.size() &&
222  decodedData() == a2.decodedData();
223 }
224 
225 bool Attachment::operator!=( const Attachment &a2 ) const
226 {
227  return !( *this == a2 );
228 }
This file is part of the KDE documentation.
Documentation copyright © 1996-2013 The KDE developers.
Generated on Sat Jul 13 2013 01:29:13 by doxygen 1.8.3.1 written by Dimitri van Heesch, © 1997-2006

KDE's Doxygen guidelines are available online.

KCal Library

Skip menu "KCal Library"
  • Main Page
  • Namespace List
  • Namespace Members
  • Alphabetical List
  • Class List
  • Class Hierarchy
  • Class Members
  • File List
  • Related Pages

kdepimlibs-4.10.5 API Reference

Skip menu "kdepimlibs-4.10.5 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