diff -r 000000000000 -r 2f259fa3e83a uifw/AvKon/inc/aknstatuspanedatapublisher.h --- /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 +#include +#include +#include + +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 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