Fixes: NB#295890 - Facebook "large" avatar needed to be scaled to wallpaper sized
[qtcontacts-tracker:hasselmms-contactsd.git] / plugins / telepathy / cdtpavatarupdate.h
1 /*********************************************************************************
2  ** This file is part of QtContacts tracker storage plugin
3  **
4  ** Copyright (c) 2011 Nokia Corporation and/or its subsidiary(-ies).
5  **
6  ** Contact:  Nokia Corporation (info@qt.nokia.com)
7  **
8  ** GNU Lesser General Public License Usage
9  ** This file may be used under the terms of the GNU Lesser General Public License
10  ** version 2.1 as published by the Free Software Foundation and appearing in the
11  ** file LICENSE.LGPL included in the packaging of this file.  Please review the
12  ** following information to ensure the GNU Lesser General Public License version
13  ** 2.1 requirements will be met:
14  ** http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
15  **
16  ** In addition, as a special exception, Nokia gives you certain additional rights.
17  ** These rights are described in the Nokia Qt LGPL Exception version 1.1, included
18  ** in the file LGPL_EXCEPTION.txt in this package.
19  **
20  ** Other Usage
21  ** Alternatively, this file may be used in accordance with the terms and
22  ** conditions contained in a signed written agreement between you and Nokia.
23  *********************************************************************************/
24
25
26 #ifndef CDTPAVATARREQUEST_H
27 #define CDTPAVATARREQUEST_H
28
29 #include "cdtpstorage.h"
30
31 class CDTpAvatarScaler : public QObject, public QRunnable
32 {
33     Q_OBJECT
34
35 public:
36     CDTpAvatarScaler(const QString &contactId,
37                      const QFileInfo &sourceFile,
38                      const QFileInfo &targetFile,
39                      const QSize &targetSize);
40
41     void run();
42
43 signals:
44     void finished(const QString &filePath = QString());
45
46 private:
47     QString mContactId;
48     QFileInfo mSourceFile;
49     QFileInfo mTargetFile;
50     QSize mTargetSize;
51 };
52
53 class CDTpAvatarUpdate : public QObject
54 {
55     Q_OBJECT
56
57 public:
58     static const QString Large;
59     static const QString Square;
60     static const QString Wallpaper;
61
62     explicit CDTpAvatarUpdate(QNetworkReply *networkReply,
63                               CDTpContact *contactWrapper,
64                               const QString &avatarType,
65                               Qt::Orientation wallpaperOrientation,
66                               QObject *parent = 0);
67
68     virtual ~CDTpAvatarUpdate();
69
70     QString avatarPath() const { return mAvatarFile.filePath(); }
71
72 signals:
73     void finished();
74
75 private slots:
76     void onRequestFinished();
77     void onScalerFinished(const QString &avatarPath);
78
79 private:
80     void setNetworkReply(QNetworkReply *networkReply);
81     bool updateWallpaperAvatar();
82
83 private:
84     QPointer<QNetworkReply> mNetworkReply;
85     QPointer<CDTpContact> mContactWrapper;
86     const QString mAvatarType;
87     const QDir mCacheDir;
88     QFileInfo mAvatarFile;
89     Qt::Orientation mWallpaperOrientation;
90 };
91
92 #endif // CDTPAVATARREQUEST_H