diff -r 000000000000 -r f72a12da539e idlehomescreen/exths/inc/plugincontainer/caiplugincontainercontrol.h --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/idlehomescreen/exths/inc/plugincontainer/caiplugincontainercontrol.h Thu Dec 17 08:40:49 2009 +0200 @@ -0,0 +1,341 @@ +/* +* Copyright (c) 2002 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: +* It is the control container for the AI plugins +* +*/ + + +#ifndef CAIPLUGINCONTROL_H +#define CAIPLUGINCONTROL_H + +#include +#include + +#include + +#include "extrstandbycontainerif.h" + +#include "ExtrStandbyScr.h" + +#include "propertyobserver.h" + +enum TAIPluginAlignment + { + EAITop = 1, + EAIBottom + }; + +// Background layers +enum TIdleBgLayers + { + EAIBgLayerBackground = 0, + EAIBgLayerWallpaper = 1, + EAIBgLayersN = 2 + }; + +enum TAIPluginState + { + EAIPluginOff = 0, + EAIPluginOn, + EAIPluginError + }; + +// Structure containing plugin information +struct TPluginInfo + { + CExtrStandbyScr* iPlugin; + TBool iResizeable ; + TBool iOnScreen ; + TUid iPluginId; + TAIPluginAlignment iAlignment; + TAIPluginState iState; + TInt iWeight; + TInt32 iCRKeyId; + }; + +class CAknsLayeredBackgroundControlContext; + +// CLASS DECLARATION +/** +* It is the control for the Active Idle. +* +* @since 2.6 +*/ +NONSHARABLE_CLASS(CAIPluginContainerControl) : + public CExtrStandbyContainerIF, + public MCoeControlObserver, + public MCenRepNotifyHandlerCallback, + public MPropertyChangeHandler + { + public: // Constructors and destructor + + /** + * Two-phased constructor. + * @param aViewId View identifier. + * @param aContainer Container object. + * @return Pointer to the CAIPluginContainerControl object. + */ + static CAIPluginContainerControl* NewL(CCoeControl *aContainer) ; + /** + * Destructor. + */ + ~CAIPluginContainerControl(); + + public: // From CCoeControl + + /** + * From CCoeControl, returns the amount of component controls. + * @return amount of component controls. + */ + TInt CountComponentControls() const; + + /** + * From CCoeControl, returns a control by index. + * @param aIndex Index of the control. + * @return Control by index. + */ + CCoeControl* ComponentControl( TInt aIndex ) const; + + /** + * From CCoeControl, informs that the size is changed to update the + * sizes of component controls appropriately. + */ + void SizeChanged(); + + /** + * From CCoeControl, informs that the focus is changed + */ + void FocusChanged(TDrawNow aDrawNow); + + /** + * From CCoeControl, draws the contents of the view. + * @param aRect Area to be redrawn. + */ + void Draw( const TRect& aRect ) const; + + /** + * From CCoeControl, offers a key event to the view. + * @param aKeyEvent Information about the key event. + * @param aType Type of the event. + * @return Information which indicates whether the keypress + * was processed or not. + */ + TKeyResponse OfferKeyEventL( const TKeyEvent& aKeyEvent, + TEventCode aType ); + + /** + * From CCoeControl : Notifier for resourse changing + * @param aType : Type of resource change + */ + void HandleResourceChange( TInt aType ); + + /** + * From CCoeControl : Sets all the plugins dimmed. When dimmed the plugin must not draw anythings + * @param aDimmed + */ + void SetDimmed(TBool aDimmed); + + + /** + * From CCoeControl + * @param TTypeUid aId + */ + TTypeUid::Ptr CAIPluginContainerControl::MopSupplyObject(TTypeUid aId); + + public: // from CExtrStandbyContainerIF + + /** + * Start loading plugin + */ + void StartL(); + /** + * Sets mode for External Homescreen (Full screen or normal) + */ + void SetFullScreenMode(TBool aFullScreenMode); + + public: // from MCoeControlObserver + + void HandleControlEventL(CCoeControl* aControl,TCoeEvent aEventType); + + public: // From PropertyObserver + /** + * Called when a backup or restore operation either starts or ends. + * @param aBackupOperationAttributes Operation attributes + */ + void HandlePropertyChange(const TUid& aCategory, const TUint& aKey, const TInt& aValue); + + protected: // From MCenRepNotifyHandlerCallback + + void HandleNotifyGeneric(TUint32 aId); + + private: + + /** + * C++ constructor. + */ + CAIPluginContainerControl(); + + /** + * Symbian OS constructor. + */ + void ConstructL(CCoeControl* aContainer); + + + /** + * change the plugin focus + */ + void ChangeFocusPluginL( TInt aDirection ); + + /** + * focus on the default focusing plugin + */ + void FocusOnDefaultFocusingPlugin(TDrawNow aDrawNow=ENoDrawNow); + + /** + * Calculate the rect for each plugin and draw + */ + void CalculateRectPlugins(); + + /** + * Handle the Top Plugin + */ + void HandleTopPlugins(TInt& aTopPluginX, TInt& aBottomPluginX); + + /** + * Handle the bottom Plugin + */ + void HandleBottomPlugins(TInt& aTopPluginX, TInt& aBottomPluginX); + + /** + * Calculate the rect for a plugin (top or bottom allignment) + */ + void HandlePlugin(TInt aIndex, + TAIPluginAlignment aAlign, + TInt& aTopPluginX, + TInt& aBottomPluginX); + + /** + * Return the next visible plugin with content + */ + TInt NextVisiblePlugin(TInt aStartIndex); + + /** + * Return the previous visible plugin with content + */ + TInt PreviousVisiblePlugin(TInt aStartIndex); + + /** + * Return the index of the reduceable plugin with the lower weight + */ + TInt FindReduceablePlugin(TInt aOverRunHeight, TInt aCurrentIndex); + + /** + * Return the index of the plugin with the lower weight + */ + TInt FindLowerWeightPlugin(TInt aCurrentIndex); + + /** + * Reduce the plugin and move the others plugin till the current + */ + void ReducePlugin(TInt aPluginToBeReducedIndex,TInt aCurrentIndex,TInt aReduceHeight); + + /** + * Hide the plugin + */ + void HidePlugin(TInt aPluginIndex); + + /** + * Read Plugin Configuration + */ + void ReadPluginsConfigurationsL(); + + /** + * Load all the plugins + */ + void LoadPluginsL(); + + /** + * Load a specific plugin + */ + void LoadPluginL(TInt aIndex); + + /** + * Destroy all the plugins + */ + void DestroyPlugins(); + + /** + * Resets plugin state to default one + */ + void ResetToDefault( TPluginInfo& aPluginInfo ); + + /* + * Checks in which mode AI1 will be executed + * fullscreen or normal + * @since S60 3.2 + * @return TBool + */ + TBool IsInFullScreenModeL(); + + /* + * updates background bitmap + * @since S60 3.2 + * @return void + */ + void UpdateBackgroundL(); + + private: // Data + + // Current plugin Index + TInt iIndexPlugin; + + // Default focusing plugin Index + TInt iIndexDefaultFocusingPlugin; + + // Contains array of plugin loaded. + RPointerArray iPlugins; + + // Current plugin info + TPluginInfo* iCurrentPlugin ; + + // Container + CCoeControl* iContainer; //not own + + //Flag for a status change notification. + // This flag is used only if the notification come when the component is dimmed + TBool iContentStatusChangedNotification ; + + // Previous rect of the AI container + TRect iPrevRect; + + CRepository* iAIRepository; + CCenRepNotifyHandler* iNotifyHandler; + + // ?one_line_short_description_of_data + CPropertyObserver* iBackupObserver; + + // Background context. + CAknsLayeredBackgroundControlContext* iBgContext; + + // Current AI mode, fullscreen - ETrue / normal - EFalse + TBool iIsFullScreenMode; + + // Flag for checking if FW already started + TBool iStarted; + }; + +#endif // CAIPLUGINCONTROL_H + +// End of File