Changes: Use QString instead of QUrl for Iris
[qtcontacts-tracker:qtcontacts-tracker.git] / src / dao / subject.h
1 /****************************************************************************
2 **
3 ** Copyright (C) 2010 Nokia Corporation and/or its subsidiary(-ies).
4 ** All rights reserved.
5 ** Contact: Nokia Corporation (qt-info@nokia.com)
6 **
7 ** This file is part of the Qt Mobility Components.
8 **
9 ** $QT_BEGIN_LICENSE:LGPL$
10 ** No Commercial Usage
11 ** This file contains pre-release code and may not be distributed.
12 ** You may use this file in accordance with the terms and conditions
13 ** contained in the Technology Preview License Agreement accompanying
14 ** this package.
15 **
16 ** GNU Lesser General Public License Usage
17 ** Alternatively, this file may be used under the terms of the GNU Lesser
18 ** General Public License version 2.1 as published by the Free Software
19 ** Foundation and appearing in the file LICENSE.LGPL included in the
20 ** packaging of this file.  Please review the following information to
21 ** ensure the GNU Lesser General Public License version 2.1 requirements
22 ** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
23 **
24 ** In addition, as a special exception, Nokia gives you certain additional
25 ** rights.  These rights are described in the Nokia Qt LGPL Exception
26 ** version 1.1, included in the file LGPL_EXCEPTION.txt in this package.
27 **
28 ** If you have questions regarding the use of this file, please contact
29 ** Nokia at qt-info@nokia.com.
30 **
31 **
32 **
33 **
34 **
35 **
36 **
37 **
38 ** $QT_END_LICENSE$
39 **
40 ****************************************************************************/
41
42 #ifndef QTRACKERCONTACTSUBJECT_H
43 #define QTRACKERCONTACTSUBJECT_H
44
45 #include "dao/ontologies/nao.h"
46 #include "dao/ontologies/nco.h"
47 #include "dao/ontologies/nfo.h"
48
49 #include <qtcontacts.h>
50
51 QTM_USE_NAMESPACE
52
53 ////////////////////////////////////////////////////////////////////////////////////////////////////
54
55 class QTrackerContactSubject
56 {
57 public:
58     enum Scheme
59     {
60         None,
61         Anonymous,
62         EmailAddress,
63         Telepathy,
64         Presence
65     };
66
67     static bool isContentScheme(Scheme scheme);
68
69     static QVariant parseIri(Scheme scheme, const QString &iri, bool *ok = 0);
70     static QString makeIri(Scheme scheme, const QVariantList &values);
71
72     template<typename T> static Scheme fromResource() { return None; }
73 };
74
75 ////////////////////////////////////////////////////////////////////////////////////////////////////
76
77 QUuid parseAnonymousIri(const QString &iri, bool *ok = 0);
78 QString makeAnonymousIri(const QUuid &uuid);
79
80 QString parseEmailAddressIri(const QString &iri, bool *ok = 0);
81 QString makeEmailAddressIri(const QString &emailAddress);
82
83 QString parseTelepathyIri(const QString &iri, bool *ok = 0);
84 QString makeTelepathyIri(const QString &accountPath, const QString &imAddress);
85 QString makeTelepathyIri(const QString &connectionPath);
86
87 QString parsePresenceIri(const QString &iri, bool *ok = 0);
88 QString makePresenceIri(const QString &accountPath, const QString &imAddress);
89 QString makePresenceIri(const QString &connectionPath);
90
91 ////////////////////////////////////////////////////////////////////////////////////////////////////
92
93 template<> inline
94 QTrackerContactSubject::Scheme
95 QTrackerContactSubject::fromResource<Cubi::Resources::nco::PhoneNumber>()
96 {
97     return Anonymous;
98 }
99
100 template<> inline
101 QTrackerContactSubject::Scheme
102 QTrackerContactSubject::fromResource<Cubi::Resources::nco::EmailAddress>()
103 {
104     return EmailAddress;
105 }
106
107 template<> inline
108 QTrackerContactSubject::Scheme
109 QTrackerContactSubject::fromResource<Cubi::Resources::nco::IMAccount>()
110 {
111     return Telepathy;
112 }
113
114 template<> inline
115 QTrackerContactSubject::Scheme
116 QTrackerContactSubject::fromResource<Cubi::Resources::nco::IMAddress>()
117 {
118     return Telepathy;
119 }
120
121 template<> inline
122 QTrackerContactSubject::Scheme
123 QTrackerContactSubject::fromResource<Cubi::Resources::nco::Affiliation>()
124 {
125     return Anonymous;
126 }
127
128 template<> inline
129 QTrackerContactSubject::Scheme
130 QTrackerContactSubject::fromResource<Cubi::Resources::nfo::FileDataObject>()
131 {
132     return Anonymous;
133 }
134
135 template<> inline
136 QTrackerContactSubject::Scheme
137 QTrackerContactSubject::fromResource<Cubi::Resources::nco::PostalAddress>()
138 {
139     return Anonymous;
140 }
141
142 template<> inline
143 QTrackerContactSubject::Scheme
144 QTrackerContactSubject::fromResource<Cubi::Resources::nao::Tag>()
145 {
146     return Anonymous;
147 }
148
149 ////////////////////////////////////////////////////////////////////////////////////////////////////
150
151 #endif // QTRACKERCONTACTSUBJECT_H