diff -r 000000000000 -r e686773b3f54 phonebookui/Phonebook2/MapExtension/inc/cpmapcmd.h --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/phonebookui/Phonebook2/MapExtension/inc/cpmapcmd.h Tue Feb 02 10:12:17 2010 +0200 @@ -0,0 +1,252 @@ +/* +* 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: Execute Maps application. +* +*/ + +#ifndef CPMAPCMD_H +#define CPMAPCMD_H + +// INCLUDES +#include +#include +#include +#include +#include +#include +#include + +// FORWARD DECLARATIONS +class MPbk2CommandObserver; +class MPbk2ContactUiControl; +class MVPbkStoreContact; +class CPosLandmark; +class MPbk2ContactEditorControl; +class MPbk2ContactEditorControlExtension; +class MVPbkStoreContactField; +class TLocality; + +// CLASS DECLARATION + +/** + * Phonebook 2 show on map command object. + */ +class CPmapCmd : public CBase, + public MPbk2Command, + public MVPbkContactObserver + { + public: // Constructors and destructor + + /** + * Creates a new instance of this class. + * @param iEditorControl Editor control. + * @param aContact Contact store. + * @param aCommandId Command. + * @return A new instance of this class. + */ + static CPmapCmd* NewL( + MPbk2ContactEditorControl& iEditorControl, + MVPbkStoreContact& aContact, + TInt aCommandId ); + + /** + * Creates a new instance of this class. + * + * @param aUiControl UI control. + * @param aCommandId Command. + * @return A new instance of this class. + */ + static CPmapCmd* NewL( + MPbk2ContactUiControl& aUiControl, + TInt aCommandId ); + + /** + * Destructor. + */ + ~CPmapCmd(); + + public: //From MVPbkContactObserver + void ContactOperationCompleted( TContactOpResult aResult ); + void ContactOperationFailed( + TContactOp aOpCode, + TInt aErrorCode, + TBool aErrorNotified); + + public: // From MPbk2Command + void ExecuteLD(); + void AddObserver( + MPbk2CommandObserver& aObserver ); + void ResetUiControl( + MPbk2ContactUiControl& aUiControl ); + + public: // Implementation + /** + * Check if exist Maps Api provider. + * + * @return True if provider exist. + */ + static TBool CheckViewProviderL(); + + private: // Members + CPmapCmd( + MPbk2ContactUiControl& aUiControl, + TInt aCommandId ); + CPmapCmd( + MPbk2ContactEditorControl& iEditorControl, + MVPbkStoreContact& aContact, + TInt aCommandId ); + + void ConstructL(); + void FinishProcess(); + + /** + * Try to get address from contact editor + * + * @return Address group ID or EPbk2FieldGroupIdNone. + */ + TPbk2FieldGroupId GetAddressFromEditorView(); + + /** + * Try to get address from UI control + * + * @return Address group ID or EPbk2FieldGroupIdNone. + */ + TPbk2FieldGroupId GetAddressFromUiControl(); + + /** + * Try to get address if there is only one address in contact. + * + * @return Address group ID or EPbk2FieldGroupIdNone. + */ + TPbk2FieldGroupId GetAddressIfIsAlone(); + + /** + * Run show on Maps API. + * + * @param aAddressType Address to show. + */ + void EditorShowOnMapsL( TVPbkFieldTypeParameter aAddressType ); + + /** + * Run assign on Maps API. + * + * @param aAddressType Address to assign. + */ + void EditorAssignFromMapsL( TVPbkFieldTypeParameter aAddressType ); + + /** + * Updates Contact address fields. + * + * @param aLandmark fields returned from Maps API. + * @param aPositionField Type of CPosLandmark field. + * @param aVersitSubField Type of Contact field. + * @param aAddressType Address type. + */ + void UpdateFieldL( + const CPosLandmark& aLandmark, + _TPositionFieldId aPositionField, + TVPbkSubFieldType aVersitSubField, + TVPbkFieldTypeParameter aAddressType ); + + /** + * Updates Contact geocoordinates. + * + * @param aLocality object have geocoordinates. + * @param aAddressType Address type. + */ + void UpdateCoordsL( + TLocality& aLocality, + TVPbkFieldTypeParameter aAddressType ); + + /** + * Fills CPosLandmark object with Contact address fields. + * + * @param aLandmark object have geocoordinates. + * @param aAddressType Address type. + */ + void FillLandmarkL( + CPosLandmark& aLandmark, + TVPbkFieldTypeParameter aAddressType ); + + /** + * Fills CPosLandmark object with Contact geocoordinates. + * + * @param aLandmark object have geocoordinates. + * @param aAddressType Address type. + */ + TBool FillGeoLandmarkL( + CPosLandmark& aLandmark, + TVPbkFieldTypeParameter aAddressType ); + + /** + * Fills CPosLandmark object with geocoordinates. + * + * @param aLandmark object have geocoordinates. + * @param aDataText text with geocoordinates. + */ + TBool DoFillGeoLandmarkL( + CPosLandmark& aLandmark, + const TDesC& aDataText ); + + /** + * Get Control extension. + * + * @return Contact Editor Extension or NULL. + */ + MPbk2ContactEditorControlExtension* ControlExtension(); + + /** + * Shows querry for selecting address. + * + * @return Address group ID or EPbk2FieldGroupIdNone. + */ + TPbk2FieldGroupId SelectAddressL(); + + /** + * Check if exist address in Contact. + * + * @return True if any address exist in Contact. + */ + TBool IsAddressInContact(); + + /** + * Gets group id from Store Field. + * + * @param aField Store field. + * @return Address group ID or EPbk2FieldGroupIdNone. + */ + TPbk2FieldGroupId GetFieldGroupL( MVPbkStoreContactField& aField ); + + private: // Data + /// Ref: Contact editor control + MPbk2ContactEditorControl* iEditorControl; + /// Ref: Contact UI control + MPbk2ContactUiControl* iUiControl; + /// Ref: The edited contact + MVPbkStoreContact* iContact; + /// Ref: Command observer + MPbk2CommandObserver* iObserver; + /// Own: Map View Provider + CMnProvider* iMapViewProvider; + /// Own: Is in editor address view? + TBool iAddressView; + /// Own: command id + TInt iCommandId; + /// Own: Is in editor address view? + TBool iAddressUpdatePrompt; + }; + +#endif // CPMAPCMD_H + +// End of File