imagehandling_plat/thumbnailmanager_api/inc/thumbnailmanager.h
changeset 54 48dd0f169f0d
parent 42 2e2a89493e2b
equal deleted inserted replaced
42:2e2a89493e2b 54:48dd0f169f0d
     1 /*
       
     2 * Copyright (c) 2006-2007 Nokia Corporation and/or its subsidiary(-ies). 
       
     3 * All rights reserved.
       
     4 * This component and the accompanying materials are made available
       
     5 * under the terms of "Eclipse Public License v1.0"
       
     6 * which accompanies this distribution, and is available
       
     7 * at the URL "http://www.eclipse.org/legal/epl-v10.html".
       
     8 *
       
     9 * Initial Contributors:
       
    10 * Nokia Corporation - initial contribution.
       
    11 *
       
    12 * Contributors:
       
    13 *
       
    14 * Description:  Main interface class to Thumbnail Manager
       
    15  *
       
    16 */
       
    17 
       
    18 
       
    19 #ifndef THUMBNAILMANAGER_H
       
    20 #define THUMBNAILMANAGER_H
       
    21 
       
    22 #include <e32base.h>
       
    23 #include <gdi.h>
       
    24 #include <badesca.h>
       
    25 
       
    26 #include <thumbnailobjectsource.h>
       
    27 
       
    28 class MThumbnailManagerObserver;
       
    29 class MThumbnailManagerRequestObserver;
       
    30 
       
    31 typedef TInt TThumbnailRequestId;
       
    32 
       
    33 typedef TUint32 TThumbnailId;
       
    34 typedef enum 
       
    35 {
       
    36 EUnknownThumbnailSize,
       
    37 ECustomThumbnailSize,
       
    38 EImageGridThumbnailSize,
       
    39 EImageListThumbnailSize,
       
    40 EImageFullScreenThumbnailSize,
       
    41 EVideoGridThumbnailSize,
       
    42 EVideoListThumbnailSize,
       
    43 EVideoFullScreenThumbnailSize,      
       
    44 EAudioGridThumbnailSize,
       
    45 EAudioListThumbnailSize,
       
    46 EAudioFullScreenThumbnailSize,
       
    47 EGridThumbnailSize,
       
    48 EListThumbnailSize,
       
    49 EFullScreenThumbnailSize,
       
    50 EContactGridThumbnailSize,
       
    51 EContactListThumbnailSize,
       
    52 EContactFullScreenThumbnailSize,
       
    53 EThumbnailSizeCount //last item, don't remove
       
    54 } TThumbnailSize;
       
    55 /**
       
    56  *  Thumbnail engine.
       
    57  *
       
    58  *  This is the main interface class to thumbnail engine. Thumbnail engine
       
    59  *  can be used to request thumbnails for different kinds of media objects.
       
    60  *
       
    61  *  The client using thumbnail engine must implement the
       
    62  *  MThumbnailManagerObserver. The observer interface is used to provide
       
    63  *  thumbnail data when it is available.
       
    64  *
       
    65  *  Typical use of thumbnail engine consists of 4 parts:
       
    66  *  - creating an engine instance using NewL
       
    67  *  - setting thumbnail parameters using SetThumbnailSizeL(), SetFlags(),
       
    68  *    and so on
       
    69  *  - creating an object source (CThumbnailObjectSource) and using it to
       
    70  *    request thumbnails
       
    71  *  - handling MThumbnailManagerObserver callbacks when the thumbnail request
       
    72  *    is complete
       
    73  *
       
    74  *  Here is an example of how thumbnail engine could be used by a typical
       
    75  *  application:
       
    76  *
       
    77  *  @code
       
    78  *
       
    79  *  #include <thumbnailmanagerobserver.h>
       
    80  *  #include <thumbnailmanager.h>
       
    81  *
       
    82  *  class CMyThumbnailControl: public CCoeControl,
       
    83  *                             public MThumbnailManagerObserver
       
    84  *      {
       
    85  *  public:
       
    86  *      CMyThumbnailControl();
       
    87  *      ~CMyThumbnailControl();
       
    88  *      ...
       
    89  *
       
    90  *      // Callbacks from MThumbnailManagerObserver for getting thumbnails
       
    91  *      void ThumbnailPreviewReady(
       
    92  *          MThumbnailData& aThumbnail,
       
    93  *          TThumbnailRequestId aId );
       
    94  *      void ThumbnailReady(
       
    95  *          TInt aError, 
       
    96  *          MThumbnailData& aThumbnail, 
       
    97  *          TThumbnailRequestId aId );
       
    98  *
       
    99  *  private:
       
   100  *      void ConstructL();
       
   101  *      CThumbnailManager* iManager;
       
   102  *      CFbsBitmap* iBitmap;
       
   103  *      }
       
   104  *
       
   105  *  _LIT( KTestFilePath, "e:\\TestImage.jpg" );
       
   106  *  _LIT( KTestFileType, "image/jpeg" );
       
   107  *
       
   108  *  void CMyThumbnailControl::ConstructL()
       
   109  *      {
       
   110  *      // Create Thumbnail Manager instance. This object is the observer.
       
   111  *      iManager = CThumbnailManager::NewL( *this ); 
       
   112  *
       
   113  *      // Set flags: If the aspect ratio of the media object does not match
       
   114  *      // 4:3 then we would like it to be cropped. We don’t mind getting
       
   115  *      // smaller images than requested.
       
   116  *      iManager->SetFlagsL( CThumbnailManager::ECropToAspectRatio |
       
   117  *                           CThumbnailManager::EAllowAnySize );
       
   118  *
       
   119  *      // Preferred size is 160x120 (or less)
       
   120  *      iManager->SetSizeL( TSize( 160, 120 ) );
       
   121  *
       
   122  *      // Get a preview thumbnail first, if available.
       
   123  *      // The preview thumbnail is delivered via a ThumbnailPreviewReady()
       
   124  *      // callback.
       
   125  *      iManager->SetQualityPreferenceL(
       
   126  *          CThumbnailManager::EOptimizeForQualityWithPreview );
       
   127  *
       
   128  *      // Create an object source representing a path to a file on local
       
   129  *      // file system.
       
   130  *      CThumbnailObjectSource* source = CThumbnailObjectSource::NewLC(
       
   131  *          KTestFilePath,   // File path
       
   132  *          KTestFileType ); // Let Thumbnail Manager know it’s a JPEG, so
       
   133  *                           // it doesn’t need to recognize the file format
       
   134  *
       
   135  *      // Issue the request using default priority
       
   136  *      iManager->GetThumbnailL( *source );
       
   137  *
       
   138  *      // If GetThumbnailL() did not leave, the ThumbnailReady() callback is
       
   139  *      // now guaranteed to be called, unless the request is cancelled or
       
   140  *      // CThumbnailManager instance is deleted.
       
   141  *
       
   142  *      // The source can be deleted immediately after issuing the request
       
   143  *      CleanupStack::PopAndDestroy( source );
       
   144  *      }
       
   145  *
       
   146  *  CMyThumbnailControl::~CMyThumbnailControl()
       
   147  *      {
       
   148  *      // Bitmap should be destroyed before Thumbnail Manager
       
   149  *      delete iBitmap;
       
   150  *      delete iManager;
       
   151  *      }
       
   152  *
       
   153  *  void CMyThumbnailControl::ThumbnailReady(
       
   154  *      TInt aError,
       
   155  *      MThumbnailData& aThumbnail,
       
   156  *      TThumbnailRequestId aId )
       
   157  *      {
       
   158  *      // This function must not leave.
       
   159  *
       
   160  *      delete iBitmap; iBitmap = NULL;
       
   161  *      if ( !aError )
       
   162  *          {
       
   163  *          // Claim ownership of the bitmap instance for later use
       
   164  *          iBitmap = aThumbnail.DetachBitmap();
       
   165  *
       
   166  *          // We can now use iBitmap in our Draw() method
       
   167  *          DrawDeferred();
       
   168  *          }
       
   169  *      else
       
   170  *          {
       
   171  *          // An error occurred while getting the thumbnail.
       
   172  *          // Perhaps we should show a broken image icon to the user.
       
   173  *          }
       
   174  *      }
       
   175  *
       
   176  *  @endcode
       
   177  *
       
   178  *  @lib thumbnailmanager.lib
       
   179  *  @since S60 v5.0
       
   180  */
       
   181 NONSHARABLE_CLASS( CThumbnailManager ): public CBase
       
   182     {
       
   183 public:
       
   184     /**
       
   185      * Flags for thumbnail creation.
       
   186      * These can be combined using bitwise or.
       
   187      */
       
   188     enum TThumbnailFlags
       
   189         {
       
   190         /**
       
   191          * Default flags. This means that:
       
   192          * - Thumbnail must be as large as requested (unless the actual
       
   193          *   object is smaller).
       
   194          * - Smaller thumbnails may be up scaled to desired resolution.
       
   195          * - Aspect ratio is maintained and thumbnails are not cropped. The
       
   196          *   resulting thumbnail may smaller in either width or height if
       
   197          *   the aspect ratio of the object does not match the aspect ratio
       
   198          *   of the requested size.
       
   199          */
       
   200         EDefaultFlags = 0, 
       
   201 
       
   202         /**
       
   203          * Allow thumbnails which are smaller than requested are. Thumbnail
       
   204          * bitmaps are never up scaled if this flag is set.
       
   205          */
       
   206         EAllowAnySize = 1, 
       
   207 
       
   208         /**
       
   209          * New thumbnail images are not created if this flag is set. Only
       
   210          * existing thumbnails may be returned. If a requested thumbnail does
       
   211          * not exist, KErrNotFound error is returned in ThumbnailReady()
       
   212          * callback.
       
   213          */
       
   214         EDoNotCreate = 2, 
       
   215 
       
   216         /**
       
   217          * Thumbnail images are cropped to match requested aspect ratio. If
       
   218          * this flag is set, the size of the resulting thumbnail always
       
   219          * matches the requested size.
       
   220          */
       
   221         ECropToAspectRatio = 4
       
   222     };
       
   223 
       
   224     /**  Quality versus speed preference setting */
       
   225     enum TThumbnailQualityPreference
       
   226         {
       
   227         /**
       
   228          * Prefer thumbnails in the highest quality possible disregarding
       
   229          * any negative impact on performance.
       
   230          */
       
   231         EOptimizeForQuality, 
       
   232 
       
   233         /**
       
   234          * Get thumbnails as fast as possible, even if
       
   235          * it means lower quality.
       
   236          */
       
   237         EOptimizeForPerformance, 
       
   238 
       
   239         /**
       
   240          * Get lower quality preview thumbnail as fast as possible first and
       
   241          * then a higher quality thumbnail later. The preview thumbnail is
       
   242          * provided in the ThumbnailPreviewReady() callback and the high
       
   243          * quality thumbnail in ThumbnailReady(). ThumbnailPreviewReady()
       
   244          * is not get called at all if a suitable existing thumbnail is not
       
   245          * found or if a high quality version is already available.
       
   246          */
       
   247         EOptimizeForQualityWithPreview
       
   248         };
       
   249 
       
   250     /**
       
   251      * Two-phased constructor.
       
   252      *
       
   253      * @since S60 v5.0
       
   254      * @param  aObserver Observer to receive notifications about completed
       
   255      *                   operations.
       
   256      * @return           New CThumbnailManager instance.
       
   257      */
       
   258     IMPORT_C static CThumbnailManager* NewL( MThumbnailManagerObserver&
       
   259         aObserver );
       
   260 
       
   261     /**
       
   262      * Two-phased constructor.
       
   263      *
       
   264      * @since S60 v5.0
       
   265      * @param  aObserver Observer to receive notifications about completed
       
   266      *                   operations.
       
   267      * @return           New CThumbnailManager instance (on cleanup stack).
       
   268      */
       
   269     IMPORT_C static CThumbnailManager* NewLC( MThumbnailManagerObserver&
       
   270         aObserver );
       
   271 
       
   272     /**
       
   273      * Destructor
       
   274      *
       
   275      * @since S60 v5.0
       
   276      */
       
   277     virtual ~CThumbnailManager();
       
   278 
       
   279     /**
       
   280      * Get the current display mode for thumbnail bitmaps.
       
   281      *
       
   282      * @since S60 v5.0
       
   283      * @return Current display mode for the thumbnail bitmaps.
       
   284      */
       
   285     virtual TDisplayMode DisplayMode()const = 0;
       
   286 
       
   287     /**
       
   288      * Set the current display mode for thumbnail bitmaps.
       
   289      *
       
   290      * @since S60 v5.0
       
   291      * @param aDisplayMode New display mode value for the thumbnail bitmaps.
       
   292      */
       
   293     virtual void SetDisplayModeL( TDisplayMode aDisplayMode ) = 0;
       
   294 
       
   295     /**
       
   296      * Get the current quality versus performance preference.
       
   297      *
       
   298      * @since S60 v5.0
       
   299      * @return Current quality versus performance preference.
       
   300      */
       
   301     virtual TThumbnailQualityPreference QualityPreference()const = 0;
       
   302 
       
   303     /**
       
   304      * Set quality versus performance preference.
       
   305      *
       
   306      * @since S60 v5.0
       
   307      * @param aQualityPreference New quality versus performance preference
       
   308      *                           value.
       
   309      */
       
   310     virtual void SetQualityPreferenceL( TThumbnailQualityPreference
       
   311         aQualityPreference ) = 0;
       
   312 
       
   313     /**
       
   314      * Get the current desired size for thumbnail bitmaps.
       
   315      *
       
   316      * @since S60 v5.0
       
   317      * @return Current desired size for thumbnail bitmaps (in pixels).
       
   318      */
       
   319     virtual const TSize& ThumbnailSize()const = 0;
       
   320 
       
   321     /**
       
   322      * Set desired size for thumbnail bitmaps.
       
   323      *
       
   324      * @since S60 v5.0
       
   325      * @param aThumbnailSize New quality for the desired thumbnail size.
       
   326      */
       
   327     virtual void SetThumbnailSizeL( const TSize& aThumbnailSize ) = 0;
       
   328 
       
   329     
       
   330     /**
       
   331      * Get current flags for thumbnail generation.
       
   332      *
       
   333      * @since S60 v5.0
       
   334      * @return Current flags.
       
   335      */
       
   336     virtual TThumbnailFlags Flags()const = 0;
       
   337 
       
   338     /**
       
   339      * Set flags for thumbnail generation. Several flags may be enabled
       
   340      * by combining the values using bitwise or.
       
   341      *
       
   342      * @since S60 v5.0
       
   343      * @param aFlags New flags.
       
   344      */
       
   345     virtual void SetFlagsL( TThumbnailFlags aFlags ) = 0;
       
   346 
       
   347     /**
       
   348      * Get a thumbnail for an object file. If a thumbnail already exists, it
       
   349      * is loaded and if a thumbnail does not exist, it is created
       
   350      * transparently. ThumbnailReady() callback will be called when the
       
   351      * operation is complete. In addition, ThumbnailPreviewReady()
       
   352      * callback may be called if EOptimizeForQualityWithPreview mode was
       
   353      * defined.
       
   354      *
       
   355      * Current values for display mode, thumbnail size, flags and performance
       
   356      * preference are used.
       
   357      *
       
   358      * @since S60 v5.0
       
   359      * @param aObjectSource      Source object or file
       
   360      * @param aClientData        Pointer to arbitrary client data.
       
   361      *                           This pointer is not used by the API for
       
   362      *                           anything other than returning it in the
       
   363      *                           ThumbnailReady callback.
       
   364      * @param aPriority          Priority for this operation
       
   365      * @return                   Thumbnail request ID. This can be used to
       
   366      *                           cancel the request or change priority.
       
   367      *                           The ID is specific to this CThumbnailManager
       
   368      *                           instance and may not be shared with other
       
   369      *                           instances.
       
   370      */
       
   371     virtual TThumbnailRequestId GetThumbnailL( CThumbnailObjectSource&
       
   372         aObjectSource, TAny* aClientData = NULL, TInt aPriority = CActive
       
   373         ::EPriorityStandard ) = 0;
       
   374 
       
   375     /**
       
   376      * Delete all thumbnails for a given object. This is an asynchronous
       
   377      * operation, which always returns immediately.
       
   378      *
       
   379      * @since S60 v5.0
       
   380      * @param aObjectSource      Source object or file
       
   381      */
       
   382     virtual void DeleteThumbnails( CThumbnailObjectSource& aObjectSource ) = 0;
       
   383 
       
   384     /**
       
   385      * Create thumbnail for a given object. This is an asynchronous
       
   386      * operation, which always returns immediately. No callbacks are
       
   387      * emitted.
       
   388      *
       
   389      * @since S60 v5.0
       
   390      * @param aObjectSource      Source object or file
       
   391      * @param aPriority          Priority for this operation
       
   392      * @return                   Thumbnail request ID. This can be used to
       
   393      *                           cancel the request or change priority.
       
   394      *                           The ID is specific to this CThumbnailManager
       
   395      *                           instance and may not be shared with other
       
   396      *                           instances.
       
   397      */
       
   398     virtual TThumbnailRequestId CreateThumbnails( CThumbnailObjectSource&
       
   399         aObjectSource, TInt aPriority = CActive::EPriorityIdle ) = 0;
       
   400 
       
   401     /**
       
   402      * Cancel a thumbnail operation.
       
   403      *
       
   404      * @since S60 v5.0
       
   405      * @param aId      Request ID for the operation to be cancelled.
       
   406      * @return         Symbian OS error code or KErrNone if cancelling was
       
   407      *                 successful.
       
   408      */
       
   409     virtual TInt CancelRequest( TThumbnailRequestId aId ) = 0;
       
   410 
       
   411     /**
       
   412      * Change the priority of a queued thumbnail operation.
       
   413      *
       
   414      * @since S60 v5.0
       
   415      * @param aId           Request ID for the request which to assign a new
       
   416      *                      priority.
       
   417      * @param aNewPriority  New priority value
       
   418      * @return              Symbian OS error code or KErrNone if change was
       
   419      *                      successful.
       
   420      */
       
   421     virtual TInt ChangePriority( TThumbnailRequestId aId, TInt aNewPriority ) = 0;
       
   422 
       
   423     /**
       
   424      * Get a list of supported file formats for object files.
       
   425      * 
       
   426      * The return value is a reference to a list that contains each
       
   427      * supported MIME type. There may also be wildcards, such as "image/*".
       
   428      * 
       
   429      * The returned reference is valid until CThumbnailManager is
       
   430      * destroyed or GetSupportedMimeTypesL() is called again.
       
   431      *
       
   432      * @since S60 v5.0
       
   433      * @return A list of supported MIME types. May contain wildcards.
       
   434      *         Ownership not transferred.
       
   435      */
       
   436     virtual const CDesCArray& GetSupportedMimeTypesL() = 0;
       
   437 
       
   438     /**
       
   439      * Delete thumbnails by TThumbnailId. This is an asynchronous
       
   440      * operation, which always returns immediately.
       
   441      *
       
   442      * @since S60 v5.0
       
   443      * @param aItemId     TThumbnailId
       
   444      */
       
   445     virtual void DeleteThumbnails( const TThumbnailId aItemId ) = 0;    
       
   446 
       
   447 /**
       
   448      * Set desired size for thumbnail bitmaps.
       
   449      *
       
   450      * @since S60 v5.0
       
   451      * @param aThumbnailSize Desired thumbnail size.
       
   452      */    
       
   453     virtual void SetThumbnailSizeL( const TThumbnailSize aThumbnailSize ) = 0;
       
   454 
       
   455     /**
       
   456      * Get a persistent thumbnail for an object file. If a thumbnail already
       
   457      *  exists, it is loaded and if a thumbnail does not exist, it is created
       
   458      * transparently. ThumbnailReady() callback will be called when the
       
   459      * operation is complete. In addition, ThumbnailPreviewReady()
       
   460      * callback may be called if EOptimizeForQualityWithPreview mode was
       
   461      * defined.
       
   462      *
       
   463      * Current values for display mode, thumbnail size, flags and performance
       
   464      * preference are used.
       
   465      *
       
   466      * @since S60 v5.0
       
   467      * @param aThumbnailId       Thumbnail ID
       
   468      * @param aThumbnailSizeType Thumbnail size enumeration
       
   469      * @param aClientData        Pointer to arbitrary client data.
       
   470      *                           This pointer is not used by the API for
       
   471      *                           anything other than returning it in the
       
   472      *                           ThumbnailReady callback.
       
   473      * @param aPriority          Priority for this operation
       
   474      * @return                   Thumbnail request ID. This can be used to
       
   475      *                           cancel the request or change priority.
       
   476      *                           The ID is specific to this CThumbnailManager
       
   477      *                           instance and may not be shared with other
       
   478      *                           instances.
       
   479      */    
       
   480     virtual TThumbnailRequestId GetThumbnailL( const TThumbnailId aThumbnailId,
       
   481         TAny* aClientData = NULL, 
       
   482         TInt aPriority = CActive::EPriorityStandard ) = 0;
       
   483     
       
   484     
       
   485     /**
       
   486      * Set a thumbnail for an object file generated from buffer delivered in source 
       
   487      * object. ThumbnailReady() callback will be called when the
       
   488      * operation is complete. In addition, ThumbnailPreviewReady()
       
   489      * callback may be called if EOptimizeForQualityWithPreview mode was
       
   490      * defined.
       
   491      *
       
   492      * Current values for display mode, thumbnail size, flags and performance
       
   493      * preference are used.
       
   494      *
       
   495      * @since S60 v5.0
       
   496      * @param aThumbnailId       Thumbnail ID
       
   497      * @param aThumbnailSizeType Thumbnail size enumeration
       
   498      * @param aClientData        Pointer to arbitrary client data.
       
   499      *                           This pointer is not used by the API for
       
   500      *                           anything other than returning it in the
       
   501      *                           ThumbnailReady callback.
       
   502      * @param aPriority          Priority for this operation
       
   503      * @return                   Thumbnail request ID. This can be used to
       
   504      *                           cancel the request or change priority.
       
   505      *                           The ID is specific to this CThumbnailManager
       
   506      *                           instance and may not be shared with other
       
   507      *                           instances.
       
   508      */    
       
   509     virtual TThumbnailRequestId SetThumbnailL( CThumbnailObjectSource& aObjectSource,
       
   510         TAny* = NULL, 
       
   511         TInt aPriority = CActive::EPriorityIdle ) = 0;
       
   512     
       
   513     
       
   514     /**
       
   515      * Import an image to be used as thumbnail for an object. If a
       
   516      * thumbnail already exists, it is loaded and if a thumbnail does not
       
   517      * exist, it is created transparently. ThumbnailReady() callback will be
       
   518      * called when the operation is complete. In addition, ThumbnailPreviewReady()
       
   519      * callback may be called if EOptimizeForQualityWithPreview mode was
       
   520      * defined.
       
   521      * 
       
   522      * Current values for display mode, thumbnail size, flags and performance
       
   523      * preference are used.
       
   524      *
       
   525      * @since S60 v5.0
       
   526      * @param aObjectSource      Source object or file
       
   527      * @param aTargetUri         Target URI to which the imported thumbnail is linked.
       
   528      * @param aClientData        Pointer to arbitrary client data.
       
   529      *                           This pointer is not used by the API for
       
   530      *                           anything other than returning it in the
       
   531      *                           ThumbnailReady callback.
       
   532      * @param aPriority          Priority for this operation
       
   533      * @return                   Thumbnail request ID. This can be used to
       
   534      *                           cancel the request or change priority.
       
   535      *                           The ID is specific to this CThumbnailManager
       
   536      *                           instance and may not be shared with other
       
   537      *                           instances.
       
   538      */
       
   539      virtual TThumbnailRequestId ImportThumbnailL( CThumbnailObjectSource& aObjectSource,
       
   540         const TDesC& aTargetUri, TAny* aClientData = NULL,
       
   541         TInt aPriority = CActive::EPriorityIdle ) = 0;
       
   542 
       
   543      /**
       
   544       * Update Thumbnails by TThumbnailId. This is an asynchronous
       
   545       * operation, which always returns immediately.
       
   546       *
       
   547       * @since S60 v5.0
       
   548       * @param aItemId       TThumbnailId
       
   549       * @param aPath         (New) path for the Thumbnail
       
   550       * @param aOrientation  Thumbnail orientation
       
   551       * @param aModified     Last modified
       
   552       */
       
   553       virtual void UpdateThumbnailsL( const TThumbnailId aItemId, const TDesC& aPath,
       
   554                                       const TInt aOrientation, const TInt64 aModified, const TInt aPriority  ) = 0;
       
   555       
       
   556       /**
       
   557        * Rename Thumbnails. This is an asynchronous
       
   558        * operation, which always returns immediately.
       
   559        *
       
   560        * @since S60 v5.0
       
   561        * @param aCurrentPath     Current path of the Thumbnail
       
   562        * @param aNewPath         New path for the Thumbnail
       
   563        * @param aPriority        Priority for this operation
       
   564        * @return                 Thumbnail request ID. This can be used to
       
   565        *                         cancel the request or change priority.
       
   566        *                         The ID is specific to this CThumbnailManager
       
   567        *                         instance and may not be shared with other
       
   568        *                         instances.
       
   569        */
       
   570        virtual TThumbnailRequestId RenameThumbnailsL( const TDesC& aCurrentPath, 
       
   571                const TDesC& aNewPath, TInt aPriority = CActive::EPriorityIdle ) = 0;
       
   572 
       
   573        /**
       
   574         * Set optional request observer for getting information about completed 
       
   575         * requests that don't include a thumbnail.
       
   576         *
       
   577         * @since Symbian^3
       
   578         * @param aObserver Observer to receive notifications.
       
   579         */
       
   580        virtual void SetRequestObserver( MThumbnailManagerRequestObserver& aObserver ) = 0;
       
   581        
       
   582        /**
       
   583         * Remove optional request observer.
       
   584         *
       
   585         * @since Symbian^3
       
   586         */
       
   587        virtual void RemoveRequestObserver() = 0;
       
   588 };
       
   589 
       
   590 #endif // THUMBNAILMANAGER_H