williamr@2: /* williamr@2: * Copyright (c) 2002-2007 Nokia Corporation and/or its subsidiary(-ies). williamr@2: * All rights reserved. williamr@2: * This component and the accompanying materials are made available williamr@2: * under the terms of the License "Symbian Foundation License v1.0" to Symbian Foundation members and "Symbian Foundation End User License Agreement v1.0" to non-members williamr@2: * which accompanies this distribution, and is available williamr@2: * at the URL "http://www.symbianfoundation.org/legal/licencesv10.html". williamr@2: * williamr@2: * Initial Contributors: williamr@2: * Nokia Corporation - initial contribution. williamr@2: * williamr@2: * Contributors: williamr@2: * williamr@2: * Description: Defines a public interface class MAknsControlContext and williamr@2: * related enumerations. williamr@2: * williamr@2: */ williamr@2: williamr@2: williamr@2: #ifndef AKNSCONTROLCONTEXT_H williamr@2: #define AKNSCONTROLCONTEXT_H williamr@2: williamr@2: // INCLUDES williamr@2: #include williamr@2: #include williamr@2: #include williamr@2: williamr@2: // DATA TYPES williamr@2: williamr@2: /** williamr@2: * Skin parameter types for MAknsControlContext::SupplySkinParameter. williamr@2: * williamr@2: * @since 2.0 williamr@2: */ williamr@2: enum TAknsCCParameter williamr@2: { williamr@2: // This enumeration is intentionally empty. williamr@2: }; williamr@2: williamr@2: /** williamr@2: * Values for skin object types (given as aObject parameter for williamr@2: * MAknsControlContext::SupplySkinObject). williamr@2: * williamr@2: * @since 2.0 williamr@2: */ williamr@2: enum TAknsCCObject williamr@2: { williamr@2: williamr@2: /** williamr@2: * Item ID for layout background. williamr@2: * williamr@2: * MAknsControlContext::SupplySkinObject williamr@2: * should return a pointer to TAknsBackground or @c NULL (default used). williamr@2: * williamr@2: * @since 2.0 williamr@2: */ williamr@2: EAknsCCOBackground = 0, williamr@2: williamr@2: /** williamr@2: * Pointer to parent context. williamr@2: * williamr@2: * MAknsControlContext::SupplySkinObject williamr@2: * should return a pointer to the parent context (of type williamr@2: * @c MAknsControlContext) or @c NULL (no parent context). williamr@2: * williamr@2: * @since 2.6 williamr@2: */ williamr@2: EAknsCCOParentContext = 1 williamr@2: }; williamr@2: williamr@2: /** williamr@2: * Control context type enumeration. williamr@2: * williamr@2: * @since 2.0 williamr@2: */ williamr@2: enum TAknsControlContextType williamr@2: { williamr@2: williamr@2: /** williamr@2: * Unknown type. The control context can only be assumed to be compatible williamr@2: * with MAknsControlContext. williamr@2: * williamr@2: * @since 2.0 williamr@2: */ williamr@2: EAknsControlContextTypeUnknown = 0, williamr@2: williamr@2: /** williamr@2: * The control context type for CAknsBasicBackgroundControlContext williamr@2: * (and derived types). williamr@2: * williamr@2: * @since 2.0 williamr@2: */ williamr@2: EAknsControlContextTypeBasic = 1, williamr@2: williamr@2: /** williamr@2: * The control context type for CAknsLayeredBackgroundControlContext williamr@2: * (and derived types). williamr@2: * williamr@2: * @since 2.0 williamr@2: */ williamr@2: EAknsControlContextTypeLayered = 2, williamr@2: williamr@2: /** williamr@2: * The control context type for CAknsListBoxBackgroundControlContext williamr@2: * (and derived types). williamr@2: * williamr@2: * @since 2.0 williamr@2: */ williamr@2: EAknsControlContextTypeListBox = 3, williamr@2: williamr@2: /** williamr@2: * The control context type for CAknsFrameBackgroundControlContext williamr@2: * (and derived types). williamr@2: * williamr@2: * @since 2.0 williamr@2: */ williamr@2: EAknsControlContextTypeFrame = 4, williamr@2: williamr@2: /** williamr@2: * The control context type for CAknsCombinedBackgroundControlContext williamr@2: * (and derived types). williamr@2: * williamr@2: * @since 3.2 williamr@2: */ williamr@2: EAknsControlContextTypeCombined = 5, williamr@2: williamr@2: /** williamr@2: * The control context type for CAknsMaskedFrameBackgroundControlContext williamr@2: * (and derived types). williamr@2: * williamr@2: * @since 3.2 williamr@2: */ williamr@2: EAknsControlContextTypeMasked = 6 williamr@2: }; williamr@2: williamr@2: // CLASS DECLARATIONS williamr@2: williamr@2: /** williamr@2: * Interface that provides context specific skin parameters. williamr@2: * This interface is used by AknsDrawUtils to query context specific parameters, williamr@2: * such as background override. Application should instantiate a class that williamr@2: * implements this interface and provide pointer to it using williamr@2: * @c MObjectProvider::MopSupplyObject in the appropriate control. williamr@2: * williamr@2: * This is a public class with exported functions. williamr@2: * The class is not intended for user derivation - concrete classes implementing williamr@2: * the interface are provided by the library. See williamr@2: * @c CAknsBasicBackgroundControlContext and williamr@2: * @c CAknsListBoxBackgroundControlContext for further details. williamr@2: * williamr@2: * @lib AknSkins.lib williamr@2: * williamr@2: * @since 2.0 williamr@2: */ williamr@2: class MAknsControlContext williamr@2: { williamr@2: public: // Type UID williamr@2: /** williamr@2: * Type ID declaration. williamr@2: * Type ID is used to make it possible to retrieve control context williamr@2: * through @c MObjectProvider::MopSupplyObject interface. williamr@2: */ williamr@2: DECLARE_TYPE_ID(0x10005a29) williamr@2: williamr@2: public: // Destructor williamr@2: williamr@2: /** williamr@2: * Destructor. williamr@2: * Destructor is provided only to enable deletion using base class williamr@2: * pointer. Caller should never delete control context retrieved through williamr@2: * @c MObjectProvider interface. williamr@2: */ williamr@2: inline virtual ~MAknsControlContext() {} williamr@2: williamr@2: public: // New functions williamr@2: williamr@2: /** williamr@2: * Provides context specific integer parameter. williamr@2: * williamr@2: * @since 2.0 williamr@2: * williamr@2: * @param aParam Type of the parameter to be retrieved. Possible values williamr@2: * are defined in ::TAknsCCParameter enumeration. williamr@2: * williamr@2: * @return Integer value as defined in ::TAknsCCParameter for the williamr@2: * particular parameter. For unknown or unhandled values zero must be williamr@2: * returned. williamr@2: */ williamr@2: virtual TInt SupplySkinParameter( TAknsCCParameter aParam ) =0; williamr@2: williamr@2: /** williamr@2: * Provides context specific object. williamr@2: * williamr@2: * @since 2.0 williamr@2: * williamr@2: * @param aObject Type of the object to be retrieved. Possible values williamr@2: * are defined in ::TAknsCCObject enumeration. williamr@2: * williamr@2: * @return Pointer to object as defined in ::TAknsCCObject for that williamr@2: * specific aObject parameter value. For unknown or unhandled values williamr@2: * @c NULL must be returned. williamr@2: */ williamr@2: virtual TAny* SupplySkinObject( TAknsCCObject aObject ) =0; williamr@2: williamr@2: /** williamr@2: * Determines whether this control context is compatible with the williamr@2: * given derived type. williamr@2: * williamr@2: * @since 2.0 williamr@2: * williamr@2: * @param aType Type of the derived control context class (one of williamr@2: * the values in TAknsControlContextType). williamr@2: * williamr@2: * @return ETrue if this control context instance is compatible with williamr@2: * the given type (i.e. can be casted to the corresponding concrete williamr@2: * class). EFalse otherwise. williamr@2: */ williamr@2: virtual TBool IsCompatibleWithType( williamr@2: const TAknsControlContextType aType ) const =0; williamr@2: williamr@2: /** williamr@2: * Updates the control context, if necessary. williamr@2: * This method is called by the framework before drawing with the williamr@2: * context. williamr@2: * williamr@2: * Base class implementation returns 0. williamr@2: * williamr@2: * @since 2.6 williamr@2: * williamr@2: * @return Return value reserved for future use. Currently returns 0. williamr@2: */ williamr@2: virtual TInt UpdateContext(); williamr@2: williamr@2: protected: // Reserved virtual functions williamr@2: williamr@2: /** williamr@2: * Reserved for future use. williamr@2: * williamr@2: * @since 2.0 williamr@2: */ williamr@2: virtual TInt Reserved2(); williamr@2: williamr@2: public: // New functions williamr@2: williamr@2: /** williamr@2: * Returns type UID pointer that can be used in MopSupplyObject. williamr@2: * williamr@2: * @since 2.0 williamr@2: * williamr@2: * @param aId Type UID, should be the same that was given as aId williamr@2: * parameter of MopSupplyObject. williamr@2: * williamr@2: * @param aContext Pointer to an MAknsControlContext instance. williamr@2: * williamr@2: * @return Type UID pointer containing aContext, or @c NULL type UID williamr@2: * pointer if given type UID does not match MAknsControlContext or williamr@2: * aContext is @c NULL. williamr@2: */ williamr@2: IMPORT_C static TTypeUid::Ptr SupplyMopObject( TTypeUid aId, williamr@2: MAknsControlContext* aContext ); williamr@2: williamr@2: }; williamr@2: williamr@2: #endif // AKNSCONTROLCONTEXT_H williamr@2: williamr@2: // End of File