uifw/AvKon/inc/aknindicatorpopupcontent.h
changeset 0 2f259fa3e83a
child 59 978afdc0236f
--- /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 <AknControl.h>
+
+// 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<CAknIndicatorPopupItem> 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