upnpframework/upnpthumbnail/inc/upnpthumbnailcreator.h
branchIOP_Improvements
changeset 40 08b5eae9f9ff
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/upnpframework/upnpthumbnail/inc/upnpthumbnailcreator.h	Wed Nov 03 11:45:09 2010 +0200
@@ -0,0 +1,207 @@
+/*
+* 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 file defines the API for ThumbnailCreator.dll
+
+#ifndef __UPNPTHUMBNAILCREATOR_H__
+#define __UPNPTHUMBNAILCREATOR_H__
+
+//  Include Files
+
+#include <e32base.h>	// CBase
+#include <e32std.h>	 // TBuf
+#include <mdesession.h>
+#include <mdeconstants.h>
+#include <mdenamespacedef.h>
+#include <mdequery.h>
+#include <mdeobject.h>
+#include <thumbnailmanager.h>
+#include <thumbnailmanagerobserver.h>
+#include "upnpthumbnailcreatorobserver.h"
+
+class CMdeSession;
+class CMdEObjectQuery;
+class CFbsBitmap;
+class CImageEncoder;
+//  Constants
+
+enum TThumbnailDlnaSize
+    {
+    ESmall = 0,
+    EMedium,
+    ELarge,
+    EThumbnail,
+    ESmallIcon,
+    ELargeIcon
+    };
+
+//  Class Definitions
+
+NONSHARABLE_CLASS( CUpnpThumbnailCreator) : private CActive,
+                                          private MMdESessionObserver,
+                                          private MMdEQueryObserver,
+                                          private MThumbnailManagerObserver
+    {
+public:
+    // states for this engine
+    enum TThumbnailCreatorStates 
+        {
+        EIdle = 0,
+        EInitializeMde,
+        EQueryingImage,
+        EFetchingThumbnail,
+        EConvertingThumbnail
+        };
+        // new functions
+    
+    /**
+     * static NewL
+     *
+     * @param MUpnpThumbnailCreatorObserver, thumbnail creator observer
+     * @param aFilePath, file path of the source file
+     * @return instance to CUpnpThumbnailCreator
+     */
+    IMPORT_C static CUpnpThumbnailCreator* NewL(
+                    MUpnpThumbnailCreatorObserver& aMThumbnailCreatorObserver,
+                    const TDesC& aFilePath,
+                    TThumbnailDlnaSize aSize);
+    
+    /**
+     * static NewLC
+     *
+     * @param MUpnpThumbnailCreatorObserver, thumbnail creator observer
+     * @param aFilePath, file path of the source file 
+     * @return instance to CUpnpThumbnailCreator
+     */
+    IMPORT_C static CUpnpThumbnailCreator* NewLC(
+                    MUpnpThumbnailCreatorObserver& aMThumbnailCreatorObserver,
+                    const TDesC& aFilePath,
+                    TThumbnailDlnaSize aSize);
+
+
+    /**
+     * On completion of the ThumbnailCreatorReady callback with status KErrNone, 
+     * this method MdeObjectId returns the MdE object Id for the image.
+     * @return ObjectId for the object in MdE 
+     */
+    IMPORT_C TInt MdeObjectId() const;
+    
+    /**
+     * On completion of the ThumbnailCreatorReady callback with status KErrNone, 
+     * this method ThumbnailFilePath returns the thumbnail file path.
+     * @return filepath of the thumbnail 
+     */
+    IMPORT_C const TDesC& ThumbnailFilePath() const;
+    
+    /**
+     * On completion of the ThumbnailCreatorReady callback with status KErrNone, 
+     * this method Thumbnail returns the thumbnail
+     * @return reference to thumbnail created 
+     */
+    IMPORT_C CFbsBitmap& Thumbnail() const;
+
+public:
+    
+    /**
+     *  Destructor
+     */
+     ~CUpnpThumbnailCreator();
+    
+private:
+    /********************************************************************
+     * MMdESessionObserver  virtual methods
+     ********************************************************************/
+    void HandleSessionOpened(CMdESession& aSession, TInt aError);
+    void HandleSessionError(CMdESession& aSession, TInt aError);
+    
+    /********************************************************************
+     * MMdEQueryObserver virtual methods
+     ********************************************************************/
+    void HandleQueryNewResults(CMdEQuery& aQuery, TInt aFirstNewItemIndex,
+                                           TInt aNewItemCount);
+    void HandleQueryCompleted(CMdEQuery& aQuery, TInt aError);
+    
+    /********************************************************************
+     * MThumbnailManagerObserver virtual methods
+     ********************************************************************/
+    // Callbacks from MThumbnailManagerObserver for getting thumbnails
+    void ThumbnailPreviewReady(MThumbnailData& aThumbnail,
+                                            TThumbnailRequestId aId );
+    
+    void ThumbnailReady(TInt aError, MThumbnailData& aThumbnail, 
+                                            TThumbnailRequestId aId );    
+    
+
+private:
+    // CActive
+     void DoCancel();
+     void RunL();    
+     TInt RunError (TInt aError);
+    
+private:
+    // new functions
+    
+    // CI: erkki missing doxygen comments @param ...
+    
+    /** CUpnpthumbnailCreator Constructor*/
+    CUpnpThumbnailCreator(
+            MUpnpThumbnailCreatorObserver& aMUpnpThumbnailCreatorObserver,
+            TThumbnailDlnaSize aSize);
+    
+    /** Two Phase constructor -ConstructL method*/
+    void ConstructL(const TDesC& aFilePath);
+    
+    TSize ConvertDlnaSizeToImageSize();
+    
+    /** Query to Metadata engine*/
+    void QueryMdeL();
+    
+    /** GetThumbnail from Thumbnailmanager*/
+    void GetThumbnail();
+    
+    /** Pepare the filepath for thumbnail storage*/
+    void PrepareThumbnailFilePathL();
+
+    /** Notifies observer*/
+    void ThumbnailReady( TInt aErr );
+    
+    /** Uses ICL encoder to Encode and Save the thumbnail*/
+    void EncodeAndSaveThumbnailL();
+    
+    /** Completes active object*/
+    void CompleteRequest(TInt aError);
+    
+
+
+private:
+    // data
+    CMdESession* iMdESession;  //owned
+    CMdEQuery* iMdEQuery;      //owned
+    CFbsBitmap* iThumbnail;    //owned
+    HBufC* iImageFilePath;     //owned
+    HBufC* iThumbnailFilePath; //owned
+    TInt iObjectid;
+    CThumbnailManager* iThmbManager; //owned
+    MUpnpThumbnailCreatorObserver& iMUpnpThumbnailCreatorObserver;
+    RFs iFsSession;    //owned
+    CImageEncoder*         iImageEncoder; //owned, encoder from ICL API    
+    TThumbnailCreatorStates iState;
+    TThumbnailDlnaSize iThumbnailDlnaSize;
+    };
+
+#endif  // __UPNPTHUMBNAILCREATOR_H__
+