diff -r 000000000000 -r d6fe6244b863 creator/inc/creator_virtualphonebook.h --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/creator/inc/creator_virtualphonebook.h Tue Feb 02 00:17:27 2010 +0200 @@ -0,0 +1,300 @@ +/* +* 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: +* +*/ + + + + +#ifndef __CREATORVIRTUALPHONEBOOK_H__ +#define __CREATORVIRTUALPHONEBOOK_H__ + +#include "creator_model.h" +#include "creator_phonebookbase.h" +#include "creator_randomdatafield.h" + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +class CCreatorEngine; +class CCreatorModuleBaseParameters; + +class MVPbkStoreContact; +class MVPbkContactStore; +class CAsyncWaiter; +class CContactDatabase; +class MVPbkContactLinkArray; +class CVirtualPhonebookParameters; + + +class CCreatorVirtualPhonebook : public CCreatorPhonebookBase, + public MVPbkContactStoreListObserver, public MVPbkBatchOperationObserver, + public MVPbkContactFindObserver, public MVPbkContactObserver, public MPbk2ImageSetObserver, + public MVPbkSingleContactOperationObserver, public MVPbkContactViewObserver + { +public: + static CCreatorVirtualPhonebook* NewL(CCreatorEngine* aEngine); + static CCreatorVirtualPhonebook* NewLC(CCreatorEngine* aEngine); + ~CCreatorVirtualPhonebook(); + +private: + CCreatorVirtualPhonebook(); + void ConstructL(CCreatorEngine* aEngine); // from MCreatorModuleBase + +public: + virtual TBool AskDataFromUserL(TInt aCommand, TInt& aNumberOfEntries); + TInt CreateContactEntryL(CCreatorModuleBaseParameters *aParameters); + TInt CreateGroupEntryL(CCreatorModuleBaseParameters *aParameters); + TInt CreateSubscribedContactEntryL(CCreatorModuleBaseParameters *aParameters); + + void AddFieldToContactItemL(MVPbkStoreContact& aItem, TPbkFieldId aFieldId, const TDesC& aFieldText); + void AddFieldToContactItemL(MVPbkStoreContact& aItem, TPbkFieldId aFieldId, const TDesC8& aFieldText); + void AddFieldToContactItemL(MVPbkStoreContact& aItem, TPbkFieldId aFieldId, const TTime& aFieldText); + + void AddImageToContactL(MVPbkStoreContact& aContact, TInt aFieldResId, const TDesC& aFileName); + TBool IsActive(); + void CancelOperation(); + void DeleteAllL(); + void DeleteAllCreatedByCreatorL(); + void DeleteAllGroupsL(); + void DeleteAllGroupsCreatedByCreatorL(); + +private: + void CompactPbkDatabaseL(TBool aCompressImmediately=EFalse); + void AddFieldToParamsL(TInt aFieldType, const TDesC& aData); + void AddFieldToParamsL(TInt aFieldType, const TDesC8& aData); + void AddFieldToParamsL(TInt aFieldType, const TTime& aData); + void InitializeContactParamsL(/*CCreatorModuleBaseParameters* aParameters*/); + TBool IsContactGroupL(const MVPbkContactLink& aLink); + void StoreLinksForDeleteL( MVPbkContactLinkArray& aLinks, TUid aStoreUid ); + void DeleteContactsL( MVPbkContactLinkArray* aContacts, TBool aGroup ); + void DeleteItemsCreatedWithCreatorL( TUid aStoreUid ); + void DoDeleteItemsCreatedWithCreatorL( TUid aStoreUid, CDictionaryFileStore* aStore ); + TBool HasOtherThanGroupsL( MVPbkContactLinkArray* aContacts ); + +public: // MVPbkSingleContactOperationObserver + + void VPbkSingleContactOperationComplete( + MVPbkContactOperationBase& aOperation, + MVPbkStoreContact* aContact ); + void VPbkSingleContactOperationFailed( + MVPbkContactOperationBase& aOperation, + TInt aError ); + +private: // MVPbkContactViewObserver + + void ContactViewReady( MVPbkContactViewBase& aView ); + void ContactViewUnavailable( + MVPbkContactViewBase& aView ); + void ContactAddedToView( + MVPbkContactViewBase& aView, + TInt aIndex, + const MVPbkContactLink& aContactLink ); + void ContactRemovedFromView( + MVPbkContactViewBase& aView, + TInt aIndex, + const MVPbkContactLink& aContactLink ); + void ContactViewError( + MVPbkContactViewBase& aView, + TInt aError, + TBool aErrorNotified ); + +private: + CVPbkContactManager* iContactManager; + TInt iOpCounter; + + CVirtualPhonebookParameters* iParameters; + + static TInt iPhoneNumberFields[]; + static TInt iUrlFields[]; + static TInt iEmailFields[]; + TBool iAddAllFields; + CVPbkContactLinkArray* iContactLinkArray; + CVPbkContactLinkArray* iContactsToDelete; + CVPbkContactLinkArray* iContactGroupsToDelete; + RPointerArray iPreviousDeleteLinks; + +private: + //new variables + /// Ref: the target of the copy + MVPbkContactStore* iStore; + + CAsyncWaiter* iWaiter; + + /// Own: Contact database for this store + CContactDatabase* iContactDb; + + //Contacts found in contacts db. + MVPbkContactLinkArray* iContactResults; + // Contact groups that are found in the store. These are used in filtering + // the groups from the find results. + MVPbkContactLinkArray* iContactGroupsInStore; + + // Phonebook asynchronous operation + MVPbkContactOperationBase* iOperation; + + // Flag to indicate whether it is required to notify + // iEngine after operation is complete. This happens + // when user has cancelled the operation during + // iOperation exists. + TBool iCancelCbRequested; + + TInt iLastError; + +public: + //Observer implentation from MVPbkContactStoreListObserver + void OpenComplete(); + + //observer implentation from MVPbkContactStoreObserver + + void StoreReady(MVPbkContactStore& aContactStore); + + void StoreUnavailable(MVPbkContactStore& aContactStore, + TInt aReason); + + void HandleStoreEventL( + MVPbkContactStore& aContactStore, + TVPbkContactStoreEvent aStoreEvent); + + TAny* ContactStoreObserverExtension(TUid aExtensionUid); + + + + + +public: + //Observer implementation for MVPbkBatchOperationObserver + + void StepComplete( + MVPbkContactOperationBase& aOperation, + TInt aStepSize ); + + TBool StepFailed( + MVPbkContactOperationBase& aOperation, + TInt aStepSize, TInt aError ); + + void OperationComplete( + MVPbkContactOperationBase& aOperation ); + + TAny* BatchOperationObserverExtension( + TUid aExtensionUid ) ; + + + //-------------------------------------------- + //Observer implementation for MVPbkContactFindObserver + public: // Interface + + void FindCompleteL( MVPbkContactLinkArray* aResults ); + + void FindFailed( TInt aError ); + + TAny* ContactFindObserverExtension( + TUid aExtensionUid ); + + + + //-------------------------------------------- + //Observer implementation for MVPbkContactObserver + + public: + void ContactOperationCompleted(TContactOpResult aResult); + + void ContactOperationFailed + (TContactOp aOpCode, TInt aErrorCode, TBool aErrorNotified); + + TAny* ContactObserverExtension(TUid aExtensionUid) ; + //~MVPbkContactObserver(); + + //-------------------------------------------- + // Implementation of MPbk2ImageSetObserver: + public: + void Pbk2ImageSetComplete(MPbk2ImageOperation& aOperation); + void Pbk2ImageSetFailed(MPbk2ImageOperation& aOperation, TInt aError ); + }; + +class CCreatorContactFieldImpl; +class CCreatorContactField : public CBase, public MCreatorRandomDataField + { +public: + static CCreatorContactField* NewL(TInt aFieldType, const TDesC& aData); + static CCreatorContactField* NewL(TInt aFieldType, const TDesC8& aData); + static CCreatorContactField* NewL(TInt aFieldType, const TTime& aData); + + static CCreatorContactField* NewL(TInt aFieldType, TRandomLengthType aRandomLenType, TInt aRandomLen); + + ~CCreatorContactField(); + TInt FieldType(); + virtual void AddToContactL(CCreatorEngine* aEngine, MVPbkStoreContact& aContact, CCreatorVirtualPhonebook* aVPbk); + virtual void SetRandomParametersL( MCreatorRandomDataField::TRandomLengthType aRandomLenType = MCreatorRandomDataField::ERandomLengthDefault, + TInt aRandomLen = 0 ); + virtual void ParseL(CCommandParser* parser); + +private: + CCreatorContactField(); + void ConstructL(TInt aFieldType, const TDesC& aData); + void ConstructL(TInt aFieldType, const TDesC8& aData); + void ConstructL(TInt aFieldType, const TTime& aData); + CCreatorContactFieldImpl* pImpl; + }; + + +/** + * Virtual phonebook parameters + */ + + +class CVirtualPhonebookParameters : public CCreatorModuleBaseParameters + { +public: + void ParseL(CCommandParser* parser, TParseParams /*aCase = 0*/); + + TInt CVirtualPhonebookParameters::ScriptLinkId() const; + void CVirtualPhonebookParameters::SetScriptLinkId(TInt aLinkId); + RPointerArray iContactFields; + + HBufC* iGroupName; + TInt iContactsInGroup; + TInt iNumberOfPhoneNumberFields; + TInt iNumberOfURLFields; + TInt iNumberOfEmailAddressFields; + TInt iContactSetPtr; + RArray iLinkIds; // For contactgroup. Stores the linked contact ids. + +public: + CVirtualPhonebookParameters(); + ~CVirtualPhonebookParameters(); + +private: + TInt iLinkId; // For contact. Stores the contact id + }; + + + +#endif // __CREATORVIRTUALPHONEBOOK_H__