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

kaddressbook

  • sources
  • kde-4.14
  • kdepim
  • kaddressbook
  • printing
  • grantlee
contactgrantleeprintobject.cpp
Go to the documentation of this file.
1 /*
2  Copyright (c) 2013-2015 Montel Laurent <montel@kde.org>
3 
4  This program is free software; you can redistribute it and/or modify it
5  under the terms of the GNU General Public License, version 2, as
6  published by the Free Software Foundation.
7 
8  This program is distributed in the hope that it will be useful, but
9  WITHOUT ANY WARRANTY; without even the implied warranty of
10  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
11  General Public License for more details.
12 
13  You should have received a copy of the GNU General Public License along
14  with this program; if not, write to the Free Software Foundation, Inc.,
15  51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
16 */
17 
18 #include "contactgrantleeprintobject.h"
19 #include "contactgrantleeprintaddressobject.h"
20 #include "contactgrantleeprintphoneobject.h"
21 #include "contactgrantleeprintimobject.h"
22 #include "contactgrantleeprintgeoobject.h"
23 #include "contactgrantleeprintcryptoobject.h"
24 
25 #include <KABC/Address>
26 #include <KABC/PhoneNumber>
27 #include <kabc/lang.h>
28 #include <KLocalizedString>
29 #include <KGlobal>
30 #include <KLocale>
31 
32 #include <QBuffer>
33 #include <QDebug>
34 
35 #include <grantlee/metatype.h>
36 
37 
38 using namespace KABPrinting;
39 
40 ContactGrantleePrintObject::ContactGrantleePrintObject(const KABC::Addressee &address, QObject *parent)
41  : QObject(parent),
42  mAddress(address)
43 {
44  Grantlee::registerSequentialContainer<QList<QObject*> >();
45  Q_FOREACH ( const KABC::Address &addr, address.addresses() ) {
46  mListAddress<<new ContactGrantleePrintAddressObject(addr);
47  }
48  Q_FOREACH ( const KABC::PhoneNumber &phone, address.phoneNumbers() ) {
49  mListPhones<<new ContactGrantleePrintPhoneObject(phone);
50  }
51  const QStringList customs = mAddress.customs();
52  if ( !customs.empty() ) {
53  Q_FOREACH ( const QString &custom, customs ) {
54  if ( custom.startsWith( QLatin1String( "messaging/" ) ) ) {
55  const int pos = custom.indexOf( QLatin1Char( ':' ) );
56  QString key = custom.left( pos );
57  key.remove( QLatin1String( "-All" ) );
58  const QString value = custom.mid( pos + 1 );
59  mListIm << new ContactGrantleePrintImObject(key, value);
60  }
61  }
62  }
63  mGeoObject = new ContactGrantleePrintGeoObject(address.geo());
64  mCryptoObject = new ContactGrantleePrintCryptoObject(address);
65 }
66 
67 ContactGrantleePrintObject::~ContactGrantleePrintObject()
68 {
69  delete mGeoObject;
70  qDeleteAll(mListAddress);
71  qDeleteAll(mListPhones);
72  qDeleteAll(mListIm);
73  delete mCryptoObject;
74 }
75 
76 QString ContactGrantleePrintObject::realName() const
77 {
78  return mAddress.realName();
79 }
80 
81 QString ContactGrantleePrintObject::formattedName() const
82 {
83  return mAddress.formattedName();
84 }
85 
86 QString ContactGrantleePrintObject::prefix() const
87 {
88  return mAddress.prefix();
89 }
90 
91 QString ContactGrantleePrintObject::givenName() const
92 {
93  return mAddress.givenName();
94 }
95 
96 QString ContactGrantleePrintObject::additionalName() const
97 {
98  return mAddress.additionalName();
99 }
100 
101 QString ContactGrantleePrintObject::familyName() const
102 {
103  return mAddress.familyName();
104 }
105 
106 QString ContactGrantleePrintObject::suffix() const
107 {
108  return mAddress.suffix();
109 }
110 
111 QString ContactGrantleePrintObject::nickName() const
112 {
113  return mAddress.nickName();
114 }
115 
116 QString ContactGrantleePrintObject::name() const
117 {
118  return mAddress.name();
119 }
120 
121 QString ContactGrantleePrintObject::languages() const
122 {
123  QString result;
124  QStringList langList;
125  Q_FOREACH ( const KABC::Lang &lang, mAddress.langs() ) {
126  langList.append(lang.language());
127  }
128  if (!langList.isEmpty()) {
129  result = langList.join(QLatin1String(","));
130  }
131  return result;
132 }
133 
134 QStringList ContactGrantleePrintObject::emails() const
135 {
136  QStringList emails;
137  Q_FOREACH ( const QString &email, mAddress.emails() ) {
138  const QString fullEmail = QString::fromLatin1( KUrl::toPercentEncoding( mAddress.fullEmail( email ) ) );
139 
140  const QString url = QString::fromLatin1( "<a href=\"mailto:%1\">%2</a>" )
141  .arg( fullEmail, email );
142  emails << url;
143  }
144  return emails;
145 }
146 
147 QString ContactGrantleePrintObject::organization() const
148 {
149  return mAddress.organization();
150 }
151 
152 QString ContactGrantleePrintObject::note() const
153 {
154  return mAddress.note().replace(QLatin1Char('\n'), QLatin1String("<br>"));
155 }
156 
157 QString ContactGrantleePrintObject::webPage() const
158 {
159  return mAddress.url().prettyUrl();
160 }
161 
162 QString ContactGrantleePrintObject::title() const
163 {
164  return mAddress.title();
165 }
166 
167 QString ContactGrantleePrintObject::preferredEmail() const
168 {
169  return mAddress.preferredEmail();
170 }
171 
172 QString ContactGrantleePrintObject::role() const
173 {
174  return mAddress.role();
175 }
176 
177 QString ContactGrantleePrintObject::birthday() const
178 {
179  return KGlobal::locale()->formatDate( mAddress.birthday().date(), KLocale::LongDate );
180 }
181 
182 QString ContactGrantleePrintObject::department() const
183 {
184  return mAddress.department();
185 }
186 
187 QVariant ContactGrantleePrintObject::addresses() const
188 {
189  return QVariant::fromValue(mListAddress);
190 }
191 
192 QVariant ContactGrantleePrintObject::phones() const
193 {
194  return QVariant::fromValue(mListPhones);
195 }
196 
197 QVariant ContactGrantleePrintObject::instantManging() const
198 {
199  return QVariant::fromValue(mListIm);
200 }
201 
202 QVariant ContactGrantleePrintObject::geo() const
203 {
204  return QVariant::fromValue(mGeoObject);
205 }
206 
207 QVariant ContactGrantleePrintObject::crypto() const
208 {
209  return QVariant::fromValue(mCryptoObject);
210 }
211 
212 QString ContactGrantleePrintObject::addressBookName() const
213 {
214  const QString addressBookName = mAddress.custom( QLatin1String( "KADDRESSBOOK" ), QLatin1String( "AddressBook" ) );
215  return addressBookName;
216 }
217 
218 QString ContactGrantleePrintObject::photo() const
219 {
220  if (mAddress.photo().isEmpty()) {
221  return QString();
222  } else {
223  const QString photoStr = QString::fromLatin1("<img src=\"%1\" width=\"%2\" height=\"%3\"> &nbsp;")
224  .arg( imgToDataUrl( mAddress.photo().data() ), QString::number( 60 ), QString::number( 60 ));
225  return photoStr;
226  }
227 }
228 
229 QString ContactGrantleePrintObject::imgToDataUrl( const QImage &image ) const
230 {
231  QByteArray ba;
232  QBuffer buffer( &ba );
233  buffer.open( QIODevice::WriteOnly );
234  image.save( &buffer, "PNG" );
235  return QString::fromLatin1("data:image/%1;base64,%2").arg( QString::fromLatin1( "PNG" ), QString::fromLatin1( ba.toBase64() ) );
236 }
237 
238 QString ContactGrantleePrintObject::logo() const
239 {
240  if (mAddress.logo().isEmpty()) {
241  return QString();
242  } else {
243  const QString photoStr = QString::fromLatin1("<img src=\"%1\" width=\"%2\" height=\"%3\"> &nbsp;")
244  .arg( imgToDataUrl( mAddress.logo().data() ), QString::number( 60 ), QString::number( 60 ));
245  return photoStr;
246  }
247 }
248 
249 QString ContactGrantleePrintObject::anniversary() const
250 {
251  const QDate anniversary = QDate::fromString( mAddress.custom( QLatin1String( "KADDRESSBOOK" ),
252  QLatin1String( "X-Anniversary" ) ), Qt::ISODate );
253  if ( anniversary.isValid() ) {
254  return (KGlobal::locale()->formatDate( anniversary ) );
255  }
256  return QString();
257 }
258 
259 QString ContactGrantleePrintObject::profession() const
260 {
261  return mAddress.custom( QLatin1String( "KADDRESSBOOK" ),
262  QLatin1String( "X-Profession" ) );
263 }
264 
265 QString ContactGrantleePrintObject::office() const
266 {
267  return mAddress.custom( QLatin1String( "KADDRESSBOOK" ),
268  QLatin1String( "X-Office" ) );
269 }
270 
271 QString ContactGrantleePrintObject::manager() const
272 {
273  return mAddress.custom( QLatin1String( "KADDRESSBOOK" ),
274  QLatin1String( "X-ManagersName" ) );
275 }
276 
277 QString ContactGrantleePrintObject::assistant() const
278 {
279  return mAddress.custom( QLatin1String( "KADDRESSBOOK" ),
280  QLatin1String( "X-AssistantsName" ) );
281 }
282 
283 QString ContactGrantleePrintObject::spouse() const
284 {
285  return mAddress.custom( QLatin1String( "KADDRESSBOOK" ),
286  QLatin1String( "X-SpousesName" ) );
287 }
KABPrinting::ContactGrantleePrintObject::birthday
QString birthday() const
QString::indexOf
int indexOf(QChar ch, int from, Qt::CaseSensitivity cs) const
KABPrinting::ContactGrantleePrintObject::anniversary
QString anniversary() const
KABPrinting::ContactGrantleePrintObject::instantManging
QVariant instantManging() const
KABPrinting::ContactGrantleePrintObject::manager
QString manager() const
KABPrinting::ContactGrantleePrintObject::preferredEmail
QString preferredEmail() const
KABPrinting::ContactGrantleePrintObject::profession
QString profession() const
KABPrinting::ContactGrantleePrintObject::spouse
QString spouse() const
KABPrinting::ContactGrantleePrintCryptoObject
Definition: contactgrantleeprintcryptoobject.h:23
KABPrinting::ContactGrantleePrintObject::phones
QVariant phones() const
QByteArray
contactgrantleeprintgeoobject.h
KABPrinting::ContactGrantleePrintObject::realName
QString realName() const
QImage::save
bool save(const QString &fileName, const char *format, int quality) const
KABPrinting::ContactGrantleePrintObject::familyName
QString familyName() const
KABPrinting::ContactGrantleePrintObject::prefix
QString prefix() const
KABPrinting::ContactGrantleePrintObject::assistant
QString assistant() const
KABPrinting::ContactGrantleePrintObject::ContactGrantleePrintObject
ContactGrantleePrintObject(const KABC::Addressee &address, QObject *parent=0)
Definition: contactgrantleeprintobject.cpp:40
QBuffer
QStringList::join
QString join(const QString &separator) const
KABPrinting::ContactGrantleePrintObject::name
QString name() const
QString::remove
QString & remove(int position, int n)
KABPrinting::ContactGrantleePrintObject::languages
QString languages() const
QDate::fromString
QDate fromString(const QString &string, Qt::DateFormat format)
KABPrinting::ContactGrantleePrintObject::title
QString title() const
QString::number
QString number(int n, int base)
QList::append
void append(const T &value)
contactgrantleeprintcryptoobject.h
QList::empty
bool empty() const
contactgrantleeprintimobject.h
QObject
KABPrinting::ContactGrantleePrintObject::role
QString role() const
KABPrinting::ContactGrantleePrintObject::nickName
QString nickName() const
QList::isEmpty
bool isEmpty() const
KABPrinting::ContactGrantleePrintImObject
Definition: contactgrantleeprintimobject.h:22
QString::startsWith
bool startsWith(const QString &s, Qt::CaseSensitivity cs) const
QDate::isValid
bool isValid() const
QDate
KABPrinting::ContactGrantleePrintObject::formattedName
QString formattedName() const
QString
contactgrantleeprintaddressobject.h
QStringList
QLatin1Char
KABPrinting::ContactGrantleePrintObject::organization
QString organization() const
QVariant::fromValue
QVariant fromValue(const T &value)
KABPrinting::ContactGrantleePrintObject::logo
QString logo() const
QImage
QString::mid
QString mid(int position, int n) const
KABPrinting::ContactGrantleePrintObject::addresses
QVariant addresses() const
QLatin1String
KABPrinting::ContactGrantleePrintObject::office
QString office() const
KABPrinting::ContactGrantleePrintObject::suffix
QString suffix() const
KABPrinting::ContactGrantleePrintObject::additionalName
QString additionalName() const
KABPrinting::ContactGrantleePrintGeoObject
Definition: contactgrantleeprintgeoobject.h:27
KABPrinting::ContactGrantleePrintObject::geo
QVariant geo() const
Definition: contactgrantleeprintobject.cpp:202
KABPrinting::ContactGrantleePrintObject::note
QString note() const
QString::left
QString left(int n) const
KABPrinting::ContactGrantleePrintAddressObject
Definition: contactgrantleeprintaddressobject.h:23
KABPrinting::ContactGrantleePrintObject::~ContactGrantleePrintObject
~ContactGrantleePrintObject()
Definition: contactgrantleeprintobject.cpp:67
QString::fromLatin1
QString fromLatin1(const char *str, int size)
KABPrinting::ContactGrantleePrintObject::webPage
QString webPage() const
KABPrinting::ContactGrantleePrintObject::crypto
QVariant crypto() const
KABPrinting::ContactGrantleePrintObject::department
QString department() const
QByteArray::toBase64
QByteArray toBase64() const
KABPrinting::ContactGrantleePrintObject::givenName
QString givenName() const
KABPrinting::ContactGrantleePrintObject::photo
QString photo() const
contactgrantleeprintobject.h
KABPrinting::ContactGrantleePrintPhoneObject
Definition: contactgrantleeprintphoneobject.h:23
QString::arg
QString arg(qlonglong a, int fieldWidth, int base, const QChar &fillChar) const
KABPrinting::ContactGrantleePrintObject::emails
QStringList emails() const
KABPrinting::ContactGrantleePrintObject::addressBookName
QString addressBookName() const
contactgrantleeprintphoneobject.h
QVariant
This file is part of the KDE documentation.
Documentation copyright © 1996-2020 The KDE developers.
Generated on Mon Jun 22 2020 13:32:34 by doxygen 1.8.7 written by Dimitri van Heesch, © 1997-2006

KDE's Doxygen guidelines are available online.

kaddressbook

Skip menu "kaddressbook"
  • Main Page
  • Namespace List
  • Namespace Members
  • Alphabetical List
  • Class List
  • Class Hierarchy
  • Class Members
  • File List
  • File Members

kdepim API Reference

Skip menu "kdepim API Reference"
  • akonadi_next
  • akregator
  • blogilo
  • calendarsupport
  • console
  •   kabcclient
  •   konsolekalendar
  • kaddressbook
  • kalarm
  •   lib
  • kdgantt2
  • kjots
  • kleopatra
  • kmail
  • knode
  • knotes
  • kontact
  • korgac
  • korganizer
  • ktimetracker
  • libkdepim
  • libkleo
  • libkpgp
  • mailcommon
  • messagelist
  • messageviewer
  • pimprint

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