idlehomescreen/exths/inc/plugincontainer/caiplugincontainercontrol.h
changeset 0 f72a12da539e
--- /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 <e32base.h>
+#include <cenrepnotifyhandler.h>
+
+#include <babackup.h>
+
+#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<TPluginInfo> 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