diff -r 000000000000 -r e686773b3f54 phonebookui/Phonebook2/inc/CPbk2ContactEditorDlg.h --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/phonebookui/Phonebook2/inc/CPbk2ContactEditorDlg.h Tue Feb 02 10:12:17 2010 +0200 @@ -0,0 +1,200 @@ +/* +* 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: Phonebook 2 contact editor dialog. +* +*/ + + +#ifndef CPBK2CONTACTEDITORDLG_H +#define CPBK2CONTACTEDITORDLG_H + +// INCLUDES +#include +#include +#include +#include +#include "TPbk2ContactEditorParams.h" +#include "MPbk2ContactEditorContactRelocator.h" +#include "MPbk2DialogEliminator.h" + +// FORWARD DECLARATIONS +class MPbk2ContactEditorStrategy; +class CPbk2FieldPropertyArray; +class CPbk2StoreSpecificFieldPropertyArray; +class CPbk2PresentationContact; +class CPbk2ContactEditorDlgImpl; +class CPbk2ContactRelocator; +class MPbk2ApplicationServices; + + +// CLASS DECLARATION + +/** + * Phonebook 2 contact editor dialog. + */ +class CPbk2ContactEditorDlg : public CBase, + public MPbk2DialogEliminator, + public MPbk2ContactRelocatorObserver, + public MPbk2ContactEditorContactRelocator, + private MPbk2EditedContactObserver + { + public: // Constructors and destructor + + /** + * Creates a new instance of this class. + * + * @param aParams Contact editor parameters. + * @param aContact The contact to edit. Ownership is taken. + * @param aObserver Observer for the contact being edited. + * @return A new instance of this class. + */ + IMPORT_C static CPbk2ContactEditorDlg* NewL( + TPbk2ContactEditorParams& aParams, + MVPbkStoreContact* aContact, + MPbk2EditedContactObserver& aContactObserver ); + + /** + * Creates a new instance of this class. + * + * @param aParams Contact editor parameters. + * @param aContact The contact to edit. Ownership is taken. + * @param aObserver Observer for the contact being edited. + * @param aAppServices Application services. + * @param aTitleText ownership is transferred, if function doesn't leave + * @param aEditorFieldsId Supported editor fields resource id (@see PbkPresentation.rss : R_PHONEBOOK_FIELD_PROPERTIES) + * @return A new instance of this class. + */ + IMPORT_C static CPbk2ContactEditorDlg* NewL( + TPbk2ContactEditorParams& aParams, + MVPbkStoreContact* aContact, + MPbk2EditedContactObserver& aContactObserver, + MPbk2ApplicationServices* aAppServices, + HBufC* aTitleText = NULL, + TInt aEditorFieldsId = KErrNotFound ); + + /** + * Destructor. + */ + virtual ~CPbk2ContactEditorDlg(); + + public: // Interface + + /** + * Executes the dialog. + */ + IMPORT_C void ExecuteLD(); + + public: // From MPbk2DialogEliminator + void RequestExitL( + TInt aCommandId ); + void ForceExit(); + void ResetWhenDestroyed( + MPbk2DialogEliminator** aSelfPtr ); + + private: // From MPbk2ContactRelocatorObserver + void ContactRelocatedL( + MVPbkStoreContact* aRelocatedContact ); + void ContactRelocationFailed( + TInt aReason, + MVPbkStoreContact* aContact ); + void ContactsRelocationFailed( + TInt aReason, + CVPbkContactLinkArray* aContacts ); + void RelocationProcessComplete(); + + private: // From MPbk2ContactEditorContactRelocator + TBool RelocateContactL( + TPbk2RelocationQyeryPolicy aQueryPolicy ); + TBool RelocateContactL( + TInt aAddItemFieldTypeResourceId, + const TDesC& aAddItemXspName, + TPbk2RelocationQyeryPolicy aQueryPolicy ); + TBool IsPhoneMemoryInConfigurationL(); + void EditorReadyL(); + + private: // From MPbk2EditedContactObserver + void ContactEditingComplete( + MVPbkStoreContact* aEditedContact ); + void ContactEditingDeletedContact( + MVPbkStoreContact* aEditedContact ); + void ContactEditingAborted(); + + private: // Implementation + CPbk2ContactEditorDlg( + TPbk2ContactEditorParams& aParams, + MPbk2EditedContactObserver& aContactObserver, + MPbk2ApplicationServices* aAppServices = NULL, + TInt aEditorFieldsId = KErrNotFound ); + void ConstructL( MVPbkStoreContact* aStoreContact ); + void HandleRelocationProcessCompleteL(); + void CreatePresentationContactL(); + void CreatePresentationContactL(MVPbkStoreContact& aStoreContact); + TBool ContinueAfterRelocation(); + TBool IsTemplateFieldL( TInt aResId, const TDesC& aXSpName ); + + private: // Types + /// Relocation states + enum TRelocationState + { + ERelocationDueToItemAddition, + ERelocationCancelled, + ERelocationFailed + }; + + private: // Data + /// Own: Editor dialog implementation + CPbk2ContactEditorDlgImpl* iImplementation; + /// Ref: Dialog eliminator + MPbk2DialogEliminator* iEliminator; + /// Ref: Editor parameters + TPbk2ContactEditorParams& iParams; + /// Own: Store contact + MVPbkStoreContact* iStoreContact; + /// Own: Phonebook 2 field properties + CPbk2FieldPropertyArray* iFieldProperties; + /// Own: Store specific properties + CPbk2StoreSpecificFieldPropertyArray* iSpecificFieldProperties; + /// Own: Presentation level contact + CPbk2PresentationContact* iContact; + /// Ref: Observer for the contact being edited + MPbk2EditedContactObserver& iContactObserver; + /// Own: A strategy for the editor + MPbk2ContactEditorStrategy* iEditorStrategy; + /// Own: Add item field type resource id + /// used in contact relocation process + TInt iAddItemFieldTypeResourceId; + /// Own: Add item field type xSP name + /// used in contact relocation process + HBufC* iAddItemFieldTypeXspName; + /// Own: Contact relocator + CPbk2ContactRelocator* iContactRelocator; + /// Ref: Indicates relocation state + TBitFlags8 iRelocationState; + /// Ref: A pointer to stack variable in ExecuteLD for knowing + /// if the destructor has already been called + TBool* iDestroyedPtr; + /// Ref: Pointer to dialog eliminator + MPbk2DialogEliminator** iSelfPtr; + /// Ref: Applications services + MPbk2ApplicationServices* iAppServices; + /// Own Custom title text + HBufC* iTitleText; + // REF: Custom editor fields + TInt iEditorFieldsId; + + }; + +#endif // CPBK2CONTACTEDITORDLG_H + +// End of File