diff -r f9bb0fca356a -r 0fd27995241b javauis/mmapi_qt/baseline/inc/mmmadisplaywindow.h --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/javauis/mmapi_qt/baseline/inc/mmmadisplaywindow.h Tue May 11 16:07:20 2010 +0300 @@ -0,0 +1,253 @@ +/* +* Copyright (c) 2002-2009 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: Abstract base class for windows. +* +*/ + + +#ifndef MMMADISPLAYWINDOW_H +#define MMMADISPLAYWINDOW_H + + +#include "mmmadisplay.h" +#include "qwidget.h" +#include "COECNTRL.h" +#include "COEMAIN.h" +// FORWARD DECLARATIONS +class CFbsBitmap; +class CMMAPlayer; + +// CLASS DEFINITION +/* +----------------------------------------------------------------------------- + + DESCRIPTION + + Abstract base class for windows. + +----------------------------------------------------------------------------- +*/ +NONSHARABLE_CLASS(MMMADisplayWindow) +{ +public: + + enum TDisplayWindowType + { + EDisplayWindowTypeNotSet = -1, + EDisplayWindowTypeIsDSA, + EDisplayWindowTypeIsBitmap, + EDisplayWindowTypeIsCamera, + }; + + /** + * Can be deleted through this interface. + */ + virtual ~MMMADisplayWindow() + { + }; + + /** + * Sets destination bitmap for DrawFrameL method + * + * @param aBitmap destination Bitmap where DrawFrameL draws. + */ + virtual void SetDestinationBitmapL(CFbsBitmap* aBitmap) = 0; + + /** + * Draws bitmap to the rect set with SetDrawRectL + * method. Bitmap may be scaled to fill whole rect. Implementation + * may ignore aBitmap parameter and implements own + * drawing procedure. + * + * @param aBitmap Bitmap to be drawn. + */ + virtual void DrawFrameL(const CFbsBitmap* aBitmap) = 0; + + /** + * Sets drawing area which is used in DrawFrameL method. + * + * THE CALL CANNOT ORIGINATE FROM UI THREAD. + * (including the call via MMA event server) + * + * use SetDrawRectThread when in UI thread + * + * @param aRect New drawing area. + */ + virtual void SetDrawRect(const TRect& aRect) = 0; + + /** + * Calls SetDrawRect method through event source. This method must + * be called instead of SetDrawRect if not executing in MMA + * thread. + * + * THE CALL CANNOT ORIGINATE FROM MMA THREAD. + * (including the call via UI event server) + * + * @param aRect New drawing area. + */ + virtual void SetDrawRectThread(const TRect& aRect) = 0; + + /** + * Sets drawing position which is used in DrawFrameL method. + * + * @param aPosition New drawing position. + */ + virtual void SetPosition(const TPoint& aPosition) = 0; + + /** + * Sets window visible or invisible. This method can be called from + * MMA event server thread or from other context. aUseEventServer + * must be set to EFalse if caller is already in MMA event server. + * + * @param aVisible visiblity + * @param aUseEventServer Indicates if method must called through event + * server. + */ + virtual void SetVisible(TBool aVisible, TBool aUseEventServer = ETrue) = 0; + + /** + * Returns rect which is used for drawing frames. + * + * @return Drawing area + */ + virtual const TRect& DrawRect() = 0; + + /** + * Returns whole window's size. + * + * @return Size of the window. + */ + virtual TSize WindowSize() = 0; + + /** + * Sets window size. + * + * @param aRect Windows size. + */ + virtual void SetWindowRect(const TRect& aRect, MMMADisplay::TThreadType aThreadType) = 0; + + /** + * Gets window rect. + * + * @returns Windows rect. + */ + virtual const TRect& WindowRect() = 0; + + virtual CMMAPlayer* UiPlayer() + { + } + + #ifdef RD_JAVA_NGA_ENABLED + /** + * Sets Crop region. used only in CMMASurfaceWindow + * + * @since S60 v5.2 + */ + virtual void SetVideoCropRegion(const TRect& /*aRect*/) + { + // Empty + } + + /** + * Sets RWindow rect. used only in CMMASurfaceWindow. + * can be called from either MMA ES thread context or + * UI thread context. + * + * @since S60 v5.2 + */ + virtual void SetRWindowRect(const TRect& /*aRect*/, + MMMADisplay::TThreadType /*aThreadType*/) + { + // Empty + } +#endif + + /** + * + */ + virtual TDisplayWindowType GetDisplayWindowType() const + { + return EDisplayWindowTypeNotSet; + } + + /** + * Gets window visible or invisible. + * @retrun ETrue if visible else EFalse. Default implementation always returns ETrue + */ + virtual TBool IsVisible() const + { + return ETrue; + } + + /** + * Informs window that container which is window drawn on + * is set from now. Implementation is now able to invoke + * any UI callbacks + * + * @since S60 v5.0 + */ + virtual void ContainerSet() + { + // Empty + } + + /** + * Informs window that container which is window drawn on + * is going to be deleted. Implementation should abort any + * DirectScreenAccess and delete all the objects + * instantiated within UI thread. + * Called wihout mmapi event server directly from UI thread. + * By default it doesn't do anything. + * + * @since S60 v5.0 + */ + virtual void ContainerDestroyed() + { + // Empty + } + + /** + * Notifies window that any drawing + * via direct screen access must be aborted + */ + virtual void AbortDSA() + { + // default empty implementation + } + + /** + * Allows window to draw + * via direct screen access after MdcAbortDSA + */ + virtual void ResumeDSA() + { + // default empty implementation + } + + /** + * gets window resources from QT + */ + virtual void ProcureWindowResourcesFromQWidget(RWsSession * aWs, + CWsScreenDevice* aScreenDevice, + RWindowBase* aWindow) + { + // default empty implementation + } + + virtual void UICallback( TInt aCallbackId ) + { + } +}; + +#endif // MMMADISPLAYWINDOW_H