• 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
  • gravatar
  • job
gravatarupdatejob.cpp
Go to the documentation of this file.
1 /*
2  This file is part of KAddressBook.
3 
4  Copyright (c) 2015 Laurent Montel <montel@kde.org>
5 
6  This program is free software; you can redistribute it and/or modify
7  it under the terms of the GNU General Public License as published by
8  the Free Software Foundation; either version 2 of the License, or
9  (at your option) any later version.
10 
11  This program 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
14  GNU General Public License for more details.
15 
16  You should have received a copy of the GNU General Public License along
17  with this program; if not, write to the Free Software Foundation, Inc.,
18  51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
19 */
20 
21 
22 #include "gravatarupdatejob.h"
23 
24 #include <gravatar/gravatarresolvurljob.h>
25 
26 #include <KABC/Addressee>
27 #include <Akonadi/ItemModifyJob>
28 #include <QDebug>
29 
30 using namespace KABGravatar;
31 
32 GravatarUpdateJob::GravatarUpdateJob(QObject *parent)
33  : QObject(parent)
34 {
35 
36 }
37 
38 GravatarUpdateJob::~GravatarUpdateJob()
39 {
40 
41 }
42 
43 void GravatarUpdateJob::start()
44 {
45  if (canStart()) {
46  PimCommon::GravatarResolvUrlJob *job = new PimCommon::GravatarResolvUrlJob(this);
47  job->setEmail(mEmail);
48  if (job->canStart()) {
49  connect(job, SIGNAL(finished(PimCommon::GravatarResolvUrlJob*)), this, SLOT(slotGravatarResolvUrlFinished(PimCommon::GravatarResolvUrlJob*)));
50  connect(job, SIGNAL(resolvUrl(KUrl)), this, SIGNAL(resolvedUrl(KUrl)));
51  job->start();
52  } else {
53  deleteLater();
54  }
55  } else {
56  deleteLater();
57  }
58 
59 }
60 
61 bool GravatarUpdateJob::canStart() const
62 {
63  return !mEmail.trimmed().isEmpty() && (mEmail.contains(QLatin1Char('@')));
64 }
65 
66 QString GravatarUpdateJob::email() const
67 {
68  return mEmail;
69 }
70 
71 void GravatarUpdateJob::setEmail(const QString &email)
72 {
73  mEmail = email;
74 }
75 
76 Akonadi::Item GravatarUpdateJob::item() const
77 {
78  return mItem;
79 }
80 
81 void GravatarUpdateJob::setItem(const Akonadi::Item &item)
82 {
83  mItem = item;
84 }
85 
86 void GravatarUpdateJob::slotGravatarResolvUrlFinished(PimCommon::GravatarResolvUrlJob *job)
87 {
88  if (job) {
89  const QPixmap pix = job->pixmap();
90  Q_EMIT gravatarPixmap(pix);
91  if (mItem.isValid()) {
92  updatePixmap(pix);
93  return;
94  }
95  }
96  deleteLater();
97 }
98 
99 void GravatarUpdateJob::updatePixmap(const QPixmap &pix)
100 {
101  if (mItem.hasPayload<KABC::Addressee>()) {
102  KABC::Addressee contact = mItem.payload<KABC::Addressee>();
103  contact.photo().setData(pix.toImage());
104  mItem.setPayload<KABC::Addressee>( contact );
105 
106  // save the new item in akonadi storage
107  Akonadi::ItemModifyJob *modifyJob = new Akonadi::ItemModifyJob(mItem);
108  connect(modifyJob, SIGNAL(result(KJob*)), SLOT(slotUpdateGravatarDone(KJob*)));
109  } else {
110  deleteLater();
111  }
112 }
113 
114 void GravatarUpdateJob::slotUpdateGravatarDone(KJob *job)
115 {
116  if (job->error()) {
117  qDebug() << "Error during modify item :"<<job->errorString();
118  }
119  deleteLater();
120 }
KABGravatar::GravatarUpdateJob::resolvedUrl
void resolvedUrl(const KUrl &url)
KABGravatar::GravatarUpdateJob::email
QString email() const
Definition: gravatarupdatejob.cpp:66
KABGravatar::GravatarUpdateJob::setItem
void setItem(const Akonadi::Item &item)
Definition: gravatarupdatejob.cpp:81
KABGravatar::GravatarUpdateJob::canStart
bool canStart() const
Definition: gravatarupdatejob.cpp:61
KABGravatar::GravatarUpdateJob::~GravatarUpdateJob
~GravatarUpdateJob()
Definition: gravatarupdatejob.cpp:38
KABGravatar::GravatarUpdateJob::start
void start()
Definition: gravatarupdatejob.cpp:43
KABGravatar::GravatarUpdateJob::item
Akonadi::Item item() const
Definition: gravatarupdatejob.cpp:76
QObject
KABGravatar::GravatarUpdateJob::gravatarPixmap
void gravatarPixmap(const QPixmap &pix)
QString::isEmpty
bool isEmpty() const
QString::trimmed
QString trimmed() const
QObject::deleteLater
void deleteLater()
QString
QPixmap
KABGravatar::GravatarUpdateJob::GravatarUpdateJob
GravatarUpdateJob(QObject *parent=0)
Definition: gravatarupdatejob.cpp:32
QString::contains
bool contains(QChar ch, Qt::CaseSensitivity cs) const
QLatin1Char
KABGravatar::GravatarUpdateJob::setEmail
void setEmail(const QString &email)
Definition: gravatarupdatejob.cpp:71
QPixmap::toImage
QImage toImage() const
QObject::connect
bool connect(const QObject *sender, const char *signal, const QObject *receiver, const char *method, Qt::ConnectionType type)
gravatarupdatejob.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