diff -r 000000000000 -r e686773b3f54 ccservices/cmsservices/cmscontactor/inc/cmsoperationhandlerbase.h --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/ccservices/cmsservices/cmscontactor/inc/cmsoperationhandlerbase.h Tue Feb 02 10:12:17 2010 +0200 @@ -0,0 +1,225 @@ +/* +* Copyright (c) 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: Base class for all CMS contactor's operations. +* +*/ + + +#ifndef C_CMSOPERATIONHANDLERBASE_H +#define C_CMSOPERATIONHANDLERBASE_H + +#include + +#include "cmscontactfield.h" + +/** + * CCMSOperationHandlerBaseBase + * Base class for all CMS contactor's operations. + * + * @code + * + * @endcode + * + * @since S60 v5.0 + */ +class CCMSOperationHandlerBase : public CBase + { + +public: + + /** + * Constructor. + */ + CCMSOperationHandlerBase( + const RArray& aContactFieldTypesFilter, + const RPointerArray& aItemArray, + const TCmsContactor::TCMSCommLaunchFlag aCommLaunchFlag ); + + /** + * Destructor. + */ + virtual ~CCMSOperationHandlerBase(); + + /** + * Interface method. + * Every operation must have a ExecuteLD to get started execute of operation. + * + * @since S60 v5.0 + */ + virtual void ExecuteLD() = 0; + +protected: + // Interface + + /** + * Second phase constructor + */ + void BaseConstructL(); + + /** + * Initiaties operation. + * + * @since S60 v5.0 + * @param aContactFieldItem: Selected field item to complete operation. + */ + virtual void + StartOperationL( const CCmsContactFieldItem& aContactFieldItem) = 0; + + /** + * Method for preparing given data for operation. + * Must run before calling LaunchDialogL. + * + * @since S60 v5.0 + * @param aCbaResourceId: Resource Id of softkey buttons. + * @param aHeaderResourceId: Resource Id of header string. + */ + virtual void PrepareDataL( TInt aCbaResourceId, TInt aHeaderResourceId, CCmsContactFieldItem::TCmsDefaultAttributeTypes aDefaultType); + + /** + * Launches actual dialog if needed. (more than 1 items to select from) + * + * @since S60 v5.0 + * @return reference of selected field item. + */ + const CCmsContactFieldItem& LaunchDialogL(); + + /** + * Returns the full name string of contact. (firstname + lastname) + * Ownership transferred to caller. + * + * @since S60 v5.0 + * @return the name string. + */ + TDesC* GetNameStringLC(); + +private: + // Own implement + + /** + * Helper function for preparing data. + * Leaves with KErrArgument if there is no data at all. + * + * @since S60 v5.0 + */ + void PrepareDialogL(); + + /** + * Helper function for filtering correct contactfields. + * + * @since S60 v5.0 + * @param aType: type of required contact field type. + */ + TBool IsNeededType( CCmsContactFieldItem::TCmsContactField aType); + + /** + * Helper function for preparing header data. + * + * @since S60 v5.0 + * @param aHeaderResourceId: Resource Id of header string. + */ + void PrepareHeaderL( TInt aHeaderResourceId); + + /** + * Helper function for allocating name strings. + * + * @since S60 v5.0 + */ + void SetNameStringL(); + + /** + * Helper function for solving default number + * Leaves with KErrNotFound + * + * @since S60 v5.0 + * @return CCmsContactFieldItem + */ + const CCmsContactFieldItem* GetDefaultNumberItemL(); + +protected: + // data + + /** + * Contact fields given. + * Not Own. + */ + const RPointerArray& iItemArray; + +private: + // data + + /** + * For filtering correct contact field types. + * Not Own. + */ + const RArray + & iContactFieldTypesFilter; + + /** + * Modified array for making listbox query. + * Own. + */ + RPointerArray iQueryArray; + + /** + * Environment. + * Not Own. + */ + CCoeEnv& iCoeEnv; + + /** + * Resource id of used softkeys. + * Own. + */ + TInt iCbaResourceId; + + /** + * Heading text of dialog. + * Own. + */ + HBufC* iHeading; + + /** + * Fullname + * Own. + */ + TDesC* iFullName; + + /** + * Offset of loaded resource file. + * Own. + */ + TInt iResourceOffset; + + /** + * Found items. + * Own. + */ + TInt iContactFieldItemsFound; + + /** + * Communication launching related information + * Own. + */ + TCmsContactor::TCMSCommLaunchFlag iCommLaunchFlag; + + /** + * Default type + * Own. + */ + CCmsContactFieldItem::TCmsDefaultAttributeTypes iDefaultType; + }; + +#endif // C_CMSOPERATIONHANDLERBASE_H + +// End of File