javauis/mmapi_qt/baseline/src/cmmacamerawindow.cpp
branchRCL_3
changeset 18 9ac0a0a7da70
parent 17 0fd27995241b
child 19 71c436fe3ce0
--- a/javauis/mmapi_qt/baseline/src/cmmacamerawindow.cpp	Tue May 11 16:07:20 2010 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,977 +0,0 @@
-/*
-* Copyright (c) 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:  This class implements MMMADisplayWindow functionality
-*                for Camera viewfinder usage.
-*
-*/
-
-
-//  Include Files
-#include <eikenv.h>
-#include <gdi.h>
-#include <logger.h>
-#include <AknsUtils.h>
-#include <AknsDrawUtils.h>
-#include "cmmacanvasdisplay.h"
-#include "logger.h"
-
-class CMMACanvasDisplay;
-
-//#include <cameraapp.mbg>
-
-// Used for iDisplay member
-
-#include "cmmacamerawindow.h"
-
-// Camera viewfinder start delay
-const TInt KStarterTimeout = 100000; //100 msecs
-
-// Margin of icon displayed instead of viewfinder in case of error
-const TInt KErrorIconMargin = 5; //5 pixels
-
-
-_LIT(KCameraAppBitmapFile, "z:\\resource\\apps\\cameraapp.mif");
-
-
-// ---------------------------------------------------------------------------
-// CMMACameraWindow::NewL
-// Two-phased constructor.
-// Use this method to create a CMMACameraWindow instance.
-// ---------------------------------------------------------------------------
-//
-CMMACameraWindow* CMMACameraWindow::NewL(TInt aCameraHandle)
-{
-    CMMACameraWindow* self = new(ELeave)CMMACameraWindow(aCameraHandle);
-    return self;
-}
-
-
-// ---------------------------------------------------------------------------
-// CMMACameraWindow::~CMMACameraWindow
-// Destructor.
-// NOTE: iUICamera have to be deleted by ReleaseUiResources() called
-//       from UI thread
-// ---------------------------------------------------------------------------
-//
-CMMACameraWindow::~CMMACameraWindow()
-{
-    // It's not allowed to delete any nonsharable object here.
-    // This must be done in Destroy().
-    // If the iDisplay is set,
-    // instance should be deleted by sending
-    // event from UI to be received by MUiEventConsumer.
-}
-
-
-// ---------------------------------------------------------------------------
-// CMMACameraWindow::ViewFinderActive
-// Gets an information if the viewfinder is started.
-// ---------------------------------------------------------------------------
-//
-TBool CMMACameraWindow::ViewFinderActive()
-{
-    return iUICamera && iViewFinderVisible;
-}
-
-
-// ---------------------------------------------------------------------------
-// CMMACameraWindow::SetStarted
-// Notifies window about Started state change.
-// If started, tries to start viewfinder.
-// If not started, stops viewfinder.
-// ---------------------------------------------------------------------------
-//
-void CMMACameraWindow::SetStarted(TBool aStarted)
-{
-    iStarted = aStarted;
-    if (iDisplay)
-    {
-        if (iStarted)
-        {
-          //  iDisplay->UIGetCallback(
-          //      *this, CMMACameraWindow::EShowViewFinder);
-            LOG(EJavaMMAPI,EInfo,"CMMACameraWindow::SetStarted : before GetCallbackInUiThread + EShowViewFinder");
-            iDisplay->GetCallbackInUiThread((TInt)CMMACameraWindow::EShowViewFinder);
-            LOG(EJavaMMAPI,EInfo,"CMMACameraWindow::SetStarted : before GetCallbackInUiThread  - EShowViewFinder");
-        }
-        else
-        {
-         //   iDisplay->UIGetCallback(
-         //       *this, CMMACameraWindow::EHideViewFinder);
-            LOG(EJavaMMAPI,EInfo,"CMMACameraWindow::SetStarted : before GetCallbackInUiThread + EHideViewFinder");
-            iDisplay->GetCallbackInUiThread((TInt)CMMACameraWindow::EHideViewFinder);
-            LOG(EJavaMMAPI,EInfo,"CMMACameraWindow::SetStarted : before GetCallbackInUiThread  - EHideViewFinder");
-        }
-    }
-}
-
-
-// ---------------------------------------------------------------------------
-// CMMACameraWindow::SetDisplay
-// Sets iDisplay used to invoke callbacks from UI thread.
-// ---------------------------------------------------------------------------
-//
-void CMMACameraWindow::SetDisplay(MMMADisplay *aDisplay)
-{
-    if (iDisplay != aDisplay)
-    {
-        if (iDisplay)
-        {
-            // Clear the resources created within the old Display
-            //iDisplay->UIGetCallback(
-            //    *this, CMMACameraWindow::EDeleteViewFinder);
-
-
-            // instead make a call to java, shift to ui thread and call ReleaseUiResources() method in UI thread
-
-            // here jobject and jclass is valid since the flow is first creat CMMACanvasDisplay and then
-            // call setdeisplay of cameraplayer
-            /*iJavaDisplayObject = iDisplay->GetJavaDisplayObject();
-            iJavaDisplayClass = iDisplay->GetJavaDisplayClass();
-            iJni = iDisplay->GetJNIEnv();
-
-             jmethodID releaseUiResourceID = iJni->GetMethodID(
-                                         iJavaDisplayClass,
-                                         "releaseUiResource",
-                                         "()I");
-
-             iJni->CallIntMethod(iJavaDisplayObject,releaseUiResourceID);*/
-             //MMAPI UI 3.x req.
-			       LOG(EJavaMMAPI,EInfo,"CMMACameraWindow::SetDisplay : before GetCallbackInUiThread +");
-             iDisplay->GetCallbackInUiThread((TInt)CMMACameraWindow::EDeleteViewFinder);
-             LOG(EJavaMMAPI,EInfo,"CMMACameraWindow::SetDisplay : before GetCallbackInUiThread  -");
-        }
-
-        // Set the new Display
-        iDisplay = aDisplay;
-
-        if (iDisplay)
-        {
-            // Get a DSA resources for the new Display
-        //    iDisplay->UIGetDSAResources(*this, MMMADisplay::EMmaThread);
-
-        }
-    }
-}
-
-
-// ---------------------------------------------------------------------------
-// From class MMMADisplayWindow
-// CMMACameraWindow::SetDestinationBitmapL
-//
-// ---------------------------------------------------------------------------
-//
-void CMMACameraWindow::SetDestinationBitmapL(CFbsBitmap* /*aBitmap*/)
-{
-    // Ignored, this window will not be used for actual drawing
-    LOG(EJavaMMAPI,EInfo,"CMMACameraWindow::SetDestinationBitmapL");
-}
-
-
-// ---------------------------------------------------------------------------
-// From class MMMADisplayWindow
-// CMMACameraWindow::DrawFrameL
-//
-// ---------------------------------------------------------------------------
-//
-void CMMACameraWindow::DrawFrameL(const CFbsBitmap* /*aBitmap*/)
-{
-    // Ignored, this window will not be used for actual drawing
-}
-
-
-// ---------------------------------------------------------------------------
-// From class MMMADisplayWindow
-// CMMACameraWindow::SetDrawRect
-//
-// ---------------------------------------------------------------------------
-//
-void CMMACameraWindow::SetDrawRect(const TRect& aRect)
-{
-    // MMAPI thread
-    LOG2(EJavaMMAPI,EInfo,"MMA::CMMACameraWindow::SetDrawRect TL:%d,%d",
-               aRect.iTl.iX, aRect.iTl.iY);
-    LOG2(EJavaMMAPI,EInfo,"MMA::CMMACameraWindow::SetDrawRect BR:%d,%d",
-               aRect.iBr.iX, aRect.iBr.iY);
-
-    iDrawRect = aRect;
-
-    if (iDisplay)
-    {
-        //iDisplay->UIGetCallback(*this, CMMACameraWindow::EResetViewFinder);
-        LOG(EJavaMMAPI,EInfo,"CMMACameraWindow::SetDisplay : before GetCallbackInUiThread + EResetViewFinder");
-        iDisplay->GetCallbackInUiThread((TInt)CMMACameraWindow::EResetViewFinder);
-        LOG(EJavaMMAPI,EInfo,"CMMACameraWindow::SetDisplay : before GetCallbackInUiThread  - EResetViewFinder");
-
-    }
-}
-
-
-// ---------------------------------------------------------------------------
-// From class MMMADisplayWindow
-// CMMACameraWindow::SetDrawRectThread
-//
-// ---------------------------------------------------------------------------
-//
-void CMMACameraWindow::SetDrawRectThread(const TRect& aRect)
-{
-    LOG2( EJavaMMAPI, EInfo, "MMA::CMMACameraWindow::SetDrawRectThread TL:%d,%d",
-               aRect.iTl.iX, aRect.iTl.iY);
-    LOG2( EJavaMMAPI, EInfo, "MMA::CMMACameraWindow::SetDrawRectThread BR:%d,%d",
-               aRect.iBr.iX, aRect.iBr.iY);
-
-    // Note: Runs in UI thread only
-
-    // Bitmap window's rect can be set in any thread.
-    if (iDrawRect != aRect)
-    {
-        iDrawRect = aRect;
-
-        // Stop and start ViewFinder to update position
-        ResetViewFinder();
-    }
-
-}
-
-
-// ---------------------------------------------------------------------------
-// From class MMMADisplayWindow
-// CMMACameraWindow::DrawRect
-//
-// ---------------------------------------------------------------------------
-//
-const TRect& CMMACameraWindow::DrawRect()
-{
-    return iDrawRect;
-}
-
-
-// ---------------------------------------------------------------------------
-// From class MMMADisplayWindow
-// CMMACameraWindow::WindowSize
-//
-// ---------------------------------------------------------------------------
-//
-TSize CMMACameraWindow::WindowSize()
-{
-    return iDrawRect.Size();
-}
-
-
-// ---------------------------------------------------------------------------
-// From class MMMADisplayWindow
-// CMMACameraWindow::SetPosition
-//
-// ---------------------------------------------------------------------------
-//
-void CMMACameraWindow::SetPosition(const TPoint& aPosition)
-{
-    // Note: Runs in UI thread only
-    SetDrawRectThread(TRect(aPosition, iDrawRect.Size()));
-}
-
-
-// ---------------------------------------------------------------------------
-// From class MMMADisplayWindow
-// CMMACameraWindow::SetVisible
-//
-// ---------------------------------------------------------------------------
-//
-void CMMACameraWindow::SetVisible(TBool aVisible, TBool aUseEventServer)
-{
-    iVisible = aVisible;
-
-    if (aUseEventServer)
-    {
-        // We are in UI thread now.
-        SetViewFinderVisibility(aVisible);
-    }
-    else
-    {
-        // MMAPI thread
-        if (iDisplay)
-        {
-            if (aVisible)
-            {
-               // iDisplay->UIGetCallback(
-                //    *this, CMMACameraWindow::EShowViewFinder);
-                LOG(EJavaMMAPI,EInfo,"CMMACameraWindow::SetVisible : before GetCallbackInUiThread - EShowViewFinder");
-                iDisplay->GetCallbackInUiThread((TInt)CMMACameraWindow::EShowViewFinder);
-                LOG(EJavaMMAPI,EInfo,"CMMACameraWindow::SetVisible : before GetCallbackInUiThread  - EShowViewFinder");
-            }
-            else
-            {
-               // iDisplay->UIGetCallback(
-               //     *this, CMMACameraWindow::EHideViewFinder);
-                LOG(EJavaMMAPI,EInfo,"CMMACameraWindow::SetVisible : before GetCallbackInUiThread - EHideViewFinder");
-                iDisplay->GetCallbackInUiThread((TInt)CMMACameraWindow::EHideViewFinder);
-                LOG(EJavaMMAPI,EInfo,"CMMACameraWindow::SetVisible : before GetCallbackInUiThread  - EHideViewFinder");
-            }
-        }
-    }
-}
-
-
-// ---------------------------------------------------------------------------
-// From class MMMADisplayWindow
-// CMMACameraWindow::SetWindowRect
-//
-// ---------------------------------------------------------------------------
-//
-void CMMACameraWindow::SetWindowRect(
-    const TRect& aRect,
-    MMMADisplay::TThreadType aThreadType)
-{
-    LOG2( EJavaMMAPI, EInfo, "MMA::CMMACameraWindow::SetWindowRect TL:%d,%d",
-               aRect.iTl.iX, aRect.iTl.iY);
-    LOG2( EJavaMMAPI, EInfo, "MMA::CMMACameraWindow::SetWindowRect BR:%d,%d",
-               aRect.iBr.iX, aRect.iBr.iY);
-
-    if (iClientRect != aRect)
-    {
-        iClientRect = aRect;
-
-        if (aThreadType == MMMADisplay::EUiThread)
-        {
-            ResetViewFinder();
-        }
-        else
-        {
-          //  iDisplay->UIGetCallback(
-          //      *this, CMMACameraWindow::EResetViewFinder);
-            LOG(EJavaMMAPI,EInfo,"CMMACameraWindow::SetWindowRect : before GetCallbackInUiThread + EResetViewFinder");
-            iDisplay->GetCallbackInUiThread((TInt)CMMACameraWindow::EHideViewFinder);
-            LOG(EJavaMMAPI,EInfo,"CMMACameraWindow::SetWindowRect : before GetCallbackInUiThread  - EResetViewFinder");
-        }
-    }
-
-
-}
-
-
-// ---------------------------------------------------------------------------
-// From class MMMADisplayWindow
-// CMMACameraWindow::WindowRect
-//
-// ---------------------------------------------------------------------------
-//
-const TRect& CMMACameraWindow::WindowRect()
-{
-    return iClientRect;
-}
-
-
-// ---------------------------------------------------------------------------
-// From class MMMADisplayWindow
-// CMMACameraWindow::GetDisplayWindowType
-//
-// ---------------------------------------------------------------------------
-//
-MMMADisplayWindow::TDisplayWindowType
-CMMACameraWindow::GetDisplayWindowType() const
-{
-    return EDisplayWindowTypeIsCamera;
-}
-
-
-// ---------------------------------------------------------------------------
-// From class MMMADisplayWindow
-// CMMACameraWindow::IsVisible
-//
-// ---------------------------------------------------------------------------
-//
-TBool CMMACameraWindow::IsVisible() const
-{
-    return iVisible;
-}
-
-
-// ---------------------------------------------------------------------------
-// From class MMMADisplayWindow
-// CMMACameraWindow::ContainerSet
-//
-// ---------------------------------------------------------------------------
-//
-void CMMACameraWindow::ContainerSet()
-{
-    // We are in UI thread now
-
-    // Container was probably not set when
-    // iDisplay was set,
-    // we can now try get the DSA stuff again
-    if (!iUICamera && iDisplay)
-    {
-        // Get a DSA stuff for the new Display
-       // iDisplay->UIGetDSAResources(*this, MMMADisplay::EUiThread);
-    }
-}
-
-
-// ---------------------------------------------------------------------------
-// From class MMMADisplayWindow
-// CMMACameraWindow::ContainerDestroyed
-//
-// ---------------------------------------------------------------------------
-//
-void CMMACameraWindow::ContainerDestroyed()
-{
-    // We are in UI thread now
-    ReleaseUiResources();
-}
-
-
-// ---------------------------------------------------------------------------
-// From class MCameraObserver
-// CMMACameraWindow::ReserveComplete
-//
-// ---------------------------------------------------------------------------
-//
-void CMMACameraWindow::ReserveComplete(TInt aError)
-{
-    LOG1(EJavaMMAPI,EInfo,"MMA::CMMACameraWindow::ReserveComplete %d", aError);
-
-    if (aError == KErrNone)
-    {
-        // camera will notify completion with PowerOnComplete method.
-        iUICamera->PowerOn();
-    }
-}
-
-
-// ---------------------------------------------------------------------------
-// From class MCameraObserver
-// CMMACameraWindow::PowerOnComplete
-//
-// ---------------------------------------------------------------------------
-//
-void CMMACameraWindow::PowerOnComplete(TInt aError)
-{
-    ELOG1( EJavaMMAPI, "MMA::CMMACameraWindow::PowerOnComplete %d", aError);
-
-    if (aError == KErrNone)
-    {
-        iCameraPowerOn = ETrue;
-        SetViewFinderVisibility(ETrue);
-    }
-}
-
-
-// ---------------------------------------------------------------------------
-// From class MCameraObserver
-// CMMACameraWindow::ViewFinderFrameReady
-//
-// ---------------------------------------------------------------------------
-//
-void CMMACameraWindow::ViewFinderFrameReady(CFbsBitmap& /*aFrame*/)
-{
-    // Empty implementation of the interface method
-    LOG(EJavaMMAPI,EInfo,"MMA::CMMACameraWindow::ViewFinderFrameReady");
-}
-
-
-// ---------------------------------------------------------------------------
-// From class MCameraObserver
-// CMMACameraWindow::ImageReady
-//
-// ---------------------------------------------------------------------------
-//
-void CMMACameraWindow::ImageReady(CFbsBitmap* /*aBitmap*/,
-                                  HBufC8* /*aData*/,
-                                  TInt /*aError*/)
-{
-    // Empty implementation of the interface method
-    LOG(EJavaMMAPI,EInfo,"MMA::CMMACameraWindow::ImageReady");
-}
-
-
-// ---------------------------------------------------------------------------
-// From class MCameraObserver
-// CMMACameraWindow::FrameBufferReady
-//
-// ---------------------------------------------------------------------------
-//
-void CMMACameraWindow::FrameBufferReady(MFrameBuffer* /*aFrameBuffer*/,
-                                        TInt /*aError*/)
-{
-    // Empty implementation of the interface method
-    LOG(EJavaMMAPI,EInfo,"MMA::CMMACameraWindow::FrameBufferReady");
-}
-
-
-// ---------------------------------------------------------------------------
-// From class MDirectScreenAccess.
-// CMMACameraWindow::AbortNow
-//
-// ---------------------------------------------------------------------------
-//
-void CMMACameraWindow::AbortNow(
-    RDirectScreenAccess::TTerminationReasons /*aReasons*/)
-{
-    SetViewFinderVisibility(EFalse);
-}
-
-
-// ---------------------------------------------------------------------------
-// From class MDirectScreenAccess.
-// CMMACameraWindow::Restart
-//
-// ---------------------------------------------------------------------------
-//
-void CMMACameraWindow::Restart(
-    RDirectScreenAccess::TTerminationReasons /*aReasons*/)
-{
-    SetViewFinderVisibility(ETrue);
-}
-
-
-// ---------------------------------------------------------------------------
-// CMMACameraWindow::CMMACameraWindow
-// C++ constructor.
-// ---------------------------------------------------------------------------
-//
-CMMACameraWindow::CMMACameraWindow(TInt aCameraHandle):
-        iVisible(EFalse),
-        iStarted(EFalse),
-        iViewFinderVisible(EFalse),
-        iCameraPowerOn(EFalse),
-        iDrawRect(0, 0, 0, 0),
-        iClientRect(0, 0, 0, 0),
-        iCameraHandle(aCameraHandle),
-        iUICamera(NULL),
-        iDisplay(NULL),
-        iStarterTimer(NULL),
-        iDirectAccess(NULL),
-        iErrorIconBitmap(NULL),
-        iErrorIconMaskBitmap(NULL),
-        iRWindowRect(0, 0, 0, 0)
-{
-}
-
-
-// ---------------------------------------------------------------------------
-// CMMACameraWindow::UIStartViewFinder
-// Creates UI Camera.
-// This CCamera instance is duplicated from handle given to the constructor.
-// Have to be called from the thread which UI Camera will be controlled from.
-// ---------------------------------------------------------------------------
-//
-void CMMACameraWindow::UIStartViewFinder(
-    RWsSession &aWs,
-    CWsScreenDevice &aScreenDevice,
-    RWindowBase &aWindow)
-{
-    LOG(EJavaMMAPI,EInfo,"MMA::CMMACameraWindow::UIStartViewFinder");
-
-    iWs = &aWs;
-    iScreenDevice = &aScreenDevice;
-    iWindow = &aWindow;
-
-    if (!iUICamera)
-    {
-        TRAPD(error, iUICamera =
-                  CCamera::NewDuplicateL(*this, iCameraHandle));
-
-        ELOG1( EJavaMMAPI, 
-            "MMA::CMMACameraWindow::UIStartViewFinder - NewDuplicateL %d",
-            error);
-
-        if (error == KErrNone)
-        {
-            iUICamera->Reserve();
-        }
-    }
-}
-
-
-// ---------------------------------------------------------------------------
-// CMMACameraWindow::SetViewFinderVisibility
-// If UI Camera have been created, it starts/hides the DirectViewFinder.
-// Have to be called from UI thread in which iUICamera instance was created.
-// ---------------------------------------------------------------------------
-//
-void CMMACameraWindow::SetViewFinderVisibility(TBool aVisible)
-{
-    LOG1( EJavaMMAPI, EInfo, "MMA::CMMACameraWindow::SetViewFinderVisibility - %d",
-              aVisible);
-
-    if (!iUICamera || !iCameraPowerOn || iViewFinderVisible == aVisible)
-    {
-        return;
-    }
-
-    if (aVisible)
-    {
-        // Viewfinder is going to start
-        if (!iVisible || !iStarted)
-        {
-            return;
-        }
-
-        iViewFinderVisible = ETrue;
-
-        if (!iStarterTimer)
-        {
-            // If starter timer haven't been created yet, create an instance
-            TRAPD(
-                timerErr,
-                iStarterTimer = CPeriodic::NewL(CActive::EPriorityIdle));
-
-            if (timerErr != KErrNone)
-            {
-             ELOG1( EJavaMMAPI, 
-            "MMA::CMMACameraWindow::SetViewFinderVisibility - timer error = %d",
-            timerErr);	
-                __ASSERT_DEBUG(EFalse, User::Invariant());
-            }
-        }
-
-        if (!iStarterTimer->IsActive())
-        {
-            iStarterTimer->Start(
-                KStarterTimeout,
-                0,
-                TCallBack(StarterTimerCallback, this));
-        }
-    }
-    else
-    {
-        // Viewfinder is going to be cancelled
-        LOG(EJavaMMAPI,EInfo,
-            "MMA::CMMACameraWindow::SetViewFinderVisibility - Stopping VF");
-
-        if (iStarterTimer && iStarterTimer->IsActive())
-        {
-            // Cancel the running starter timer
-            iStarterTimer->Cancel();
-        }
-
-        if (iUICamera->ViewFinderActive())
-        {
-            iUICamera->StopViewFinder();
-        }
-        if (iDirectAccess->IsActive())
-        {
-            iDirectAccess->Cancel();
-        }
-
-        iViewFinderVisible = EFalse;
-    }
-}
-
-
-// ---------------------------------------------------------------------------
-// CMMACameraWindow::StarterTimerCallback
-// Executed at the expiry of the iStartedTimer.
-// ---------------------------------------------------------------------------
-//
-TInt CMMACameraWindow::StarterTimerCallback(TAny* aThis)
-{
-    CMMACameraWindow* self = static_cast<CMMACameraWindow*>(aThis);
-    ASSERT(self);
-
-    self->StartViewFinder();
-
-    // We don't want to run the callback again
-    return EFalse;
-}
-
-
-// ---------------------------------------------------------------------------
-// From class MMMADisplayWindow
-// CMMACameraWindow::SetRWindowRect
-//
-// ---------------------------------------------------------------------------
-//
-void CMMACameraWindow::SetRWindowRect(const TRect& aRect,
-                                      MMMADisplay::TThreadType aThreadType)
-{
-    ELOG2( EJavaMMAPI, 
-            "MID::CMMACameraWindow::SetRWindowRect TL %d %d",
-               aRect.iTl.iX, aRect.iTl.iY);
-	ELOG2( EJavaMMAPI, 
-            "MID::CMMACameraWindow::SetRWindowRect BR %d %d",
-               aRect.iBr.iX, aRect.iBr.iY);	   	
-    iRWindowRect = aRect;
-
-    if (MMMADisplay::EMmaThread == aThreadType)
-    {
-        if (iDisplay)
-        {
-            //iDisplay->UIGetCallback(*this,
-           //                         CMMACameraWindow::EResetViewFinder);
-        }
-    }
-    else if (MMMADisplay::EUiThread == aThreadType)
-    {
-        ResetViewFinder();
-    }
-}
-
-
-// ---------------------------------------------------------------------------
-// CMMACameraWindow::StartViewFinder
-// Starts viewfinder.
-// ---------------------------------------------------------------------------
-//
-void CMMACameraWindow::StartViewFinder()
-{
-    LOG(EJavaMMAPI,EInfo," < StartViewFinder");
-
-    ASSERT(iUICamera);
-    ASSERT(iCameraPowerOn);
-    ASSERT(iStarted);
-
-    iStarterTimer->Cancel();
-
-    // align client rect to RWindow, viewfinder
-    // display co-ordinates is w.r.t to RWindow
-    TRect relativeClientRect;
-    relativeClientRect = iClientRect;
-    relativeClientRect.Move(-iRWindowRect.iTl);
-
-    // Set the drawing area
-    TRect drawRect(iDrawRect);
-    drawRect.Move(relativeClientRect.iTl);
-
-    LOG2( EJavaMMAPI, EInfo, 
-        "MMA::CMMACameraWindow::StartViewFinder - Starting VF TL:%d,%d",
-        drawRect.iTl.iX,
-        drawRect.iTl.iY);
-    LOG2( EJavaMMAPI, EInfo, 
-        "MMA::CMMACameraWindow::StartViewFinder - Starting VF BR:%d,%d",
-        drawRect.iBr.iX,
-        drawRect.iBr.iY);
-
-    TRAPD(vfError, iUICamera->StartViewFinderDirectL(
-              *iWs, *iScreenDevice, *iWindow, drawRect));
-
-    if (vfError == KErrNone)
-    {
-        LOG(EJavaMMAPI,EInfo,"MMA::CMMACameraWindow::StartViewFinder - Start OK");
-    }
-    else
-    {
-        LOG1( EJavaMMAPI, EInfo, 
-            "MMA::CMMACameraWindow::StartViewFinder()  - \
-StartViewFinderDirectL error=%d", vfError);
-
-        TRAP_IGNORE(DrawViewFinderErrorL(vfError, drawRect));
-    }
-
-    LOG(EJavaMMAPI,EInfo," > StartViewFinder");
-}
-
-
-// ---------------------------------------------------------------------------
-// CMMACameraWindow::DrawViewFinderError()
-// Draws the error message to specified area.
-// Used in cases when viewfinder is unable to start.
-// ---------------------------------------------------------------------------
-//
-void CMMACameraWindow::DrawViewFinderErrorL(
-    const TInt /*aError*/,
-    const TRect& aDrawRect)
-{
-
-    ASSERT(iDirectAccess);
-    TInt dcError = KErrNone;
-    if (!iDirectAccess->IsActive())
-    {
-        TRAP(dcError, iDirectAccess->StartL());
-    }
-
-    TRect drawRect(aDrawRect);
-
-    if (dcError == KErrNone)
-    {
-        drawRect.Intersection(iClientRect);
-        drawRect.Move(-iWindow->AbsPosition());
-
-        CFbsBitGc* directGc = iDirectAccess->Gc();
-        directGc->SetClippingRect(drawRect);
-        directGc->SetBrushColor(TRgb(128,128,128));
-        directGc->SetPenColor(TRgb(128,0,0));
-        directGc->SetBrushStyle(CGraphicsContext::ESolidBrush);
-        directGc->SetPenStyle(CGraphicsContext::ESolidPen);
-        directGc->SetDrawMode(CGraphicsContext::EDrawModeWriteAlpha);
-        directGc->DrawRect(drawRect);
-
-        if (!iErrorIconBitmap || !iErrorIconMaskBitmap)
-        {
-            if (iErrorIconBitmap)
-            {
-                delete iErrorIconBitmap;
-                iErrorIconBitmap = NULL;
-            }
-
-            if (iErrorIconMaskBitmap)
-            {
-                delete iErrorIconMaskBitmap;
-                iErrorIconMaskBitmap = NULL;
-            }
-/*
-            AknsUtils::CreateIconL(
-                AknsUtils::SkinInstance(),
-                KAknsIIDQgnIndiCam4Camera,
-                iErrorIconBitmap,
-                iErrorIconMaskBitmap,
-                KCameraAppBitmapFile,
-                EMbmCameraappQgn_indi_cam4_camera,
-                EMbmCameraappQgn_indi_cam4_camera_mask
-            );
-            */
-        }
-
-        //TRect iconRect
-        drawRect.iTl.iX += KErrorIconMargin;
-        drawRect.iTl.iY += KErrorIconMargin;
-        drawRect.iBr.iX -= KErrorIconMargin;
-        drawRect.iBr.iY -= KErrorIconMargin;
-
-        if (iErrorIconBitmap->SizeInPixels() != drawRect.Size())
-        {
-            AknIconUtils::SetSize(iErrorIconBitmap, drawRect.Size());
-            AknIconUtils::SetSize(iErrorIconMaskBitmap, drawRect.Size());
-        }
-
-        directGc->BitBltMasked(
-            drawRect.iTl, iErrorIconBitmap,
-            TRect(iErrorIconBitmap->SizeInPixels()),
-            iErrorIconMaskBitmap, EFalse);
-
-        iDirectAccess->ScreenDevice()->Update();
-    }
-
-}
-
-
-// ---------------------------------------------------------------------------
-// CMMACameraWindow::ReleaseUiResources()
-// Stops the DirectViewFinder and deletes UI Camera instance
-// Have to be called from UI thread in which UI Camera
-// have been created before the CMMACameraWindow instance
-// is deleted.
-// ---------------------------------------------------------------------------
-//
-void CMMACameraWindow::ReleaseUiResources()
-{
-    if (iUICamera)
-    {
-        SetViewFinderVisibility(EFalse);
-        // iStarterTimer is cancelled by previous call
-        // it can be deleted now
-        delete iStarterTimer;
-        iStarterTimer = NULL;
-        iUICamera->Release();
-        delete iUICamera;
-        iUICamera = NULL;
-        iCameraPowerOn = EFalse;
-        iDirectAccess->Cancel();
-        delete iDirectAccess;
-        iDirectAccess = NULL;
-        delete iErrorIconBitmap;
-        iErrorIconBitmap = NULL;
-        delete iErrorIconMaskBitmap;
-        iErrorIconMaskBitmap = NULL;
-    }
-}
-
-
-// ---------------------------------------------------------------------------
-// CMMACameraWindow::ResetViewFinder
-// Resets (stops and starts) viewfinder
-// ---------------------------------------------------------------------------
-//
-void CMMACameraWindow::ResetViewFinder()
-{
-
-    if (iStarterTimer && !iStarterTimer->IsActive() && iStarted)
-    {
-        SetViewFinderVisibility(EFalse);
-        SetViewFinderVisibility(ETrue);
-    }
-}
-
-
-// ---------------------------------------------------------------------------
-// CMMACameraWindow::Destroy
-// Deletes this object.
-// ---------------------------------------------------------------------------
-//
-void CMMACameraWindow::Destroy()
-{
-    // Delete itself
-    delete this;
-}
-
-
-// ---------------------------------------------------------------------------
-// From class MUiEventConsumer.
-// CMMACameraWindow::MdcDSAResourcesCallback
-// Callback to iDisplay->UIGetDSAResources().
-// Invoked asynchronously from UI Event Server thread.
-// ---------------------------------------------------------------------------
-//
-/*void CMMACameraWindow::MdcDSAResourcesCallback(
-    RWsSession &aWs,
-    CWsScreenDevice &aScreenDevice,
-    RWindowBase &aWindow)
-{
-    TRAPD(error, iDirectAccess = CDirectScreenAccess::NewL(aWs,
-                                 aScreenDevice,
-                                 aWindow,
-                                 *this));
-    LOG1(EJavaMMAPI,EInfo,"MMA::CMMACameraWindow::MdcDSAResourcesCallback, error = %d", error);
-    if (KErrNone != error)
-    {
-        return;
-    }
-    this->UIStartViewFinder(aWs, aScreenDevice, aWindow);
-}
-*/
-
-// ---------------------------------------------------------------------------
-// From class MUiEventConsumer.
-// CMMACameraWindow::MdcUICallback
-// Callback to iDisplay->UIGetCallback().
-// Invoked asynchronously from UI Event Server thread.
-// ---------------------------------------------------------------------------
-//
-
-void CMMACameraWindow::UICallback(TInt aCallbackId)
-{
-    LOG(EJavaMMAPI,EInfo,"MMA::CMMACameraWindow::MdcUICallback");
-
-    switch (aCallbackId)
-    {
-    case EDeleteViewFinder:
-        ReleaseUiResources();
-        break;
-    case EHideViewFinder:
-        SetViewFinderVisibility(EFalse);
-        break;
-    case EShowViewFinder:
-        SetViewFinderVisibility(ETrue);
-        break;
-    case EResetViewFinder:
-        ResetViewFinder();
-        break;
-    case EDestroyWindow:
-        Destroy();
-        break;
-    }
-}
-
-
-//  END OF FILE