--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/sapi_contacts_vpbk/contactservice/inc/addcontactobserver.h Mon Mar 30 12:51:10 2009 +0300
@@ -0,0 +1,219 @@
+/*
+* 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: Observer to Add a contact to the contact store
+*
+*/
+
+
+#ifndef C_ADDCONTACTOBSERVER_H
+#define C_ADDCONTACTOBSERVER_H
+
+
+#include <s32file.h>
+#include <mvpbkcontactstoreobserver.h>
+#include <mvpbkcontactobserver.h>
+#include <MVPbkSingleContactOperationObserver.h>
+#include <MVPbkStoreContact.h>
+
+#include "singlecontact.h"
+#include "cancelasyncrquest.h"
+
+class CVPbkContactManager;
+class MVPbkStoreContact;
+class MVPbkContactLink;
+class MContactCallback;
+class MCancelAsync;
+
+
+class CAddContactObserver : public CBase,
+ public MVPbkContactStoreObserver,
+ public MVPbkSingleContactOperationObserver,
+ public MVPbkContactObserver,
+ public MCancelAsync
+{
+ public:
+ /*
+ * called for creating an instace of add contact observer
+ */
+ static CAddContactObserver* NewL(CContactService* aContactService,
+ MVPbkContactStore* aContactStore,
+ CSingleContact* aStoreContact,
+ const TDesC8& aGroupId,
+ const TDesC& aGroupLabel,
+ TInt aTransId,
+ MContactCallback* aCallback);
+ /*
+ * Destructor
+ */
+ ~CAddContactObserver();
+
+ /*
+ * Implementation of Cancel of MCancelAsync
+ */
+ void Cancel();
+ private:
+ /*
+ * Constructor */
+ CAddContactObserver(CContactService* aContactService,
+ MVPbkContactStore* aContactStore,
+ CSingleContact* aStoreContact,
+ TInt aTransId,
+ MContactCallback* aCallback);
+
+ /*
+ * Symbian second-phase construction
+ */
+ void ConstructL(const TDesC8& aGroupId,
+ const TDesC& aGroupLabel);
+
+ /*
+ * Called for adding a contact into the contacts database.
+ */
+ void DoAddL();
+
+ /*
+ * Called for committing a contact into the contacts database.
+ */
+ TInt DoCommitL(TContactOpResult aResult);
+
+ void DoEditContactOrGroupL(MVPbkStoreContact* aContact);
+
+ private: // from MVPbkContactObserver
+
+ /**
+ * An indication that a contact operation has been completed.
+ *
+ * @param aResult The result of the operation.
+ * @return None.
+ */
+ void ContactOperationCompleted( TContactOpResult aResult );
+
+ /**
+ * An indication that a contact operation has failed.
+ *
+ * @param aOpCode The operation identifier.
+ * @param aErrorCode The error code.
+ * @param aErrorNotified A flag indicating whether the user has been
+ * notified about the error.
+ * @return None.
+ */
+ void ContactOperationFailed( TContactOp aOpCode, TInt aErrorCode,
+ TBool aErrorNotified );
+
+
+ private: //MVPbkContactStoreObserver
+ /**
+ * Called when a contact store is ready to use.
+ */
+ void StoreReady( MVPbkContactStore& aContactStore );
+
+ /**
+ * Called when a contact store becomes unavailable.
+ * Client may inspect the reason of the unavailability and decide whether or not
+ * it will keep the store opened (ie. listen to the store events).
+ * @param aContactStore The store that became unavailable.
+ * @param aReason The reason why the store is unavailable.
+ * This is one of the system wide error codes.
+ */
+ void StoreUnavailable( MVPbkContactStore& aContactStore, TInt aReason );
+
+ /**
+ * Called when changes occur in the contact store.
+ * @see TVPbkContactStoreEvent
+ * @param aContactStore The store the event occurred in.
+ * @param aStoreEvent Event that has occured.
+ */
+ virtual void HandleStoreEventL( MVPbkContactStore& aContactStore,
+ TVPbkContactStoreEvent aStoreEvent );
+
+ private: // from MVPbkSingleContactOperationObserver
+ /**
+ * Called when operation is completed.
+ *
+ * @param aOperation the completed operation.
+ * @param aContact the contact returned by the operation.
+ * Client must take the ownership immediately.
+ *
+ * !!! NOTICE !!!
+ * If you use Cleanupstack for MVPbkStoreContact
+ * Use MVPbkStoreContact::PushL or
+ * CleanupDeletePushL from e32base.h.
+ * (Do Not Use CleanupStack::PushL(TAny*) because
+ * then the virtual destructor of the M-class
+ * won't be called when the object is deleted).
+ */
+ virtual void VPbkSingleContactOperationComplete(
+ MVPbkContactOperationBase& aOperation,
+ MVPbkStoreContact* aContact);
+ /**
+ * Called if the operation fails.
+ *
+ * @param aOperation the failed operation.
+ * @param aError error code of the failure.
+ */
+ virtual void VPbkSingleContactOperationFailed(
+ MVPbkContactOperationBase& aOperation,
+ TInt aError);
+
+ private:
+
+ void CreateAndAddFieldToContactL();
+
+ public:
+ /*
+ * Pointer to a contact manager
+ */
+ CContactService* iContactService;
+ /*
+ * Pointer to a contact store
+ */
+ MVPbkContactStore* iContactStore;
+ /*
+ * Pointer to a store contact
+ */
+ CSingleContact* iStoreContact;
+ /*
+ * Pointer to a callback
+ */
+ MContactCallback* iCallback;
+ /*
+ * Pointer to group id.
+ */
+ HBufC8* iGroupId;
+ /*
+ * Pointer to group label
+ */
+ HBufC* iGroupLabel;
+ /*
+ * Flag to indicate whether contact is locked or not
+ */
+ TBool iLockFlag;
+
+ /*
+ * Transaction Id.
+ */
+ TInt iTransId;
+
+ TInt iErrorID;
+ //TPtrC iErrKey;
+
+ MVPbkStoreContact* iContact;
+ MVPbkContactGroup* iGroup;
+
+
+ //OperationBase pointer to be used to cancel async request
+ MVPbkContactOperationBase* iOp;
+};
+
+#endif //C_ADDCONTACTOBSERVER_H
\ No newline at end of file