ccservices/cmsservices/cmscontactor/inc/cmsoperationhandlerbase.h
changeset 0 e686773b3f54
--- /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 <e32base.h>
+
+#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<CCmsContactFieldItem::TCmsContactField>& aContactFieldTypesFilter,
+            const RPointerArray<CCmsContactField>& 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<CCmsContactField>& iItemArray;
+
+private:
+    // data
+
+    /**
+     * For filtering correct contact field types.
+     * Not Own.
+     */
+    const RArray<CCmsContactFieldItem::TCmsContactField>
+            & iContactFieldTypesFilter;
+
+    /**
+     * Modified array for making listbox query.
+     * Own.
+     */
+    RPointerArray<CCmsContactField> 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