phonebookui/Phonebook2/ccapplication/ccacommlauncherplugin/src/ccappcommlauncherimagedecoding.cpp
branchRCL_3
changeset 3 04ab22b956c2
parent 0 e686773b3f54
child 6 c5deda9d60e3
child 14 81f8547efd4f
--- a/phonebookui/Phonebook2/ccapplication/ccacommlauncherplugin/src/ccappcommlauncherimagedecoding.cpp	Tue Feb 02 10:12:17 2010 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,221 +0,0 @@
-/*
-* Copyright (c) 2008-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:  Implementation of the utility class for asynchronously decoding the header thumbnail image
-*
-*/
-
-#include <bitmaptransforms.h>
-#include "ccappcommlauncherimagedecoding.h"
-
-const TInt KDelay = 500000; // 0.5s
-// ---------------------------------------------------------------------------
-// Two-phase construction
-// ---------------------------------------------------------------------------
-//
-CCCAppCommLauncherImageDecoding* CCCAppCommLauncherImageDecoding::NewL(
-        CCCAppCommLauncherHeaderControl* aHeader, const TDesC8* aBitmapData, const TDesC* aImageFile)
-    {
-    CCCAppCommLauncherImageDecoding* self = new (ELeave) CCCAppCommLauncherImageDecoding(aHeader);
-    CleanupStack::PushL(self);
-    self->ConstructL(aBitmapData, aImageFile);
-    CleanupStack::Pop(self);
-    return self;
-    }
-
-// ---------------------------------------------------------------------------
-// First phase (C++) constructor
-// ---------------------------------------------------------------------------
-//
-CCCAppCommLauncherImageDecoding::CCCAppCommLauncherImageDecoding(CCCAppCommLauncherHeaderControl* aHeader) : 
-CActive( CActive::EPriorityStandard ), iHeader(aHeader)
-    { 
-    CActiveScheduler::Add(this); 
-    }
-
-// ---------------------------------------------------------------------------
-// ConstructL, second phase constructor
-// ---------------------------------------------------------------------------
-//
-void CCCAppCommLauncherImageDecoding::ConstructL(const TDesC8* aBitmapData, const TDesC* aImageFile)
-    {
-    if ( aImageFile )
-        {
-        iImageFullName = aImageFile->AllocL();
-        }
-    if ( aBitmapData )
-        {
-        iBitmapData = aBitmapData->AllocL();
-        }
-    User::LeaveIfError( iFs.Connect() );
-    iTimer.CreateLocal();
-    }
-
-// ---------------------------------------------------------------------------
-// Destructor
-// ---------------------------------------------------------------------------
-//
-CCCAppCommLauncherImageDecoding::~CCCAppCommLauncherImageDecoding()
-    {
-    DoCancel();
-    if (iBitmap)
-        {
-        delete iBitmap;
-        iBitmap = NULL;
-        }
-    if (iBitmapData)
-        {
-        delete iBitmapData;
-        iBitmapData = NULL;
-        }
-    if (iImageFullName)
-        {
-        delete iImageFullName;
-        }
-    iFs.Close();
-    iTimer.Close();
-    }
-
-// ---------------------------------------------------------------------------
-// Starts the decoding process
-// ---------------------------------------------------------------------------
-//
-void CCCAppCommLauncherImageDecoding::StartL( TSize aImageSize )
-    {
-    iDecoderState = ECcaConvertThumbnailImage;
-    iBitmapSize = aImageSize;
-    CreateBitmapL();
-    }
-
-// ---------------------------------------------------------------------------
-// Called by the active object framework when the decoding (request) is
-// completed.
-// ---------------------------------------------------------------------------
-//
-void CCCAppCommLauncherImageDecoding::RunL() 
-    {
-    User::LeaveIfError( iStatus.Int() );
-    switch ( iDecoderState )
-	    {
-	    case ECcaConvertThumbnailImage:
-	    	{
-	        iDecoderState = ECcaScaleThumbnail;
-	        ScaleBitmapL();
-	        break;
-	    	}
-	
-	    case ECcaScaleThumbnail:
-	    	{
-	    	if ( iImageFullName )
-	    		{
-	            iDecoderState = ECcaReadImageFromFile;
-	            SetPriority( EPriorityIdle );
-	            iTimer.After( iStatus, KDelay ); 
-	            SetActive();
-	    		}
-	    	// don't break here
-	    	}
-	    	
-	    case ECcaScaleImage:
-	    	{
-	        // Ownership of the bitmap is transferred
-	        iHeader->SetBitmap( iBitmap );
-	        iBitmap = NULL;
-	        delete iBitmapScaler;
-	        iBitmapScaler = NULL;
-	        delete iImgDecoder;
-	        iImgDecoder = NULL;
-	        break;
-	    	}
-	        
-	    case ECcaReadImageFromFile:
-	    	{
-	    	if ( iImageFullName )
-	    		{
-	            iDecoderState = ECcaConvertImageFromFile;
-	            CreateBitmapL();
-	    		}
-	    	break;
-	    	}
-	         
-	    case ECcaConvertImageFromFile:
-	    	{
-	        iDecoderState = ECcaScaleImage;
-	        SetPriority( EPriorityStandard );
-	        ScaleBitmapL();
-	        break;
-	    	}
-	        
-	    default:
-	        break;
-	    }
-    }
-// ---------------------------------------------------------------------------
-// Called when the decoding (request) is cancelled for some reason.
-// ---------------------------------------------------------------------------
-//
-void CCCAppCommLauncherImageDecoding::DoCancel()
-    { 
-    if (iImgDecoder)
-        {
-        iImgDecoder->Cancel();
-        delete iImgDecoder;
-        iImgDecoder = NULL;
-        }
-    if ( iBitmapScaler )
-        {
-        iBitmapScaler->Cancel();
-        delete iBitmapScaler;
-        iBitmapScaler = NULL;
-        }
-    iTimer.Cancel();
-    }
-
-void CCCAppCommLauncherImageDecoding::ScaleBitmapL()
-    {   
-    iBitmapScaler = CBitmapScaler::NewL();
-    iBitmapScaler->Scale( &iStatus, *iBitmap, iBitmapSize );
-    SetActive();
-    }
-
-void CCCAppCommLauncherImageDecoding::CreateBitmapL()
-    {
-    if ( iDecoderState == ECcaConvertThumbnailImage )
-        {
-        iImgDecoder = CImageDecoder::DataNewL( iFs, *iBitmapData, CImageDecoder::EOptionAlwaysThread );
-        }
-    else if ( iDecoderState == ECcaConvertImageFromFile )
-        {
-        // leaaves if file doesn't exist
-        TRAPD ( initDecoder, iImgDecoder = CImageDecoder::FileNewL( iFs, *iImageFullName, CImageDecoder::EOptionAlwaysThread ) );
-        if ( initDecoder )
-        	{
-	        delete iBitmapScaler;
-	        iBitmapScaler = NULL;
-	        delete iImgDecoder;
-	        iImgDecoder = NULL;
-        	return;
-        	}
-        }
-   
-   if ( !iBitmap )
-       {
-       TFrameInfo info = iImgDecoder->FrameInfo();
-       iBitmap = new ( ELeave ) CFbsBitmap;
-       User::LeaveIfError( iBitmap->Create( info.iOverallSizeInPixels, info.iFrameDisplayMode ));
-       }
- 
-    iStatus = KRequestPending;
-    iImgDecoder->Convert( &iStatus, *iBitmap );
-    SetActive();
-    }