--- a/qtmobility/src/contacts/engines/qcontactmemorybackend_p.h Fri Apr 16 15:51:22 2010 +0300
+++ b/qtmobility/src/contacts/engines/qcontactmemorybackend_p.h Mon May 03 13:18:40 2010 +0300
@@ -75,6 +75,7 @@
QTM_BEGIN_NAMESPACE
class QContactAbstractRequest;
+class QContactManagerEngine;
class QContactMemoryEngineData : public QSharedData
{
public:
@@ -83,8 +84,7 @@
m_refCount(QAtomicInt(1)),
m_selfContactId(0),
m_nextContactId(1),
- m_anonymous(false),
- m_engineVersion(0)
+ m_anonymous(false)
{
}
@@ -93,8 +93,7 @@
m_refCount(QAtomicInt(1)),
m_selfContactId(other.m_selfContactId),
m_nextContactId(other.m_nextContactId),
- m_anonymous(other.m_anonymous),
- m_engineVersion(0)
+ m_anonymous(other.m_anonymous)
{
}
@@ -114,89 +113,113 @@
mutable QMap<QString, QMap<QString, QContactDetailDefinition> > m_definitions; // map of contact type to map of definition name to definitions.
QContactLocalId m_nextContactId;
bool m_anonymous; // Is this backend ever shared?
- QString m_engineName; // name of this engine as supplied by factory (memory)
- int m_engineVersion; // version of this engine as supplied by factory
- QQueue<QContactAbstractRequest*> m_asynchronousOperations; // async requests to be performed.
+ void emitSharedSignals(QContactChangeSet* cs)
+ {
+ foreach(QContactManagerEngine* engine, m_sharedEngines)
+ cs->emitSignals(engine);
+ }
+
+ QList<QContactManagerEngine*> m_sharedEngines; // The list of engines that share this data
};
-class Q_CONTACTS_EXPORT QContactMemoryEngine : public QContactManagerEngine
+class QContactMemoryEngine : public QContactManagerEngine
{
Q_OBJECT
public:
- using QContactManagerEngine::contacts;
+ static QContactMemoryEngine *createMemoryEngine(const QMap<QString, QString>& parameters);
- static QContactMemoryEngine *createMemoryEngine(const QMap<QString, QString>& parameters);
- void deref();
+ ~QContactMemoryEngine();
/* URI reporting */
QString managerName() const;
QMap<QString, QString> managerParameters() const;
+ /*! \reimp */
+ int managerVersion() const {return 1;}
+
+ virtual QList<QContactLocalId> contactIds(const QContactFilter& filter, const QList<QContactSortOrder>& sortOrders, QContactManager::Error* error) const;
+ virtual QList<QContact> contacts(const QContactFilter& filter, const QList<QContactSortOrder>& sortOrders, const QContactFetchHint& fetchHint, QContactManager::Error* error) const;
+ virtual QContact contact(const QContactLocalId& contactId, const QContactFetchHint& fetchHint, QContactManager::Error* error) const;
+
+ virtual bool saveContacts(QList<QContact>* contacts, QMap<int, QContactManager::Error>* errorMap, QContactManager::Error* error);
+ virtual bool removeContacts(const QList<QContactLocalId>& contactIds, QMap<int, QContactManager::Error>* errorMap, QContactManager::Error* error);
+
+ /*! \reimp */
+ virtual QContact compatibleContact(const QContact& original, QContactManager::Error* error) const
+ {
+ return QContactManagerEngine::compatibleContact(original, error);
+ }
+
+ /*! \reimp */
+ virtual QString synthesizedDisplayLabel(const QContact& contact, QContactManager::Error* error) const
+ {
+ return QContactManagerEngine::synthesizedDisplayLabel(contact, error);
+ }
/* "Self" contact id (MyCard) */
- bool setSelfContactId(const QContactLocalId& contactId, QContactManager::Error& error);
- QContactLocalId selfContactId(QContactManager::Error& error) const;
+ virtual bool setSelfContactId(const QContactLocalId& contactId, QContactManager::Error* error);
+ virtual QContactLocalId selfContactId(QContactManager::Error* error) const;
- /* Contacts - Accessors and Mutators */
- QList<QContactLocalId> Q_DECL_DEPRECATED contacts(const QList<QContactSortOrder>& sortOrders, QContactManager::Error& error) const;
- QList<QContactManager::Error> Q_DECL_DEPRECATED saveContacts(QList<QContact>* contacts, QContactManager::Error& error);
- QList<QContactManager::Error> Q_DECL_DEPRECATED removeContacts(QList<QContactLocalId>* contactIds, QContactManager::Error& error);
- QContact Q_DECL_DEPRECATED contact(const QContactLocalId& contactId, QContactManager::Error& error) const;
+ /* Relationships between contacts */
+ virtual QList<QContactRelationship> relationships(const QString& relationshipType, const QContactId& participantId, QContactRelationship::Role role, QContactManager::Error* error) const;
+ virtual bool saveRelationships(QList<QContactRelationship>* relationships, QMap<int, QContactManager::Error>* errorMap, QContactManager::Error* error);
+ virtual bool removeRelationships(const QList<QContactRelationship>& relationships, QMap<int, QContactManager::Error>* errorMap, QContactManager::Error* error);
- QList<QContactLocalId> contactIds(const QList<QContactSortOrder> &sortOrders, QContactManager::Error &error) const;
- QList<QContact> contacts(const QList<QContactSortOrder> &sortOrders, const QStringList& definitionRestrictions, QContactManager::Error &error) const;
- QContact contact(const QContactLocalId& contactId, const QStringList& definitionRestrictions, QContactManager::Error& error) const;
- bool saveContacts(QList<QContact>* contacts, QMap<int, QContactManager::Error>* errorMap, QContactManager::Error& error);
- bool saveContact(QContact* contact, QContactManager::Error& error);
- bool removeContacts(QList<QContactLocalId>* contactIds, QMap<int, QContactManager::Error>* errorMap, QContactManager::Error& error);
- bool removeContact(const QContactLocalId& contactId, QContactManager::Error& error);
-
- /* Relationships - Accessors and Mutators */
- QList<QContactRelationship> relationships(const QString& relationshipType, const QContactId& participantId, QContactRelationshipFilter::Role role, QContactManager::Error& error) const;
- bool saveRelationship(QContactRelationship* relationship, QContactManager::Error& error);
- QList<QContactManager::Error> saveRelationships(QList<QContactRelationship>* relationships, QContactManager::Error& error);
- bool removeRelationship(const QContactRelationship& relationship, QContactManager::Error& error);
- QList<QContactManager::Error> removeRelationships(const QList<QContactRelationship>& relationships, QContactManager::Error& error);
+ /*! \reimp */
+ virtual bool validateContact(const QContact& contact, QContactManager::Error* error) const
+ {
+ return QContactManagerEngine::validateContact(contact, error);
+ }
+ /*! \reimp */
+ virtual bool validateDefinition(const QContactDetailDefinition& def, QContactManager::Error* error) const
+ {
+ return QContactManagerEngine::validateDefinition(def, error);
+ }
/* Definitions - Accessors and Mutators */
- QMap<QString, QContactDetailDefinition> detailDefinitions(const QString& contactType, QContactManager::Error& error) const;
- bool saveDetailDefinition(const QContactDetailDefinition& def, const QString& contactType, QContactManager::Error& error);
- bool removeDetailDefinition(const QString& definitionId, const QString& contactType, QContactManager::Error& error);
+ virtual QMap<QString, QContactDetailDefinition> detailDefinitions(const QString& contactType, QContactManager::Error* error) const;
+ /*! \reimp */
+ virtual QContactDetailDefinition detailDefinition(const QString& definitionId, const QString& contactType, QContactManager::Error* error) const
+ {
+ return QContactManagerEngine::detailDefinition(definitionId, contactType, error);
+ }
+ virtual bool saveDetailDefinition(const QContactDetailDefinition& def, const QString& contactType, QContactManager::Error* error);
+ virtual bool removeDetailDefinition(const QString& definitionId, const QString& contactType, QContactManager::Error* error);
/* Asynchronous Request Support */
- void requestDestroyed(QContactAbstractRequest* req);
- bool startRequest(QContactAbstractRequest* req);
- bool cancelRequest(QContactAbstractRequest* req);
- bool waitForRequestProgress(QContactAbstractRequest* req, int msecs);
- bool waitForRequestFinished(QContactAbstractRequest* req, int msecs);
+ virtual void requestDestroyed(QContactAbstractRequest* req);
+ virtual bool startRequest(QContactAbstractRequest* req);
+ virtual bool cancelRequest(QContactAbstractRequest* req);
+ virtual bool waitForRequestFinished(QContactAbstractRequest* req, int msecs);
/* Capabilities reporting */
- bool hasFeature(QContactManager::ManagerFeature feature, const QString& contactType) const;
- QStringList supportedRelationshipTypes(const QString& contactType) const;
- bool filterSupported(const QContactFilter& filter) const;
- QList<QVariant::Type> supportedDataTypes() const;
-
- /* Version Reporting */
- int implementationVersion() const;
+ virtual bool hasFeature(QContactManager::ManagerFeature feature, const QString& contactType) const;
+ virtual bool isRelationshipTypeSupported(const QString& relationshipType, const QString& contactType) const;
+ virtual bool isFilterSupported(const QContactFilter& filter) const;
+ virtual QList<QVariant::Type> supportedDataTypes() const;
+ /*! \reimp */
+ virtual QStringList supportedContactTypes() const
+ {
+ return QContactManagerEngine::supportedContactTypes();
+ }
protected:
- QContactMemoryEngine(const QMap<QString, QString>& parameters);
-
-private slots:
- void performAsynchronousOperation();
+ QContactMemoryEngine(QContactMemoryEngineData* data);
private:
/* Implement "signal coalescing" for batch functions via change set */
- bool saveContact(QContact* theContact, QContactChangeSet& changeSet, QContactManager::Error& error);
- bool removeContact(const QContactLocalId& contactId, QContactChangeSet& changeSet, QContactManager::Error& error);
- bool saveDetailDefinition(const QContactDetailDefinition& def, const QString& contactType, QContactChangeSet& changeSet, QContactManager::Error& error);
- bool removeDetailDefinition(const QString& definitionId, const QString& contactType, QContactChangeSet& changeSet, QContactManager::Error& error);
- bool saveRelationship(QContactRelationship* relationship, QContactChangeSet& changeSet, QContactManager::Error& error);
- bool removeRelationship(const QContactRelationship& relationship, QContactChangeSet& changeSet, QContactManager::Error& error);
+ bool saveContact(QContact* theContact, QContactChangeSet& changeSet, QContactManager::Error* error);
+ bool removeContact(const QContactLocalId& contactId, QContactChangeSet& changeSet, QContactManager::Error* error);
+ bool saveDetailDefinition(const QContactDetailDefinition& def, const QString& contactType, QContactChangeSet& changeSet, QContactManager::Error* error);
+ bool removeDetailDefinition(const QString& definitionId, const QString& contactType, QContactChangeSet& changeSet, QContactManager::Error* error);
+ bool saveRelationship(QContactRelationship* relationship, QContactChangeSet& changeSet, QContactManager::Error* error);
+ bool removeRelationship(const QContactRelationship& relationship, QContactChangeSet& changeSet, QContactManager::Error* error);
+
+ void performAsynchronousOperation(QContactAbstractRequest* request);
QContactMemoryEngineData* d;
- static QMap<QString, QContactMemoryEngine*> engines;
+ static QMap<QString, QContactMemoryEngineData*> engineDatas;
};
QTM_END_NAMESPACE