--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/sapi_contacts_vpbk/contactservice/inc/contactservice.h Mon Mar 30 12:51:10 2009 +0300
@@ -0,0 +1,324 @@
+/*
+* Copyright (c) 2006 Nokia Corporation and/or its subsidiary(-ies).
+* All rights reserved.
+* This component and the accompanying materials are made available
+* under the terms of the License "Eclipse Public License v1.0"
+* which accompanies this distribution, and is available
+* at the URL "http://www.eclipse.org/legal/epl-v10.html".
+*
+* Initial Contributors:
+* Nokia Corporation - initial contribution.
+*
+* Contributors:
+*
+* Description: Core class for the contact service APIs.
+*
+*/
+
+
+#ifndef C_CONTACTSERVICE_H
+#define C_CONTACTSERVICE_H
+
+//System includes
+#include <s32file.h> // Used for RFileReadStream and RFileWriteStream
+#include <mvpbkcontactstoreListobserver.h> //base class for vCardEng
+#include <mvpbkcontactobserver.h> //base class for vCardEng
+#include <mvpbksinglecontactoperationObserver.h>//base class
+#include <mvpbkcontactcopyobserver.h> //base class for vCardEng
+#include <CVPbkFieldTypeRefsList.h> //Used to specify search fields
+#include <CVPbkContactLinkArray.h>
+#include <vpbkcontactstoreuris.h>
+
+//User Includes
+#include "contactcallback.h"
+#include "contactservice.hrh"
+#include "contactiter.h"
+#include "storelistobserver.h"
+#include "exportstorelistobserver.h"
+#include "importstorelistobserver.h"
+#include "searchfields.h"
+#include "singlecontact.h"
+#include "fieldkeys.hrh"
+
+class CVPbkVCardEng;
+class CVPbkContactManager;
+class MVPbkStoreContact;
+class MVPbkFieldType;
+class MVPbkContactLink;
+class CContactCopyObserver;
+class CSingleContactOperationObserver;
+class CImportStoreListObserver;
+class CExportStoreListObserver;
+class CContactViewObserver;
+class CGetListStoreListObserver;
+class CContactIter;
+class CContactRetrieveObserver;
+class CSearchFields;
+class CSingleContact;
+class MCancelAsync;
+class MLocalCallback;
+
+
+/**
+ * Structure for storing transaction id and associated active object.
+*/
+struct TAsyncRequestInfo
+ {
+
+ /**
+ * TransactionId
+ */
+ TInt32 iTransactionId;
+
+ /**
+ * Active object pointer
+ */
+ MCancelAsync* iAsyncObj;
+ };
+
+class CContactService: public CBase
+{
+
+public:
+
+ IMPORT_C static CContactService* NewL();
+ ~CContactService();
+ /**
+ * Export a predefined vCard from the contact database into a file.
+ *
+ * @return Integer indicating requestion submission.
+ */
+ IMPORT_C void ExportVCardL(MContactCallback* aCallback,
+ TInt aTransId,
+ const TFileName& aFileName,
+ const TDesC8& aContactId,
+ const TDesC& aStoreUri=VPbkContactStoreUris::DefaultCntDbUri());
+
+ /**
+ * Import a vCard from a predefined file into the contact database.
+ *
+ * @return Integer indicating requestion submission.
+ */
+ IMPORT_C void ImportVCardToStoreL(MContactCallback* aCallback,
+ TInt aTransId,
+ const TFileName& aFilename,
+ const TDesC& aStoreUri=VPbkContactStoreUris::DefaultCntDbUri());
+
+ /**
+ * Get the list of entries in the database satisfying the criteria in the SearchVal
+ *
+ * @return Integer indicating requestion submission.
+ */
+ IMPORT_C void GetListL(MContactCallback* aCallback,
+ TInt aTransId,
+ Ttype type,
+ const TDesC8& aContactId = KNullDesC8,
+ const TDesC& aSearchVal = KNullDesC,
+ CSearchFields* aSearchFields = NULL,
+ TOrder aSortOrder = EAsc,
+ const TDesC& aStoreUri = VPbkContactStoreUris::DefaultCntDbUri());
+
+ /*
+ Get the list of databases currently open
+ */
+ IMPORT_C void GetListL(CContactIter& aIter);
+
+ /*
+ * Called for 1) Adding a new contact/group to the contacts database.
+ * 2) Editing a contact/group from the contacts database.
+ * @return Integer indicating requestion submission.
+ */
+ IMPORT_C void AddL( MContactCallback* aCallback,
+ TInt aTransId,
+ CSingleContact* aContact,
+ const TDesC8& aGroupId = KNullDesC8,
+ const TDesC& aGroupLabel = KNullDesC,
+ const TDesC& aStoreUri = VPbkContactStoreUris::DefaultCntDbUri());
+ /*
+ * Called for deleting a contact/group from the contacts database.
+ *
+ * @return Integer indicating requestion submission.
+ */
+ IMPORT_C void DeleteL( MContactCallback* aCallback,
+ TInt aTransId,
+ RPointerArray<TDesC8>& aContactIdArray,
+ const TDesC& aStoreUri = VPbkContactStoreUris::DefaultCntDbUri() );
+
+
+ /*
+ * Called for Associating/Disassociating contacts to/from the group.
+ *
+ * @return Integer indicating requestion submission.
+ */
+ IMPORT_C void OrganiseGroupsL(MContactCallback* aCallback,
+ TInt aTransId,
+ const TDesC8& aGroupId,
+ RPointerArray<TDesC8>& aContactIdArray,
+ TBool aAssociateFlag,
+ const TDesC& aStoreUri = VPbkContactStoreUris::DefaultCntDbUri() );
+
+
+
+ /**
+ * Synchronous implementation of Export api.
+ *Export a predefined vCard from the contact database into a file.
+ *
+ * @return Integer indicating requestion submission.
+ */
+ IMPORT_C void ExportVCardL(const TFileName& aFileName,
+ const TDesC8& aContactId,
+ const TDesC& aStoreUri=VPbkContactStoreUris::
+ DefaultCntDbUri() );
+
+ /**
+ * Synchronous implementation of Import api.
+ * Import a vCard from a predefined file into the contact database.
+ *
+ * @return Integer indicating requestion submission.
+ */
+ IMPORT_C void ImportVCardToStoreL(const TFileName& aFilename,
+ const TDesC& aStoreUri = VPbkContactStoreUris::
+ DefaultCntDbUri() );
+
+ /**
+ * Synchronous implementation of GetList api.
+ * Get the list of entries in the database satisfying the criteria in the SearchVal
+ *
+ * @return Integer indicating requestion submission.
+ */
+ IMPORT_C CContactIter* GetListL(Ttype type,
+ const TDesC8& aContactId = KNullDesC8,
+ const TDesC& aSearchVal=KNullDesC,
+ CSearchFields* aSearchFields=NULL,
+ TOrder aSortOrder=EAsc,
+ const TDesC& aStoreUri=VPbkContactStoreUris::
+ DefaultCntDbUri());
+
+ /**
+ * Synchronous implementation of AddL api.
+ * Called for 1) Adding a new contact/group to the contacts database.
+ * 2) Editing a contact/group from the contacts database.
+ * @return Integer indicating requestion submission.
+ */
+ IMPORT_C void AddL(CSingleContact* aContact,
+ const TDesC8& aGroupId = KNullDesC8,
+ const TDesC& aGroupLabel = KNullDesC,
+ const TDesC& aStoreUri = VPbkContactStoreUris::
+ DefaultCntDbUri());
+
+ /**
+ * Synchronous implementation of DeleteL api.
+ * Called for deleting a contact/group from the contacts database.
+ *
+ * @return Integer indicating requestion submission.
+ */
+ IMPORT_C void DeleteL(RPointerArray<TDesC8>& aContactIdArray,
+ const TDesC& aStoreUri = VPbkContactStoreUris::
+ DefaultCntDbUri() );
+
+
+ /**
+ * Synchronous implementation of OrganiseGroupsL api.
+ * Called for Associating/Disassociating contacts to/from the group.
+ *
+ * @return Integer indicating requestion submission.
+ */
+ IMPORT_C void OrganiseGroupsL(const TDesC8& aGroupId,
+ RPointerArray<TDesC8>& aContactIdArray,
+ TBool aAssociateFlag,
+ const TDesC& aStoreUri = VPbkContactStoreUris::
+ DefaultCntDbUri() );
+ /**
+ * Cancels asynchronous request
+ * @param aTransactionId asynchronous transaction id
+ * @param aResult error code
+ */
+ IMPORT_C TInt Cancel( const TInt32 aTransactionId );
+ /**
+ * Gets the field key id which is not supported on the current data base
+ * It is only used for sync api's
+ * @return field key ID
+ */
+ IMPORT_C TInt GetErrKey();
+
+public :
+ const MVPbkFieldTypeList& GetFieldTypes();
+
+ void AddAsyncObjL( const TInt32 aTransactionId, MCancelAsync* aAsyncObj );
+
+ void RequestComplete( const TInt32 aTransactionId );
+
+ /*
+ * Called interanally to get the pointer to ContactManager instance.
+ */
+ CVPbkContactManager& GetContactManager();
+
+private:
+
+ /*
+ * Constructor.
+ */
+ CContactService();
+ /*
+ * Symbian Second-phase constructor.
+ */
+ void ConstructL();
+
+ /**
+ * Called for setting up the initial parameters for contacts.
+ *
+ * @return Integer.
+ */
+ TInt BaseSetupL(const TDesC& aStoreUri);
+
+ TInt VcardStoreOpenL(const TDesC& aStoreUri,
+ MContactStoreListObserver* aStoreObserver);
+ /*
+ * Called for getting a contact store from the contact manager and
+ * opening the database
+ */
+ TInt GetContactStoreAndOpenL(const TDesC& aDbUri,
+ MVPbkContactStoreObserver* aStoreObserver);
+
+private: // Data
+
+
+
+ /**
+ * A pointer to the Virtual Phonebook Engine instance.
+ * Own.
+ */
+ CVPbkVCardEng* iEngine;
+
+ /**
+ * A pointer to the Virtual Phonebook Contact Manager instance.
+ * Own.
+ */
+ CVPbkContactManager* iContactManager;
+
+ /**
+ * A pointer to a contact store.
+ * Not own.
+ */
+ MVPbkContactStore* iContactStore;
+
+ /*
+ * Pointer to store contact.
+ */
+ MVPbkStoreContact* iStoreContact;
+
+ /**
+ * A reference to a File Server session.
+ */
+ RFs iFs;
+
+ TInt iErrKey;
+ /**
+ * Contains handles of all asynchronous requests
+ */
+ RArray<TAsyncRequestInfo> iAsyncObjArray;
+
+ };
+
+
+#endif //// C_CONTACTSERVICE_H