diff -r 000000000000 -r 2f259fa3e83a uifw/AvKon/inc/aknindicatorpopupcontent.h --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/uifw/AvKon/inc/aknindicatorpopupcontent.h Tue Feb 02 01:00:49 2010 +0200 @@ -0,0 +1,340 @@ +/* +* Copyright (c) 2007,2008 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: Content that is shown inside a universal status +* indicator popup. +* +*/ + + +#ifndef C_AKNINDICATORPOPUPCONTENT_H +#define C_AKNINDICATORPOPUPCONTENT_H + +// INCLUDES + +#include + +// FORWARD DECLARATIONS + +class CAknIndicatorPopupItem; +class CAknIndicatorPlugin; +class CAknDigitalClock; +class CAknBatteryIcon; +class CAknSignalIcon; +class MTouchFeedback; + +/** +* Class providing content for the status indicator popup. +* +* @lib avkon.lib +* @since 5.0 +*/ +NONSHARABLE_CLASS( CAknIndicatorPopupContent ) : public CAknControl + { +public: + + /** + * Control event types sent by the content to the parent. + */ + enum TAknIndicatorPopupEvent + { + /** + * Event sent for closing the popup when a link item is tapped. + */ + EAknIndicatorPopupTapEvent = 0x11 + }; + +public: + + /** + * Two-phased constructor. + * + * @return New instance of @c CAknIndicatorPopupContent. + */ + static CAknIndicatorPopupContent* NewL(); + + /** + * Two-phased constructor, which leaves the created instance + * on the cleanup stack. + * + * @return New instance of @c CAknIndicatorPopupContent. + */ + static CAknIndicatorPopupContent* NewLC(); + + /** + * Destructor. + */ + ~CAknIndicatorPopupContent(); + +public: // From base class @c CCoeControl. + + /** + * Returns the minimum size of the control. + * + * @return Minimum size. + */ + virtual TSize MinimumSize(); + + /** + * Handles changes to the control's resources. + * + * @aParam aType Type of resource change. + */ + virtual void HandleResourceChange( TInt aType ); + + /** + * Handles pointer events. + * + * @param aPointerEvent The pointer event. + */ + virtual void HandlePointerEventL( const TPointerEvent& aPointerEvent ); + + /** + * Returns the amount of component controls. + * + * @return The component control count. + */ + virtual TInt CountComponentControls() const; + + /** + * Returns the pointer to a component control. + * + * @param aIndex Index of the component control. + * + * @return The component control. + */ + virtual CCoeControl* ComponentControl( TInt aIndex ) const; + + /** + * Sets the container window of the control. + * + * @param aContainer The container window. + */ + virtual void SetContainerWindowL( const CCoeControl& aContainer ); + +public: // New methods. + + /** + * Adds an indicator item to the popup. + * + * @param aIndicatorUid UID of the indicator to be added. + * @param aText Text to be displayed with the indicator icon. + * @param aTextType Type of the text (link or description). + * @param aIcon Indicator icon, default icon used if @c NULL. + * @param aPlugin Pointer to the indicator's ECOM plugin. + * @param aPriority Priority of the item, items of lowest priority + * value will be shown in the popup if all + * of them do not fit. + */ + void AddItemL( TInt aIndicatorUid, + const TDesC& aText, + TInt aTextType, + const CGulIcon* aIcon, + CAknIndicatorPlugin* aPlugin, + TInt aPriority ); + + /** + * Removes an indicator item from the popup. + * + * @param aIndicatorUid UID of the indicator to be removed. + */ + void RemoveItem( TInt aIndicatorUid ); + + /** + * Indicate the content about the visibility of the popup. + * + * @param aVisible @c ETrue if the content is visible, + * @c EFalse otherwise. + */ + void SetContentVisible( TBool aVisible ); + + /** + * Sets the battery indicator state. + * + * @param aState New battery indicator state. + */ + void SetBatteryStateL( TInt aState ); + + /** + * Sets the signal indicator state. + * + * @param aState New signal indicator state. + */ + void SetSignalStateL( TInt aState ); + + /** + * Updates the indicator's text and icon on the popup. + * Called by the indicator ECOM plugins when they wish + * to update the indicator item on the popup. + * + * @param aUid UID of the indicator to be updated. + */ + void HandlePluginUpdateL( TInt aUid ); + + /** + * Updates the text and icon shown on the popup for all active indicators. + * Called by the framework when the popup is shown to ensure + * valid data on the popup. + */ + void UpdateAllIndicatorsL(); + +private: + + /** + * Default constructor. + */ + CAknIndicatorPopupContent(); + + /** + * 2nd phase constructor. + */ + void ConstructL(); + + /** + * Sorts the indicators items array in priority order. + */ + void PrioritizeIndicatorsL(); + + /** + * For supporting area registry -based Tactile Feedback. + */ + void UpdateFeedbackAreas(); + + /** + * Updates the graphics used by the popup + * when active skin is changed. + */ + void LoadIconsL(); + + /** + * Which popup item get pointer event? It has to be + * EAknIndicatorPluginLinkText type. + * + * @param aPoint position of the pointer event. + * @return a pointer of item, NULL means no item get pointer event. + */ + CAknIndicatorPopupItem* TappedItem(const TPoint& aPoint) const; + + +private: // From base class @c CCoeControl. + + /** + * Sets new rect for the items + */ + virtual void SizeChanged(); + + /** + * Draws the control, called by window server. + * + * @param aRect The region of the control to be redrawn. + * Co-ordinates are relative to the control's + * origin (top left corner). + */ + virtual void Draw( const TRect& aRect ) const; + +private: // Member data + + /** + * Array which holds pointers to the indicator items. + */ + RPointerArray iItems; + + /** + * Clock control. + * Own. + */ + CAknDigitalClock* iClock; + + /** + * Battery icon control. + * Own. + */ + CAknBatteryIcon* iBattery; + + /** + * Battery indicator plugin. + * Own. + */ + CAknIndicatorPlugin* iBatteryPlugin; + + /** + * Signal icon control. + * Own. + */ + CAknSignalIcon* iSignal; + + /** + * Signal indicator plugin. + * Own. + */ + CAknIndicatorPlugin* iSignalPlugin; + + /** + * Touch responsive rectangle of the battery pane. + */ + TRect iBatteryArea; + + /** + * Touch responsive rectangle of the signal pane. + */ + TRect iSignalArea; + + /** + * Signal state. + */ + TInt iSignalState; + + /** + * Internal state flags. + */ + TInt iFlags; + + /** + * For Tactile Feedback support + */ + MTouchFeedback* iFeedback; + + /** + * Separator line graphics. + * Own. + */ + CGulIcon* iSeparatorIcon; + + /** + * Switch of press down effect. + */ + TBool iEnablePressedDownState; + + /** + * Area of press down effect on signal. + */ + TRect iSignalPressedDownArea; + + /** + * Area of press down effect on clock. + */ + TRect iClockPressedDownArea; + + /** + * Previous pressed down item. + * Not own. + */ + CBase* iPreviousPressedDownItem; + + /** + * Current rect of press down effect + */ + TRect iPressedDownRect; + }; + +#endif // C_AKNINDICATORPOPUPCONTENT_H