qtmobility/src/contacts/qcontact.h
changeset 4 90517678cc4f
parent 1 2b40d63a9c3d
child 5 453da2cfceef
equal deleted inserted replaced
1:2b40d63a9c3d 4:90517678cc4f
    99     QContactDetail detail(const QString& definitionId) const;
    99     QContactDetail detail(const QString& definitionId) const;
   100     QList<QContactDetail> details(const QString& definitionId = QString()) const;
   100     QList<QContactDetail> details(const QString& definitionId = QString()) const;
   101     QContactDetail detailWithAction(const QString& actionName) const;
   101     QContactDetail detailWithAction(const QString& actionName) const;
   102     QList<QContactDetail> detailsWithAction(const QString& actionName) const;
   102     QList<QContactDetail> detailsWithAction(const QString& actionName) const;
   103 
   103 
       
   104     QList<QContactDetail> details(const QString& definitionName, const QString& fieldName, const QString& value) const;
       
   105 
       
   106     QContactDetail detail(const char* definitionId) const;
       
   107     QList<QContactDetail> details(const char* definitionId) const;
       
   108     QList<QContactDetail> details(const char* definitionId, const char* fieldName, const QString& value) const;
       
   109 
       
   110     /* Templated retrieval for definition names */
       
   111     template <int N> QContactDetail detail(const QLatin1Constant<N>& definitionName) const
       
   112     {
       
   113         return detail(definitionName.latin1());
       
   114     }
       
   115     template <int N> QList<QContactDetail> details(const QLatin1Constant<N>& definitionName) const
       
   116     {
       
   117         return details(definitionName.latin1());
       
   118     }
       
   119     template <int N, int M> QList<QContactDetail> details(const QLatin1Constant<N>& definitionName, const QLatin1Constant<M>& fieldName, const QString& value)
       
   120     {
       
   121         return details(definitionName.latin1(), fieldName.latin1(), value);
       
   122     }
       
   123 
   104     /* Templated (type-specific) detail retrieval */
   124     /* Templated (type-specific) detail retrieval */
   105     template<typename T> QList<T> details() const
   125     template<typename T> QList<T> details() const
   106     {
   126     {
   107         QList<QContactDetail> props = details(T::DefinitionName);
   127         QList<QContactDetail> props = details(T::DefinitionName.latin1());
   108         QList<T> ret;
   128         QList<T> ret;
   109         foreach(QContactDetail prop, props)
   129         foreach(QContactDetail prop, props)
   110             ret.append(T(prop));
   130             ret.append(T(prop));
   111         return ret;
   131         return ret;
   112     }
   132     }
   113     
   133 
   114     /* Templated (type-specific) detail retrieval base on given detail field name and field value */
   134     /* Templated (type-specific) detail retrieval base on given detail field name and field value */
   115     template<typename T> QList<T> details(const QString& fieldName, const QString& value) const
   135     template<typename T> QList<T> details(const QString& fieldName, const QString& value) const
   116     {
   136     {
   117         QList<QContactDetail> props = details(T::DefinitionName, fieldName, value);
   137         QList<QContactDetail> props = details(T::DefinitionName, fieldName, value);
   118         QList<T> ret;
   138         QList<T> ret;
   119         foreach(QContactDetail prop, props)
   139         foreach(QContactDetail prop, props)
   120             ret.append(T(prop));
   140             ret.append(T(prop));
   121         return ret;
   141         return ret;
   122     }
   142     }
   123     
   143 
   124     /* Detail retrieval base on given detail definition name, field name and field value */
   144     template<typename T> QList<T> details(const char* fieldName, const QString& value) const
   125     QList<QContactDetail> details(const QString& definitionName, const QString& fieldName, const QString& value) const;
   145     {
       
   146         QList<QContactDetail> props = details(T::DefinitionName.latin1(), fieldName, value);
       
   147         QList<T> ret;
       
   148         foreach(QContactDetail prop, props)
       
   149             ret.append(T(prop));
       
   150         return ret;
       
   151     }
   126 
   152 
   127     template<typename T> T detail() const
   153     template<typename T> T detail() const
   128     {
   154     {
   129         return T(detail(T::DefinitionName));
   155         return T(detail(T::DefinitionName.latin1()));
   130     }
   156     }
   131 
   157 
   132     /* generic detail addition/removal functions */
   158     /* generic detail addition/removal functions */
   133     bool saveDetail(QContactDetail* detail);   // modifies the detail - sets its ID if detail already exists
   159     bool saveDetail(QContactDetail* detail);   // modifies the detail - sets its ID if detail already exists
   134     bool removeDetail(QContactDetail* detail); // modifies the detail - unsets its ID
   160     bool removeDetail(QContactDetail* detail); // modifies the detail - unsets its ID
   135 
   161 
   136     /* Relationships that this contact was involved in when it was retrieved from the manager */
   162     /* Relationships that this contact was involved in when it was retrieved from the manager */
   137     QList<QContactRelationship> relationships(const QString& relationshipType = QString()) const;
   163     QList<QContactRelationship> relationships(const QString& relationshipType = QString()) const;
   138     QList<QContactId> relatedContacts(const QString& relationshipType = QString(), QContactRelationshipFilter::Role role = QContactRelationshipFilter::Either) const;
   164     QList<QContactId> relatedContacts(const QString& relationshipType = QString(), QContactRelationship::Role role = QContactRelationship::Either) const;
   139     void setRelationshipOrder(const QList<QContactRelationship>& reordered);
       
   140     QList<QContactRelationship> relationshipOrder() const;
       
   141 
   165 
   142     /* Actions available to be performed on this contact */
   166     /* Actions available to be performed on this contact */
   143     QList<QContactActionDescriptor> availableActions(const QString& vendorName = QString(), int implementationVersion = -1) const;
   167     QList<QContactActionDescriptor> availableActions(const QString& vendorName = QString(), int implementationVersion = -1) const;
   144 
   168 
   145     /* Preferences (eg, set a particular detail preferred for the SMS action) - subject to change! */
   169     /* Preferences (eg, set a particular detail preferred for the SMS action) - subject to change! */
   146     bool setPreferredDetail(const QString& actionName, const QContactDetail& preferredDetail);
   170     bool setPreferredDetail(const QString& actionName, const QContactDetail& preferredDetail);
   147     bool isPreferredDetail(const QString& actionName, const QContactDetail& detail) const;
   171     bool isPreferredDetail(const QString& actionName, const QContactDetail& detail) const;
   148     QContactDetail preferredDetail(const QString& actionName) const;
   172     QContactDetail preferredDetail(const QString& actionName) const;
       
   173     QMap<QString, QContactDetail> preferredDetails() const;
   149 
   174 
   150 private:
   175 private:
   151     friend class QContactManager;
   176     friend class QContactManager;
   152     friend class QContactManagerData;
   177     friend class QContactManagerData;
   153     friend class QContactManagerEngine;
   178     friend class QContactManagerEngine;
   154 
   179 
   155     QSharedDataPointer<QContactData> d;
   180     QSharedDataPointer<QContactData> d;
   156 };
   181 };
   157 
   182 
       
   183 Q_CONTACTS_EXPORT uint qHash(const QContact& key);
       
   184 #ifndef QT_NO_DEBUG_STREAM
       
   185 Q_CONTACTS_EXPORT QDebug operator<<(QDebug dbg, const QContact& contact);
       
   186 #endif
       
   187 
   158 QTM_END_NAMESPACE
   188 QTM_END_NAMESPACE
   159 
   189 
   160 Q_DECLARE_TYPEINFO(QTM_PREPEND_NAMESPACE(QContact), Q_MOVABLE_TYPE);
   190 Q_DECLARE_TYPEINFO(QTM_PREPEND_NAMESPACE(QContact), Q_MOVABLE_TYPE);
   161 
   191 
   162 
   192