--- /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