~ci-train-bot/unity8/unity8-ubuntu-zesty-2167

« back to all changes in this revision

Viewing changes to plugins/Unity/peoplepreviewdata.h

  • Committer: Michał Sawicz
  • Date: 2013-06-05 22:03:08 UTC
  • Revision ID: michal.sawicz@canonical.com-20130605220308-yny8fv3futtr04fg
Inital unity8 commit.

Previous history can be found at https://code.launchpad.net/~unity-team/unity/phablet

Show diffs side-by-side

added added

removed removed

Lines of Context:
 
1
/*
 
2
 * Copyright (C) 2012 Canonical, Ltd.
 
3
 *
 
4
 * Authors:
 
5
 *  Guenter Schwann <guenter.schwann@canonical.com>
 
6
 *
 
7
 * This program is free software; you can redistribute it and/or modify
 
8
 * it under the terms of the GNU General Public License as published by
 
9
 * the Free Software Foundation; version 3.
 
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
 
17
 * along with this program.  If not, see <http://www.gnu.org/licenses/>.
 
18
 */
 
19
 
 
20
#ifndef PEOPLEPREVIEWDATA_H
 
21
#define PEOPLEPREVIEWDATA_H
 
22
 
 
23
#include <QList>
 
24
#include <QObject>
 
25
#include <qqmllist.h>
 
26
#include <QString>
 
27
 
 
28
// libunity-core
 
29
#include <UnityCore/PeoplePreview.h>
 
30
 
 
31
#include <sigc++/connection.h>
 
32
 
 
33
class Lens;
 
34
 
 
35
/*!
 
36
 * \brief The PeoplePhoneData class stores the data for one phone number
 
37
 */
 
38
class PeoplePhoneData : public QObject
 
39
{
 
40
    Q_OBJECT
 
41
    Q_PROPERTY(QString type READ type NOTIFY typeChanged)
 
42
    Q_PROPERTY(QString location READ location NOTIFY locationChanged)
 
43
    Q_PROPERTY(QString number READ number NOTIFY numberChanged)
 
44
 
 
45
Q_SIGNALS:
 
46
    void typeChanged();
 
47
    void locationChanged();
 
48
    void numberChanged();
 
49
 
 
50
public:
 
51
    explicit PeoplePhoneData(QObject *parent = 0) : QObject(parent) {}
 
52
    QString type() const { return m_type; }
 
53
    QString location() const { return m_location; }
 
54
    QString number() const { return m_number; }
 
55
 
 
56
private:
 
57
    QString m_type;
 
58
    QString m_location;
 
59
    QString m_number;
 
60
    friend class PeoplePreviewData;
 
61
};
 
62
 
 
63
/*!
 
64
 * \brief The PeopleAddressData class stores the data for one single post/email address
 
65
 */
 
66
class PeopleAddressData : public QObject
 
