1/****************************************************************************
2**
3** Copyright (C) 2015 The Qt Company Ltd.
4** Contact: http://www.qt.io/licensing/
5**
6** This file is part of the QtContacts module of the Qt Toolkit.
7**
8** $QT_BEGIN_LICENSE:LGPL21$
9** Commercial License Usage
10** Licensees holding valid commercial Qt licenses may use this file in
11** accordance with the commercial license agreement provided with the
12** Software or, alternatively, in accordance with the terms contained in
13** a written agreement between you and The Qt Company. For licensing terms
14** and conditions see http://www.qt.io/terms-conditions. For further
15** information use the contact form at http://www.qt.io/contact-us.
16**
17** GNU Lesser General Public License Usage
18** Alternatively, this file may be used under the terms of the GNU Lesser
19** General Public License version 2.1 or version 3 as published by the Free
20** Software Foundation and appearing in the file LICENSE.LGPLv21 and
21** LICENSE.LGPLv3 included in the packaging of this file. Please review the
22** following information to ensure the GNU Lesser General Public License
23** requirements will be met: https://www.gnu.org/licenses/lgpl.html and
24** http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
25**
26** As a special exception, The Qt Company gives you certain additional
27** rights. These rights are described in The Qt Company LGPL Exception
28** version 1.1, included in the file LGPL_EXCEPTION.txt in this package.
29**
30** $QT_END_LICENSE$
31**
32****************************************************************************/
33
34#ifndef QDECLARATIVECONTACTURL_H
35#define QDECLARATIVECONTACTURL_H
36
37#include <QtContacts/qcontacturl.h>
38
39#include "qdeclarativecontactdetail_p.h"
40
41QTCONTACTS_USE_NAMESPACE
42
43QT_BEGIN_NAMESPACE
44
45class QDeclarativeContactUrl : public QDeclarativeContactDetail
46{
47 Q_OBJECT
48
49 Q_PROPERTY(QString url READ url WRITE setUrl NOTIFY valueChanged)
50 Q_PROPERTY(UrlSubType subType READ subType WRITE setSubType NOTIFY valueChanged)
51
52 Q_ENUMS(FieldType)
53 Q_ENUMS(UrlSubType)
54public:
55 enum FieldType {
56 Url = QContactUrl::FieldUrl,
57 SubType = QContactUrl::FieldSubType
58 };
59
60 enum UrlSubType {
61 Unknown = 0,
62 HomePage = QContactUrl::SubTypeHomePage,
63 Blog = QContactUrl::SubTypeBlog,
64 Favourite = QContactUrl::SubTypeFavourite
65 };
66
67 QDeclarativeContactUrl(QObject* parent = Q_NULLPTR)
68 :QDeclarativeContactDetail(parent)
69 {
70 setDetail(QContactUrl());
71 connect(asender: this, SIGNAL(valueChanged()), SIGNAL(detailChanged()));
72 }
73 DetailType detailType() const
74 {
75 return QDeclarativeContactDetail::Url;
76 }
77
78 void setUrl(const QString& v)
79 {
80 if (!readOnly() && v != url()) {
81 detail().setValue(field: QContactUrl::FieldUrl, value: v);
82 emit valueChanged();
83 }
84 }
85 QString url() const {return detail().value(field: QContactUrl::FieldUrl).toString();}
86
87 void setSubType(const UrlSubType& v)
88 {
89 switch (v) {
90 case HomePage:
91 case Blog:
92 case Favourite:
93 if (v != detail().value(field: QContactUrl::FieldSubType)) {
94 detail().setValue(field: QContactUrl::FieldSubType, value: v);
95 emit valueChanged();
96 }
97 break;
98 default:
99 if (detail().value(field: QContactUrl::FieldSubType) != Unknown) {
100 detail().setValue(field: QContactUrl::FieldSubType, value: Unknown);
101 emit valueChanged();
102 }
103 }
104 }
105
106 UrlSubType subType() const
107 {
108 return static_cast<UrlSubType>(detail().value(field: QContactUrl::FieldSubType).toInt());
109 }
110signals:
111 void valueChanged();
112};
113
114QT_END_NAMESPACE
115
116QML_DECLARE_TYPE(QDeclarativeContactUrl)
117
118#endif // QDECLARATIVECONTACTURL_H
119

source code of qtpim/src/imports/contacts/details/qdeclarativecontacturl_p.h