diff -r 000000000000 -r 15bf7259bb7c uiacceltk/hitchcock/ServerCore/Inc/alfwindowmanager.h --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/uiacceltk/hitchcock/ServerCore/Inc/alfwindowmanager.h Tue Feb 02 07:56:43 2010 +0200 @@ -0,0 +1,280 @@ +/* +* Copyright (c) 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: Manages window and plugin life cycles +* +*/ + + +#ifndef __ALFWINDOWMANAGER_H__ +#define __ALFWINDOWMANAGER_H__ + +#include +#include + +class CAlfHierarchyModel; +class CAlfWindow; +class CAlfWindowFxPlugin; +class CAlfWindowBuffer; +class CAlfStreamerBridge; +class TAlfBridgerData; +class TAlfWindowAttributes; +class TAlfWindowCommandBufferAttributes; + +/** + * CAlfWindowManager + * + * @lib alfappservercore.dll + * @since S60 5.0 + */ +NONSHARABLE_CLASS(CAlfWindowManager): public CBase + { +public: + + static CAlfWindowManager* NewL(CAlfHierarchyModel* aAlfHierarchy); + + virtual ~CAlfWindowManager(); + + // Utils + /** + * CreateNewWindowL + * + * @since S60 5.0 + * @param aIndex + * @param aSizeInPixels + * @return New window + */ + IMPORT_C CAlfWindow* CreateNewWindowL(TUint aIndex, const TSize& aSizeInPixels); + + /** + * DestroyWindow + * + * @since S60 5.0 + * @param aWindow + */ + IMPORT_C void DestroyWindow(CAlfWindow& aWindow); + + /** + * EnableNewWindowNotificationsL + * + * @since S60 5.0 + * @param aPlugin + * @param aEnable New notification state + */ + IMPORT_C void EnableNewWindowNotificationsL(CAlfWindowFxPlugin& aPlugin, + TBool aEnable = ETrue); + + /** + * EnableDestroyWindowNotificationsL + * + * @since S60 5.0 + * @param aPlugin + * @param aEnable New notification state for window destruction. + */ + + IMPORT_C void EnableDestroyWindowNotificationsL(CAlfWindowFxPlugin& aPlugin, + TBool aEnable = ETrue); + /** + * ReserveL + * + * Reserves exclusive right to use the window. + * Leaves with value KErrNotFound, if window is not found. + * Leaves with value KErrInUse, If window is already reserved. + * + * @since S60 5.0 + * @param aId + * @param aReserveBuffer reserve data buffer for effects + * @return the reserved window + */ + IMPORT_C CAlfWindow* ReserveL( const TWindowIdentifier& aId, TBool aReserveBuffer = ETrue ); + + /** + * Release + * + * Releases window + * + * @since S60 5.0 + * @param aWindow + * @param aReserveBuffer release the data buffer reserved for effects + */ + IMPORT_C void Release( CAlfWindow& aWindow, TBool aReserveBuffer = ETrue ); + + /** + * aWindow + * + * @since S60 5.0 + + * @return screen id + */ + IMPORT_C TInt ScreenId() const; + + #ifdef RND_FXPLUGIN_FIX + + /** + * aWindow + * + * @since S60 5.0 + + * @return screen id + */ + IMPORT_C void GetWinIdListL(RArray& aWinIdList); + + #endif + + /** + * Find all windows whose Window Server Group Id matches the one given as input + * + * @param aWsGroupId Window server group id + * @param aWinIdList list of window info structures whose group id matches the group given + * + */ + IMPORT_C void GetWinIdListL( TInt aWsGroupId, RArray& aWinIdList ); + + /** + * Find all windows whose Window Server Group Id matches the one given as input + * The purpose is to be able to convert from window server identifiers to alf indentifiers + * + * @param aWsGroupId Window server group id + * @param aClientWindowHandle handle of a single window + * @param aWinInfoList list of window info structures whose group id matches the group given + * if aClientWindowHandle != KErrNotFound, it must also match + * + */ + IMPORT_C void GetWinInfoListL( TInt aWsGroupId, TInt aClientWindowHandle, RArray& aWinInfoList ); + + // Internal Utils + + /** + * MoveWindow + * + * @since S60 5.0 + * @param aWindow + * @param aIndex New index for the window. The topmost is having index 0. + */ + void MoveWindow(CAlfWindow& aWindow, TInt aIndex); + + /** + * SetWindowVisibility + * + * @since S60 5.0 + * @param aWindow + * @param aVisible New visibility state + */ + void SetWindowVisibility(CAlfWindow& aWindow, TBool aVisible); + + /** + * ContentReady + * + * Call to ContentReady will trigger update for all textures. + * + * @since S60 5.0 + * @param aWindow + * @param aOutBuffer + */ + void ContentReady(CAlfWindow& aWindow, CAlfWindowBuffer* aOutBuffer); + + /** + * LoadPluginL + * + * @since S60 5.0 + * @param aPluginUid Id for the plugin to be created + */ + void LoadPluginL(const TUid& aPluginUid); + + /** + * DestroyPlugin + * + * @since S60 5.0 + * @param aPluginUid Id for the plugin to be destroyed + */ + void DestroyPlugin(const TUid& aPluginUid); + + /** + * PrepareNewFrame + * + * @since S60 5.0 + * @param aEstimatedInterval + */ + void PrepareNewFrame(TUint aEstimatedInterval); + + /** + * HandlePluginMsgL + * + * @since S60 5.0 + * @param aMessage Message for message + */ + void HandlePluginMsgL(const RMessage2& aMessage); + + /** + * CancelPluginMsg + * + * @since S60 5.0 + * @param aPluginUid Id of the plugin + * @param aMessageId Id for the message to be canceled + * @return ?description + */ + void CancelPluginMsg(const TUid& aPluginUid, TInt aMessageId); + + /** + * CreateNewWindowL + * + * @since S60 5.0 + * @param aIndex Order of window. Index 0 means the topmost. + * @param aInfo Window info + * @return ?description + */ + CAlfWindow* CreateNewWindowL(TUint aIndex, const TAlfWServInfo& aInfo); + + /** + * PostIt + * + * Posts command for asyncronous processing + * + * @since S60 5.0 + * @param aData Command data + * @return KErrNone, if data was succesfully posted. Otherwise an error code. + */ + IMPORT_C TInt PostIt(const TAlfBridgerData& aData); + + IMPORT_C CAlfStreamerBridge* Bridge(); + +private: // utils + + CAlfWindowManager(); + + void ConstructL(CAlfHierarchyModel* aAlfHierarchy); + + /** + * FindPlugin + * + * @since S60 5.0 + * @param ?arg1 ?description + * @return Pointer to requested plugin. 0 if the requested plugin was not found. + */ + CAlfWindowFxPlugin* FindPlugin(const TUid& aPluginUid); + + void BindWindowToHitchL(CAlfWindow* aWindow, CAlfWindowManager* aMgr); + + TAlfWindowAttributes* CreateWindowAttributes(TInt& aIndex); + + TAlfWindowCommandBufferAttributes* CreateWindowCommandBufferAttributes(TInt& aIndex); + +private: // data + + class TAlfWindowMgrData; + + TAlfWindowMgrData* iData; + }; + + +#endif \ No newline at end of file