diff -r 000000000000 -r 2014ca87e772 imagehandlingutilities/thumbnailmanager/thumbnailclient/inc/thumbnailmanagerimpl.h --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/imagehandlingutilities/thumbnailmanager/thumbnailclient/inc/thumbnailmanagerimpl.h Tue Jan 26 15:18:05 2010 +0200 @@ -0,0 +1,440 @@ +/* +* Copyright (c) 2006-2007 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 class of Thumbnail Manager + * +*/ + + +#ifndef THUMBNAILMANAGERIMPL_H +#define THUMBNAILMANAGERIMPL_H + +#include + +#include "thumbnailmanager.h" +#include "thumbnailsession.h" +#include "thumbnailrequestqueue.h" +#include "thumbnaildata.h" + + +class CThumbnailRequestActive; + +/** + * Implementation class of thumbnail engine. + * + * @since S60 v5.0 + */ +NONSHARABLE_CLASS( CThumbnailManagerImpl ): public CThumbnailManager + { +public: + + /** + * Destructor + * + * @since S60 v5.0 + */ + virtual ~CThumbnailManagerImpl(); + + /** + * Two-phased constructor + * + * @since S60 v5.0 + * @param aObserver Observer to receive notifications about completed + * operations. + * @return New CThumbnailManagerImpl instance. + */ + static CThumbnailManagerImpl* NewLC( MThumbnailManagerObserver& aObserver ); + + /** + * Get a thumbnail for an object file. If a thumbnail already exists, it + * is loaded and if a thumbnail does not exist, it is created + * transparently. ThumbnailReady() callback will be called when the + * operation is complete. In addition, ThumbnailPreviewReady() + * callback may be called if EOptimizeForQualityWithPreview mode was + * defined. + * + * Current values for display mode, thumbnail size, flags and performance + * preference are used. + * + * @since S60 v5.0 + * @param aObjectSource Source object or file + * @param aClientData Pointer to arbitrary client data. + * This pointer is not used by the API for + * anything other than returning it in the + * ThumbnailReady callback. + * @param aPriority Priority for this operation + * @return Thumbnail request ID + */ + TThumbnailRequestId GetThumbnailL( CThumbnailObjectSource& aObjectSource, + TAny* aClientData = NULL, const TInt aPriority = CActive::EPriorityIdle + ); + + /** + * Get a thumbnail for an object file. If a thumbnail already exists, it + * is loaded and if a thumbnail does not exist, it is created + * transparently. ThumbnailReady() callback will be called when the + * operation is complete. In addition, ThumbnailPreviewReady() + * callback may be called if EOptimizeForQualityWithPreview mode was + * defined. + * + * Current values for display mode, thumbnail size, flags and performance + * preference are used. + * + * @since S60 v5.0 + * @param aObjectSource Source object or file + * @param aClientData Pointer to arbitrary client data. + * This pointer is not used by the API for + * anything other than returning it in the + * ThumbnailReady callback. + * @param aPriority Priority for this operation + * @param aGeneratePersistentSizesOnly Only persitent sizes generated + * @return Thumbnail request ID + */ + TThumbnailRequestId GetThumbnailL( CThumbnailObjectSource& aObjectSource, + TAny* aClientData, const TInt aPriority, TBool aGeneratePersistentSizesOnly); + + /** + * Get a persistent thumbnail for an object file. If a thumbnail already + * exists, it is loaded and if a thumbnail does not exist, it is created + * transparently. ThumbnailReady() callback will be called when the + * operation is complete. In addition, ThumbnailPreviewReady() + * callback may be called if EOptimizeForQualityWithPreview mode was + * defined. + * + * Current values for display mode, thumbnail size, flags and performance + * preference are used. + * + * @since S60 v5.0 + * @param aThumbnailId Thumbnail ID + * @param aThumbnailSizeType Thumbnail size enumeration + * @param aClientData Pointer to arbitrary client data. + * This pointer is not used by the API for + * anything other than returning it in the + * ThumbnailReady callback. + * @param aPriority Priority for this operation + * @return Thumbnail request ID. This can be used to + * cancel the request or change priority. + * The ID is specific to this CThumbnailManager + * instance and may not be shared with other + * instances. + */ + TThumbnailRequestId GetThumbnailL( const TThumbnailId, + TAny* aClientData = NULL, TInt aPriority = CActive::EPriorityIdle ); + + /** + * Import an image to be used as thumbnail for an object. If a + * thumbnail already exists, it is loaded and if a thumbnail does not + * exist, it is created transparently. ThumbnailReady() callback will be + * called when the operation is complete. In addition, ThumbnailPreviewReady() + * callback may be called if EOptimizeForQualityWithPreview mode was + * defined. + * + * Current values for display mode, thumbnail size, flags and performance + * preference are used. + * + * @since S60 v5.0 + * @param aObjectSource Source object or file + * @param aTargetUri Target URI to which the imported thumbnail is linked. + * @param aClientData Pointer to arbitrary client data. + * This pointer is not used by the API for + * anything other than returning it in the + * ThumbnailReady callback. + * @param aPriority Priority for this operation + * @return Thumbnail request ID + */ + TThumbnailRequestId ImportThumbnailL( CThumbnailObjectSource& aObjectSource, + const TDesC& aTargetUri, TAny* aClientData = NULL, + const TInt aPriority = CActive::EPriorityIdle ); + + /** + * Set persistent size scaled thumbnails for an object. If a + * thumbnail already exists, it is replaced and if a thumbnail does not + * exist, it is created transparently. + * + * Current values for display mode, thumbnail size, flags and performance + * preference are used. + * + * @since S60 v5.0 + * @param aObjectSource Source object or file + * @param aClientData Pointer to arbitrary client data. + * This pointer is not used by the API for + * anything other than returning it in the + * ThumbnailReady callback. + * @param aPriority Priority for this operation + * @return Thumbnail request ID. This can be used to + * cancel the request or change priority. + * The ID is specific to this CThumbnailManager + * instance and may not be shared with other + * instances. + */ + TThumbnailRequestId SetThumbnailL( CThumbnailObjectSource& source, + TAny* aClientData = NULL, + TInt aPriority = CActive::EPriorityIdle); + + /** + * Get the current display mode for thumbnail bitmaps. + * + * @since S60 v5.0 + * @return Default display mode for the thumbnail bitmaps. + */ + TDisplayMode DisplayMode()const; + + /** + * Set the current display mode for thumbnail bitmaps. + * + * @since S60 v5.0 + * @param aDisplayMode New display mode value for the thumbnail bitmaps. + */ + void SetDisplayModeL( const TDisplayMode aDisplayMode ); + + /** + * Get the current quality versus performance preference. + * + * @since S60 v5.0 + * @return Current quality versus performance preference. + */ + TThumbnailQualityPreference QualityPreference()const; + + /** + * Set quality versus performance preference. + * + * @since S60 v5.0 + * @param aQualityPreference New quality versus performance preference + * value. + */ + void SetQualityPreferenceL( const TThumbnailQualityPreference + aQualityPreference ); + + /** + * Get the current desired size for thumbnail bitmaps. + * + * @since S60 v5.0 + * @return Current desired size for thumbnail bitmaps (in pixels). + */ + const TSize& ThumbnailSize()const; + + /** + * Set desired size for thumbnail bitmaps. + * + * @since S60 v5.0 + * @param aThumbnailSize New quality for the desired thumbnail size. + */ + void SetThumbnailSizeL( const TSize& aThumbnailSize ); + + /** + * Set desired size for thumbnail bitmaps. + * + * @since S60 v5.0 + * @param aThumbnailSize New quality for the desired thumbnail size. + */ + void SetThumbnailSizeL( const TThumbnailSize aThumbnailSize ); + + /** + * Get current flags for thumbnail generation. + * + * @since S60 v5.0 + * @return Current flags. + */ + TThumbnailFlags Flags()const; + + /** + * Set flags for thumbnail generation. Several flags may be enabled + * by combining the values using bitwise or. + * + * @since S60 v5.0 + * @param aFlags New flags. + */ + void SetFlagsL( const TThumbnailFlags aFlags ); + + /** + * Delete all thumbnails for a given object. This is an asynchronous + * operation, which always returns immediately. + * + * @since S60 v5.0 + * @param aObjectSource Source object or file + */ + void DeleteThumbnails( CThumbnailObjectSource& aObjectSource ); + + /** + * Delete thumbnails by TThumbnailId. This is an asynchronous + * operation, which always returns immediately. + * + * @since S60 v5.0 + * @param aItemId TThumbnailId + */ + void DeleteThumbnails( const TThumbnailId aItemId ); + + /** + * Create thumbnail for a given object. This is an asynchronous + * operation, which always returns immediately. No callbacks are + * emitted. + * + * @since S60 v5.0 + * @param aObjectSource Source object or file + * @param aPriority Priority for this operation + * @return Thumbnail creation request ID + */ + TThumbnailRequestId CreateThumbnails( CThumbnailObjectSource& aObjectSource, + TInt aPriority = CActive::EPriorityIdle ); + + /** + * Cancel a thumbnail operation. + * + * @since S60 v5.0 + * @param aId Request ID for the operation to be cancelled. + * @return Symbian OS error code or KErrNone if cancelling was + * successful. + */ + TInt CancelRequest( const TThumbnailRequestId aId ); + + /** + * Change the priority of a queued thumbnail operation. + * + * @since S60 v5.0 + * @param aId Request ID for the request which to assign a new + * priority. + * @param aNewPriority New priority value + * @return Symbian OS error code or KErrNone if change was + * successful. + */ + TInt ChangePriority( const TThumbnailRequestId aId, const TInt aNewPriority + ); + + /** + * Get a list of supported file formats for object files. + * + * The return value is a reference to a list that contains each + * supported MIME type. There may also be wildcards, such as "image/ *". + * + * The returned reference is valid until CThumbnailManager is + * destroyed or GetSupportedMimeTypesL() is called again. + * + * @since S60 v5.0 + * @return A list of supported MIME types. May contain wildcards. + * Ownership not transferred. + */ + const CDesCArray& GetSupportedMimeTypesL(); + + /** + * Update Thumbnails by TThumbnailId. This is an asynchronous + * operation, which always returns immediately. + * + * @since S60 v5.0 + * @param aItemId TThumbnailId + * @param aPath (New) path for the Thumbnail + * @param aOrientation Thumbnail orientation + * @param aModified Last modified + * @param aPriority Priority for this operation + */ + void UpdateThumbnailsL( const TThumbnailId aItemId, const TDesC& aPath, + const TInt aOrientation, const TInt64 aModified, TInt aPriority ); + +private: + + /** + * C++ default constructor + * + * @since S60 v5.0 + * @param aObserver Observer to receive notifications about completed + * operations. + * @return New CThumbnailManagerImpl instance. + */ + CThumbnailManagerImpl( MThumbnailManagerObserver& aObserver ); + + /** + * Symbian 2nd phase constructor can leave. + * + * @since S60 v5.0 + */ + void ConstructL(); + + +private: + // data + + /** + * Default width of thumbnail. + */ + TInt iDefaultWidth; + + /** + * Default height of thumbnail + */ + TInt iDefaultHeight; + + /** + * Observer to receive notifications about completed operations. + */ + MThumbnailManagerObserver& iObserver; + + /** + * Session. + */ + RThumbnailSession iSession; + + /** + * Fileserver. + */ + RFs iFs; + + /** + * Request queue processor. + */ + CThumbnailRequestQueue* iRequestQueue; + + /** + * Display mode. + */ + TDisplayMode iDisplayMode; + + /** + * Flags. + */ + TThumbnailFlags iFlags; + + /** + * Quality preference. + */ + TThumbnailQualityPreference iQualityPreference; + + /** + * Requested size of thumbnail. + */ + TSize iSize; + + TThumbnailSize iThumbnailSize; + + /** + * Request ID for this thumbnail request, session specific. + */ + TThumbnailRequestId iRequestId; + + /** + * Font and Bitmap Server session. Only used unless the client + * does not already have an open session. + */ + RFbsSession iFbsSession; + + /** + * Temporary buffer for filename handling + */ + TFileName iFileNameBuf; + + /** + * List of supported MIME-types. + * Own. + */ + CDesCArraySeg* iMimeTypeList; +}; + +#endif