/** Copyright (c) 2006 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: Client class for the alfredserver.exe**/#ifndef R_ALFCLIENT_H#define R_ALFCLIENT_H#include <alf/alfconstants.h>#include <alf/alfclientbase.h>#include "alf/alfvisual.h"#include "alf/alflayout.h"#include "alf/alfenv.h"#include "alf/alftexture.h"#include "alf/alfimage.h"#include "alf/alfroster.h"#include "alf/alfbatchbuffer.h"#include <AknsItemID.h>#include <gdi.h>/** * Alfred client. * * @lib alfclient.lib * @since S60 v3.2 */NONSHARABLE_CLASS( RAlfClient ): public RAlfClientBase {public: /** * Constructor */ RAlfClient(); /** * Disconnect from the server. Must be called before destruction (not just Close() ) */ void Disconnect();// Env /** * Sets the refresh mode. * * @Todo: should be protected with capability or deprecated completely(?) * @param aMode New refresh mode. * * @see TAlfRefreshMode */ void EnvSetRefreshMode( TAlfRefreshMode aMode ); /** * @Todo: should be protected with capability or deprecated completely(?) * Sets the maximum allowed frame rate. Specify 0.0 to use the default limit. * * @param aFrameRate New maximum frame rate in frames per second. */ void EnvSetMaxFrameRate( TReal32 aFrameRate ); /** * Continues normal display refreshing. If display refreshing is already * being done, calling this has no effect. This is called automatically * from inside the toolkit when something is done that may lead to a * visible change on a display. The application may also call this if it * has previously paused refresh with PauseRefresh(). */ void EnvContinueRefresh(); /** * Pauses display refreshing temporarily. This is called when it is clear * that any displays will not be updated soon. The application may call * this at times when it needs more processing time for other tasks. */ void EnvPauseRefresh(); /** * Called on manual refresh. */ void EnvRefreshCallBack(); /** * Determines which renderer is currently in use. Always returns the real * explicit identifier of the renderer, and not an ambiguous identifier * like "Default". */ TInt EnvRenderer() const; /** * Sets the interval before an idle notification is sent. * * @param aSeconds Threshold in milliseconds. */ void EnvSetIdleThreshold(TInt aMilliseconds);// Roster /** * Shows given control group in the roster using given display. * * @param aCntrlGroupHandle Handle to the server side object. * @param aWhere Where on the roster (top/under/middle/...) * @param aDisplayHandle Handle to the server side object. * @return Error code. */ TInt RosterShow( TInt aCntrlGroupHandle, TInt aWhere, TInt aDisplayHandle ); /** * Hides given control group. * * @param aCntrlGroupHandle Handle to the server side object. * @param aDisplayHandle Handle to the server side object. * @return Error code. */ TInt RosterHide( TInt aCntrlGroupHandle, TInt aDisplayHandle ); TInt RosterShowVisual( TInt aVisualHandle, TInt aDisplayHandle ); TInt RosterHideVisual( TInt aVisualHandle, TInt aDisplayHandle ); TInt RosterMoveVisualToFront( TInt aVisualHandle, TInt aDisplayHandle ); TInt RosterSetPointerEventObservers( TInt aFlags, TInt aCntrlHandle, TInt aDisplayHandle ); TInt RosterAddPointerEventObserver( TAlfPointerEventFlags aObserver, TInt aCntrlHandle, TInt aDisplayHandle ); TInt RosterRemovePointerEventObserver( TAlfPointerEventFlags aObserver, TInt aCntrlHandle, TInt aDisplayHandle ); TInt RosterSetPointerDragTreshold( TInt aCntrlHandle, const TAlfXYMetric& aXYMetric, TInt aDisplayHandle ); TInt RosterDisableLongTapEventsWhenDragging( TInt aCntrlHandle, TBool aDisable, TInt aDisplayHandle );// Static// Texture /** * Updates owner id. * This method must be called before calling other texture related methods. * @return Error code. */ TInt TextureUpdateOwnerId(); /** * Creates new texture. Leaves on error. * * @param aId ID of the texture. * @param aFlags Texture flags. * @param aFilename the filename of the image * @return Error code. */ TInt TextureCreateAnimatedL(TInt aId, TAlfTextureFlags aFlags, TInt aManagerId, const TDesC& aFilename); /** * Creates new texture. Leaves on error. * * @param aId ID of the texture. * @param aBitmapHandle Handle to the bitmap. * @param aMaskBitmapHandle Handle to the bitmap mask. * @param aFlags Texture flags. * @param aManagerId Id of texture manager * @return Error code. */ TInt TextureCreateL( TInt aId, TInt aBitmapHandle, TInt aMaskBitmapHandle, TAlfTextureFlags aFlags, TInt aManagerId ); /** * Loads texture. Leaves on error. * * @param aId ID of the texture. * @param aBitmapHandle Handle to the bitmap. * @param aMaskBitmapHandle Handle to the bitmap mask. * @param aFlags Texture flags. * @param aManagerId Id of texture manager * @return Error code. */ TInt TextureLoadL( TInt aId, TInt aBitmapHandle, TInt aMaskBitmapHandle, TAlfTextureFlags aFlags, TInt aManagerId ); /** * Unloads given texture. * * @param aId ID of the texture. * @param aManagerId Id of texture manager * @return Error code. */ TInt TextureUnload( TInt aId, TInt aManagerId ); /** * Releases given texture. * @param aId ID of the texture. * @param aManagerId Id of texture manager * @return Error code. */ TInt TextureRelease( TInt aId, TInt aManagerId ); /** * Restores given texture. * @param aId ID of the texture. * @param aManagerId Id of texture manager * @return Error code. */ TInt TextureRestore( TInt aId, TInt aManagerId ); /** * Notifies skin change for given texture. * @param aId ID of the texture. * @param aManagerId Id of texture manager * @return Error code. */ TInt TextureNotifySkinChanged( TInt aId, TInt aManagerId ); /** * Blurs given texture. * */ TInt TextureProcessorBlurL( const TInt aServerSideSrcHandle, TInt aServerSideDstHandle, TInt aManagerId, const TSize& aPreferredSize, TInt aFilterSize, TInt aFlag ); /** * Checks if given texture has content. * */ TInt TextureHasContent( TBool& aHasContent, TInt aId, TInt aManagerId ); /** * Delete given texture. * * @param aId ID of the texture. * @param aManagerId Id of texture manager * @return Error code. */ TInt TextureDelete( TInt aId, TInt aManagerId ); /** * Starts to animate the texture if the texture * was animated. * * @param aId ID of the texture. */ TInt TextureStartAnimation( TInt aId ); /** * Stops the texture animation if the texture * was animated. * * @param aId ID of the texture. */ TInt TextureStopAnimation( TInt aId ); /** * Notifies texture information. * @param aStatus request status. * @param aDest destination buffer which will contain events. */ void TextureNotifyInfo( TRequestStatus& aStatus, TDes8& aDest ); /** * Cancels texture information notification. */ void TextureCancelNotifyInfo(); /** * Sets parameters for the preferred size calculation. * * @param aId ID of the texture. * @param aManagerId Id of texture manager * @param aParams auto size paramters. */ TInt TextureSetAutoSizeParams( TInt aId, TInt aManagerId, const TAlfTextureAutoSizeParams& aParams );// Misc /** * Notify server about this application foreground status */ void ApplicationIsForeground(TBool aIsPartiallyOrFullyForeground); void RequestPointerEvents(TDes8& aEventAsDescriptor, TRequestStatus& aStatus); void CancelPointerEvents(); void SetFullScreenDrawing(TBool aEnable); TInt LayoutMetricsTextStyleData(TInt& aFontCategory, TInt aTextStyle); void RequestSystemEvents(TDes8& aEventAsDescriptor, TRequestStatus& aStatus); void CancelSystemEvents(); void SetWgParent(TInt aParentId); /** * Generic command */ void SendCmd(TUint aCmd, TDes8& aBuf); /** * Generic synchronous command */ TInt SendSyncCmd(TUint aCmd, TDes8& aBuf); /** * Generic asynchronous command */ void SendAsyncCmd(TUint aCmd, TDes8& aBuf, TRequestStatus& aStatus); TInt SendNoReply(TUint aOp, const TDesC8& aInputBuf, TInt aSubSessionHandle); TAlfAutoFlushMode AutoFlushMode() const; void SetAutoFlushMode( TAlfAutoFlushMode aAutoFlushMode ); TInt FlushBatchBuffer(); void SetMaxBatchBufferSize( TInt aBufferSize ); TInt GetBatchBufferInfo( TAlfBatchBufferInfoType aBufferInfoType ) const; /** * Post QT command buffer to server side canvas */ TInt PostQtBuffer( TInt aWsWgId, TInt aWsClientId, TDes8& aCommandBuffer, TAlfCommandBufferStatus aStatus );private: TInt AllocateExtendedBuffer( TInt aMoreSpaceNeeded ); inline static void AppendPadding( TDes8& aBuffer, TInt aAmount );private: HBufC8* iDefaultBatchBuffer; // owned HBufC8* iExtendedBatchBuffer; // owned HBufC8* iUsedBatchBuffer; // not owned. points to iDefaultBatchBuffer or iExtendedBatchBuffer class CBatchBufferAutoFlusher; CBatchBufferAutoFlusher* iAutoFlusher; TAlfAutoFlushMode iAutoFlushMode; TInt iUsedMaxBufferSize; };#endif // R_ALFCLIENT_H