qtmobility/src/contacts/qcontact.h
changeset 4 90517678cc4f
parent 1 2b40d63a9c3d
child 5 453da2cfceef
--- a/qtmobility/src/contacts/qcontact.h	Fri Apr 16 15:51:22 2010 +0300
+++ b/qtmobility/src/contacts/qcontact.h	Mon May 03 13:18:40 2010 +0300
@@ -101,16 +101,36 @@
     QContactDetail detailWithAction(const QString& actionName) const;
     QList<QContactDetail> detailsWithAction(const QString& actionName) const;
 
+    QList<QContactDetail> details(const QString& definitionName, const QString& fieldName, const QString& value) const;
+
+    QContactDetail detail(const char* definitionId) const;
+    QList<QContactDetail> details(const char* definitionId) const;
+    QList<QContactDetail> details(const char* definitionId, const char* fieldName, const QString& value) const;
+
+    /* Templated retrieval for definition names */
+    template <int N> QContactDetail detail(const QLatin1Constant<N>& definitionName) const
+    {
+        return detail(definitionName.latin1());
+    }
+    template <int N> QList<QContactDetail> details(const QLatin1Constant<N>& definitionName) const
+    {
+        return details(definitionName.latin1());
+    }
+    template <int N, int M> QList<QContactDetail> details(const QLatin1Constant<N>& definitionName, const QLatin1Constant<M>& fieldName, const QString& value)
+    {
+        return details(definitionName.latin1(), fieldName.latin1(), value);
+    }
+
     /* Templated (type-specific) detail retrieval */
     template<typename T> QList<T> details() const
     {
-        QList<QContactDetail> props = details(T::DefinitionName);
+        QList<QContactDetail> props = details(T::DefinitionName.latin1());
         QList<T> ret;
         foreach(QContactDetail prop, props)
             ret.append(T(prop));
         return ret;
     }
-    
+
     /* Templated (type-specific) detail retrieval base on given detail field name and field value */
     template<typename T> QList<T> details(const QString& fieldName, const QString& value) const
     {
@@ -120,13 +140,19 @@
             ret.append(T(prop));
         return ret;
     }
-    
-    /* Detail retrieval base on given detail definition name, field name and field value */
-    QList<QContactDetail> details(const QString& definitionName, const QString& fieldName, const QString& value) const;
+
+    template<typename T> QList<T> details(const char* fieldName, const QString& value) const
+    {
+        QList<QContactDetail> props = details(T::DefinitionName.latin1(), fieldName, value);
+        QList<T> ret;
+        foreach(QContactDetail prop, props)
+            ret.append(T(prop));
+        return ret;
+    }
 
     template<typename T> T detail() const
     {
-        return T(detail(T::DefinitionName));
+        return T(detail(T::DefinitionName.latin1()));
     }
 
     /* generic detail addition/removal functions */
@@ -135,9 +161,7 @@
 
     /* Relationships that this contact was involved in when it was retrieved from the manager */
     QList<QContactRelationship> relationships(const QString& relationshipType = QString()) const;
-    QList<QContactId> relatedContacts(const QString& relationshipType = QString(), QContactRelationshipFilter::Role role = QContactRelationshipFilter::Either) const;
-    void setRelationshipOrder(const QList<QContactRelationship>& reordered);
-    QList<QContactRelationship> relationshipOrder() const;
+    QList<QContactId> relatedContacts(const QString& relationshipType = QString(), QContactRelationship::Role role = QContactRelationship::Either) const;
 
     /* Actions available to be performed on this contact */
     QList<QContactActionDescriptor> availableActions(const QString& vendorName = QString(), int implementationVersion = -1) const;
@@ -146,6 +170,7 @@
     bool setPreferredDetail(const QString& actionName, const QContactDetail& preferredDetail);
     bool isPreferredDetail(const QString& actionName, const QContactDetail& detail) const;
     QContactDetail preferredDetail(const QString& actionName) const;
+    QMap<QString, QContactDetail> preferredDetails() const;
 
 private:
     friend class QContactManager;
@@ -155,6 +180,11 @@
     QSharedDataPointer<QContactData> d;
 };
 
+Q_CONTACTS_EXPORT uint qHash(const QContact& key);
+#ifndef QT_NO_DEBUG_STREAM
+Q_CONTACTS_EXPORT QDebug operator<<(QDebug dbg, const QContact& contact);
+#endif
+
 QTM_END_NAMESPACE
 
 Q_DECLARE_TYPEINFO(QTM_PREPEND_NAMESPACE(QContact), Q_MOVABLE_TYPE);