qtmobility/src/contacts/qcontactdetail.h
changeset 4 90517678cc4f
parent 1 2b40d63a9c3d
child 5 453da2cfceef
--- a/qtmobility/src/contacts/qcontactdetail.h	Fri Apr 16 15:51:22 2010 +0300
+++ b/qtmobility/src/contacts/qcontactdetail.h	Mon May 03 13:18:40 2010 +0300
@@ -57,8 +57,9 @@
 {
 public:
     QContactDetail();
+    QContactDetail(const char* definitionName); // possibly internal
     QContactDetail(const QString& definitionName);
-    virtual ~QContactDetail();
+    ~QContactDetail();
 
     QContactDetail(const QContactDetail& other);
     QContactDetail& operator=(const QContactDetail& other);
@@ -74,19 +75,19 @@
 
     // Predefined attribute names and values
 #ifdef Q_QDOC
-    const char* FieldContext;
-    const char* ContextHome;
-    const char* ContextWork;
-    const char* ContextOther;
-    const char* FieldDetailUri;
-    const char* FieldLinkedDetailUris;
+    static const QLatin1Constant FieldContext;
+    static const QLatin1Constant ContextHome;
+    static const QLatin1Constant ContextWork;
+    static const QLatin1Constant ContextOther;
+    static const QLatin1Constant FieldDetailUri;
+    static const QLatin1Constant FieldLinkedDetailUris;
 #else
-    Q_DECLARE_LATIN1_LITERAL(FieldContext, "Context");
-    Q_DECLARE_LATIN1_LITERAL(ContextHome, "Home");
-    Q_DECLARE_LATIN1_LITERAL(ContextWork, "Work");
-    Q_DECLARE_LATIN1_LITERAL(ContextOther, "Other");
-    Q_DECLARE_LATIN1_LITERAL(FieldDetailUri, "DetailUri");
-    Q_DECLARE_LATIN1_LITERAL(FieldLinkedDetailUris, "LinkedDetailUris");
+    Q_DECLARE_LATIN1_CONSTANT(FieldContext, "Context");
+    Q_DECLARE_LATIN1_CONSTANT(ContextHome, "Home");
+    Q_DECLARE_LATIN1_CONSTANT(ContextWork, "Work");
+    Q_DECLARE_LATIN1_CONSTANT(ContextOther, "Other");
+    Q_DECLARE_LATIN1_CONSTANT(FieldDetailUri, "DetailUri");
+    Q_DECLARE_LATIN1_CONSTANT(FieldLinkedDetailUris, "LinkedDetailUris");
 #endif
 
     bool operator==(const QContactDetail& other) const;
@@ -98,9 +99,6 @@
     int key() const;
     void resetKey();
 
-    void setPreferredActions(const QList<QContactActionDescriptor>& preferredActions);
-    QList<QContactActionDescriptor> preferredActions() const;
-
     QString value(const QString& key) const;
     bool setValue(const QString& key, const QVariant& value);
     bool removeValue(const QString& key);
@@ -113,7 +111,40 @@
         return variantValue(key).value<T>();
     }
 
-
+    /* These are probably internal */
+    QString value(const char* key) const;
+    bool setValue(const char* key, const QVariant& value);
+    bool removeValue(const char* key);
+    bool hasValue(const char* key) const;
+    QVariant variantValue(const char *key) const;
+    template<typename T> T value(const char *key) const
+    {
+        return variantValue(key).value<T>();
+    }
+    template<int N> QString value(const QLatin1Constant<N>& key) const
+    {
+        return value(key.latin1());
+    }
+    template<int N> bool setValue(const QLatin1Constant<N>& key, const QVariant& value)
+    {
+        return setValue(key.latin1(), value);
+    }
+    template<int N> bool removeValue(const QLatin1Constant<N>& key)
+    {
+        return removeValue(key.latin1());
+    }
+    template<int N> bool hasValue(const QLatin1Constant<N>& key) const
+    {
+        return hasValue(key.latin1());
+    }
+    template<int N> QVariant variantValue(const QLatin1Constant<N>& key) const
+    {
+        return variantValue(key.latin1());
+    }
+    template<typename T, int N> T value(const QLatin1Constant<N>& key) const
+    {
+        return value<T>(key.latin1());
+    }
 
     void setContexts(const QStringList& contexts)
     {
@@ -156,8 +187,10 @@
     }
 
 protected:
-    QContactDetail(const QContactDetail& other, const QString& expectedDefinitionId);
-    QContactDetail& assign(const QContactDetail& other, const QString& expectedDefinitionId);
+    QContactDetail(const QContactDetail &other, const QString& expectedDefinitionId);
+    QContactDetail& assign(const QContactDetail &other, const QString& expectedDefinitionId);
+    QContactDetail(const QContactDetail &other, const char* expectedDefinitionId);
+    QContactDetail& assign(const QContactDetail &other, const char* expectedDefinitionId);
 
 private:
     friend class QContact;
@@ -165,17 +198,22 @@
     QSharedDataPointer<QContactDetailPrivate> d;
 };
 
+Q_CONTACTS_EXPORT uint qHash(const QContactDetail& key);
+#ifndef QT_NO_DEBUG_STREAM
+Q_CONTACTS_EXPORT QDebug operator<<(QDebug dbg, const QContactDetail& detail);
+#endif
+
 Q_DECLARE_OPERATORS_FOR_FLAGS(QContactDetail::AccessConstraints);
 
 #define Q_DECLARE_CUSTOM_CONTACT_DETAIL(className, definitionNameString) \
-    className() : QContactDetail(DefinitionName) {} \
-    className(const QContactDetail& field) : QContactDetail(field, DefinitionName) {} \
-    className& operator=(const QContactDetail& other) {assign(other, DefinitionName); return *this;} \
+    className() : QContactDetail(DefinitionName.latin1()) {} \
+    className(const QContactDetail& field) : QContactDetail(field, DefinitionName.latin1()) {} \
+    className& operator=(const QContactDetail& other) {assign(other, DefinitionName.latin1()); return *this;} \
     \
-    Q_DECLARE_LATIN1_LITERAL(DefinitionName, definitionNameString);
+    Q_DECLARE_LATIN1_CONSTANT(DefinitionName, definitionNameString);
 
 #define Q_IMPLEMENT_CUSTOM_CONTACT_DETAIL(className, definitionNameString) \
-    Q_DEFINE_LATIN1_LITERAL(className::DefinitionName, definitionNameString)
+    Q_DEFINE_LATIN1_CONSTANT(className::DefinitionName, definitionNameString)
 
 QTM_END_NAMESPACE