uifw/AvKon/inc/aknstatuspanedatapublisher.h
changeset 0 2f259fa3e83a
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/uifw/AvKon/inc/aknstatuspanedatapublisher.h	Tue Feb 02 01:00:49 2010 +0200
@@ -0,0 +1,283 @@
+/*
+* Copyright (c) 2006,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:  AVKON internal publisher for system owned status pane data.
+*
+*/
+
+
+#ifndef C_AKNSTATUSPANEDATAPUBLISHER_H
+#define C_AKNSTATUSPANEDATAPUBLISHER_H
+
+// INCLUDES
+#include <e32std.h>
+#include <e32base.h>
+#include <e32property.h>
+#include <AknPreviewPopUpObserver.h>
+
+class CAknStatusPanePublisherData;
+class CAknIndicatorPlugin;
+class CAknIndicatorPopup;
+
+/**
+* This class is used to publish system controlled status pane data.
+*
+* @since S60 3.2
+* @lib avkon.lib
+*
+*/
+NONSHARABLE_CLASS( CAknStatusPaneDataPublisher ) : public CBase,
+                                                   public MAknPreviewPopUpObserver
+    {
+public:
+
+    /**
+    * Two-phased constructor.
+    */
+    IMPORT_C static CAknStatusPaneDataPublisher* NewL();
+
+    /**
+    * Destructor.
+    */
+    ~CAknStatusPaneDataPublisher();
+
+    /**
+    * Publishes the current data.
+    */
+    IMPORT_C void PublishDataL();
+
+    /**
+    * Sets the ID of the current foreground app's subscriber.
+    *
+    * @param  aId  ID of the subscriber.
+    */
+    IMPORT_C void SetForegroundSubscriberId( TInt aId );
+
+    /**
+    * Sets the battery level.
+    *
+    * @param  aLevel  New battery level.
+    */
+    IMPORT_C void SetBatteryLevel( TInt aLevel );
+
+    /**
+    * Sets the battery re-charge indication on/off.
+    *
+    * @param  aRecharging  @c ETrue to set recharging animation on,
+    *                      @c EFalse otherwise.
+    */
+    IMPORT_C void SetRecharge( TBool aRecharging );
+
+    /**
+    * Sets the signal level.
+    *
+    * @param  aLevel  New signal level.
+    */
+    IMPORT_C void SetSignalLevel( TInt aLevel );
+
+    /**
+    * Sets the signal icon (GPRS, EDGE, WCDMA, etc.)
+    *
+    * @param  aIcon  The icon state to be set.
+    */
+    IMPORT_C void SetSignalIcon( TInt aIcon );
+
+    /**
+    * Sets flags for the status pane incall bubble.
+    *
+    * @param  aFlags  Flags to be set, @see TAvkonIncallStatusBubbleFlags
+    *                 in @c avkon.hrh.
+    */
+    IMPORT_C void SetIncallBubbleFlags( TInt aFlags );
+
+    /**
+    * Sets wheter incall status bubble is to be shown/not shown
+    * in "usual" status pane layouts.
+    *
+    * @param  aAllowed  @c ETrue to shown incall status bubble in
+    *                   "usual" status pane layouts, @c EFalse
+    *                   otherwise.
+    */
+    IMPORT_C void SetIncallBubbleAllowedInUsual( TBool aAllowed );
+
+    /**
+    * Sets wheter incall status bubble is to be shown/not shown
+    * in "usual" status pane layouts.
+    *
+    * @param  aAllowed  @c ETrue to shown incall status bubble in
+    *                   "usual" status pane layouts, @c EFalse
+    *                   otherwise.
+    */
+    IMPORT_C void SetIncallBubbleAllowedInUsual( TBool aAllowed, const TUint64& aClientId );
+    
+    /**
+    * Sets wheter incall bubble is to be shown/not shown
+    * in "idle" status pane layouts.
+    *
+    * @param  aAllowed  @c ETrue to shown incall status bubble in
+    *                   "idle" status pane layouts, @c EFalse
+    *                   otherwise.
+    */
+    IMPORT_C void SetIncallBubbleAllowedInIdle( TBool aAllowed );
+
+    /**
+    * Sets status indicator state.
+    * Possible states are:
+    *   - EAknIndicatorStateOff
+    *   - EAknIndicatorStateOn
+    *   - EAknIndicatorStateAnimate
+    *
+    * @param  aUid    UID of the indicator.
+    * @param  aState  New state of the indicator, @see indicator states
+    *                 in @c avkon.hrh.
+    */
+    IMPORT_C void SetIndicatorState( TUid aUid, TInt aState );
+
+    /**
+    * Handles indicator tap event.
+    *
+    * @param  aIndicatorUid  UID of the indicator which received the tap event.
+    */
+    IMPORT_C void HandleIndicatorTapL( TUid aIndicatorUid );
+
+    /**
+    * Clears status indicator states.
+    */
+    void ClearIndicatorStates();
+
+    /**
+    * Sets the battery icon state.
+    * Possible states are:
+    *   - EAknBatteryIndicatorNormal
+    *   - EAknBatteryIndicatorPowerSave
+    *
+    * @param  aIcon  ID of the battery state, @see TAknBatteryIndicatorStates
+    *                in @c avkon.hrh.
+    */
+    IMPORT_C void SetBatteryIcon( TInt aIcon );
+    
+    /**
+    * Calculate and set the indicator popup's position 
+    * 
+    */
+    IMPORT_C void SetIndicatorPopupPosition();
+    
+public: // From base class @c MAknPreviewPopUpObserver.
+
+    /**
+    * Called by the preview popup when an appropriate event takes place.
+    *
+    * @param  aController  Pointer to the sender of the event.
+    * @param  aEvent       Event type.
+    */
+    virtual void HandlePreviewPopUpEventL(
+        CAknPreviewPopUpController* aController,
+        TPreviewPopUpEvent aEvent );
+
+private:
+
+    /**
+    * Data structure to hold all indicators because only visible ones
+    * (currently 3-6 depending on the layout) in the UI are published.
+    */
+    struct TAknStatusIndicator
+        {
+        TAknStatusIndicator() : iUid( 0 ),
+                                iNarrowPriority( 0xFF ),
+                                iWidePriority( 0xFF ),
+                                iState( 0 ),
+                                iPluginLoaded( EFalse ),
+                                iPlugin( NULL ),
+                                iPopupItemExists( EFalse )
+        {};
+
+        TInt                 iUid;
+        TInt                 iNarrowPriority;
+        TInt                 iWidePriority;
+        TInt                 iState;
+        TBool                iPluginLoaded;
+        CAknIndicatorPlugin* iPlugin; // Own
+        TBool                iPopupItemExists;
+        };
+
+    /**
+    * Symbian second-phase constructor.
+    */
+    void ConstructL();
+
+    /**
+    * Standard constructor
+    */
+    CAknStatusPaneDataPublisher();
+
+    /**
+    * Sets status indicator state.
+    * Possible states are:
+    *   - EAknIndicatorStateOff
+    *   - EAknIndicatorStateOn
+    *   - EAknIndicatorStateAnimate
+    *
+    * @param  aUid    UID of the indicator.
+    * @param  aState  New state of the indicator, @see indicator states
+    *                 in @c avkon.hrh.
+    */
+    void SetIndicatorStateL( TUid aUid, TInt aState );
+
+    /**
+    * Prioritizes status indicators.
+    */
+    void PrioritizeIndicatorsL();
+
+    /**
+    * Loads the ECOM-plugin of an indicator.
+    *
+    * @param  aIndicator  @c TAknStatusIndicator data structure
+    *                     of the indicator.
+    */
+    void LoadIndicatorPlugin( TAknStatusIndicator& aIndicator );
+    
+    /**
+    * Gets the default description for a status indicator
+    * to be displayed in the status indicator popup.
+    *
+    * @param          aUid   UID of the indicator.
+    * @param[in,out]  aText  Text to be displayed in the popup.
+    */
+    void GetDefaultIndicatorTextL( TInt aUid, TDes& aText );
+
+private:
+
+    /** Property for server updated status pane state data. */
+    RProperty iProperty;
+
+    /** Data structure to hold status pane state data. */
+    CAknStatusPanePublisherData* iStatusPaneStateData;
+
+    /** Array containing the status indicators information. */
+    RArray<TAknStatusIndicator> iIndicators;
+    
+    /**
+    * Universal status indicator popup.
+    * Own.
+    */
+    CAknIndicatorPopup* iPopup;
+
+    /**
+    * Handle to the Autolock state property.
+    * This is checked to disable universal indicator popup
+    * when device lock is active.
+    */ 
+    RProperty iAutolockStateProperty;
+    };
+
+#endif // C_AKNSTATUSPANEDATAPUBLISHER_H