phonebookui/Phonebook2/ccapplication/ccamycardplugin/src/ccappmycardimageloader.cpp
branchRCL_3
changeset 20 f4a778e096c2
child 21 9da50d567e3c
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/phonebookui/Phonebook2/ccapplication/ccamycardplugin/src/ccappmycardimageloader.cpp	Wed Sep 01 12:29:52 2010 +0100
@@ -0,0 +1,196 @@
+/*
+* Copyright (c) 2009-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:  Implementation of MyCard image loader
+*
+*/
+
+#include "ccappmycardimageloader.h"
+#include "ccappmycardcommon.h"
+
+// phonebook
+#include <CVPbkContactManager.h>
+#include <MVPbkStoreContact.h>
+#include <MVPbkFieldType.h>
+
+#include <CPbk2ImageManager.h>
+#include <TPbk2ImageManagerParams.h>
+#include <VPbkEng.rsg>
+#include <MVPbkContactFieldBinaryData.h>
+#include <MVPbkContactFieldTextData.h>
+
+// System
+#include <fbs.h>
+#include <eikenv.h>
+
+
+// ---------------------------------------------------------------------------
+// CCCAppMyCardImageLoader::NewL
+// ---------------------------------------------------------------------------
+//
+CCCAppMyCardImageLoader* CCCAppMyCardImageLoader::NewL(
+    MMyCardImageLoaderObserver& aObserver )
+    {
+    CCA_DP(KMyCardLogFile, CCA_L("->CCCAppMyCardImageLoader::NewL()"));
+    
+    CCCAppMyCardImageLoader* self = 
+        new ( ELeave ) CCCAppMyCardImageLoader( aObserver );
+    
+    CCA_DP(KMyCardLogFile, CCA_L("<-CCCAppMyCardImageLoader::NewL()"));
+    return self;
+    }
+
+// ---------------------------------------------------------------------------
+// CCCAppMyCardImageLoader::~CCCAppMyCardImageLoader
+// ---------------------------------------------------------------------------
+//
+CCCAppMyCardImageLoader::~CCCAppMyCardImageLoader()
+    {
+    CCA_DP(KMyCardLogFile, 
+        CCA_L("->CCCAppMyCardImageLoader::~CCCAppMyCardImageLoader()"));
+
+    delete iImageDecoding;
+    delete iImageBuffer;
+    delete iImageFileName;
+
+    CCA_DP(KMyCardLogFile, 
+        CCA_L("<-CCCAppMyCardImageLoader::~CCCAppMyCardImageLoader()"));
+    }
+
+// ---------------------------------------------------------------------------
+// CCCAppMyCardImageLoader::CCCAppMyCardImageLoader
+// ---------------------------------------------------------------------------
+//
+inline CCCAppMyCardImageLoader::CCCAppMyCardImageLoader(
+    MMyCardImageLoaderObserver& aObserver ) :
+        iObserver( aObserver )
+    {
+    }
+
+// ---------------------------------------------------------------------------
+// CCCAppMyCardImageLoader::LoadContactImageL
+// ---------------------------------------------------------------------------
+//
+void CCCAppMyCardImageLoader::LoadContactImageL( 
+    MVPbkStoreContact& aContact,
+    const TSize& aThumbnailSize )
+    {
+    CCA_DP(KMyCardLogFile, 
+        CCA_L("->CCCAppMyCardImageLoader::LoadContactImageL()"));
+
+    MVPbkStoreContactFieldCollection& fields = aContact.Fields();
+    
+    delete iImageBuffer;
+    iImageBuffer = NULL;
+    delete iImageFileName;
+    iImageFileName = NULL;
+    delete iImageDecoding;
+    iImageDecoding = NULL;
+    
+    const TInt fieldCount = fields.FieldCount();                           
+    
+    // Check all the fields and store first and last name
+    for ( TInt i = 0; i < fieldCount;  ++i )
+        {
+        MVPbkStoreContactField& field = fields.FieldAt( i );    
+        const MVPbkFieldType* fieldType = field.BestMatchingFieldType();
+        
+        if ( fieldType )
+            {
+            if ( fieldType->FieldTypeResId() == R_VPBK_FIELD_TYPE_THUMBNAILPIC )
+                {
+                MVPbkContactFieldData& contactField = field.FieldData(); 
+                iImageBuffer = 
+                    MVPbkContactFieldBinaryData::Cast(contactField).BinaryData().AllocL();
+                }
+            
+            if ( fieldType->FieldTypeResId() == R_VPBK_FIELD_TYPE_CALLEROBJIMG )
+                {
+                MVPbkContactFieldData& contactField = field.FieldData();                        
+                iImageFileName = MVPbkContactFieldTextData::Cast(contactField).Text().AllocL();
+                }
+            }
+        }
+        
+    if( iImageBuffer )
+        {
+        RFs& fs = CEikonEnv::Static()->FsSession();
+        iImageDecoding = CCCAppImageDecoding::NewL(
+                *this, 
+                fs, 
+                iImageBuffer, 
+                iImageFileName );
+        iImageFileName = NULL;  // ownership is moved to CCCAppImageDecoding
+        iImageBuffer = NULL;  // ownership is moved to CCCAppImageDecoding   
+        iImageDecoding->StartL( aThumbnailSize );      
+        }
+    else
+        {
+        iObserver.ThumbnailLoadError( KErrNotFound );
+        }        
+    
+    CCA_DP(KMyCardLogFile, 
+        CCA_L("<-CCCAppMyCardImageLoader::LoadContactImageL()"));
+    }
+
+// ---------------------------------------------------------------------------
+// CCCAppMyCardImageLoader::LoadImageL
+// ---------------------------------------------------------------------------
+//
+void CCCAppMyCardImageLoader::LoadImageL( 
+    const TDesC8& aImageData,
+    const TDesC& aImageFileName,
+    const TSize& aThumbnailSize )
+    {
+    CCA_DP(KMyCardLogFile, 
+        CCA_L("->CCCAppMyCardImageLoader::LoadImageL()"));
+
+    delete iImageDecoding;
+    iImageDecoding = NULL;
+    
+    RFs& fs = CEikonEnv::Static()->FsSession();
+    iImageDecoding = CCCAppImageDecoding::NewL(
+            *this, 
+            fs, 
+            aImageData.AllocLC(), 
+            aImageFileName.AllocLC() );
+    CleanupStack::Pop( 2 ); // imagedata, imagefilename
+    iImageDecoding->StartL( aThumbnailSize );      
+
+    CCA_DP(KMyCardLogFile, 
+        CCA_L("<-CCCAppMyCardImageLoader::LoadImageL()"));
+    }
+
+// ---------------------------------------------------------------------------
+// CCCAppMyCardImageLoader::ResizeImageL
+// ---------------------------------------------------------------------------
+//
+void CCCAppMyCardImageLoader::ResizeImageL( const TSize& aThumbnailSize )
+    {
+    if( iImageDecoding  )
+        {
+        iImageDecoding->StartL( aThumbnailSize );      
+        }
+    }
+
+// ---------------------------------------------------------------------------
+// CCCAppMyCardImageLoader::BitmapReadyL
+// ---------------------------------------------------------------------------
+//
+void CCCAppMyCardImageLoader::BitmapReadyL( CFbsBitmap* aBitmap )
+    {
+    iObserver.ThumbnailReady( aBitmap );
+    }
+
+
+// End of File