• 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
grantleeprint.cpp
Go to the documentation of this file.
1 /*
2  Copyright (c) 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 "grantleeprint.h"
19 #include "contactgrantleeprintobject.h"
20 
21 #include "kaddressbookgrantlee/formatter/grantleecontactutils.h"
22 
23 #include <grantlee/context.h>
24 #include <grantlee/engine.h>
25 #include <grantlee/templateloader.h>
26 
27 
28 using namespace KABPrinting;
29 
30 GrantleePrint::GrantleePrint(QObject *parent)
31  : QObject(parent)
32 {
33  mEngine = new Grantlee::Engine;
34 }
35 
36 GrantleePrint::GrantleePrint(const QString &themePath, QObject *parent)
37  : QObject(parent)
38 {
39  mEngine = new Grantlee::Engine;
40  mTemplateLoader = Grantlee::FileSystemTemplateLoader::Ptr( new Grantlee::FileSystemTemplateLoader );
41 
42  mTemplateLoader->setTemplateDirs( QStringList() << themePath );
43  mEngine->addTemplateLoader( mTemplateLoader );
44 
45  mSelfcontainedTemplate = mEngine->loadByName( QLatin1String("theme.html") );
46  if ( mSelfcontainedTemplate->error() ) {
47  mErrorMessage = mSelfcontainedTemplate->errorString() + QLatin1String("<br>");
48  }
49 }
50 
51 GrantleePrint::~GrantleePrint()
52 {
53  delete mEngine;
54 }
55 
56 void GrantleePrint::setContent(const QString &content)
57 {
58  mSelfcontainedTemplate = mEngine->newTemplate(content, QLatin1String("content"));
59  if ( mSelfcontainedTemplate->error() ) {
60  mErrorMessage = mSelfcontainedTemplate->errorString() + QLatin1String("<br>");
61  }
62 }
63 
64 QString GrantleePrint::contactsToHtml( const KABC::Addressee::List &contacts )
65 {
66  if (!mErrorMessage.isEmpty())
67  return mErrorMessage;
68 
69  if (contacts.isEmpty()) {
70  return QString();
71  }
72  QVariantList contactsList;
73  QList<ContactGrantleePrintObject*> lst;
74  Q_FOREACH (const KABC::Addressee &address, contacts) {
75  ContactGrantleePrintObject *contactPrintObject = new ContactGrantleePrintObject(address);
76  lst.append(contactPrintObject);
77  contactsList << QVariant::fromValue(static_cast<QObject*>(contactPrintObject));
78  }
79  QVariantHash mapping;
80  QVariantHash contactI18n;
81  GrantleeContactUtils grantleeContactUtil;
82  grantleeContactUtil.insertVariableToQVariantHash( contactI18n, QLatin1String( "birthdayi18n" ) );
83  grantleeContactUtil.insertVariableToQVariantHash( contactI18n, QLatin1String("anniversaryi18n") );
84  grantleeContactUtil.insertVariableToQVariantHash( contactI18n, QLatin1String( "emailsi18n" ) );
85  grantleeContactUtil.insertVariableToQVariantHash( contactI18n, QLatin1String( "websitei18n" ) );
86  grantleeContactUtil.insertVariableToQVariantHash( contactI18n, QLatin1String( "blogUrli18n" ) );
87  grantleeContactUtil.insertVariableToQVariantHash( contactI18n, QLatin1String( "addressBookNamei18n" ) );
88  grantleeContactUtil.insertVariableToQVariantHash( contactI18n, QLatin1String( "notei18n" ) );
89  grantleeContactUtil.insertVariableToQVariantHash( contactI18n, QLatin1String( "departmenti18n" ) );
90  grantleeContactUtil.insertVariableToQVariantHash( contactI18n, QLatin1String( "Professioni18n" ) );
91  grantleeContactUtil.insertVariableToQVariantHash( contactI18n, QLatin1String( "officei18n" ) );
92  grantleeContactUtil.insertVariableToQVariantHash( contactI18n, QLatin1String( "manageri18n" ) );
93  grantleeContactUtil.insertVariableToQVariantHash( contactI18n, QLatin1String( "assistanti18n" ) );
94  grantleeContactUtil.insertVariableToQVariantHash( contactI18n, QLatin1String( "spousei18n" ) );
95  grantleeContactUtil.insertVariableToQVariantHash( contactI18n, QLatin1String( "imAddressi18n" ) );
96  grantleeContactUtil.insertVariableToQVariantHash( contactI18n, QLatin1String( "latitudei18n" ));
97  grantleeContactUtil.insertVariableToQVariantHash( contactI18n, QLatin1String( "longitudei18n" ));
98  grantleeContactUtil.insertVariableToQVariantHash( contactI18n, QLatin1String( "organizationi18n" ));
99  grantleeContactUtil.insertVariableToQVariantHash( contactI18n, QLatin1String( "titlei18n" ));
100  grantleeContactUtil.insertVariableToQVariantHash( contactI18n, QLatin1String( "nextcontacti18n" ));
101  mapping.insert( QLatin1String("contacti18n"), contactI18n );
102 
103  Grantlee::Context context( mapping );
104  context.insert(QLatin1String("contacts"), contactsList);
105  const QString content = mSelfcontainedTemplate->render( &context );
106  qDeleteAll(lst);
107  return content;
108 }
KABPrinting::GrantleePrint::GrantleePrint
GrantleePrint(QObject *parent=0)
Definition: grantleeprint.cpp:30
KABPrinting::GrantleePrint::~GrantleePrint
~GrantleePrint()
Definition: grantleeprint.cpp:51
grantleeprint.h
KABPrinting::ContactGrantleePrintObject
Definition: contactgrantleeprintobject.h:30
QList::append
void append(const T &value)
QObject
QString::isEmpty
bool isEmpty() const
QString
QList
QStringList
QLatin1String
KABPrinting::GrantleePrint::contactsToHtml
QString contactsToHtml(const KABC::Addressee::List &contacts)
Definition: grantleeprint.cpp:64
KABPrinting::GrantleePrint::setContent
void setContent(const QString &content)
Definition: grantleeprint.cpp:56
contactgrantleeprintobject.h
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