diff -r 000000000000 -r 14df0fbfcc4e sapi_contacts_vpbk/contactservice/inc/addcontactobserver.h --- /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 +#include +#include +#include +#include + +#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