qtmobility/src/contacts/qcontactmanagerengine.h
changeset 4 90517678cc4f
parent 1 2b40d63a9c3d
child 5 453da2cfceef
equal deleted inserted replaced
1:2b40d63a9c3d 4:90517678cc4f
    54 #include "qcontact.h"
    54 #include "qcontact.h"
    55 #include "qcontactdetaildefinition.h"
    55 #include "qcontactdetaildefinition.h"
    56 #include "qcontactmanager.h"
    56 #include "qcontactmanager.h"
    57 #include "qcontactabstractrequest.h"
    57 #include "qcontactabstractrequest.h"
    58 #include "qcontactrequests.h"
    58 #include "qcontactrequests.h"
       
    59 #include "qcontactfetchhint.h"
    59 
    60 
    60 QTM_BEGIN_NAMESPACE
    61 QTM_BEGIN_NAMESPACE
    61 
    62 
    62 class QContactFilter;
    63 class QContactFilter;
    63 class QContactSortOrder;
    64 class QContactSortOrder;
    66 {
    67 {
    67     Q_OBJECT
    68     Q_OBJECT
    68 
    69 
    69 public:
    70 public:
    70     QContactManagerEngine() {}
    71     QContactManagerEngine() {}
    71     virtual void deref() = 0;
       
    72 
    72 
    73     /* URI reporting */
    73     /* URI reporting */
    74     virtual QString managerName() const;                       // e.g. "Symbian"
    74     virtual QString managerName() const = 0;                       // e.g. "Symbian"
    75     virtual QMap<QString, QString> managerParameters() const;  // e.g. "filename=private.db"
    75     virtual QMap<QString, QString> managerParameters() const = 0;  // e.g. "filename=private.db"
       
    76     virtual int managerVersion() const = 0;
       
    77 
       
    78     /* Default and only implementation of this */
    76     QString managerUri() const;
    79     QString managerUri() const;
    77     virtual int managerVersion() const; // replaces the above
       
    78 
    80 
    79     /* Filtering */
    81     /* Filtering */
    80     virtual QList<QContactLocalId> contactIds(const QList<QContactSortOrder>& sortOrders, QContactManager::Error& error) const;
    82     virtual QList<QContactLocalId> contactIds(const QContactFilter& filter, const QList<QContactSortOrder>& sortOrders, QContactManager::Error* error) const = 0;
    81     virtual QList<QContactLocalId> contactIds(const QContactFilter& filter, const QList<QContactSortOrder>& sortOrders, QContactManager::Error& error) const;
    83     virtual QList<QContact> contacts(const QContactFilter& filter, const QList<QContactSortOrder>& sortOrders, const QContactFetchHint& fetchHint, QContactManager::Error* error) const = 0;
    82     virtual QList<QContact> contacts(const QList<QContactSortOrder>& sortOrders, const QStringList& definitionRestrictions, QContactManager::Error& error) const;
    84     virtual QContact contact(const QContactLocalId& contactId, const QContactFetchHint& fetchHint, QContactManager::Error* error) const = 0;
    83     virtual QList<QContact> contacts(const QContactFilter& filter, const QList<QContactSortOrder>& sortOrders, const QStringList& definitionRestrictions, QContactManager::Error& error) const;
       
    84     virtual QContact contact(const QContactLocalId& contactId, const QStringList& definitionRestrictions, QContactManager::Error& error) const;
       
    85 
    85 
    86     virtual bool saveContact(QContact* contact, QContactManager::Error& error);
    86     virtual bool saveContact(QContact* contact, QContactManager::Error* error);
    87     virtual bool saveContacts(QList<QContact>* contacts, QMap<int, QContactManager::Error>* errorMap, QContactManager::Error& error);
    87     virtual bool removeContact(const QContactLocalId& contactId, QContactManager::Error* error);
    88     virtual bool removeContact(const QContactLocalId& contactId, QContactManager::Error& error);
    88     virtual bool saveRelationship(QContactRelationship* relationship, QContactManager::Error* error);
    89     virtual bool removeContacts(QList<QContactLocalId>* contactIds, QMap<int, QContactManager::Error>* errorMap, QContactManager::Error& error);
    89     virtual bool removeRelationship(const QContactRelationship& relationship, QContactManager::Error* error);
       
    90 
       
    91     virtual bool saveContacts(QList<QContact>* contacts, QMap<int, QContactManager::Error>* errorMap, QContactManager::Error* error) = 0;
       
    92     virtual bool removeContacts(const QList<QContactLocalId>& contactIds, QMap<int, QContactManager::Error>* errorMap, QContactManager::Error* error) = 0;
       
    93 
       
    94     /* Return a pruned or modified contact which is valid and can be saved in the backend */
       
    95     virtual QContact compatibleContact(const QContact& original, QContactManager::Error* error) const = 0;
    90 
    96 
    91     /* Synthesize the display label of a contact */
    97     /* Synthesize the display label of a contact */
    92     virtual QString synthesizedDisplayLabel(const QContact& contact, QContactManager::Error& error) const; // replaces the above
    98     virtual QString synthesizedDisplayLabel(const QContact& contact, QContactManager::Error* error) const = 0;
    93     QContact setContactDisplayLabel(const QString& displayLabel, const QContact& contact) const;
       
    94 
    99 
    95     /* "Self" contact id (MyCard) */
   100     /* "Self" contact id (MyCard) */
    96     virtual bool setSelfContactId(const QContactLocalId& contactId, QContactManager::Error& error);
   101     virtual bool setSelfContactId(const QContactLocalId& contactId, QContactManager::Error* error) = 0;
    97     virtual QContactLocalId selfContactId(QContactManager::Error& error) const;
   102     virtual QContactLocalId selfContactId(QContactManager::Error* error) const = 0;
    98 
   103 
    99     /* Relationships between contacts */
   104     /* Relationships between contacts */
   100     virtual QList<QContactRelationship> relationships(const QString& relationshipType, const QContactId& participantId, QContactRelationshipFilter::Role role, QContactManager::Error& error) const;
   105     virtual QList<QContactRelationship> relationships(const QString& relationshipType, const QContactId& participantId, QContactRelationship::Role role, QContactManager::Error* error) const = 0;
   101     virtual bool saveRelationship(QContactRelationship* relationship, QContactManager::Error& error);
   106     virtual bool saveRelationships(QList<QContactRelationship>* relationships, QMap<int, QContactManager::Error>* errorMap, QContactManager::Error* error) = 0;
   102     virtual QList<QContactManager::Error> saveRelationships(QList<QContactRelationship>* relationships, QContactManager::Error& error);
   107     virtual bool removeRelationships(const QList<QContactRelationship>& relationships, QMap<int, QContactManager::Error>* errorMap, QContactManager::Error* error) = 0;
   103     virtual bool removeRelationship(const QContactRelationship& relationship, QContactManager::Error& error);
       
   104     virtual QList<QContactManager::Error> removeRelationships(const QList<QContactRelationship>& relationships, QContactManager::Error& error);
       
   105 
   108 
   106     /* Validation for saving */
   109     /* Validation for saving */
   107     virtual bool validateContact(const QContact& contact, QContactManager::Error& error) const;
   110     virtual bool validateContact(const QContact& contact, QContactManager::Error* error) const = 0;
   108     virtual bool validateDefinition(const QContactDetailDefinition& def, QContactManager::Error& error) const;
   111     virtual bool validateDefinition(const QContactDetailDefinition& def, QContactManager::Error* error) const = 0;
   109 
   112 
   110     /* Definitions - Accessors and Mutators */
   113     /* Definitions - Accessors and Mutators */
   111     virtual QMap<QString, QContactDetailDefinition> detailDefinitions(const QString& contactType, QContactManager::Error& error) const;
   114     virtual QMap<QString, QContactDetailDefinition> detailDefinitions(const QString& contactType, QContactManager::Error* error) const = 0;
   112     virtual QContactDetailDefinition detailDefinition(const QString& definitionId, const QString& contactType, QContactManager::Error& error) const;
   115     virtual QContactDetailDefinition detailDefinition(const QString& definitionId, const QString& contactType, QContactManager::Error* error) const = 0;
   113     virtual bool saveDetailDefinition(const QContactDetailDefinition& def, const QString& contactType, QContactManager::Error& error);
   116     virtual bool saveDetailDefinition(const QContactDetailDefinition& def, const QString& contactType, QContactManager::Error* error) = 0;
   114     virtual bool removeDetailDefinition(const QString& definitionId, const QString& contactType, QContactManager::Error& error);
   117     virtual bool removeDetailDefinition(const QString& definitionId, const QString& contactType, QContactManager::Error* error) = 0;
   115 
   118 
   116     /* Asynchronous Request Support */
   119     /* Asynchronous Request Support */
   117     virtual void requestDestroyed(QContactAbstractRequest* req);
   120     virtual void requestDestroyed(QContactAbstractRequest* req) = 0;
   118     virtual bool startRequest(QContactAbstractRequest* req);
   121     virtual bool startRequest(QContactAbstractRequest* req) = 0;
   119     virtual bool cancelRequest(QContactAbstractRequest* req);
   122     virtual bool cancelRequest(QContactAbstractRequest* req) = 0;
   120     virtual bool waitForRequestFinished(QContactAbstractRequest* req, int msecs);
   123     virtual bool waitForRequestFinished(QContactAbstractRequest* req, int msecs) = 0;
   121 
       
   122     // Async update functions
       
   123     static void updateRequestState(QContactAbstractRequest* req, QContactAbstractRequest::State state);
       
   124     static void updateContactLocalIdFetchRequest(QContactLocalIdFetchRequest* req, const QList<QContactLocalId>& result, QContactManager::Error error);
       
   125     static void updateContactFetchRequest(QContactFetchRequest* req, const QList<QContact>& result, QContactManager::Error error);
       
   126     static void updateContactRemoveRequest(QContactRemoveRequest* req, QContactManager::Error error, const QMap<int, QContactManager::Error>& errorMap);
       
   127     static void updateContactSaveRequest(QContactSaveRequest* req, const QList<QContact>& result, QContactManager::Error error, const QMap<int, QContactManager::Error>& errorMap);
       
   128     static void updateDefinitionSaveRequest(QContactDetailDefinitionSaveRequest* req, const QList<QContactDetailDefinition>& result, QContactManager::Error error, const QMap<int, QContactManager::Error>& errorMap);
       
   129     static void updateDefinitionRemoveRequest(QContactDetailDefinitionRemoveRequest* req, QContactManager::Error error, const QMap<int, QContactManager::Error>& errorMap);
       
   130     static void updateDefinitionFetchRequest(QContactDetailDefinitionFetchRequest* req, const QMap<QString, QContactDetailDefinition>& result, QContactManager::Error error, const QMap<int, QContactManager::Error>& errorMap);
       
   131     static void updateRelationshipSaveRequest(QContactRelationshipSaveRequest* req, const QList<QContactRelationship>& result, QContactManager::Error error, const QMap<int, QContactManager::Error>& errorMap);
       
   132     static void updateRelationshipRemoveRequest(QContactRelationshipRemoveRequest* req, QContactManager::Error error, const QMap<int, QContactManager::Error>& errorMap);
       
   133     static void updateRelationshipFetchRequest(QContactRelationshipFetchRequest* req, const QList<QContactRelationship>& result, QContactManager::Error error);
       
   134 
       
   135 
   124 
   136     /* Capabilities reporting */
   125     /* Capabilities reporting */
   137     virtual bool hasFeature(QContactManager::ManagerFeature feature, const QString& contactType) const;
   126     virtual bool hasFeature(QContactManager::ManagerFeature feature, const QString& contactType) const = 0;
   138     virtual QStringList supportedRelationshipTypes(const QString& contactType) const;
   127     virtual bool isRelationshipTypeSupported(const QString& relationshipType, const QString& contactType) const = 0;
   139     virtual bool isFilterSupported(const QContactFilter& filter) const; // replaces the above
   128     virtual bool isFilterSupported(const QContactFilter& filter) const = 0;
   140     virtual QList<QVariant::Type> supportedDataTypes() const;
   129     virtual QList<QVariant::Type> supportedDataTypes() const = 0;
   141     virtual QStringList supportedContactTypes() const;
   130     virtual QStringList supportedContactTypes() const = 0;
   142  
   131 
   143     /* Reports the built-in definitions from the schema */
   132     /* Reports the built-in definitions from the schema */
   144     static QMap<QString, QMap<QString, QContactDetailDefinition> > schemaDefinitions();
   133     static QMap<QString, QMap<QString, QContactDetailDefinition> > schemaDefinitions();
   145 
   134 
   146 Q_SIGNALS:
   135 Q_SIGNALS:
   147     void dataChanged();
   136     void dataChanged();
   151     void relationshipsAdded(const QList<QContactLocalId>& affectedContactIds);
   140     void relationshipsAdded(const QList<QContactLocalId>& affectedContactIds);
   152     void relationshipsRemoved(const QList<QContactLocalId>& affectedContactIds);
   141     void relationshipsRemoved(const QList<QContactLocalId>& affectedContactIds);
   153     void selfContactIdChanged(const QContactLocalId& oldId, const QContactLocalId& newId);
   142     void selfContactIdChanged(const QContactLocalId& oldId, const QContactLocalId& newId);
   154 
   143 
   155 public:
   144 public:
       
   145     // Async update functions
       
   146     static void updateRequestState(QContactAbstractRequest* req, QContactAbstractRequest::State state);
       
   147 
       
   148     static void updateContactLocalIdFetchRequest(QContactLocalIdFetchRequest* req, const QList<QContactLocalId>& result, QContactManager::Error error, QContactAbstractRequest::State);
       
   149     static void updateContactFetchRequest(QContactFetchRequest* req, const QList<QContact>& result, QContactManager::Error error, QContactAbstractRequest::State);
       
   150     static void updateContactRemoveRequest(QContactRemoveRequest* req, QContactManager::Error error, const QMap<int, QContactManager::Error>& errorMap, QContactAbstractRequest::State);
       
   151     static void updateContactSaveRequest(QContactSaveRequest* req, const QList<QContact>& result, QContactManager::Error error, const QMap<int, QContactManager::Error>& errorMap, QContactAbstractRequest::State);
       
   152     static void updateDefinitionSaveRequest(QContactDetailDefinitionSaveRequest* req, const QList<QContactDetailDefinition>& result, QContactManager::Error error, const QMap<int, QContactManager::Error>& errorMap, QContactAbstractRequest::State);
       
   153     static void updateDefinitionRemoveRequest(QContactDetailDefinitionRemoveRequest* req, QContactManager::Error error, const QMap<int, QContactManager::Error>& errorMap, QContactAbstractRequest::State);
       
   154     static void updateDefinitionFetchRequest(QContactDetailDefinitionFetchRequest* req, const QMap<QString, QContactDetailDefinition>& result, QContactManager::Error error, const QMap<int, QContactManager::Error>& errorMap, QContactAbstractRequest::State);
       
   155     static void updateRelationshipSaveRequest(QContactRelationshipSaveRequest* req, const QList<QContactRelationship>& result, QContactManager::Error error, const QMap<int, QContactManager::Error>& errorMap, QContactAbstractRequest::State);
       
   156     static void updateRelationshipRemoveRequest(QContactRelationshipRemoveRequest* req, QContactManager::Error error, const QMap<int, QContactManager::Error>& errorMap, QContactAbstractRequest::State);
       
   157     static void updateRelationshipFetchRequest(QContactRelationshipFetchRequest* req, const QList<QContactRelationship>& result, QContactManager::Error error, QContactAbstractRequest::State);
       
   158 
       
   159     // Other protected area update functions
       
   160     static void setDetailAccessConstraints(QContactDetail* detail, QContactDetail::AccessConstraints constraints);
       
   161     static void setContactDisplayLabel(QContact* contact, const QString& displayLabel);
       
   162     static void setContactRelationships(QContact* contact, const QList<QContactRelationship>& relationships);
       
   163 
   156     /* Helper functions */
   164     /* Helper functions */
   157     static int compareContact(const QContact& a, const QContact& b, const QList<QContactSortOrder>& sortOrders);
   165     static int compareContact(const QContact& a, const QContact& b, const QList<QContactSortOrder>& sortOrders);
   158     static void addSorted(QList<QContact>* sorted, const QContact& toAdd, const QList<QContactSortOrder>& sortOrders);
   166     static void addSorted(QList<QContact>* sorted, const QContact& toAdd, const QList<QContactSortOrder>& sortOrders);
   159     static int compareVariant(const QVariant& first, const QVariant& second, Qt::CaseSensitivity sensitivity);
   167     static int compareVariant(const QVariant& first, const QVariant& second, Qt::CaseSensitivity sensitivity);
   160     static bool testFilter(const QContactFilter& filter, const QContact& contact);
   168     static bool testFilter(const QContactFilter& filter, const QContact& contact);
   161     static bool validateActionFilter(const QContactFilter& filter);
   169     static bool validateActionFilter(const QContactFilter& filter);
   162     static QList<QContactLocalId> sortContacts(const QList<QContact>& contacts, const QList<QContactSortOrder>& sortOrders);
   170     static QList<QContactLocalId> sortContacts(const QList<QContact>& contacts, const QList<QContactSortOrder>& sortOrders);
   163     static void setContactRelationships(QContact* contact, const QList<QContactRelationship>& relationships);
       
   164 
   171 
   165 protected:
   172     static QContactFilter canonicalizedFilter(const QContactFilter& filter);
   166     void setDetailAccessConstraints(QContactDetail* detail, QContactDetail::AccessConstraints constraints) const;
       
   167 
   173 
   168 private:
   174 private:
   169     /* QContactChangeSet is a utility class used to emit the appropriate signals */
   175     /* QContactChangeSet is a utility class used to emit the appropriate signals */
   170     friend class QContactChangeSet;
   176     friend class QContactChangeSet;
   171 };
   177 };