67
{
 
68
    Q_OBJECT
 
69
    Q_PROPERTY(QString type READ type NOTIFY typeChanged)
 
70
    Q_PROPERTY(QString address READ address NOTIFY addressChanged)
 
71
    Q_PROPERTY(QString poBox READ poBox NOTIFY poBoxChanged)
 
72
    Q_PROPERTY(QString extension READ extension NOTIFY extensionChanged)
 
73
    Q_PROPERTY(QString street READ street NOTIFY streetChanged)
 
74
    Q_PROPERTY(QString locality READ locality NOTIFY localityChanged)
 
75
    Q_PROPERTY(QString region READ region NOTIFY regionChanged)
 
76
    Q_PROPERTY(QString postalCode READ postalCode NOTIFY postalCodeChanged)
 
77
    Q_PROPERTY(QString country READ country NOTIFY countryChanged)
 
78
    Q_PROPERTY(QString addressFormat READ addressFormat NOTIFY addressFormatChanged)
 
79
 
 
80
Q_SIGNALS:
 
81
    void typeChanged();
 
82
    void addressChanged();
 
83
    void poBoxChanged();
 
84
    void extensionChanged();
 
85
    void streetChanged();
 
86
    void localityChanged();
 
87
    void regionChanged();
 
88
    void postalCodeChanged();
 
89
    void countryChanged();
 
90
    void addressFormatChanged();
 
91
 
 
92
public:
 
93
    explicit PeopleAddressData(QObject *parent = 0) : QObject(parent) {}
 
94
    QString type() const { return m_type; }
 
95
    QString address() const { return m_address; }
 
96
    QString poBox() const { return m_poBox; }
 
97
    QString extension() const { return m_extension; }
 
98
    QString street() const { return m_street; }
 
99
    QString locality() const { return m_locality; }
 
100
    QString region() const { return m_region; }
 
101
    QString postalCode() const { return m_postalCode; }
 
102
    QString country() const { return m_country; }
 
103
    QString addressFormat() const { return m_addressFormat; }
 
104
 
 
105
private:
 
106
    QString m_type;
 
107
    QString m_address;
 
108
    QString m_poBox;
 
109
    QString m_extension;
 
110
    QString m_street;
 
111
    QString m_locality;
 
112
    QString m_region;
 
113
    QString m_postalCode;
 
114
    QString m_country;
 
115
    QString m_addressFormat;
 
116
    friend class PeoplePreviewData;
 
117
};
 
118
 
 
119
/*!
 
120
 * \brief The PeopleIMData class stores the data for one single post/email address
 
121
 */
 
122
class PeopleIMData : public QObject
 
123
{
 
124
    Q_OBJECT
 
125
    Q_PROPERTY(QString protocol READ protocol NOTIFY protocolChanged)
 
126
    Q_PROPERTY(QString address READ address NOTIFY addressChanged)
 
127
 
 
128
Q_SIGNALS:
 
129
    void protocolChanged();
 
130
    void addressChanged();
 
131
 
 
132
public:
 
133
    explicit PeopleIMData(QObject *parent = 0) : QObject(parent) {}
 
134
    QString protocol() const { return m_protocol; }
 
135
    QString address() const { return m_address; }
 
136
 
 
137
private:
 
138
    QString m_protocol;
 
139
    QString m_address;
 
140
    friend class PeoplePreviewData;
 
141
};
 
142
 
 
143
 
 
144
/*!
 
145
 * \brief The PeoplePreviewData class providing information for one person
 
146
 */
 
147
class PeoplePreviewData : public QObject
 
