diff -r 2b7283837edb -r 3104fc151679 uiservicetab/vimpststorage/inc/cvimpststoragevpbkstorehandler.h --- a/uiservicetab/vimpststorage/inc/cvimpststoragevpbkstorehandler.h Thu Aug 19 09:41:53 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,404 +0,0 @@ -/* -* Copyright (c) 2008 Nokia Corporation and/or its subsidiary(-ies). -* All rights reserved. -* This component and the accompanying materials are made available -* under the terms of "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: Class that provides handling of vpbk store -* -*/ - - -#ifndef CVIMPSTSTOTRAGEVPBKSTOREHANDLER_H -#define CVIMPSTSTOTRAGEVPBKSTOREHANDLER_H - -// INCLUDES -#include -#include - -#include "mvimpststoragevpbkstorehandler.h" - -#include -#include -#include -#include -#include -#include - -#include - -// FORWARD DECLARATIONS -class MVPbkContactViewBase; -class MVPbkContactLink; -class CVPbkContactManager; -class MVPbkContactStoreList; -class MVPbkContactView; -class MVPbkStoreContact; -class MVPbkViewContact; -class CVPbkContactLinkArray; -class MVIMPSTStorageVPbkStoreHandler; -class CPbk2SortOrderManager; -class MVPbkContactOperationBase; -class MVPbkBaseContact; -class CVPbkContactLinkArray; - -// CLASS DECLARATION -/** - * vpbk store Handler - * This class implements the use of Virtual Phonebook for XSP Stores - * - * @lib vimpststorage.lib - * @since S60 5.0 - */ -NONSHARABLE_CLASS( CVIMPSTStorageVPbkStoreHandler ) : public CActive, - public MVPbkContactViewObserver, - public MVPbkContactStoreObserver, - public MVPbkContactStoreListObserver, - public MVPbkContactObserver, - public MVPbkBatchOperationObserver, - public MVPbkSingleContactOperationObserver - { - - struct TVIMPSTAvatarData - { - // owns - MVPbkContactLink* iContactLink; - // owns - HBufC8* iAvatarContent; - }; - public: - - /** - * Two-phased constructor. - * - * @param aContactDb, contact database - * @param aListId, Default List ID - * @param aServiceId - Service Id - * @param aServiceName - Service Name - * @param aStorageView, Ref to Storage (CVIMPSTStorageViewId) - */ - static CVIMPSTStorageVPbkStoreHandler* NewL(const TDesC& aContactDb, - const TDesC& aServiceName, - MVIMPSTStorageVPbkStoreHandler& aStoreHandler, - TBool aLocalStore ); - - /** - * Two-phased constructor. - * - * @param aContactDb, contact database - * @param aListId, Default List ID - * @param aServiceId - Service Id - * @param aServiceName - Service Name - * @param aStorageView, Ref to Storage (CVIMPSTStorageViewId) - */ - static CVIMPSTStorageVPbkStoreHandler* NewLC(const TDesC& aContactDb, - const TDesC& aServiceName, - MVIMPSTStorageVPbkStoreHandler& aStoreHandler, - TBool aLocalStore ); - - /** - * Standard C++ destructor - */ - ~CVIMPSTStorageVPbkStoreHandler(); - public : // - /** - * return vpbk store - * @param aUri uri of store - */ - MVPbkContactStore* GetDefaultStoreL( const TDesC& aUri ); - - TInt CreateVPbkContactL( const TDesC& aUserId, - const TDesC& aDisplayName ) ; - - TInt RemoveVPbkContactL(const CVPbkContactLinkArray& aContactLinkArray ) ; - - TInt RetrieveVPbkContactL(const TDesC8& aPackedLinks ); - - TInt UpdateAvatarFieldDataL(const MVPbkContactLink& aContactLink, - const TDesC8& aAvatartData ); - - TInt RemoveAvatarFieldL(MVPbkStoreContact& aStoreContact); - - TInt RemoveAllVPbkContactsL(); - - private: // From MVPbkContactViewObserver - - /** - * From MVPbkContactViewObserver - * Callback: Contact view is ready - * - * @since S60 5.0 - * @param aView, view that is ready - */ - void ContactViewReady( MVPbkContactViewBase& aView ); - - /** - * From MVPbkContactViewObserver - * Callback: Contact view is unavailable - * - * @since S60 5.0 - * @param aView, view that is unavailable - */ - void ContactViewUnavailable( MVPbkContactViewBase& aView ); - - /** - * From MVPbkContactViewObserver - * Callback: Contact is added to view - * - * @since S60 5.0 - * @param aView, view that contact was added to - * @param aIndex, position to where the contact was added to - * @param MVPbkContactLink, contact link of the added contact - */ - void ContactAddedToView( MVPbkContactViewBase& aView, - TInt aIndex, const MVPbkContactLink& aContactLink ); - - /** - * From MVPbkContactViewObserver - * Callback: Contact was removed from the view - * - * @since S60 5.0 - * @param aView, view that contact was removed from - * @param aIndex, position from where the contact was removed from - * @param MVPbkContactLink, contact link of the removed contact - */ - void ContactRemovedFromView( MVPbkContactViewBase& aView, - TInt aIndex, const MVPbkContactLink& aContactLink ); - - /** - * From MVPbkContactViewObserver - * Callback: Contact view error - * - * @since S60 5.0 - * @param aView, view that caused the error - * @param aError, error that occured - * @param aErrorNotified, was it notified - */ - void ContactViewError( MVPbkContactViewBase& aView, - TInt aError, TBool aErrorNotified ); - - private: // From MVPbkContactStoreObserver - - /** - * From MVPbkContactStoreObserver - * Callback: Contact store is ready - * - * @since S60 5.0 - * @param aContactStore, contact store - */ - void StoreReady( MVPbkContactStore& aContactStore); - - /** - * From MVPbkContactStoreObserver - * Callback: Store is unavailable - * - * @since S60 5.0 - * @param aContactStore, contact store - * @param aReason, error code - */ - void StoreUnavailable( MVPbkContactStore& aContactStore, TInt aReason); - - /** - * From MVPbkContactStoreObserver - * Callback: Store event occured - * - * @since S60 5.0 - * @param aContactStore, contact store - * @param aStoreEvent, event - */ - void HandleStoreEventL( MVPbkContactStore& aContactStore , - TVPbkContactStoreEvent aStoreEvent ); - - private: // From MVPbkContactStoreListObserver - - /** - * From MVPbkContactStoreListObserver - * Callback: List open is completed - * - * @since S60 5.0 - */ - void OpenComplete(); - - private: - /** - * From MVPbkContactObserver - */ - void ContactOperationCompleted(TContactOpResult aResult); - - /** - * From MVPbkContactObserver - */ - void ContactOperationFailed( TContactOp aOpCode, - TInt aErrorCode, - TBool aErrorNotified); - - private: // From MVPbkBatchOperationObserver - void StepComplete( MVPbkContactOperationBase& aOperation, - TInt aStepSize ); - TBool StepFailed( MVPbkContactOperationBase& aOperation, - TInt aStepSize, TInt aError ); - void OperationComplete( MVPbkContactOperationBase& aOperation ); - - public: // From MVPbkSingleContactOperationObserver - - /** - * from MVPbkSingleContactOperationObserver. - * Called when the operation is completed. - * - * A client has the operation as a member and it can delete the operation - * instance in this function call. If the implementation of the store - * calls the function from the operation instance it must not handle - * any member data after calling it. - * - * @param aOperation The completed operation. - * @param aContact The contact returned by the operation. - * A client must take the ownership immediately. - * - * NOTE: - * 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). - * @since S60 v5.0 - */ - void VPbkSingleContactOperationComplete( - MVPbkContactOperationBase& aOperation, - MVPbkStoreContact* aContact); - - /** - * from MVPbkSingleContactOperationObserver. - * Called if the operation fails. - * - * A client has the operation as a member and it can delete the operation - * instance in this function call. If the implementation of the store - * calls the function from the operation instance it must not handle - * any member data after calling it. - * - * @param aOperation The failed operation. - * @param aError An error code of the failure. - * @since S60 v5.0 - */ - void VPbkSingleContactOperationFailed( - MVPbkContactOperationBase& aOperation, - TInt aError); - - private: // From CActive - void RunL(); - void DoCancel(); - TInt RunError(TInt aError ); - - private: - - /** - * Issues Request - * - */ - void IssueRequest(); - - void HandleContactViewReadyL( MVPbkContactViewBase& aView ); - - void DoHnadleSingleContactOperationCompleteL( MVPbkContactOperationBase& aOperation, - MVPbkStoreContact* aContact ); - - void DoHnadleOpenCompleteL(); - - void RetriveFieldDataAndSendEventL(const MVPbkStoreContact& aContact ); - - /** - * destroys the content of RArray. - */ - void ResetAndDestroyRArray(); - - private: // Implementation - - /** - * Standard C++ constructor - */ - CVIMPSTStorageVPbkStoreHandler( MVIMPSTStorageVPbkStoreHandler& aStoreHandler,TBool aLocalStore ); - - /** - * Performs the 2nd phase of construction. - * - * @param aContactDb, contact database address - * @param aServiceName, service Name - */ - void ConstructL( const TDesC& aContactDb,const TDesC& aServiceName ); - - - HBufC* GetContactFieldDataLC(const MVPbkStoreContact& aContact, - TInt aFieldResId ) ; - - /** - * To get the avatar data - * - * @param aContact, contact - * @param aFieldResId, field id - */ - HBufC8* GetContactBinaryFieldDataLC(const MVPbkStoreContact& aContact, - TInt aFieldResId ); - - /** - * check if any pending add contacts - * commit if pending - */ - void CommitNextPendingContactsL() ; - - private: // Data - // Not owns reference to contactStore - MVIMPSTStorageVPbkStoreHandler& iStoreHandler; - // Own: Virtual phonebook - CVPbkContactManager* iContactManager; - // Not own, Contact store list owned by the contact - // manager, do not delete - MVPbkContactStoreList* iStores; - // Not own, Contact store owned by the contact - // manager, do not delete - MVPbkContactStore* iStore; - // Own, contact view containing contacts in store - MVPbkContactView* iContactView; - //OWN: Active scheduler wait for waiting the completion - CActiveSchedulerWait iWait; - // owns : Service store name - HBufC* iStoreName; - // Own, sort order manager - CPbk2SortOrderManager* iSortOrderManager; - // owns : service name - HBufC* iServiceName; - // owns : a vpbk store contact - MVPbkStoreContact* iStoreContact; - // owns : operation contact - MVPbkContactOperationBase* iContactOperation; - // owns : a contact Link; - MVPbkContactLink* iContactLink; - // owns : results - TInt iOperationError; - // owns : Store event type - TVIMPSTVPbkStoreEventType iStoreEventType; - // owns : fetching index - TInt iFetcingIndex; - // owns : adding of contact is in progress - HBufC* iAddIdInProgress; - // ETrue if local store used - TBool iLocalStore; - // is contact operation is in use - TBool iCommitOperationInProgress; - // owns : synch contact which are overlapping or pending contacts - RPointerArray iUnCommittedVPbkContacts; - - // owns : synch avatars which are overlapping or pending avatars - RArray iPendingAvatars; - - }; - -#endif // CVIMPSTSTOTRAGEVPBKSTOREHANDLER_H - -// End of file