diff -r 5b6f26637ad3 -r f4a778e096c2 phonebookengines/VirtualPhonebook/VPbkCntModel/inc/CSpeedDialAttributeOperation.h --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/phonebookengines/VirtualPhonebook/VPbkCntModel/inc/CSpeedDialAttributeOperation.h Wed Sep 01 12:29:52 2010 +0100 @@ -0,0 +1,163 @@ +/* +* Copyright (c) 2005-2007 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: A operation class for setting/getting speeddial information +* +*/ + + + +#ifndef CSPEEDDIALATTRIBUTEOPERATION_H +#define CSPEEDDIALATTRIBUTEOPERATION_H + +// INCLUDES +#include +#include +#include + +// FORWARD DECLARATIONS +class MVPbkStoreContactField; +class CVPbkSpeedDialAttribute; +class MVPbkSetAttributeObserver; +class MVPbkContactFindObserver; +class CVPbkBatchOperation; +class CVPbkContactLinkArray; + +namespace VPbkEngUtils { class CVPbkAsyncOperation; } + +namespace VPbkCntModel { + +class CContactStore; +class TContactField; +class CContact; +class CContactFilter; +class CContactLink; + +/** + * A operation class for setting/getting speed dial information + */ +NONSHARABLE_CLASS( CSpeedDialAttributeOperation ): + public CBase, + public MVPbkContactOperation, + private MVPbkBatchOperationObserver + { +public: + /** + * Creates operation that sets the speed dial + * @param aContactStore Store which is used + * @param aField The contact field where the speed dial is set + * @param aAttribute Speed dial attribute + * @param aObserver Observer that is notified when finished + * @return asynchronous operation + */ + static CSpeedDialAttributeOperation* NewSetLC( + CContactStore& aContactStore, + MVPbkStoreContactField& aField, + const CVPbkSpeedDialAttribute& aAttribute, + MVPbkSetAttributeObserver& aObserver); + + /** + * Creates operation that removes the speed dial + * @param aContactStore Store which is used + * @param aField The contact field where the speed dial is removed + * @param aAttribute Speed dial attribute + * @param aObserver Observer that is notified when finished + * @return asynchronous operation + */ + static CSpeedDialAttributeOperation* NewRemoveLC( + CContactStore& aContactStore, + MVPbkStoreContactField& aField, + const CVPbkSpeedDialAttribute& aAttribute, + MVPbkSetAttributeObserver& aObserver); + + /** + * Creates operation that lists all speed dials + * @param aContactStore Store which is usedt + * @param aAttribute Speed dial attribute + * @param aObserver Observer that is notified when finished + * @return asynchronous operation + */ + static CSpeedDialAttributeOperation* NewListLC( + CContactStore& aContactStore, + const CVPbkSpeedDialAttribute& aAttribute, + MVPbkContactFindObserver& aObserver); + + ~CSpeedDialAttributeOperation(); + +public: // from base class MVPbkContactOperation + + void StartL(); + void Cancel(); + + + +private: // from base class MVPbkBatchOperationObserver + void StepComplete(MVPbkContactOperationBase& aOperation, + TInt aStepSize); + TBool StepFailed( + MVPbkContactOperationBase& aOperation, + TInt aStepSize, + TInt aError); + void OperationComplete(MVPbkContactOperationBase& aOperation); + +// Implementation + +private: + enum TOperationMode { ESet, ERemove, EList }; + + CSpeedDialAttributeOperation( + TOperationMode aOperationMode, + CContactStore& aContactStore, + MVPbkStoreContactField& aField, + MVPbkSetAttributeObserver& aObserver); + CSpeedDialAttributeOperation( + TOperationMode aOperationMode, + CContactStore& aContactStore, + MVPbkContactFindObserver& aObserver); + void ConstructL(const CVPbkSpeedDialAttribute& aAttribute); + + void HandleOperationCompleteL(); + void DoSetOperationL(MVPbkSetAttributeObserver& aObserver); + void SetOperationError(MVPbkSetAttributeObserver& aObserver, TInt aError); + void DoListOperationL(MVPbkContactFindObserver& aObserver); + void ListOperationError(MVPbkContactFindObserver& aObserver, TInt aError); + TInt NativeFieldIndex(CContact& aContact, TContactField& aField) const; + void FindSpeedDialsL(); + void FindSpeedDialL(); + CContactLink* DoFindSpeedDialLC( TInt aIndex ); + +private: // Data + /// Ref: operation mode + TOperationMode iOperationMode; + /// Ref: contact store + CContactStore& iContactStore; + /// Ref: store contact field + MVPbkStoreContactField* iField; + /// Own: speed dial attribute + CVPbkSpeedDialAttribute* iAttribute; + /// Ref: set attribute observer + MVPbkSetAttributeObserver* iSetObserver; + /// Ref: contact find observer + MVPbkContactFindObserver* iFindObserver; + /// Own: VPbk asynchronous operation + VPbkEngUtils::CVPbkAsyncOperation* iAsyncOperation; + /// Own: empty operation + CVPbkBatchOperation* iEmptyOperation; + /// Own: contact link array + CVPbkContactLinkArray* iLinkArray; + }; +} // namespace VPbkCntModel + +#endif // CSPEEDDIALATTRIBUTEOPERATION_H + +// End of File