148
{
 
149
    Q_OBJECT
 
150
 
 
151
    // These properties need to be set from QML
 
152
    Q_PROPERTY(Lens* lens READ lens WRITE setLens NOTIFY lensChanged)
 
153
    Q_PROPERTY(QString uri READ uri WRITE setUri NOTIFY uriChanged)
 
154
    // Read only properties containing general Preview information
 
155
    Q_PROPERTY(bool ready READ ready NOTIFY readyChanged)
 
156
    Q_PROPERTY(QString renderName READ renderName NOTIFY renderNameChanged)
 
157
    Q_PROPERTY(QString title READ title NOTIFY titleChanged)
 
158
    Q_PROPERTY(QString subTitle READ subTitle NOTIFY subTitleChanged)
 
159
    Q_PROPERTY(QString description READ description NOTIFY descriptionChanged)
 
160
    Q_PROPERTY(QString imageSource READ imageSource NOTIFY imageSourceChanged)
 
161
    // Read only properties containing PeoplePreview specific information
 
162
    Q_PROPERTY(QString displayName READ displayName NOTIFY displayNameChanged)
 
163
    Q_PROPERTY(QQmlListProperty<PeopleAddressData> emailAddresses READ emailAddresses NOTIFY emailAddressesChanged)
 
164
    Q_PROPERTY(QQmlListProperty<PeoplePhoneData> phoneNumbers READ phoneNumbers NOTIFY phoneNumbersChanged)
 
165
    Q_PROPERTY(QQmlListProperty<PeopleIMData> imAccounts READ imAccounts NOTIFY imAccountsChanged)
 
166
    Q_PROPERTY(QString status READ status NOTIFY statusChanged)
 
167
    Q_PROPERTY(QString statusTime READ statusTime NOTIFY statusTimeChanged)
 
168
    Q_PROPERTY(QString statusService READ statusService NOTIFY statusServiceChanged)
 
169
    Q_PROPERTY(QString statusServiceIcon READ statusServiceIcon NOTIFY statusServiceIconChanged)
 
170
    Q_PROPERTY(QString statusPostUri READ statusPostUri NOTIFY statusPostUriChanged)
 
171
    Q_PROPERTY(QQmlListProperty<PeopleAddressData> addresses READ addresses NOTIFY addressesChanged)
 
172
    Q_PROPERTY(QString avatar READ avatar NOTIFY avatarChanged)
 
173
 
 
174
public:
 
175
    PeoplePreviewData(QObject *parent = 0);
 
176
    ~PeoplePreviewData();
 
177
 
 
178
    void setUnityPeoplePreview(const unity::dash::Preview::Ptr& preview);
 
179
    void setLens(Lens *lens);
 
180
    void setUri(const QString &uri);
 
181
 
 
182
    Lens *lens() const;
 
183
    QString uri() const;
 
184
    bool ready() const;
 
185
    QString renderName() const;
 
186
    QString title() const;
 
187
    QString subTitle() const;
 
188
    QString description() const;
 
189
    QString imageSource() const;
 
190
    QString displayName() const;
 
191
    QQmlListProperty<PeoplePhoneData> phoneNumbers();
 
192
    QQmlListProperty<PeopleAddressData> emailAddresses();
 
193
    QQmlListProperty<PeopleIMData> imAccounts();
 
194
    QString status() const;
 
195
    QString statusTime() const;
 
196
    QString statusService() const;
 
197
    QString statusServiceIcon() const;
 
198
    QString statusPostUri() const;
 
199
    QQmlListProperty<PeopleAddressData> addresses();
 
200
    QString avatar() const;
 
201
 
 
202
    QList<PeoplePhoneData*> &phoneNumberList() { return m_phoneList; }
 
203
    QList<PeopleAddressData*> &emailAddressesList() { return m_emailList; }
 
204
    QList<PeopleIMData*> &imAccountsList() { return m_imList; }
 
205
    QList<PeopleAddressData*> &addressesList() { return m_addressList; }
 
206
 
 
207
Q_SIGNALS:
 
208
    void lensChanged();
 
209
    void uriChanged();
 
210
    void readyChanged();
 
211
    void renderNameChanged();
 
212
    void titleChanged();
 
213
    void subTitleChanged();
 
214
    void descriptionChanged();
 
215
    void imageSourceChanged();
 
216
    void displayNameChanged();
 
217
    void phoneNumbersChanged();
 
218
    void emailAddressesChanged();
 
219
    void imAccountsChanged();
 
220
    void statusChanged();
 
221
    void statusTimeChanged();
 
222
    void statusServiceChanged();
 
223
    void statusServiceIconChanged();
 
224
    void statusPostUriChanged();
 
225
    void addressesChanged();
 
226
    void avatarChanged();
 
227
    void error();
 
228
 
 
229
private:
 
230
    void setReady(const bool &ready);
 
231
    void getPeoplePreview();
 
232
    void setUnityPreview(std::string const& uri, unity::dash::Preview::Ptr const& preview);
 
233
    void clearData();
 
234
    void getPhoneData();
 
235
    void getEmailAddresses();
 
236
    void getImAccounts();
 
237
    void getAddresses();
 
238
 
 
239
    Lens *m_lens;
 
240
    sigc::connection m_lensConnection;
 
241
    QString m_uri;
 
242
    bool m_ready;
 
243
    unity::dash::PeoplePreview::Ptr m_unityPreview;
 
244
 
 
245
    QList<PeoplePhoneData*> m_phoneList;
 
246
    QList<PeopleAddressData*> m_addressList;
 
247
    QList<PeopleIMData*> m_imList;
 
248
    QList<PeopleAddressData*> m_emailList;
 
249
};
 
250
 
 
251
#endif // PEOPLEPREVIEWDATA_H