Revision: 201039 RCL_3 PDK_3.0.4
authorDremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
Wed, 13 Oct 2010 14:53:56 +0300
branchRCL_3
changeset 58 9e8b0cc88842
parent 50 60bb012f1157
Revision: 201039 Kit: 201041
imagehandling_plat/thumbnailmanager_api/inc/thumbnailmanager.h
imagehandling_plat/thumbnailmanager_api/inc/thumbnailobjectsource.h
imagehandling_plat/thumbnailmanager_api/tsrc/conf/ThumbnailManagerTest.cfg
imagehandling_plat/thumbnailmanager_api/tsrc/group/ThumbnailManagerTest.pkg
imagehandling_plat/thumbnailmanager_api/tsrc/inc/ThumbnailManagerTest.h
imagehandling_plat/thumbnailmanager_api/tsrc/inc/thumbnailcenrep.h
imagehandling_plat/thumbnailmanager_api/tsrc/src/ThumbnailManagerTestBlocks.cpp
imagehandling_plat/thumbnailmanager_api/tsrc/src/thumbnailcenrep.cpp
imagehandlinglib/Src/IHLDebugPrint.h
imagehandlingutilities/thumbnailmanager/conf/102830B0.txt
imagehandlingutilities/thumbnailmanager/conf/thumbnailmanager.confml
imagehandlingutilities/thumbnailmanager/conf/thumbnailmanager_102830B0.crml
imagehandlingutilities/thumbnailmanager/inc/thumbnailmanagerconstants.h
imagehandlingutilities/thumbnailmanager/inc/thumbnailmanagerprivatecrkeys.h
imagehandlingutilities/thumbnailmanager/plugins/audio/src/thumbnailaudioprovider.cpp
imagehandlingutilities/thumbnailmanager/plugins/audio/src/thumbnailimagedecoderv3.cpp
imagehandlingutilities/thumbnailmanager/plugins/image/src/thumbnailimagedecoder.cpp
imagehandlingutilities/thumbnailmanager/plugins/image/src/thumbnailimagedecoderv2.cpp
imagehandlingutilities/thumbnailmanager/plugins/image/src/thumbnailimageprovider.cpp
imagehandlingutilities/thumbnailmanager/sis/thumbnailmanager/ThumbnailManager_0x102830AB_v9.20.8_SA_S60.50_Euro1.sis
imagehandlingutilities/thumbnailmanager/sis/thumbnailmanager/package.pkg
imagehandlingutilities/thumbnailmanager/sis/thumbnailmanager/stub.pkg
imagehandlingutilities/thumbnailmanager/sis/thumbnailmanager/thumbnailmanager_stub.sis
imagehandlingutilities/thumbnailmanager/sis/thumbnailmanagercenrep/package.pkg
imagehandlingutilities/thumbnailmanager/thumbagdaemon/inc/thumbagprocessor.h
imagehandlingutilities/thumbnailmanager/thumbagdaemon/src/thumbagaudioobserver.cpp
imagehandlingutilities/thumbnailmanager/thumbagdaemon/src/thumbagcameraobserver.cpp
imagehandlingutilities/thumbnailmanager/thumbagdaemon/src/thumbagdaemon.cpp
imagehandlingutilities/thumbnailmanager/thumbagdaemon/src/thumbagimageobserver.cpp
imagehandlingutilities/thumbnailmanager/thumbagdaemon/src/thumbagprocessor.cpp
imagehandlingutilities/thumbnailmanager/thumbagdaemon/src/thumbagvideoobserver.cpp
imagehandlingutilities/thumbnailmanager/thumbnailclient/bwins/thumbnailmanageru.def
imagehandlingutilities/thumbnailmanager/thumbnailclient/eabi/thumbnailmanageru.def
imagehandlingutilities/thumbnailmanager/thumbnailclient/inc/thumbnailrequestactive.h
imagehandlingutilities/thumbnailmanager/thumbnailclient/src/thumbnaildataimpl.cpp
imagehandlingutilities/thumbnailmanager/thumbnailclient/src/thumbnailmanagerimpl.cpp
imagehandlingutilities/thumbnailmanager/thumbnailclient/src/thumbnailobjectsource.cpp
imagehandlingutilities/thumbnailmanager/thumbnailclient/src/thumbnailrequestactive.cpp
imagehandlingutilities/thumbnailmanager/thumbnailclient/src/thumbnailrequestqueue.cpp
imagehandlingutilities/thumbnailmanager/thumbnailserver/inc/thumbnailcenrep.h
imagehandlingutilities/thumbnailmanager/thumbnailserver/inc/thumbnailfetchedchecker.h
imagehandlingutilities/thumbnailmanager/thumbnailserver/inc/thumbnailgeneratetask.h
imagehandlingutilities/thumbnailmanager/thumbnailserver/inc/thumbnailscaletask.h
imagehandlingutilities/thumbnailmanager/thumbnailserver/inc/thumbnailserver.h
imagehandlingutilities/thumbnailmanager/thumbnailserver/inc/thumbnailsql.h
imagehandlingutilities/thumbnailmanager/thumbnailserver/inc/thumbnailstore.h
imagehandlingutilities/thumbnailmanager/thumbnailserver/src/thumbnailcenrep.cpp
imagehandlingutilities/thumbnailmanager/thumbnailserver/src/thumbnailfetchedchecker.cpp
imagehandlingutilities/thumbnailmanager/thumbnailserver/src/thumbnailgeneratetask.cpp
imagehandlingutilities/thumbnailmanager/thumbnailserver/src/thumbnailmdsquerytask.cpp
imagehandlingutilities/thumbnailmanager/thumbnailserver/src/thumbnailscaletask.cpp
imagehandlingutilities/thumbnailmanager/thumbnailserver/src/thumbnailserver.cpp
imagehandlingutilities/thumbnailmanager/thumbnailserver/src/thumbnailserversession.cpp
imagehandlingutilities/thumbnailmanager/thumbnailserver/src/thumbnailstore.cpp
imagehandlingutilities/thumbnailmanager/thumbnailserver/src/thumbnailtask.cpp
imagehandlingutilities/thumbnailmanager/thumbnailserver/src/tmgetimei.cpp
imagehandlingutilities/thumbnailmanager/tmiadrestart/src/tmiadrestart.cpp
--- a/imagehandling_plat/thumbnailmanager_api/inc/thumbnailmanager.h	Wed Sep 15 12:32:44 2010 +0300
+++ b/imagehandling_plat/thumbnailmanager_api/inc/thumbnailmanager.h	Wed Oct 13 14:53:56 2010 +0300
@@ -47,9 +47,6 @@
 EGridThumbnailSize,
 EListThumbnailSize,
 EFullScreenThumbnailSize,
-EContactGridThumbnailSize,
-EContactListThumbnailSize,
-EContactFullScreenThumbnailSize,
 EThumbnailSizeCount //last item, don't remove
 } TThumbnailSize;
 /**
--- a/imagehandling_plat/thumbnailmanager_api/inc/thumbnailobjectsource.h	Wed Sep 15 12:32:44 2010 +0300
+++ b/imagehandling_plat/thumbnailmanager_api/inc/thumbnailobjectsource.h	Wed Oct 13 14:53:56 2010 +0300
@@ -134,45 +134,6 @@
      */
     void ConstructL( const RFile64& aFile, const TDesC& aMimeType );
 
-    /**
-     * Symbian 2nd phase constructor can leave.
-     *
-     * @since S60 v5.0
-     * @param aURI URI.
-     * @param aMimeType MimeType.
-     * @param aThumbnailId ThumbnailId
-     */
-    void ConstructL( const TDesC& aUri, const TDesC& aMimeType, TThumbnailId aThumbnailId );
-
-    /**
-     * Symbian 2nd phase constructor can leave.
-     *
-     * @since S60 v5.0
-     * @param aBitmap Bitmap.
-     * @param aURI URI.
-     */   
-    void ConstructL( CFbsBitmap* aBitmap, const TDesC& aUri );
-
-    /**
-     * Symbian 2nd phase constructor can leave.
-     *
-     * @since S60 v5.0
-     * @param aBuffer Buffer.
-     * @param aMimeType MIME type. Optional, but should be specified if known.
-     * @param aURI URI.
-     */
-    void ConstructL( TDesC8* aBuffer, const TDesC& aMimeType, const TDesC& aUri );    
-    
-    /**
-     * Symbian 2nd phase constructor can leave.
-     *
-     * @since Symbian^3
-     * @param aUri Object URI or a full path to a file in the file system.
-     * @param aTargetUri      For linking the thumbnail to a different URI.
-     * @param aMimeType MIME type. Optional, but should be specified if known.
-     */
-    void ConstructL( const TDesC& aUri, const TDesC& aTargetUri, const TDesC& aMimeType );
-    
 private:
     // data
 
@@ -199,19 +160,25 @@
     /**
      * Bitmap
      */
+
     CFbsBitmap* iBitmap; // own
     
     /**
      * ThumbnailId
-     */    
-    TThumbnailId iThumbnailId; //own
+     */
     
-    /**
-     * Uri
-     */
-    HBufC* iTargetUri; // own
+    TThumbnailId iThumbnailId; //own
 	
 public:
+    /**
+     * Symbian 2nd phase constructor can leave.
+     *
+     * @since S60 v5.0
+     * @param aURI URI.
+     * @param aMimeType MimeType.
+     * @param aThumbnailId ThumbnailId
+     */
+	void ConstructL( const TDesC& aUri, const TDesC& aMimeType, TThumbnailId aThumbnailId );
 	    
     /**
      * Construct a new CThumbnailObjectSource referring to a buffer 
@@ -244,8 +211,7 @@
      * @since S60 v5.0
      * @return New CThumbnailObjectSource instance.
      */       
-    IMPORT_C static CThumbnailObjectSource* NewL( TDesC8* aBuffer,  TDesC& aMimeType, 
-        const TDesC& aUri );
+    IMPORT_C static CThumbnailObjectSource* NewL( TDesC8* aBuffer,  TDesC& aMimeType, const TDesC& aUri );
     
     /**
      * Construct a new CThumbnailObjectSource referring to a buffer 
@@ -257,8 +223,7 @@
      * @since S60 v5.0
      * @return New CThumbnailObjectSource instance.
      */       
-    IMPORT_C static CThumbnailObjectSource* NewLC( TDesC8* aBuffer,  TDesC& aMimeType, 
-        const TDesC& aUri);
+    IMPORT_C static CThumbnailObjectSource* NewLC( TDesC8* aBuffer,  TDesC& aMimeType, const TDesC& aUri);
 
     /**
      * Construct a new CThumbnailObjectSource referring to an URI.
@@ -268,7 +233,7 @@
      * @return New CThumbnailObjectSource instance.
      */
     IMPORT_C static CThumbnailObjectSource* NewL( const TDesC& aUri, 
-        TThumbnailId aThumbnailId = 0, const TDesC& aMimeType = KNullDesC );
+            TThumbnailId aThumbnailId = 0, const TDesC& aMimeType = KNullDesC );
 
     /**
      * Construct a new CThumbnailObjectSource referring to an URI.
@@ -278,8 +243,9 @@
      * @return New CThumbnailObjectSource instance.
      */
     IMPORT_C static CThumbnailObjectSource* NewLC( const TDesC& aUri,
-        TThumbnailId aThumbnailId = 0, const TDesC& aMimeType = KNullDesC );
-    	 
+            TThumbnailId aThumbnailId = 0, const TDesC& aMimeType = KNullDesC );
+    
+	 
     /**
      * Returns source buffer.
      *
@@ -310,8 +276,30 @@
      *
      * @since S60 v5.0
      * @return ThumbnailId 
-     */     
-    IMPORT_C TThumbnailId Id(); 	    
+     */ 
+    
+    IMPORT_C TThumbnailId Id(); 
+	    
+    /**
+     * Symbian 2nd phase constructor can leave.
+     *
+     * @since S60 v5.0
+     * @param aBitmap Bitmap.
+     * @param aURI URI.
+     */   
+    void ConstructL( CFbsBitmap* aBitmap, const TDesC&
+            aUri );
+
+    /**
+     * Symbian 2nd phase constructor can leave.
+     *
+     * @since S60 v5.0
+     * @param aBuffer Buffer.
+     * @param aMimeType MIME type. Optional, but should be specified if known.
+     * @param aURI URI.
+     */
+    void ConstructL( TDesC8* aBuffer, const TDesC&
+        aMimeType, const TDesC& aUri );
     
     /**
      * Returns source bitmap.
@@ -329,36 +317,6 @@
      * @return bitmap
      */
     IMPORT_C CFbsBitmap* GetBitmapOwnership();
-    
-    /**
-     * Construct a new CThumbnailObjectSource referring to an URI.
-     * @param aUri      Object URI or a full path to a file in the file system.
-     * @param aTargetUri      For linking the thumbnail to a different URI.
-     * @param aMimeType MIME type. Optional, but should be specified if known.
-     * @since Symbian^3
-     * @return New CThumbnailObjectSource instance.
-     */
-    IMPORT_C static CThumbnailObjectSource* NewL( const TDesC& aUri, 
-            const TDesC& aTargetUri, const TDesC& aMimeType );
-
-    /**
-     * Construct a new CThumbnailObjectSource referring to an URI.
-     * @param aUri      Object URI or a full path to a file in the file system.
-     * @param aTargetUri      For linking the thumbnail to a different URI.
-     * @param aMimeType MIME type. 
-     * @since Symbian^3
-     * @return New CThumbnailObjectSource instance.
-     */
-    IMPORT_C static CThumbnailObjectSource* NewLC( const TDesC& aUri, 
-            const TDesC& aTargetUri, const TDesC& aMimeType );
-    
-    /**
-     * Returns target uri.
-     *
-     * @since Symbian^3
-     * @return uri
-     */
-    IMPORT_C const TDesC& TargetUri();
 };
 
 #endif // THUMBNAILOBJECTSOURCE_H
--- a/imagehandling_plat/thumbnailmanager_api/tsrc/conf/ThumbnailManagerTest.cfg	Wed Sep 15 12:32:44 2010 +0300
+++ b/imagehandling_plat/thumbnailmanager_api/tsrc/conf/ThumbnailManagerTest.cfg	Wed Oct 13 14:53:56 2010 +0300
@@ -15,7 +15,6 @@
 *
 */
 
-
 [StifSettings]
 TestThreadStackSize= 32768
 TestThreadMinHeap= 4096
@@ -88,9 +87,6 @@
 EGridThumbnailSize = 11
 EListThumbnailSize = 12
 EFullScreenThumbnailSize = 13
-EContactGridThumbnailSize = 14
-EContactListThumbnailSize = 15
-EContactFullScreenThumbnailSize = 16
 
 // Custom sizes
 KCustomSizeX 111
@@ -609,128 +605,12 @@
 pause KTestDelay
 [Endtest]
 
-// ---------------------------------------------------------------------------
-// Create MP3 thumbnail with PNG album art
-// ---------------------------------------------------------------------------
-[Test]
-title Create MP3 thumbnail with PNG album art
-create ThumbnailManagerTest tn
-tn CreateInstanceL
-tn SetDisplayModeL EColor16M
-
-// using path
-tn CreateSourceInstancePathL \data\ThumbnailManagerTest\mp3_png.mp3
-tn DeleteThumbnails
-tn SetThumbnailEnumSizeL EImageGridThumbnailSize
-tn GetThumbnailL
-waittestclass tn
-tn CheckThumbnailCenrepL EImageGridThumbnailSize EColor16M
-tn DeleteThumbnails
-tn SetThumbnailEnumSizeL EImageFullScreenThumbnailSize
-tn GetThumbnailL
-waittestclass tn
-tn CheckThumbnailCenrepL EImageFullScreenThumbnailSize EColor16M
-tn DeleteThumbnails
-tn SetThumbnailEnumSizeL ECustomThumbnailSize
-tn SetThumbnailSizeL KCustomSizeX KCustomSizeY
-tn GetThumbnailL
-waittestclass tn
-tn CheckThumbnailL KCustomSizeX KCustomSizeY EColor16M
-tn DeleteThumbnails
-tn DeleteSourceInstance
-
-tn DeleteInstance
-delete tn
-pause KTestDelay
-[Endtest]
 
 // ---------------------------------------------------------------------------
-// Create thumbnail preview from JPG with EXIF 
+// Thumbs from buffer
 // ---------------------------------------------------------------------------
 [Test]
-title Create thumbnail preview from JPG with EXIF 
-create ThumbnailManagerTest tn
-tn CreateInstanceL
-tn SetDisplayModeL EColor16M
-
-// jpg with exif
-tn CreateSourceInstancePathL \data\ThumbnailManagerTest\RGB_VGA.jpg
-tn DeleteThumbnails
-tn SetThumbnailEnumSizeL EImageGridThumbnailSize
-tn SetQualityPreferenceL EOptimizeForQualityWithPreview
-tn GetThumbnailL
-waittestclass tn
-tn CheckThumbnailCenrepL EImageGridThumbnailSize EColor16M
-tn DeleteThumbnails
-tn DeleteSourceInstance 
-
-// png with exif
-tn CreateSourceInstancePathL \data\ThumbnailManagerTest\exif.png
-tn DeleteThumbnails
-tn SetThumbnailEnumSizeL EImageGridThumbnailSize
-tn SetQualityPreferenceL EOptimizeForQualityWithPreview
-tn GetThumbnailL
-waittestclass tn
-tn CheckThumbnailCenrepL EImageGridThumbnailSize EColor16M
-tn DeleteThumbnails
-tn DeleteSourceInstance 
-
-// no exif
-tn CreateSourceInstancePathL \data\ThumbnailManagerTest\no_exif.jpg
-tn DeleteThumbnails
-tn SetThumbnailEnumSizeL EImageGridThumbnailSize
-tn SetQualityPreferenceL EOptimizeForQualityWithPreview
-tn GetThumbnailL
-waittestclass tn
-tn CheckThumbnailCenrepL EImageGridThumbnailSize EColor16M
-tn DeleteThumbnails
-tn DeleteSourceInstance 
-
-tn DeleteInstance
-delete tn
-pause KTestDelay
-[Endtest]
-
-// ---------------------------------------------------------------------------
-// Create thumbnail from WMA PNG & empty album arts
-// ---------------------------------------------------------------------------
-[Test]
-title Create thumbnail from WMA PNG & empty album arts
-create ThumbnailManagerTest tn
-tn CreateInstanceL
-tn SetDisplayModeL EColor16M
-
-// try to create thumbnail from PNG
-tn CreateSourceInstancePathL \data\ThumbnailManagerTest\wma_png.wma
-tn DeleteThumbnails
-tn SetThumbnailEnumSizeL EAudioFullScreenThumbnailSize
-tn GetThumbnailL
-allownextresult KErrNotFound
-waittestclass tn
-tn DeleteThumbnails
-tn DeleteSourceInstance  
-
-// try to create thumbnail without album art
-tn CreateSourceInstancePathL \data\ThumbnailManagerTest\wma_empty.wma
-tn DeleteThumbnails
-tn SetThumbnailEnumSizeL EAudioFullScreenThumbnailSize
-tn GetThumbnailL
-allownextresult KErrNotFound
-waittestclass tn
-tn DeleteThumbnails
-tn DeleteSourceInstance 
-
-tn DeleteInstance
-delete tn
-pause KTestDelay
-[Endtest]
-
-
-// ---------------------------------------------------------------------------
-// Create thumbs from buffer
-// ---------------------------------------------------------------------------
-[Test]
-title Create thumbs from buffer
+title Thumbs from buffer
 create ThumbnailManagerTest tn
 tn CreateInstanceL
 tn SetDisplayModeL EColor16M
@@ -821,77 +701,6 @@
 [Endtest]
 
 // ---------------------------------------------------------------------------
-// Create thumbs from CFbsBitmap
-// ---------------------------------------------------------------------------
-[Test]
-title Create thumbs from CFbsBitmap
-create ThumbnailManagerTest tn
-tn CreateInstanceL
-tn SetDisplayModeL EColor16M
-
-tn SetFlagsL EDefaultFlags
-tn CreateSourceInstanceBitmapL \data\ThumbnailManagerTest\TestMBM.mbm \data\ThumbnailManagerTest\camera.jpg
-tn DeleteThumbnails
-tn CreateThumbnails
-waittestclass tn
-
-pause KTenSecondDelay
-
-tn DeleteSourceInstance
-
-tn CreateSourceInstancePathL \data\ThumbnailManagerTest\camera.jpg
-tn SetFlagsL EDoNotCreate
-tn SetThumbnailEnumSizeL EImageGridThumbnailSize
-tn GetThumbnailL
-waittestclass tn
-tn CheckThumbnailCenrepL EImageGridThumbnailSize EColor16M
-tn SetThumbnailEnumSizeL EImageFullScreenThumbnailSize
-tn GetThumbnailL
-waittestclass tn
-tn CheckThumbnailCenrepL EImageFullScreenThumbnailSize EColor16M
-tn DeleteThumbnails
-tn DeleteSourceInstance
-
-tn DeleteInstance
-delete tn
-pause KTestDelay
-[Endtest]
-
-
-// ---------------------------------------------------------------------------
-// Create image/audio/video thumbs
-// ---------------------------------------------------------------------------
-[Test]
-title Create image/audio/video thumbs
-create ThumbnailManagerTest tn
-tn CreateInstanceL
-tn SetDisplayModeL EColor16M
-
-// try to create thumbnail from image
-tn CreateThumbnailsByUrlL \data\ThumbnailManagerTest\RGB_VGA.jpg
-waittestclass tn
-tn DeleteThumbnails
-tn DeleteSourceInstance  
-
-// try to create thumbnail from music
-tn CreateThumbnailsByUrlL \data\ThumbnailManagerTest\mp3_png.mp3
-waittestclass tn
-tn DeleteThumbnails
-tn DeleteSourceInstance  
-
-// try to create thumbnail from video
-tn CreateThumbnailsByUrlL \data\ThumbnailManagerTest\Videoclip.mp4
-waittestclass tn
-tn DeleteThumbnails
-tn DeleteSourceInstance  
-
-tn DeleteInstance
-delete tn
-pause KTestDelay
-[Endtest]
-
-
-// ---------------------------------------------------------------------------
 // Create thumbnails for each persistent size
 // ---------------------------------------------------------------------------
 [Test]
@@ -1025,6 +834,80 @@
 pause KTestDelay
 [Endtest]
 
+
+// ---------------------------------------------------------------------------
+// Thumbnail from missing or unsupported file
+// ---------------------------------------------------------------------------
+[Test]
+title Thumbnail from missing or unsupported file
+create ThumbnailManagerTest tn
+tn CreateInstanceL
+tn SetThumbnailEnumSizeL ECustomThumbnailSize
+tn SetThumbnailSizeL KCustomSizeX KCustomSizeY
+
+tn CreateSourceInstancePathL \data\ThumbnailManagerTest\does_not_exist.jpg
+tn GetThumbnailL
+allownextresult KErrNotFound
+waittestclass tn
+tn DeleteSourceInstance
+
+tn CreateSourceInstancePathL \data\ThumbnailManagerTest\Unsupported.txt
+tn GetThumbnailL
+allownextresult KErrNotSupported
+waittestclass tn
+tn DeleteSourceInstance
+
+tn CreateSourceInstanceHandleL \data\ThumbnailManagerTest\Unsupported.txt
+tn GetThumbnailL
+allownextresult KErrNotSupported
+waittestclass tn
+tn DeleteSourceInstance
+
+tn CreateSourceInstanceBufferL \data\ThumbnailManagerTest\Unsupported.txt plain/text
+tn GetThumbnailL
+allownextresult KErrNotSupported
+waittestclass tn
+tn DeleteSourceInstance
+
+tn DeleteInstance
+delete tn
+pause KTestDelay
+[Endtest]
+
+// ---------------------------------------------------------------------------
+// Thumbnail from corrupt file
+// ---------------------------------------------------------------------------
+[Test]
+title Thumbnail from corrupt file
+create ThumbnailManagerTest tn
+tn CreateInstanceL
+tn SetThumbnailEnumSizeL ECustomThumbnailSize
+tn SetThumbnailSizeL KCustomSizeX KCustomSizeY
+
+tn CreateSourceInstancePathL \data\ThumbnailManagerTest\not_jpg.jpg
+tn GetThumbnailL
+allownextresult KErrNotFound
+waittestclass tn
+tn DeleteSourceInstance
+
+tn CreateSourceInstanceBufferL \data\ThumbnailManagerTest\not_jpg.jpg image/jpeg
+tn GetThumbnailL
+allownextresult KErrNotFound
+waittestclass tn
+tn DeleteSourceInstance
+
+tn CreateSourceInstancePathL \data\ThumbnailManagerTest\not_3gp.3gp
+tn GetThumbnailL
+allownextresult KErrNotSupported
+waittestclass tn
+tn DeleteSourceInstance
+
+tn DeleteInstance
+delete tn
+pause KTestDelay
+[Endtest]
+
+
 // ---------------------------------------------------------------------------
 // Custom size thumbs
 // ---------------------------------------------------------------------------
@@ -1714,79 +1597,28 @@
 
 
 // ---------------------------------------------------------------------------
-// Thumbnail from missing or unsupported file
+// Create thumbnail with id
 // ---------------------------------------------------------------------------
 [Test]
-title Thumbnail from missing or unsupported file
+title Create thumbnail with id
 create ThumbnailManagerTest tn
 tn CreateInstanceL
-tn SetThumbnailEnumSizeL ECustomThumbnailSize
-tn SetThumbnailSizeL KCustomSizeX KCustomSizeY
+tn SetDisplayModeL EColor16M
 
-tn CreateSourceInstancePathL \data\ThumbnailManagerTest\does_not_exist.jpg
+tn SetThumbnailEnumSizeL EImageGridThumbnailSize
+tn CreateSourceInstancePathL \data\ThumbnailManagerTest\RGB_VGA.jpg 99999
 tn GetThumbnailL
-allownextresult KErrNotFound
 waittestclass tn
-tn DeleteSourceInstance
+tn CheckThumbnailCenrepL EImageGridThumbnailSize EColor16M
+tn DeleteThumbnails
 
-tn CreateSourceInstancePathL \data\ThumbnailManagerTest\Unsupported.txt
-tn GetThumbnailL
-allownextresult KErrNotSupported
-waittestclass tn
 tn DeleteSourceInstance
-
-tn CreateSourceInstanceHandleL \data\ThumbnailManagerTest\Unsupported.txt
-tn GetThumbnailL
-allownextresult KErrNotSupported
-waittestclass tn
-tn DeleteSourceInstance
-
-tn CreateSourceInstanceBufferL \data\ThumbnailManagerTest\Unsupported.txt plain/text
-tn GetThumbnailL
-allownextresult KErrNotSupported
-waittestclass tn
-tn DeleteSourceInstance
-
 tn DeleteInstance
 delete tn
 pause KTestDelay
 [Endtest]
 
 // ---------------------------------------------------------------------------
-// Thumbnail from corrupt file
-// ---------------------------------------------------------------------------
-[Test]
-title Thumbnail from corrupt file
-create ThumbnailManagerTest tn
-tn CreateInstanceL
-tn SetThumbnailEnumSizeL ECustomThumbnailSize
-tn SetThumbnailSizeL KCustomSizeX KCustomSizeY
-
-tn CreateSourceInstancePathL \data\ThumbnailManagerTest\not_jpg.jpg
-tn GetThumbnailL
-allownextresult KErrNotFound
-waittestclass tn
-tn DeleteSourceInstance
-
-tn CreateSourceInstanceBufferL \data\ThumbnailManagerTest\not_jpg.jpg image/jpeg
-tn GetThumbnailL
-allownextresult KErrNotFound
-waittestclass tn
-tn DeleteSourceInstance
-
-tn CreateSourceInstancePathL \data\ThumbnailManagerTest\not_3gp.3gp
-tn GetThumbnailL
-allownextresult KErrNotSupported
-waittestclass tn
-tn DeleteSourceInstance
-
-tn DeleteInstance
-delete tn
-pause KTestDelay
-[Endtest]
-
-
-// ---------------------------------------------------------------------------
 // Set thumbnail from buffer
 // ---------------------------------------------------------------------------
 [Test]
@@ -1844,47 +1676,72 @@
 [Endtest]
 
 // ---------------------------------------------------------------------------
-// Set thumbnail from path
+// Import thumbnail
 // ---------------------------------------------------------------------------
 [Test]
-title Set thumbnail from path
+title Import thumbnail
 create ThumbnailManagerTest tn
 tn CreateInstanceL
 tn SetDisplayModeL EColor16M
 
-// normal uri
 tn SetFlagsL EDefaultFlags
-tn CreateSourceInstancePathTargetL \data\ThumbnailManagerTest\RGB_VGA.jpg \data\ThumbnailManagerTest\target.jpg image/jpeg 0 0
-tn SetThumbnailL
-
+tn SetThumbnailEnumSizeL EImageGridThumbnailSize
+tn CreateSourceInstancePathL \data\ThumbnailManagerTest\RGB_VGA.jpg
+tn DeleteThumbnails
+tn ImportThumbnailL \data\ThumbnailManagerTest\imported.jpg
 waittestclass tn
+tn DeleteSourceInstance
 
-tn DeleteSourceInstance
-tn CreateSourceInstancePathL \data\ThumbnailManagerTest\target.jpg
-tn SetThumbnailEnumSizeL EImageGridThumbnailSize
 tn SetFlagsL EDoNotCreate
+tn CreateSourceInstancePathL \data\ThumbnailManagerTest\imported.jpg
 tn GetThumbnailL
-
 waittestclass tn
 tn CheckThumbnailCenrepL EImageGridThumbnailSize EColor16M
 tn DeleteThumbnails
 tn DeleteSourceInstance
 
-// virtual uri
 tn SetFlagsL EDefaultFlags
-tn CreateSourceInstancePathTargetL \data\ThumbnailManagerTest\RGB_VGA.jpg \data\ThumbnailManagerTest\target.vcf contact/x-vcard 0 1
-tn SetThumbnailL
+tn CreateSourceInstancePathL \data\ThumbnailManagerTest\RGB_400x300.bmp
+tn DeleteThumbnails
+tn ImportThumbnailL \data\ThumbnailManagerTest\imported.bmp
+waittestclass tn
+tn DeleteSourceInstance
 
+tn SetFlagsL EDoNotCreate
+tn CreateSourceInstancePathL \data\ThumbnailManagerTest\imported.bmp
+tn GetThumbnailL
 waittestclass tn
+tn CheckThumbnailCenrepL EImageGridThumbnailSize EColor16M
+tn DeleteThumbnails
+tn DeleteSourceInstance
 
+tn SetFlagsL EDefaultFlags
+tn CreateSourceInstancePathL \data\ThumbnailManagerTest\WIDE_800x400.gif
+tn DeleteThumbnails
+tn ImportThumbnailL \data\ThumbnailManagerTest\imported.gif
+waittestclass tn
 tn DeleteSourceInstance
-tn CreateSourceInstancePathL \data\ThumbnailManagerTest\target.vcf
-tn SetThumbnailEnumSizeL EContactGridThumbnailSize
+
 tn SetFlagsL EDoNotCreate
+tn CreateSourceInstancePathL \data\ThumbnailManagerTest\imported.gif
 tn GetThumbnailL
-
 waittestclass tn
-tn CheckThumbnailCenrepL EContactGridThumbnailSize EColor16M
+tn CheckThumbnailCenrepL EImageGridThumbnailSize EColor16M
+tn DeleteThumbnails
+tn DeleteSourceInstance
+
+tn SetFlagsL EDefaultFlags
+tn CreateSourceInstancePathL \data\ThumbnailManagerTest\video.3gp
+tn DeleteThumbnails
+tn ImportThumbnailL \data\ThumbnailManagerTest\imported.3gp
+waittestclass tn
+tn DeleteSourceInstance
+
+tn SetFlagsL EDoNotCreate
+tn CreateSourceInstancePathL \data\ThumbnailManagerTest\imported.3gp
+tn GetThumbnailL
+waittestclass tn
+tn CheckThumbnailCenrepL EImageGridThumbnailSize EColor16M
 tn DeleteThumbnails
 tn DeleteSourceInstance
 
@@ -1933,7 +1790,19 @@
 tn GetThumbnailL
 allownextresult KErrNotFound
 waittestclass tn
+tn DeleteThumbnails
+tn DeleteSourceInstance
 
+// delete thumbnail which is not in database yet
+tn SetThumbnailEnumSizeL EImageGridThumbnailSize
+tn CreateSourceInstancePathL \data\ThumbnailManagerTest\RGB_VGA.jpg
+tn CreateThumbnails
+tn DeleteThumbnails
+tn DeleteSourceInstance
+
+tn SetThumbnailEnumSizeL EImageGridThumbnailSize
+tn CreateSourceInstancePathL \data\ThumbnailManagerTest\Videoclip.mp4
+tn CreateThumbnails
 tn DeleteThumbnails
 tn DeleteSourceInstance
 
@@ -1942,116 +1811,11 @@
 pause KTestDelay
 [Endtest]
 
-
 // ---------------------------------------------------------------------------
-// Run multiple tests
+// Delete thumbnail when requests are pending
 // ---------------------------------------------------------------------------
 [Test]
-title Run misc multiple tests
-create ThumbnailManagerTest tn
-tn CreateInstanceL
-tn SetDisplayModeL EColor16M
-
-// using path
-tn CreateSourceInstancePathL \data\ThumbnailManagerTest\RGB_VGA.jpg
-tn DeleteThumbnails
-tn SetThumbnailEnumSizeL EImageGridThumbnailSize
-tn GetThumbnailL
-waittestclass tn
-tn CheckThumbnailCenrepL EImageGridThumbnailSize EColor16M
-tn DeleteThumbnails
-tn SetThumbnailEnumSizeL EImageFullScreenThumbnailSize
-tn GetThumbnailL
-waittestclass tn
-tn CheckThumbnailCenrepL EImageFullScreenThumbnailSize EColor16M
-tn DeleteThumbnails
-tn SetThumbnailEnumSizeL ECustomThumbnailSize
-tn SetThumbnailSizeL KCustomSizeX KCustomSizeY
-tn GetThumbnailL
-waittestclass tn
-tn CheckThumbnailL KCustomSizeX KCustomSizeY EColor16M
-tn DeleteThumbnails
-tn DeleteSourceInstance 
-
-// mp3 using handle
-tn CreateSourceInstanceHandleL \data\ThumbnailManagerTest\mp3.mp3
-tn DeleteThumbnails
-tn SetThumbnailEnumSizeL EAudioGridThumbnailSize
-tn GetThumbnailL
-waittestclass tn
-tn CheckThumbnailCenrepL EAudioGridThumbnailSize EColor16M
-tn DeleteThumbnails
-tn SetThumbnailEnumSizeL EAudioFullScreenThumbnailSize
-tn GetThumbnailL
-waittestclass tn
-tn CheckThumbnailCenrepL EAudioFullScreenThumbnailSize EColor16M
-tn DeleteThumbnails
-tn SetThumbnailEnumSizeL ECustomThumbnailSize
-tn SetThumbnailSizeL KCustomSizeX KCustomSizeY
-tn GetThumbnailL
-waittestclass tn
-tn CheckThumbnailL KCustomSizeX KCustomSizeY EColor16M
-tn DeleteThumbnails
-tn DeleteSourceInstance
-
-// corrupted file
-tn SetThumbnailEnumSizeL ECustomThumbnailSize
-tn SetThumbnailSizeL KCustomSizeX KCustomSizeY
-tn CreateSourceInstancePathL \data\ThumbnailManagerTest\not_jpg.jpg
-tn GetThumbnailL
-allownextresult KErrNotFound
-waittestclass tn
-tn DeleteSourceInstance
-tn CreateSourceInstanceBufferL \data\ThumbnailManagerTest\not_jpg.jpg image/jpeg
-tn GetThumbnailL
-allownextresult KErrNotFound
-waittestclass tn
-tn DeleteSourceInstance
-tn CreateSourceInstancePathL \data\ThumbnailManagerTest\not_3gp.3gp
-tn GetThumbnailL
-allownextresult KErrNotSupported
-waittestclass tn
-tn DeleteSourceInstance
-
-// delete one thumbnail
-tn SetThumbnailEnumSizeL EImageGridThumbnailSize
-tn CreateSourceInstancePathL \data\ThumbnailManagerTest\RGB_VGA.jpg
-tn DeleteThumbnails
-tn GetThumbnailL
-waittestclass tn
-tn CheckThumbnailCenrepL EImageGridThumbnailSize EColor16M
-tn DeleteThumbnails
-pause KTenSecondDelay
-tn SetFlagsL EDoNotCreate
-tn GetThumbnailL
-allownextresult KErrNotFound
-waittestclass tn
-
-// delete all persistent thumbnails created
-tn SetFlagsL EDefaultFlags
-tn CreateThumbnails
-waittestclass tn
-pause KTenSecondDelay
-tn DeleteThumbnails
-pause KTenSecondDelay
-tn SetFlagsL EDoNotCreate
-tn GetThumbnailL
-allownextresult KErrNotFound
-waittestclass tn
-tn DeleteThumbnails
-tn DeleteSourceInstance
-
-tn DeleteInstance
-delete tn
-pause KTestDelay
-[Endtest]
-
-
-// ---------------------------------------------------------------------------
-// Delete engine when requests are pending
-// ---------------------------------------------------------------------------
-[Test]
-title Delete engine when requests are pending
+title Delete thumbnail when requests are pending
 create ThumbnailManagerTest tn
 tn CreateInstanceL
 
@@ -2266,3 +2030,319 @@
 pause KTestDelay
 [Endtest] 
 
+// ---------------------------------------------------------------------------
+// Create thumbnails using CFbsBitmap
+// ---------------------------------------------------------------------------
+[Test]
+title Create thumbnails using CFbsBitmap
+create ThumbnailManagerTest tn
+tn CreateInstanceL
+tn SetDisplayModeL EColor16M
+
+tn SetFlagsL EDefaultFlags
+tn CreateSourceInstanceBitmapL \data\ThumbnailManagerTest\TestMBM.mbm \data\ThumbnailManagerTest\camera.jpg
+tn DeleteThumbnails
+tn CreateThumbnails
+waittestclass tn
+
+pause KTenSecondDelay
+
+tn DeleteSourceInstance
+
+tn SetThumbnailEnumSizeL EImageGridThumbnailSize
+tn CreateSourceInstancePathL \data\ThumbnailManagerTest\camera.jpg
+tn SetFlagsL EDoNotCreate
+tn GetThumbnailL
+waittestclass tn
+tn CheckThumbnailCenrepL EImageGridThumbnailSize EColor16M
+tn SetThumbnailEnumSizeL EImageFullScreenThumbnailSize
+tn GetThumbnailL
+waittestclass tn
+tn CheckThumbnailCenrepL EImageFullScreenThumbnailSize EColor16M
+tn DeleteThumbnails
+tn DeleteSourceInstance
+
+tn DeleteInstance
+delete tn
+pause KTestDelay
+[Endtest]
+
+// ---------------------------------------------------------------------------
+// Load MP3 thumbnail with PNG album art
+// ---------------------------------------------------------------------------
+[Test]
+title Create MP3 PNG album art thumbnail
+create ThumbnailManagerTest tn
+tn CreateInstanceL
+tn SetDisplayModeL EColor16M
+
+tn CreateSourceInstancePathL \data\ThumbnailManagerTest\mp3_png.mp3
+tn DeleteThumbnails
+tn SetThumbnailEnumSizeL EAudioFullScreenThumbnailSize
+tn GetThumbnailL
+waittestclass tn
+tn CheckThumbnailCenrepL EAudioFullScreenThumbnailSize EColor16M
+tn DeleteThumbnails
+tn DeleteSourceInstance 
+
+tn DeleteInstance
+delete tn
+pause KTestDelay
+[Endtest]
+
+
+// ---------------------------------------------------------------------------
+// Test WMA png & empty album arts
+// ---------------------------------------------------------------------------
+[Test]
+title Test WMA png & empty album arts
+create ThumbnailManagerTest tn
+tn CreateInstanceL
+tn SetDisplayModeL EColor16M
+
+// try to create thumbnail from PNG
+tn CreateSourceInstancePathL \data\ThumbnailManagerTest\wma_png.wma
+tn DeleteThumbnails
+tn SetThumbnailEnumSizeL EAudioFullScreenThumbnailSize
+tn GetThumbnailL
+allownextresult KErrNotFound
+waittestclass tn
+tn DeleteThumbnails
+tn DeleteSourceInstance  
+
+// try to create thumbnail without album art
+tn CreateSourceInstancePathL \data\ThumbnailManagerTest\wma_empty.wma
+tn DeleteThumbnails
+tn SetThumbnailEnumSizeL EAudioFullScreenThumbnailSize
+tn GetThumbnailL
+allownextresult KErrNotFound
+waittestclass tn
+tn DeleteThumbnails
+tn DeleteSourceInstance 
+
+tn DeleteInstance
+delete tn
+pause KTestDelay
+[Endtest]
+
+// ---------------------------------------------------------------------------
+// Create thumbnail preview with EXIF 
+// ---------------------------------------------------------------------------
+[Test]
+title Create thumbnail preview with EXIF
+create ThumbnailManagerTest tn
+tn CreateInstanceL
+tn SetDisplayModeL EColor16M
+
+// jpg with exif
+tn CreateSourceInstancePathL \data\ThumbnailManagerTest\RGB_VGA.jpg
+tn DeleteThumbnails
+tn SetThumbnailEnumSizeL EImageGridThumbnailSize
+tn SetQualityPreferenceL EOptimizeForQualityWithPreview
+tn GetThumbnailL
+waittestclass tn
+tn CheckThumbnailCenrepL EImageGridThumbnailSize EColor16M
+tn DeleteThumbnails
+tn DeleteSourceInstance 
+
+// png with exif
+tn CreateSourceInstancePathL \data\ThumbnailManagerTest\exif.png
+tn DeleteThumbnails
+tn SetThumbnailEnumSizeL EImageGridThumbnailSize
+tn SetQualityPreferenceL EOptimizeForQualityWithPreview
+tn GetThumbnailL
+waittestclass tn
+tn CheckThumbnailCenrepL EImageGridThumbnailSize EColor16M
+tn DeleteThumbnails
+tn DeleteSourceInstance 
+
+// no exif
+tn CreateSourceInstancePathL \data\ThumbnailManagerTest\no_exif.jpg
+tn DeleteThumbnails
+tn SetThumbnailEnumSizeL EImageGridThumbnailSize
+tn SetQualityPreferenceL EOptimizeForQualityWithPreview
+tn GetThumbnailL
+waittestclass tn
+tn CheckThumbnailCenrepL EImageGridThumbnailSize EColor16M
+tn DeleteThumbnails
+tn DeleteSourceInstance 
+
+tn DeleteInstance
+delete tn
+pause KTestDelay
+[Endtest]
+
+// ---------------------------------------------------------------------------
+// Create thumbnails by Url
+// ---------------------------------------------------------------------------
+[Test]
+title Create thumbnails by Url
+create ThumbnailManagerTest tn
+tn CreateInstanceL
+tn SetDisplayModeL EColor16M
+
+// try to create thumbnail from image
+tn CreateThumbnailsByUrlL \data\ThumbnailManagerTest\RGB_VGA.jpg
+waittestclass tn
+tn DeleteThumbnails
+tn DeleteSourceInstance  
+
+// try to create thumbnail from music
+tn CreateThumbnailsByUrlL \data\ThumbnailManagerTest\mp3_png.mp3
+waittestclass tn
+tn DeleteThumbnails
+tn DeleteSourceInstance  
+
+// try to create thumbnail from video
+tn CreateThumbnailsByUrlL \data\ThumbnailManagerTest\Videoclip.mp4
+waittestclass tn
+tn DeleteThumbnails
+tn DeleteSourceInstance  
+
+tn DeleteInstance
+delete tn
+pause KTestDelay
+[Endtest]
+
+// ---------------------------------------------------------------------------
+// Get thumbnails
+// ---------------------------------------------------------------------------
+[Test]
+title Get thumbnails
+create ThumbnailManagerTest tn
+tn CreateInstanceL
+tn SetDisplayModeL EColor16M
+
+// Get thumbnail with url
+tn SetThumbnailEnumSizeL EImageGridThumbnailSize
+tn CreateSourceInstancePathL \data\ThumbnailManagerTest\RGB_VGA.jpg
+tn DeleteThumbnails
+tn CreateThumbnails
+waittestclass tn
+
+pause KTenSecondDelay
+
+tn GetThumbnailL
+waittestclass tn
+tn CheckThumbnailCenrepL EImageGridThumbnailSize EColor16M
+tn DeleteThumbnails
+tn DeleteSourceInstance
+
+// Get thumbnail with EDoNotCreate flag on
+tn SetThumbnailEnumSizeL EImageGridThumbnailSize
+tn CreateSourceInstancePathL \data\ThumbnailManagerTest\RGB_VGA.jpg
+tn SetFlagsL EDoNotCreate
+tn DeleteThumbnails
+tn GetThumbnailL
+allownextresult KErrNotFound
+waittestclass tn
+tn DeleteThumbnails
+
+tn DeleteSourceInstance
+tn DeleteInstance
+delete tn
+pause KTestDelay
+[Endtest]
+
+// ---------------------------------------------------------------------------
+// Run multiple tests
+// ---------------------------------------------------------------------------
+[Test]
+title Run multiple tests
+create ThumbnailManagerTest tn
+tn CreateInstanceL
+tn SetDisplayModeL EColor16M
+
+// using path
+tn CreateSourceInstancePathL \data\ThumbnailManagerTest\RGB_VGA.jpg
+tn DeleteThumbnails
+tn SetThumbnailEnumSizeL EImageGridThumbnailSize
+tn GetThumbnailL
+waittestclass tn
+tn CheckThumbnailCenrepL EImageGridThumbnailSize EColor16M
+tn DeleteThumbnails
+tn SetThumbnailEnumSizeL EImageFullScreenThumbnailSize
+tn GetThumbnailL
+waittestclass tn
+tn CheckThumbnailCenrepL EImageFullScreenThumbnailSize EColor16M
+tn DeleteThumbnails
+tn SetThumbnailEnumSizeL ECustomThumbnailSize
+tn SetThumbnailSizeL KCustomSizeX KCustomSizeY
+tn GetThumbnailL
+waittestclass tn
+tn CheckThumbnailL KCustomSizeX KCustomSizeY EColor16M
+tn DeleteThumbnails
+tn DeleteSourceInstance 
+
+// mp3 using handle
+tn CreateSourceInstanceHandleL \data\ThumbnailManagerTest\mp3.mp3
+tn DeleteThumbnails
+tn SetThumbnailEnumSizeL EAudioGridThumbnailSize
+tn GetThumbnailL
+waittestclass tn
+tn CheckThumbnailCenrepL EAudioGridThumbnailSize EColor16M
+tn DeleteThumbnails
+tn SetThumbnailEnumSizeL EAudioFullScreenThumbnailSize
+tn GetThumbnailL
+waittestclass tn
+tn CheckThumbnailCenrepL EAudioFullScreenThumbnailSize EColor16M
+tn DeleteThumbnails
+tn SetThumbnailEnumSizeL ECustomThumbnailSize
+tn SetThumbnailSizeL KCustomSizeX KCustomSizeY
+tn GetThumbnailL
+waittestclass tn
+tn CheckThumbnailL KCustomSizeX KCustomSizeY EColor16M
+tn DeleteThumbnails
+tn DeleteSourceInstance
+
+// corrupted file
+tn SetThumbnailEnumSizeL ECustomThumbnailSize
+tn SetThumbnailSizeL KCustomSizeX KCustomSizeY
+tn CreateSourceInstancePathL \data\ThumbnailManagerTest\not_jpg.jpg
+tn GetThumbnailL
+allownextresult KErrNotFound
+waittestclass tn
+tn DeleteSourceInstance
+tn CreateSourceInstanceBufferL \data\ThumbnailManagerTest\not_jpg.jpg image/jpeg
+tn GetThumbnailL
+allownextresult KErrNotFound
+waittestclass tn
+tn DeleteSourceInstance
+tn CreateSourceInstancePathL \data\ThumbnailManagerTest\not_3gp.3gp
+tn GetThumbnailL
+allownextresult KErrNotSupported
+waittestclass tn
+tn DeleteSourceInstance
+
+// delete one thumbnail
+tn SetThumbnailEnumSizeL EImageGridThumbnailSize
+tn CreateSourceInstancePathL \data\ThumbnailManagerTest\RGB_VGA.jpg
+tn DeleteThumbnails
+tn GetThumbnailL
+waittestclass tn
+tn CheckThumbnailCenrepL EImageGridThumbnailSize EColor16M
+tn DeleteThumbnails
+pause KTenSecondDelay
+tn SetFlagsL EDoNotCreate
+tn GetThumbnailL
+allownextresult KErrNotFound
+waittestclass tn
+
+// delete all persistent thumbnails created
+tn SetFlagsL EDefaultFlags
+tn CreateThumbnails
+waittestclass tn
+pause KTenSecondDelay
+tn DeleteThumbnails
+pause KTenSecondDelay
+tn SetFlagsL EDoNotCreate
+tn GetThumbnailL
+allownextresult KErrNotFound
+waittestclass tn
+tn DeleteThumbnails
+tn DeleteSourceInstance
+
+tn DeleteInstance
+delete tn
+pause KTestDelay
+[Endtest]
\ No newline at end of file
--- a/imagehandling_plat/thumbnailmanager_api/tsrc/group/ThumbnailManagerTest.pkg	Wed Sep 15 12:32:44 2010 +0300
+++ b/imagehandling_plat/thumbnailmanager_api/tsrc/group/ThumbnailManagerTest.pkg	Wed Oct 13 14:53:56 2010 +0300
@@ -46,9 +46,4 @@
 "..\data\mmc\ThumbnailManagerTest\TestMBM.mbm" - "e:\testing\data\ThumbnailManagerTest\TestMBM.mbm"
 "..\data\mmc\ThumbnailManagerTest\mp3.mp3" - "e:\testing\data\ThumbnailManagerTest\mp3.mp3"
 "..\data\mmc\ThumbnailManagerTest\camera.jpg" - "e:\testing\data\ThumbnailManagerTest\camera.jpg"
-"..\data\mmc\ThumbnailManagerTest\mp3_png.mp3" - "e:\testing\data\ThumbnailManagerTest\mp3_png.mp3"
-"..\data\mmc\ThumbnailManagerTest\no_exif.jpg" - "e:\testing\data\ThumbnailManagerTest\no_exif.jpg"
-"..\data\mmc\ThumbnailManagerTest\wma.wma" - "e:\testing\data\ThumbnailManagerTest\wma.wma"
-"..\data\mmc\ThumbnailManagerTest\wma_empty.wma" - "e:\testing\data\ThumbnailManagerTest\wma_empty.wma"
-"..\data\mmc\ThumbnailManagerTest\wma_png.wma" - "e:\testing\data\ThumbnailManagerTest\wma_png.wma"
-"..\data\mmc\ThumbnailManagerTest\exif.jpg" - "e:\testing\data\ThumbnailManagerTest\exif.jpg"
+
--- a/imagehandling_plat/thumbnailmanager_api/tsrc/inc/ThumbnailManagerTest.h	Wed Sep 15 12:32:44 2010 +0300
+++ b/imagehandling_plat/thumbnailmanager_api/tsrc/inc/ThumbnailManagerTest.h	Wed Oct 13 14:53:56 2010 +0300
@@ -117,7 +117,6 @@
         virtual TInt DeleteInstance( CStifItemParser& aItem );
         
         virtual TInt CreateSourceInstancePathL( CStifItemParser& aItem );
-        virtual TInt CreateSourceInstancePathTargetL( CStifItemParser& aItem );
         virtual TInt CreateSourceInstanceHandleL( CStifItemParser& aItem );
         virtual TInt CreateSourceInstanceBufferL( CStifItemParser& aItem );
         virtual TInt CreateSourceInstanceBitmapL( CStifItemParser& aItem );
--- a/imagehandling_plat/thumbnailmanager_api/tsrc/inc/thumbnailcenrep.h	Wed Sep 15 12:32:44 2010 +0300
+++ b/imagehandling_plat/thumbnailmanager_api/tsrc/inc/thumbnailcenrep.h	Wed Oct 13 14:53:56 2010 +0300
@@ -142,7 +142,7 @@
     };
     
 public:
-    enum { EUnknownSourceType, EImage, EVideo, EAudio, EContact };
+    enum { EUnknownSourceType, EImage, EVideo, EAudio };
     enum { EUnknownSizeType, EGrid, EList, EFullscreen }; 
     
 public:
@@ -205,10 +205,7 @@
     TBool iVideoFullscreen;
     TBool iAudioGrid;
     TBool iAudioList;
-    TBool iAudioFullscreen;
-    TBool iContactGrid;
-    TBool iContactList;
-    TBool iContactFullscreen; 
+    TBool iAudioFullscreen;    
 };
 
 #endif // THUMBNAILCENREP_H
--- a/imagehandling_plat/thumbnailmanager_api/tsrc/src/ThumbnailManagerTestBlocks.cpp	Wed Sep 15 12:32:44 2010 +0300
+++ b/imagehandling_plat/thumbnailmanager_api/tsrc/src/ThumbnailManagerTestBlocks.cpp	Wed Oct 13 14:53:56 2010 +0300
@@ -67,7 +67,6 @@
         ENTRY( "CheckThumbnailSizeL", CThumbnailManagerTest::CheckThumbnailSizeL ),
         ENTRY( "SetThumbnailEnumSizeL", CThumbnailManagerTest::SetThumbnailEnumSizeL ),
         ENTRY( "CreateSourceInstancePathL", CThumbnailManagerTest::CreateSourceInstancePathL ),
-        ENTRY( "CreateSourceInstancePathTargetL", CThumbnailManagerTest::CreateSourceInstancePathTargetL ),
         ENTRY( "CreateSourceInstanceHandleL", CThumbnailManagerTest::CreateSourceInstanceHandleL ),
         ENTRY( "CreateSourceInstanceBufferL", CThumbnailManagerTest::CreateSourceInstanceBufferL ),
         ENTRY( "CreateSourceInstanceBitmapL", CThumbnailManagerTest::CreateSourceInstanceBitmapL ),
@@ -301,53 +300,6 @@
     return KErrNone;
     }
 
-TInt CThumbnailManagerTest::CreateSourceInstancePathTargetL( CStifItemParser& aItem )
-    {
-    _LIT( KPanicTxt, "CreateSrcPathTarget" );
-    __ASSERT_ALWAYS( !iObjectSource, User::Panic( KPanicTxt, 0 ));
-
-    TPtrC path;
-    User::LeaveIfError( aItem.GetNextString( path ));
-
-    TPtrC target;
-    User::LeaveIfError( aItem.GetNextString( target ));
-    
-    TPtrC mimeType;
-    User::LeaveIfError( aItem.GetNextString( mimeType ));
-    
-    TInt virtual1 = 0;
-    aItem.GetNextInt( virtual1 );
-    
-    TInt virtual2 = 0;
-    aItem.GetNextInt( virtual2 );
-    
-    TFileName filePath( iDataPath );
-    filePath.Append( path );
-    filePath.ZeroTerminate();
-    
-    if (virtual1)
-        {
-        filePath.Delete(2,1);
-        }
-    
-    TFileName targetPath( iDataPath );
-    targetPath.Append( target );
-    targetPath.ZeroTerminate();
-    
-    if (virtual2)
-        {
-        targetPath.Delete(2,1);
-        }
-    
-    iLog->Log( _L( "CreateSourceInstancePathTargetL - path = %S, target = %S" ), &filePath );
-    
-    delete iObjectSource;
-    iObjectSource = NULL;
-    
-    iObjectSource = CThumbnailObjectSource::NewL( filePath, targetPath, mimeType );
-    return KErrNone;
-    }
-
 TInt CThumbnailManagerTest::CreateSourceInstanceHandleL( CStifItemParser& aItem )
     {
     _LIT( KPanicTxt, "CreateSrcHandle" );
@@ -821,7 +773,48 @@
     
     return KErrNone;
     }
+
+/*
+TInt CThumbnailManagerTest::GetThumbnailsByUrlL( CStifItemParser&  aItem )
+    {
+    _LIT( KPanicTxt, "CreateSrcPath" );
+    __ASSERT_ALWAYS( !iObjectSource, User::Panic( KPanicTxt, 0 ));
+
+    TPtrC path;
+    User::LeaveIfError( aItem.GetNextString( path ));
+
+    TInt id = 0;
+    aItem.GetNextInt( id );
     
+    TFileName filePath( iDataPath );
+    filePath.Append( path );
+    filePath.ZeroTerminate();
+    
+    iLog->Log( _L( "CreateSourceInstancePathL - path = %S" ), &filePath );
+    
+    delete iObjectSource;
+    iObjectSource = NULL;
+    
+    iObjectSource = CThumbnailObjectSource::NewL( filePath, id );
+    
+    id = iEngine->GetThumbnailL( *iObjectSource );
+    if (id < 0)
+        {
+        iLog->Log( _L( "GetThumbnails - error %d" ), id );
+        return id;  
+        }
+    else
+        {
+        iPreviousRequestId = id;
+        iLog->Log( _L( "GetThumbnails - request id %d" ), iPreviousRequestId );
+        }
+    
+    iCreateThumbnails = ETrue;
+    
+    return KErrNone;
+    }
+
+*/
     
 TInt CThumbnailManagerTest::CreateThumbnails( CStifItemParser& aItem )
     {
@@ -851,6 +844,7 @@
     return KErrNone;
     }
 
+
 TInt CThumbnailManagerTest::UpdatePathL( CStifItemParser& aItem )
     {
     _LIT( KPanicTxt, "UpdatePath" );
--- a/imagehandling_plat/thumbnailmanager_api/tsrc/src/thumbnailcenrep.cpp	Wed Sep 15 12:32:44 2010 +0300
+++ b/imagehandling_plat/thumbnailmanager_api/tsrc/src/thumbnailcenrep.cpp	Wed Oct 13 14:53:56 2010 +0300
@@ -42,12 +42,6 @@
 const TUint32 KSizeAudioListHeight = 0x15;
 const TUint32 KSizeAudioFullscreenWidth = 0x16;
 const TUint32 KSizeAudioFullscreenHeight = 0x17;
-const TUint32 KSizeContactListWidth = 0x18;
-const TUint32 KSizeContactListHeight = 0x19;
-const TUint32 KSizeContactGridWidth = 0x20;
-const TUint32 KSizeContactGridHeight = 0x21;
-const TUint32 KSizeContactFullscreenWidth = 0x22;
-const TUint32 KSizeContactFullscreenHeight = 0x23;
 
 const TUint32 KAutoCreateImageGrid = 0x100;
 const TUint32 KAutoCreateImageList = 0x101;
@@ -58,9 +52,6 @@
 const TUint32 KAutoCreateAudioGrid = 0x106;
 const TUint32 KAutoCreateAudioList = 0x107;
 const TUint32 KAutoCreateAudioFullscreen = 0x108;
-const TUint32 KAutoCreateContactGrid = 0x109;
-const TUint32 KAutoCreateContactList = 0x110;
-const TUint32 KAutoCreateContactFullscreen = 0x111;
 
 
 // ---------------------------------------------------------------------------
@@ -103,11 +94,6 @@
         case EAudioFullScreenThumbnailSize:
             iSourceType = EAudio;
             break;
-        case EContactGridThumbnailSize:
-        case EContactListThumbnailSize:
-        case EContactFullScreenThumbnailSize:
-            iSourceType = EContact;
-            break;
         default:
             iSourceType = EUnknownSourceType;        
         }
@@ -121,8 +107,7 @@
 TThumbnailAutoCreate::TThumbnailAutoCreate()
     : iImageGrid(EFalse), iImageList(EFalse), iImageFullscreen(EFalse),
       iVideoGrid(EFalse), iVideoList(EFalse), iVideoFullscreen(EFalse),
-      iAudioGrid(EFalse), iAudioList(EFalse), iAudioFullscreen(EFalse),
-      iContactGrid(EFalse), iContactList(EFalse), iContactFullscreen(EFalse)
+      iAudioGrid(EFalse), iAudioList(EFalse), iAudioFullscreen(EFalse)
     {
     // No implementation required
     }
@@ -245,27 +230,6 @@
     
     iPersistentSizes.AppendL( TThumbnailPersistentSize( EAudioFullScreenThumbnailSize, TSize( xSize, ySize ),
                               flags, static_cast <TDisplayMode> (raw_mode), format, autoCreate ));     
-
-    User::LeaveIfError( iRepository->Get( KSizeContactGridWidth, xSize ));
-    User::LeaveIfError( iRepository->Get( KSizeContactGridHeight, ySize ));
-    User::LeaveIfError( iRepository->Get( KAutoCreateContactGrid, autoCreate ));
-
-    iPersistentSizes.AppendL( TThumbnailPersistentSize( EContactGridThumbnailSize, TSize( xSize, ySize ),
-            KGridAndListThumbnailCropped, static_cast <TDisplayMode> (raw_mode), format, autoCreate ));
-    
-    User::LeaveIfError( iRepository->Get( KSizeContactListWidth, xSize ));
-    User::LeaveIfError( iRepository->Get( KSizeContactListHeight, ySize ));
-    User::LeaveIfError( iRepository->Get( KAutoCreateContactList, autoCreate ));
-
-    iPersistentSizes.AppendL( TThumbnailPersistentSize( EContactListThumbnailSize, TSize( xSize, ySize ),
-            KGridAndListThumbnailCropped, static_cast <TDisplayMode> (raw_mode), format, autoCreate ));
-    
-    User::LeaveIfError( iRepository->Get( KSizeContactFullscreenWidth, xSize ));
-    User::LeaveIfError( iRepository->Get( KSizeContactFullscreenHeight, ySize ));
-    User::LeaveIfError( iRepository->Get( KAutoCreateContactFullscreen, autoCreate ));
-    
-    iPersistentSizes.AppendL( TThumbnailPersistentSize( EContactFullScreenThumbnailSize, TSize( xSize, ySize ),
-                              flags, static_cast <TDisplayMode> (raw_mode), format, autoCreate ));     
     
     iAutoCreate = new (ELeave) TThumbnailAutoCreate();
     
@@ -278,9 +242,6 @@
     User::LeaveIfError( iRepository->Get( KAutoCreateAudioGrid, iAutoCreate->iAudioGrid ));
     User::LeaveIfError( iRepository->Get( KAutoCreateAudioList, iAutoCreate->iAudioList ));
     User::LeaveIfError( iRepository->Get( KAutoCreateAudioFullscreen, iAutoCreate->iAudioFullscreen ));    
-    User::LeaveIfError( iRepository->Get( KAutoCreateContactGrid, iAutoCreate->iContactGrid ));
-    User::LeaveIfError( iRepository->Get( KAutoCreateContactList, iAutoCreate->iContactList ));
-    User::LeaveIfError( iRepository->Get( KAutoCreateContactFullscreen, iAutoCreate->iContactFullscreen )); 
     }
 
 // ---------------------------------------------------------------------------
--- a/imagehandlinglib/Src/IHLDebugPrint.h	Wed Sep 15 12:32:44 2010 +0300
+++ b/imagehandlinglib/Src/IHLDebugPrint.h	Wed Oct 13 14:53:56 2010 +0300
@@ -59,7 +59,7 @@
     /**
      * Macro for defining debug-only literal strings (empty release version)
      */
-    #define IHL_DEBUG_STRING(name, s) const TIHLEmptyDebugString name = {}
+    #define IHL_DEBUG_STRING(name, s) const TIHLEmptyDebugString name
 
     /**
      * Output to debugger output (empty)
Binary file imagehandlingutilities/thumbnailmanager/conf/102830B0.txt has changed
Binary file imagehandlingutilities/thumbnailmanager/conf/thumbnailmanager.confml has changed
Binary file imagehandlingutilities/thumbnailmanager/conf/thumbnailmanager_102830B0.crml has changed
--- a/imagehandlingutilities/thumbnailmanager/inc/thumbnailmanagerconstants.h	Wed Sep 15 12:32:44 2010 +0300
+++ b/imagehandlingutilities/thumbnailmanager/inc/thumbnailmanagerconstants.h	Wed Oct 13 14:53:56 2010 +0300
@@ -149,52 +149,43 @@
 const TInt KImeiBufferSize = CTelephony::KPhoneSerialNumberSize;
 const TInt KCheckValue = 123456;
 
-_LIT8( KJpegMime, "image/jpeg" ); _LIT( KJpegExt, ".jpeg" );            
-_LIT8( KJpeg2000Mime, "image/jp2" ); _LIT( KJpeg2000Ext, ".jp2" );
-_LIT8( KJpgMime, "image/jpeg" ); _LIT( KJpgExt, ".jpg" );
-_LIT8( KGifMime, "image/gif" ); _LIT( KGifExt, ".gif" );
-_LIT8( KPngMime, "image/png" ); _LIT( KPngExt, ".png" ); 
-_LIT8( KSvgMime, "image/svg+xml" ); _LIT( KSvgExt, ".svg" ); 
-_LIT8( KMpgMime1, "video/mpeg"); _LIT( KMpgExt1, ".mpg" );
-_LIT8( KMpeg4Mime, "video/mpeg4" ); _LIT( KMpeg4Ext,".mpeg4" );
-_LIT8( KMp4Mime, "video/mp4" ); _LIT( KMp4Ext, ".mp4" ); _LIT( KM4vExt, ".m4v" );
-_LIT8( KAviMime, "video/x-msvideo" ); _LIT( KAviExt, ".avi" );
-_LIT8( KMp3Mime, "audio/mpeg" ); _LIT( KMp3Ext, ".mp3" );
-_LIT8( KNonEmbeddArtMime, "audio/mpeg" ); _LIT( KNonEmbeddArtExt, ".alb" );
-_LIT8( KM4aMime, "audio/mp4" ); _LIT( KM4aExt, ".m4a" );
-_LIT8( KAacMime, "audio/aac" ); _LIT( KAacExt, ".aac" );
-_LIT8( KWmaMime, "audio/x-ms-wma" ); _LIT( KWmaExt, ".wma" );
-_LIT8( KBmpMime, "image/bmp" ); _LIT( KBmpExt, ".bmp" );
-_LIT8( KAudio3gppMime, "audio/3gpp" ); 
-_LIT8( KVideo3gppMime, "video/3gpp" ); _LIT( K3gpExt, ".3gp" ); _LIT( K3gppExt, ".3gpp" );
-_LIT8( KAudioAmrMime, "audio/AMR" ); _LIT( KAmrExt, ".amr" );
-_LIT8( KVideoWmvMime, "video/x-ms-wmv" ); _LIT( KWmvExt, ".wmv" );
-_LIT8( KRealAudioMime, "audio/vnd.rn-realaudio" ); _LIT( KRealAudioExt, ".ra" );
-_LIT8( KPmRealAudioPluginMime, "audio/x-pn-realaudio-plugin" ); _LIT( KPmRealAudioPluginExt, ".rpm" );
-_LIT8( KPmRealVideoPluginMime, "video/x-pn-realvideo" ); _LIT( KPmRealVideoPluginExt, ".rm" );
-_LIT8( KPmRealVbVideoPluginMime, "video/x-pn-realvideo" ); _LIT( KPmRealVbVideoPluginExt, ".rmvb" );
-_LIT8( KPmRealAudioMime, "audio/x-pn-realaudio" ); _LIT( KPmRealAudioExt, ".ra" );
-_LIT8( KRealVideoMime, "video/vnd.rn-realvideo" ); _LIT( KRealVideoExt, ".rv" );
-_LIT8( KFlashVideoMime, "video/x-flv" ); _LIT( KFlashVideoExt, ".flv" );
-_LIT8( KMatroskaVideoMime, "video/x-matroska" ); _LIT( KMatroskaVideoExt, ".mkv" );
-_LIT8( KContactMime, "contact/x-vcard" ); _LIT( KContactExt, ".vcf" );
-
-_LIT( KNonEmbeddedArtExt, ".alb" );
-
-_LIT8( KAlbumArtMime, "audio/albumart" ); _LIT( KAlbumArtExt, ".maa" );
-
+_LIT8( KJpegMime,    "image/jpeg" );            _LIT( KJpegExt, ".jpeg" );
+_LIT8( KJpeg2000Mime,    "image/jp2" );            _LIT( KJpeg2000Ext, ".jp2" );
+_LIT8( KJpgMime,    "image/jpeg" );            _LIT( KJpgExt, ".jpg" );
+_LIT8( KGifMime,     "image/gif" );             _LIT( KGifExt,  ".gif" );
+_LIT8( KPngMime,     "image/png" );             _LIT( KPngExt,  ".png" ); 
+_LIT8( KSvgMime,     "image/svg+xml" );             _LIT( KSvgExt,  ".svg" ); 
+_LIT8( KMpgMime1,    "video/mpeg");             _LIT( KMpgExt1,  ".mpg" );
+_LIT8( KMpeg4Mime,   "video/mpeg4" );           _LIT( KMpeg4Ext,".mpeg4" );
+_LIT8( KMp4Mime,     "video/mp4" );             _LIT( KMp4Ext,  ".mp4" );
+_LIT8( KAviMime,    "video/x-msvideo" );       _LIT( KAviExt,  ".avi" );
+_LIT8( KMp3Mime,    "audio/mpeg" );           _LIT( KMp3Ext,  ".mp3" );
+_LIT8( KNonEmbeddArtMime,    "audio/mpeg" );           _LIT( KNonEmbeddArtExt,  ".alb" );
+_LIT8( KM4aMime,    "audio/mp4" );           _LIT( KM4aExt,  ".m4a" );
+_LIT8( KAacMime,     "audio/aac" );             _LIT( KAacExt,  ".aac" );
+_LIT8( KWmaMime,     "audio/x-ms-wma" );        _LIT( KWmaExt,  ".wma" );
+_LIT8( KBmpMime,     "image/bmp" );             _LIT( KBmpExt,  ".bmp" );
+_LIT8( KAudio3gppMime,     "audio/3gpp" ); 
+_LIT8( KVideo3gppMime,     "video/3gpp" );  _LIT( K3gpExt,  ".3gp" ); _LIT( K3gppExt,  ".3gpp" );
+_LIT8( KAudioAmrMime,     "audio/AMR" );     _LIT( KAmrExt,  ".amr" );
+_LIT8( KVideoWmvMime, "video/x-ms-wmv" );     _LIT( KWmvExt,    ".wmv" );
+_LIT8( KRealAudioMime, "audio/vnd.rn-realaudio" );        _LIT( KRealAudioExt,    ".ra" );
+_LIT8( KPmRealAudioPluginMime, "audio/x-pn-realaudio-plugin" ); _LIT( KPmRealAudioPluginExt,    ".rpm" );
+_LIT8( KPmRealVideoPluginMime, "video/x-pn-realvideo" ); _LIT( KPmRealVideoPluginExt,    ".rm" );
+_LIT8( KPmRealVbVideoPluginMime, "video/x-pn-realvideo" ); _LIT( KPmRealVbVideoPluginExt,    ".rmvb" );
+_LIT8( KPmRealAudioMime, "audio/x-pn-realaudio" );        _LIT( KPmRealAudioExt,    ".ra" );
+_LIT8( KRealVideoMime, "video/vnd.rn-realvideo" );        _LIT( KRealVideoExt,    ".rv" );
+_LIT8( KFlashVideoMime,    "video/x-flv" );       _LIT( KFlashVideoExt,  ".flv" );
+_LIT8( KMatroskaVideoMime,    "video/x-matroska" );       _LIT( KMatroskaVideoExt,  ".mkv" );
 _LIT( KImageMime, "image/*" );
 _LIT( KVideoMime, "video/*" );
 _LIT( KAudioMime, "audio/*" );
+_LIT( KM4vExt,  ".m4v" );
+_LIT( KNonEmbeddedArtExt, ".alb" );
 
 _LIT( KPrivateFolder, ":\\private\\");
 _LIT( KSysFolder, ":\\sys\\");
 
-_LIT( KDrv, ":");
-_LIT( KBackSlash, "\\");
-
-const TInt KExtLength = 4;
-
 /**
  *  Control flags set by the server for handling specific situations
  *  (for example for distinguishing between preview thumbnails and
@@ -325,16 +316,6 @@
      * Overwrite old thumbs (SetThumbnailL)
      */
     TBool iOverwrite;
-    
-    /**
-     * URI is virtual
-     */
-    TBool iVirtualUri;
-    
-    /**
-     * Target differs from source
-     */
-    TBool iImport;
     };
 
 
--- a/imagehandlingutilities/thumbnailmanager/inc/thumbnailmanagerprivatecrkeys.h	Wed Sep 15 12:32:44 2010 +0300
+++ b/imagehandlingutilities/thumbnailmanager/inc/thumbnailmanagerprivatecrkeys.h	Wed Oct 13 14:53:56 2010 +0300
@@ -44,12 +44,6 @@
 const TUint32 KSizeAudioListHeight = 0x15;
 const TUint32 KSizeAudioFullscreenWidth = 0x16;
 const TUint32 KSizeAudioFullscreenHeight = 0x17;
-const TUint32 KSizeContactListWidth = 0x18;
-const TUint32 KSizeContactListHeight = 0x19;
-const TUint32 KSizeContactGridWidth = 0x20;
-const TUint32 KSizeContactGridHeight = 0x21;
-const TUint32 KSizeContactFullscreenWidth = 0x22;
-const TUint32 KSizeContactFullscreenHeight = 0x23;
 
 const TUint32 KAutoCreateImageGrid = 0x100;
 const TUint32 KAutoCreateImageList = 0x101;
@@ -60,9 +54,6 @@
 const TUint32 KAutoCreateAudioGrid = 0x106;
 const TUint32 KAutoCreateAudioList = 0x107;
 const TUint32 KAutoCreateAudioFullscreen = 0x108;
-const TUint32 KAutoCreateContactGrid = 0x109;
-const TUint32 KAutoCreateContactList = 0x110;
-const TUint32 KAutoCreateContactFullscreen = 0x111;
 
 const TUint32 KColorDepthGrid = 0x200;
 const TUint32 KColorDepthList = 0x201;
--- a/imagehandlingutilities/thumbnailmanager/plugins/audio/src/thumbnailaudioprovider.cpp	Wed Sep 15 12:32:44 2010 +0300
+++ b/imagehandlingutilities/thumbnailmanager/plugins/audio/src/thumbnailaudioprovider.cpp	Wed Oct 13 14:53:56 2010 +0300
@@ -69,7 +69,6 @@
     {
     TN_DEBUG1( "CThumbnailAudioProvider::~CThumbnailAudioProvider()" );
     delete iImageDecoderv3;
-    iImageDecoderv3 = NULL;
     REComSession::DestroyedImplementation( iDtor_ID_Key );
     }
 
@@ -153,7 +152,6 @@
     {
     TN_DEBUG1( "CThumbnailAudioProvider::GetThumbnailL() - buffer no mime" );
 	__ASSERT_DEBUG((EFalse), User::Panic(_L("CThumbnailAudioProvider::GetThumbnailL"), KErrNotSupported));
-	User::Leave( KErrNotSupported );
     }
 
 // ---------------------------------------------------------------------------
--- a/imagehandlingutilities/thumbnailmanager/plugins/audio/src/thumbnailimagedecoderv3.cpp	Wed Sep 15 12:32:44 2010 +0300
+++ b/imagehandlingutilities/thumbnailmanager/plugins/audio/src/thumbnailimagedecoderv3.cpp	Wed Oct 13 14:53:56 2010 +0300
@@ -216,7 +216,7 @@
     iDecoder = NULL;
 	
     CImageDecoder::TOptions options = ( CImageDecoder::TOptions )( 
-            CImageDecoder::EOptionNoDither );
+            CImageDecoder::EOptionNoDither | CImageDecoder::EPreferFastDecode | CImageDecoder::EOptionAlwaysThread );
  
     TRAPD( decErr, iDecoder = CExtJpegDecoder::DataNewL(
             CExtJpegDecoder::EHwImplementation, iFs, *iBuffer, options ));
--- a/imagehandlingutilities/thumbnailmanager/plugins/image/src/thumbnailimagedecoder.cpp	Wed Sep 15 12:32:44 2010 +0300
+++ b/imagehandlingutilities/thumbnailmanager/plugins/image/src/thumbnailimagedecoder.cpp	Wed Oct 13 14:53:56 2010 +0300
@@ -377,12 +377,12 @@
         if ( aFlags == CThumbnailManager::EOptimizeForQuality )
             {
             options = ( CImageDecoder::TOptions )( CImageDecoder
-                ::EOptionNoDither );
+                ::EOptionNoDither | CImageDecoder::EOptionAlwaysThread );
             }
         else
             {
             options  = ( CImageDecoder::TOptions )( CImageDecoder
-                ::EOptionNoDither | CImageDecoder::EPreferFastDecode );
+                ::EOptionNoDither | CImageDecoder::EPreferFastDecode | CImageDecoder::EOptionAlwaysThread );
             }
 
         if ( IsSvg())
@@ -576,12 +576,12 @@
     CImageDecoder::TOptions options;
     if ( aFlags == CThumbnailManager::EOptimizeForQuality )
         {
-        options = ( CImageDecoder::TOptions )( CImageDecoder::EOptionNoDither );
+        options = ( CImageDecoder::TOptions )( CImageDecoder::EOptionNoDither | CImageDecoder::EOptionAlwaysThread );
         }
     else
         {
         options = ( CImageDecoder::TOptions )( CImageDecoder::EOptionNoDither |
-            CImageDecoder::EPreferFastDecode  );
+            CImageDecoder::EPreferFastDecode | CImageDecoder::EOptionAlwaysThread );
         }
 
     TRAPD( err, iDecoder = CExtJpegDecoder::DataNewL( iFs, * iExifThumbImage, options ));
--- a/imagehandlingutilities/thumbnailmanager/plugins/image/src/thumbnailimagedecoderv2.cpp	Wed Sep 15 12:32:44 2010 +0300
+++ b/imagehandlingutilities/thumbnailmanager/plugins/image/src/thumbnailimagedecoderv2.cpp	Wed Oct 13 14:53:56 2010 +0300
@@ -170,7 +170,7 @@
     iDecoder = NULL;
     
     CImageDecoder::TOptions options = ( CImageDecoder::TOptions )( 
-            CImageDecoder::EOptionNoDither );
+            CImageDecoder::EOptionNoDither | CImageDecoder::EPreferFastDecode | CImageDecoder::EOptionAlwaysThread );
 
     TRAPD( decErr, iDecoder = CExtJpegDecoder::DataNewL( 
             CExtJpegDecoder::EHwImplementation, iFs, *iBuffer, options ));
--- a/imagehandlingutilities/thumbnailmanager/plugins/image/src/thumbnailimageprovider.cpp	Wed Sep 15 12:32:44 2010 +0300
+++ b/imagehandlingutilities/thumbnailmanager/plugins/image/src/thumbnailimageprovider.cpp	Wed Oct 13 14:53:56 2010 +0300
@@ -67,9 +67,7 @@
     {
     TN_DEBUG1( "CThumbnailImageProvider::~CThumbnailImageProvider()" );
     delete iImageDecoder;
-    iImageDecoder = NULL;
     delete iImageDecoderv2;
-    iImageDecoderv2 = NULL;
     REComSession::DestroyedImplementation( iDtor_ID_Key );
     }
 
Binary file imagehandlingutilities/thumbnailmanager/sis/thumbnailmanager/ThumbnailManager_0x102830AB_v9.20.8_SA_S60.50_Euro1.sis has changed
--- a/imagehandlingutilities/thumbnailmanager/sis/thumbnailmanager/package.pkg	Wed Sep 15 12:32:44 2010 +0300
+++ b/imagehandlingutilities/thumbnailmanager/sis/thumbnailmanager/package.pkg	Wed Oct 13 14:53:56 2010 +0300
@@ -17,7 +17,7 @@
 &EN
 
 ; Header
-#{"Thumbnail Manager"},(0x102830AB), 9, 20, 9, TYPE=SA, RU
+#{"Thumbnail Manager"},(0x102830AB), 9, 20, 8, TYPE=SA, RU
 
 ; Localised Vendor name
 %{"Nokia"}
--- a/imagehandlingutilities/thumbnailmanager/sis/thumbnailmanager/stub.pkg	Wed Sep 15 12:32:44 2010 +0300
+++ b/imagehandlingutilities/thumbnailmanager/sis/thumbnailmanager/stub.pkg	Wed Oct 13 14:53:56 2010 +0300
@@ -17,7 +17,7 @@
 &EN
 
 ; Header
-#{"ThumbnailManager"},(0x102830AB), 9, 20, 9, TYPE=SA
+#{"ThumbnailManager"},(0x102830AB), 9, 20, 8, TYPE=SA
 
 ; Localised Vendor name
 %{"Nokia"}
Binary file imagehandlingutilities/thumbnailmanager/sis/thumbnailmanager/thumbnailmanager_stub.sis has changed
--- a/imagehandlingutilities/thumbnailmanager/sis/thumbnailmanagercenrep/package.pkg	Wed Sep 15 12:32:44 2010 +0300
+++ b/imagehandlingutilities/thumbnailmanager/sis/thumbnailmanagercenrep/package.pkg	Wed Oct 13 14:53:56 2010 +0300
@@ -17,7 +17,7 @@
 &EN
 
 ; Header
-#{"Thumbnail Manager Cenrep"},(0x10202BE9), 9, 20, 9, TYPE=SP
+#{"Thumbnail Manager Cenrep"},(0x10202BE9), 9, 20, 8, TYPE=SP
 
 ; Localised Vendor name
 %{"Symbian Software Ltd."}
--- a/imagehandlingutilities/thumbnailmanager/thumbagdaemon/inc/thumbagprocessor.h	Wed Sep 15 12:32:44 2010 +0300
+++ b/imagehandlingutilities/thumbnailmanager/thumbagdaemon/inc/thumbagprocessor.h	Wed Oct 13 14:53:56 2010 +0300
@@ -62,8 +62,7 @@
 
   struct TThumbnailGenerationItem
       {
-      inline TThumbnailGenerationItem(): iItemId( KErrNotFound ), iItemType(EGenerationItemTypeUnknown), 
-              iItemAction(EGenerationItemActionAdd), iPlaceholder(EFalse), iUri(NULL){}
+      inline TThumbnailGenerationItem(): iItemId( KErrNotFound ), iItemType(EGenerationItemTypeUnknown), iItemAction(EGenerationItemActionAdd), iPlaceholder(EFalse), iUri(NULL){}
       inline ~TThumbnailGenerationItem(){delete iUri; iUri = NULL;}
       
       TItemId iItemId;
@@ -167,9 +166,7 @@
      * @param aIDArray IDs for thumbnail creation
      * @param aForce pass ETrue if processor is forced to run without waiting harvesting complete
      */
-    void AddToQueueL( TObserverNotificationType aType, TThumbnailGenerationItemType aItemType, 
-            const RArray<TItemId>& aIDArray, const RPointerArray<HBufC>& aObjectUriArray, 
-            TBool aPresent );
+    void AddToQueueL( TObserverNotificationType aType, TThumbnailGenerationItemType aItemType, const RArray<TItemId>& aIDArray, const RPointerArray<HBufC>& aObjectUriArray, TBool aPresent );
     
     /**
      * Calls Thumbnail Manager to create thumbnails
@@ -448,6 +445,9 @@
 	//Observer foreground generation 
     CTMRPropertyObserver* iForegroundGenerationObserver;
     
+    //Observer itemsLeft 
+    CTMRPropertyObserver* iItemsLeftObserver;
+    
 	//Previously notified amount of items in processing queues (add/modify)
     TInt iPreviousItemsLeft;
     TBool iPreviousDaemonProcessing; 
--- a/imagehandlingutilities/thumbnailmanager/thumbagdaemon/src/thumbagaudioobserver.cpp	Wed Sep 15 12:32:44 2010 +0300
+++ b/imagehandlingutilities/thumbnailmanager/thumbagdaemon/src/thumbagaudioobserver.cpp	Wed Oct 13 14:53:56 2010 +0300
@@ -309,17 +309,17 @@
     // set observing conditions
     CMdELogicCondition* addCondition = CMdELogicCondition::NewLC( ELogicConditionOperatorAnd );
     addCondition->AddObjectConditionL( audioDef );
+    CleanupStack::Pop( addCondition );  
     
     CMdELogicCondition* modifyCondition = CMdELogicCondition::NewLC( ELogicConditionOperatorAnd );
     modifyCondition->AddObjectConditionL( audioDef );
+    CleanupStack::Pop( modifyCondition );
     
     // add observer
     iMdESession->AddObjectObserverL( *this, addCondition, ENotifyAdd ); 
 
    // modify observer
    iMdESession->AddObjectObserverL( *this, modifyCondition, ENotifyModify );
-   
-   CleanupStack::Pop( 2, addCondition );
      
     TN_DEBUG1( "CThumbAGAudioObserver::AddObserversL() - end" );
     }
--- a/imagehandlingutilities/thumbnailmanager/thumbagdaemon/src/thumbagcameraobserver.cpp	Wed Sep 15 12:32:44 2010 +0300
+++ b/imagehandlingutilities/thumbnailmanager/thumbagdaemon/src/thumbagcameraobserver.cpp	Wed Oct 13 14:53:56 2010 +0300
@@ -147,10 +147,7 @@
     iShutdown = ETrue;    
     
     delete iMDSShutdownObserver;
-    iMDSShutdownObserver = NULL;
-    
     delete iShutdownObserver;
-    iShutdownObserver = NULL;
     
     if(iReconnect)
         {
@@ -304,17 +301,17 @@
     // set observing conditions
     CMdELogicCondition* addCondition = CMdELogicCondition::NewLC( ELogicConditionOperatorAnd );
     addCondition->AddPropertyConditionL( originPropDef, TMdEUintEqual(MdeConstants::Object::ECamera));
+    CleanupStack::Pop( addCondition );  
     
     CMdELogicCondition* modifyCondition = CMdELogicCondition::NewLC( ELogicConditionOperatorAnd );
     modifyCondition->AddPropertyConditionL( originPropDef, TMdEUintEqual(MdeConstants::Object::ECamera));
+    CleanupStack::Pop( modifyCondition );
     
     // add observer
     iMdESession->AddObjectObserverL( *this, addCondition, ENotifyAdd ); 
 
    // modify observer
    iMdESession->AddObjectObserverL( *this, modifyCondition, ENotifyModify );
-   
-    CleanupStack::Pop( 2, addCondition );  
      
     TN_DEBUG1( "CThumbAGCameraObserver::AddObserversL() - end" );
     }
--- a/imagehandlingutilities/thumbnailmanager/thumbagdaemon/src/thumbagdaemon.cpp	Wed Sep 15 12:32:44 2010 +0300
+++ b/imagehandlingutilities/thumbnailmanager/thumbagdaemon/src/thumbagdaemon.cpp	Wed Oct 13 14:53:56 2010 +0300
@@ -194,10 +194,7 @@
     iAudioObserver = NULL;
     
     delete iMDSShutdownObserver;
-    iMDSShutdownObserver = NULL;
-    
     delete iShutdownObserver;
-    iShutdownObserver = NULL;
     
     if(iReconnect)
         {
@@ -270,7 +267,6 @@
        
         // comes here if server gets shut down
         delete server;
-        server = NULL;
         
         CleanupStack::PopAndDestroy( scheduler );
         }
@@ -542,8 +538,6 @@
     TInt ret = rep->Get( KEnableDaemon, val );
     
     delete rep;
-    rep = NULL;
-    
     TN_DEBUG3( "CThumbAGDaemon::DaemonEnabledL() - val == %d, ret == %d", val, ret );
     return val;
     }
@@ -585,7 +579,6 @@
         {
         TRAP( result, CThumbAGDaemon::ThreadFunctionL());
         delete cleanup;
-        cleanup = NULL;
         }
     
     if ( result != KErrNone )
--- a/imagehandlingutilities/thumbnailmanager/thumbagdaemon/src/thumbagimageobserver.cpp	Wed Sep 15 12:32:44 2010 +0300
+++ b/imagehandlingutilities/thumbnailmanager/thumbagdaemon/src/thumbagimageobserver.cpp	Wed Oct 13 14:53:56 2010 +0300
@@ -147,10 +147,7 @@
     iShutdown = ETrue;    
     
     delete iMDSShutdownObserver;
-    iMDSShutdownObserver = NULL;
-    
     delete iShutdownObserver;
-    iShutdownObserver = NULL;
     
     if(iReconnect)
         {
@@ -291,22 +288,20 @@
     // set observing conditions
     CMdELogicCondition* addCondition = CMdELogicCondition::NewLC( ELogicConditionOperatorAnd );
     addCondition->AddObjectConditionL( imageDef );
-	
-	addCondition->AddPropertyConditionL( originPropDef, TMdEUintNotEqual(MdeConstants::Object::ECamera));
+    addCondition->AddPropertyConditionL( originPropDef, TMdEUintNotEqual(MdeConstants::Object::ECamera));
+    CleanupStack::Pop( addCondition );  
     
     CMdELogicCondition* modifyCondition = CMdELogicCondition::NewLC( ELogicConditionOperatorAnd );
-	modifyCondition->AddObjectConditionL( imageDef );
-	
-	modifyCondition->AddPropertyConditionL( originPropDef, TMdEUintNotEqual(MdeConstants::Object::ECamera));
-	
+    modifyCondition->AddObjectConditionL( imageDef );
+    addCondition->AddPropertyConditionL( originPropDef, TMdEUintNotEqual(MdeConstants::Object::ECamera));
+    CleanupStack::Pop( modifyCondition );
+   
     // add observers
     iMdESession->AddObjectObserverL( *this, addCondition, ENotifyAdd ); 
 
     // modify observer
     iMdESession->AddObjectObserverL( *this, modifyCondition, ENotifyModify );
-	
-    CleanupStack::Pop( 2, addCondition );
-
+     
     TN_DEBUG1( "CThumbAGImageObserver::AddObserversL() - end" );
     }
 
--- a/imagehandlingutilities/thumbnailmanager/thumbagdaemon/src/thumbagprocessor.cpp	Wed Sep 15 12:32:44 2010 +0300
+++ b/imagehandlingutilities/thumbnailmanager/thumbagdaemon/src/thumbagprocessor.cpp	Wed Oct 13 14:53:56 2010 +0300
@@ -105,6 +105,9 @@
 	//start foreground generation observer
     iForegroundGenerationObserver = CTMRPropertyObserver::NewL( *this, KTAGDPSNotification, KForceBackgroundGeneration, ETrue );  
     
+    //itemsLeft observer
+    iItemsLeftObserver = CTMRPropertyObserver::NewL( *this, KTAGDPSNotification, KItemsleft, EFalse ); 
+    
     TN_DEBUG1( "CThumbAGProcessor::ConstructL() - end" );
     }
 
@@ -182,6 +185,12 @@
         iForegroundGenerationObserver = NULL;
         }
     
+    if(iItemsLeftObserver)
+        {
+        delete iItemsLeftObserver;
+        iItemsLeftObserver = NULL;
+        }
+    
     if(iFormatObserver)
         {
         delete iFormatObserver;
@@ -958,43 +967,39 @@
     
     CMdEObjectDef& objDef = iDefNamespace->GetObjectDefL( MdeConstants::Object::KBaseObject );
     iQuery = iMdESession->NewObjectQueryL( *iDefNamespace, objDef, this );
-	
-	if(iQuery)
-		{
-	    iQuery->SetResultMode( EQueryResultModeItem );
+    iQuery->SetResultMode( EQueryResultModeItem );
 
-	    CMdELogicCondition& rootCondition = iQuery->Conditions();
-	    rootCondition.SetOperator( ELogicConditionOperatorAnd );
+    CMdELogicCondition& rootCondition = iQuery->Conditions();
+    rootCondition.SetOperator( ELogicConditionOperatorAnd );
     
-	    // add IDs
-	    CleanupClosePushL( iQueryQueue );
-	    rootCondition.AddObjectConditionL( iQueryQueue );
-	    CleanupStack::Pop( &iQueryQueue );
+    // add IDs
+    CleanupClosePushL( iQueryQueue );
+    rootCondition.AddObjectConditionL( iQueryQueue );
+    CleanupStack::Pop( &iQueryQueue );
     
-	    // add object type conditions 
-	    if (!(iModify || iUnknown))
-	        {
-	        CMdELogicCondition& objDefCondition = rootCondition.AddLogicConditionL( ELogicConditionOperatorOr );
+    // add object type conditions 
+    if (!(iModify || iUnknown))
+        {
+        CMdELogicCondition& objDefCondition = rootCondition.AddLogicConditionL( ELogicConditionOperatorOr );
         
-	        if (iAutoImage)
-	            {
-	            CMdEObjectDef& imageDef = iDefNamespace->GetObjectDefL( MdeConstants::Image::KImageObject );
-	            objDefCondition.AddObjectConditionL( imageDef );
-	            }
-	        if (iAutoVideo)
-	            {
-	            CMdEObjectDef& videoDef = iDefNamespace->GetObjectDefL( MdeConstants::Video::KVideoObject );
-	            objDefCondition.AddObjectConditionL( videoDef );
-	            }
-	        if (iAutoAudio)
-	            {
-	            CMdEObjectDef& audioDef = iDefNamespace->GetObjectDefL( MdeConstants::Audio::KAudioObject );
-	            objDefCondition.AddObjectConditionL( audioDef );
-	            }    
-	        }
+        if (iAutoImage)
+            {
+            CMdEObjectDef& imageDef = iDefNamespace->GetObjectDefL( MdeConstants::Image::KImageObject );
+            objDefCondition.AddObjectConditionL( imageDef );
+            }
+        if (iAutoVideo)
+            {
+            CMdEObjectDef& videoDef = iDefNamespace->GetObjectDefL( MdeConstants::Video::KVideoObject );
+            objDefCondition.AddObjectConditionL( videoDef );
+            }
+        if (iAutoAudio)
+            {
+            CMdEObjectDef& audioDef = iDefNamespace->GetObjectDefL( MdeConstants::Audio::KAudioObject );
+            objDefCondition.AddObjectConditionL( audioDef );
+            }    
+        }
     
-	    iQuery->FindL();
-		}
+    iQuery->FindL();
     
     TN_DEBUG1( "CThumbAGProcessor::QueryL() - end" );
     }
@@ -1040,28 +1045,25 @@
     CMdEObjectDef& objDef = iDefNamespace->GetObjectDefL( MdeConstants::Object::KBaseObject);
     iQueryPlaceholders = iMdESession->NewObjectQueryL( *iDefNamespace, objDef, this );
         
-    if(iQueryPlaceholders)
-        {
-        iQueryPlaceholders->SetResultMode( EQueryResultModeItem );
-        
-        CMdELogicCondition& rootCondition = iQueryPlaceholders->Conditions();
-        rootCondition.SetOperator( ELogicConditionOperatorOr );
-        
-        CMdEObjectCondition& imagePHObjectCondition = rootCondition.AddObjectConditionL(imageObjDef);
-        imagePHObjectCondition.SetPlaceholderOnly( ETrue );
-        imagePHObjectCondition.SetNotPresent( aPresent );
-        
-        CMdEObjectCondition& videoPHObjectCondition = rootCondition.AddObjectConditionL(videoObjDef);
-        videoPHObjectCondition.SetPlaceholderOnly( ETrue );
-        videoPHObjectCondition.SetNotPresent( aPresent );
-        
-        CMdEObjectCondition& audioPHObjectCondition = rootCondition.AddObjectConditionL(audioObjDef);
-        audioPHObjectCondition.SetPlaceholderOnly( ETrue );
-        audioPHObjectCondition.SetNotPresent( aPresent );
-        
-        iQueryPlaceholders->FindL(KMaxTInt, KMaxQueryBatchSize);   
-        }
-	
+    iQueryPlaceholders->SetResultMode( EQueryResultModeItem );
+    
+    CMdELogicCondition& rootCondition = iQueryPlaceholders->Conditions();
+    rootCondition.SetOperator( ELogicConditionOperatorOr );
+    
+    CMdEObjectCondition& imagePHObjectCondition = rootCondition.AddObjectConditionL(imageObjDef);
+    imagePHObjectCondition.SetPlaceholderOnly( ETrue );
+    imagePHObjectCondition.SetNotPresent( aPresent );
+    
+    CMdEObjectCondition& videoPHObjectCondition = rootCondition.AddObjectConditionL(videoObjDef);
+    videoPHObjectCondition.SetPlaceholderOnly( ETrue );
+    videoPHObjectCondition.SetNotPresent( aPresent );
+    
+    CMdEObjectCondition& audioPHObjectCondition = rootCondition.AddObjectConditionL(audioObjDef);
+    audioPHObjectCondition.SetPlaceholderOnly( ETrue );
+    audioPHObjectCondition.SetNotPresent( aPresent );
+    
+    iQueryPlaceholders->FindL(KMaxTInt, KMaxQueryBatchSize);   
+   
     TN_DEBUG1( "CThumbAGProcessor::QueryPlaceholdersL - end" );
     }
 
@@ -1295,52 +1297,6 @@
 
         QueryL( EGenerationItemActionResolveType );
        }
-    else if ( iDeleteItemCount > 0 )
-       {
-       TN_DEBUG1( "void CThumbAGProcessor::RunL() delete thumbnails");
-       // delete thumbs by URI
-       __ASSERT_DEBUG((iTMSession), User::Panic(_L("CThumbAGProcessor::RunL() !iTMSession "), KErrBadHandle));
-       if(iTMSession)
-           {
-           TInt itemIndex(KErrNotFound);
-                               
-           for(TInt i=0;i<iGenerationQueue.Count() || itemIndex == KErrNotFound;i++)
-               {
-               if(iGenerationQueue[i].iItemAction == EGenerationItemActionDelete)
-                   {
-                   itemIndex = i;
-                   }
-               }
-       
-           if(itemIndex >= 0)
-               {
-               if(!iGenerationQueue[itemIndex].iUri)
-                   {
-                   //URI is invalid
-                   TN_DEBUG1( "void CThumbAGProcessor::RunL() unable to delete URI inbalid");
-                   iGenerationQueue.Remove( itemIndex );
-                   ActivateAO();
-                   return;
-                   }
-
-               TN_DEBUG2( "void CThumbAGProcessor::RunL() delete %S",  iGenerationQueue[itemIndex].iUri);
-               CThumbnailObjectSource* source = NULL;                
-               TRAPD(err,  source = CThumbnailObjectSource::NewL( *iGenerationQueue[itemIndex].iUri, KNullDesC));
-                  
-               if(err == KErrNone)
-                   {
-                   iTMSession->DeleteThumbnails( *source );
-                   }
-               delete source;
-               
-               delete iGenerationQueue[itemIndex].iUri;
-               iGenerationQueue[itemIndex].iUri = NULL;
-               iGenerationQueue.Remove( itemIndex );
-               
-               iActiveCount++;
-               }
-           }
-       }
     // no items in query queue, start new
     // select queue to process, priority by type
     else if ( iModifyItemCount > 0 )
@@ -1366,6 +1322,54 @@
         
         QueryL( EGenerationItemActionAdd );     
         }
+    else if ( iDeleteItemCount > 0 )
+        {
+        TN_DEBUG1( "void CThumbAGProcessor::RunL() delete thumbnails");
+        i2ndRound = EFalse;
+        iUnknown = EFalse;
+        // delete thumbs by URI
+        __ASSERT_DEBUG((iTMSession), User::Panic(_L("CThumbAGProcessor::RunL() !iTMSession "), KErrBadHandle));
+        if(iTMSession)
+            {
+            TInt itemIndex(KErrNotFound);
+                                
+            for(TInt i=0;i<iGenerationQueue.Count() || itemIndex == KErrNotFound;i++)
+                {
+                if(iGenerationQueue[i].iItemAction == EGenerationItemActionDelete)
+                    {
+                    itemIndex = i;
+                    }
+                }
+        
+            if(itemIndex >= 0)
+                {
+                if(!iGenerationQueue[itemIndex].iUri)
+                    {
+                    //URI is invalid
+                    TN_DEBUG1( "void CThumbAGProcessor::RunL() unable to delete URI inbalid");
+                    iGenerationQueue.Remove( itemIndex );
+                    ActivateAO();
+                    return;
+                    }
+
+                TN_DEBUG2( "void CThumbAGProcessor::RunL() delete %S",  iGenerationQueue[itemIndex].iUri);
+                CThumbnailObjectSource* source = NULL;                
+                TRAPD(err,  source = CThumbnailObjectSource::NewL( *iGenerationQueue[itemIndex].iUri, KNullDesC));
+                   
+                if(err == KErrNone)
+                    {
+                    iTMSession->DeleteThumbnails( *source );
+                    }
+                delete source;
+                
+                delete iGenerationQueue[itemIndex].iUri;
+                iGenerationQueue[itemIndex].iUri = NULL;
+                iGenerationQueue.Remove( itemIndex );
+                
+                iActiveCount++;
+                }
+            }
+        }
     else if( i2ndAddItemCount > 0)
         {
         TN_DEBUG1( "void CThumbAGProcessor::RunL() update 2nd round thumbnails");
@@ -1692,7 +1696,7 @@
         }
     
     //check if forced run needs to continue
-    if ( (iModifyItemCount > 0 || iDeleteItemCount > 0 ||  iUnknownItemCount > 0) && !iMountTimer->IsActive())
+    if ( ( iModifyItemCount || iUnknownItemCount > 0 )  && !iMountTimer->IsActive())
         {
         TN_DEBUG1( "CThumbAGProcessor::ActivateAO() -  forced run");
         SetForceRun( ETrue );
@@ -1885,9 +1889,11 @@
     CMdELogicCondition& rootCondition = iQueryAllItems->Conditions();
     rootCondition.SetOperator( ELogicConditionOperatorOr );
     
-    rootCondition.AddObjectConditionL(imageObjDef);   
-    rootCondition.AddObjectConditionL(videoObjDef);   
-    rootCondition.AddObjectConditionL(audioObjDef);
+    CMdEObjectCondition& imageObjectCondition = rootCondition.AddObjectConditionL(imageObjDef);
+    
+    CMdEObjectCondition& videoObjectCondition = rootCondition.AddObjectConditionL(videoObjDef);
+    
+    CMdEObjectCondition& audioObjectCondition = rootCondition.AddObjectConditionL(audioObjDef);
     
     iQueryAllItems->FindL(KMaxTInt, KMaxQueryBatchSize);  
     
@@ -2052,6 +2058,15 @@
             iForegroundRun = EFalse;
             }
         }
+    else if(aPropertyKey == KItemsleft && aKeyCategory == KTAGDPSNotification )
+        {
+        if( aError == KErrNone && aValue != iPreviousItemsLeft)
+            {
+            TN_DEBUG1( "CThumbAGProcessor::RPropertyNotification() - itemsLeft changed outside Daemon" );
+            iPreviousItemsLeft = aValue;
+            ActivateAO();
+            }
+        }
     }
 
 // ---------------------------------------------------------------------------
--- a/imagehandlingutilities/thumbnailmanager/thumbagdaemon/src/thumbagvideoobserver.cpp	Wed Sep 15 12:32:44 2010 +0300
+++ b/imagehandlingutilities/thumbnailmanager/thumbagdaemon/src/thumbagvideoobserver.cpp	Wed Oct 13 14:53:56 2010 +0300
@@ -301,22 +301,20 @@
     
     // set observing conditions
     CMdELogicCondition* addCondition = CMdELogicCondition::NewLC( ELogicConditionOperatorAnd );
-	addCondition->AddObjectConditionL( videoDef );
-	
-	addCondition->AddPropertyConditionL( originPropDef, TMdEUintNotEqual(MdeConstants::Object::ECamera));
+    addCondition->AddObjectConditionL( videoDef );
+    addCondition->AddPropertyConditionL( originPropDef, TMdEUintNotEqual(MdeConstants::Object::ECamera));
+    CleanupStack::Pop( addCondition );  
     
     CMdELogicCondition* modifyCondition = CMdELogicCondition::NewLC( ELogicConditionOperatorAnd );
-	modifyCondition->AddObjectConditionL( videoDef );
-
-	modifyCondition->AddPropertyConditionL( originPropDef, TMdEUintNotEqual(MdeConstants::Object::ECamera));
+    modifyCondition->AddObjectConditionL( videoDef );
+    addCondition->AddPropertyConditionL( originPropDef, TMdEUintNotEqual(MdeConstants::Object::ECamera));
+    CleanupStack::Pop( modifyCondition );
     
     // add observer
     iMdESession->AddObjectObserverL( *this, addCondition, ENotifyAdd ); 
 
     // modify observer
     iMdESession->AddObjectObserverL( *this, modifyCondition, ENotifyModify );
-	
-	CleanupStack::Pop( 2, addCondition );
      
     TN_DEBUG1( "CThumbAGVideoObserver::AddObserversL() - end" );
     }
--- a/imagehandlingutilities/thumbnailmanager/thumbnailclient/bwins/thumbnailmanageru.def	Wed Sep 15 12:32:44 2010 +0300
+++ b/imagehandlingutilities/thumbnailmanager/thumbnailclient/bwins/thumbnailmanageru.def	Wed Oct 13 14:53:56 2010 +0300
@@ -19,7 +19,4 @@
 	?Uri@CThumbnailObjectSource@@QAEABVTDesC16@@XZ @ 18 NONAME ; class TDesC16 const & CThumbnailObjectSource::Uri(void)
 	?Bitmap@CThumbnailObjectSource@@QAEPAVCFbsBitmap@@XZ @ 19 NONAME ; class CFbsBitmap * CThumbnailObjectSource::Bitmap(void)
 	?GetBitmapOwnership@CThumbnailObjectSource@@QAEPAVCFbsBitmap@@XZ @ 20 NONAME ; class CFbsBitmap * CThumbnailObjectSource::GetBitmapOwnership(void)
-	?NewLC@CThumbnailObjectSource@@SAPAV1@ABVTDesC16@@00@Z @ 21 NONAME ; class CThumbnailObjectSource * CThumbnailObjectSource::NewLC(class TDesC16 const &, class TDesC16 const &, class TDesC16 const &)
-	?TargetUri@CThumbnailObjectSource@@QAEABVTDesC16@@XZ @ 22 NONAME ; class TDesC16 const & CThumbnailObjectSource::TargetUri(void)
-	?NewL@CThumbnailObjectSource@@SAPAV1@ABVTDesC16@@00@Z @ 23 NONAME ; class CThumbnailObjectSource * CThumbnailObjectSource::NewL(class TDesC16 const &, class TDesC16 const &, class TDesC16 const &)
 	
--- a/imagehandlingutilities/thumbnailmanager/thumbnailclient/eabi/thumbnailmanageru.def	Wed Sep 15 12:32:44 2010 +0300
+++ b/imagehandlingutilities/thumbnailmanager/thumbnailclient/eabi/thumbnailmanageru.def	Wed Oct 13 14:53:56 2010 +0300
@@ -21,7 +21,4 @@
 	_ZN22CThumbnailObjectSource6BitmapEv @ 20 NONAME
 	_ZTI22CThumbnailRequestQueue @ 21 NONAME
 	_ZTV22CThumbnailRequestQueue @ 22 NONAME
-	_ZN22CThumbnailObjectSource4NewLERK7TDesC16S2_S2_ @ 23 NONAME
-	_ZN22CThumbnailObjectSource5NewLCERK7TDesC16S2_S2_ @ 24 NONAME
-	_ZN22CThumbnailObjectSource9TargetUriEv @ 25 NONAME
 
--- a/imagehandlingutilities/thumbnailmanager/thumbnailclient/inc/thumbnailrequestactive.h	Wed Sep 15 12:32:44 2010 +0300
+++ b/imagehandlingutilities/thumbnailmanager/thumbnailclient/inc/thumbnailrequestactive.h	Wed Oct 13 14:53:56 2010 +0300
@@ -41,8 +41,7 @@
     EReqUpdateThumbnails = 4,
     EReqGetThumbnailHandleLater = 5,
     EReqDeleteThumbnails = 6,
-    EReqRenameThumbnails = 7,
-    EReqSetThumbnailPath = 8
+    EReqRenameThumbnails = 7
 };
 
 /**
@@ -95,7 +94,7 @@
      *                    ThumbnailReady callback.
      * @param aTargetUri         Target URI to which the imported thumbnail is linked.
      */
-    void GetThumbnailL( const RFile64& aFile, TThumbnailId aThumbnailId, const TDesC8& aMimeType,
+    void GetThumbnailL( const RFile64& aFile, TThumbnailId aThumbnailId,
         CThumbnailManager::TThumbnailFlags aFlags, CThumbnailManager::TThumbnailQualityPreference
         aQualityPreference, const TSize& aSize, const TDisplayMode aDisplayMode,
         const TInt aPriority, TAny* aClientData, TBool aGeneratePersistentSizesOnly, const TDesC& aTargetUri = KNullDesC,
@@ -117,7 +116,7 @@
      *                    ThumbnailReady callback.
      * @param aTargetUri         Target URI to which the imported thumbnail is linked.
      */
-    void GetThumbnailL( TThumbnailId aThumbnailId, const TDesC& aPath, const TDesC8& aMimeType,
+    void GetThumbnailL( TThumbnailId aThumbnailId, const TDesC& aPath,
         CThumbnailManager::TThumbnailFlags aFlags, CThumbnailManager::TThumbnailQualityPreference
         aQualityPreference, const TSize& aSize, const TDisplayMode aDisplayMode,
         const TInt aPriority, TAny* aClientData, TBool aGeneratePersistentSizesOnly, const TDesC& aTargetUri = KNullDesC,
@@ -142,7 +141,7 @@
      * @param aThumbnailSize Relative thumbnail size
      */
     void GetThumbnailL( const TDesC& aPath, TThumbnailId aThumbnailId,
-        const TDesC8& aMimeType, CThumbnailManager::TThumbnailFlags aFlags, 
+        CThumbnailManager::TThumbnailFlags aFlags, 
         CThumbnailManager::TThumbnailQualityPreference aQualityPreference, 
         const TSize& aSize, const TDisplayMode aDisplayMode, const TInt aPriority, 
         TAny* aClientData, TBool aGeneratePersistentSizesOnly, 
@@ -239,32 +238,6 @@
         const TInt aPriority );    
     
     /**
-     * Set thumbnail from file path.
-     *
-     * @param aPath Path to file from which the thumbnail is to be created.
-     * @param aFile File from which the thumbnail is to be created.
-     * @param aFlags Flags that control the creation of thumbnail.
-     * @param aQualityPreference Quality preference value
-     * @param aSize Requested size of the thumbnail.
-     * @param aDisplayMode Display mode.
-     * @param aPriority Priority of the request.
-     * @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 aGeneratePersistentSizesOnly 
-     * @param aOverwrite Overwrite old existing thumbs
-     * @param aTargetUri         Target URI to which the imported thumbnail is linked.
-     * @param aThumbnailSize Relative thumbnail size
-     */
-    void SetThumbnailL( const TDesC& aPath, const TDesC8& aMimeType,
-        CThumbnailManager::TThumbnailFlags aFlags, 
-        CThumbnailManager::TThumbnailQualityPreference aQualityPreference, 
-        const TSize& aSize, const TDisplayMode aDisplayMode, const TInt aPriority, 
-        TAny* aClientData, TBool aGeneratePersistentSizesOnly, const TDesC& aTargetUri, 
-        TThumbnailSize aThumbnailSize, TBool aOverwrite);    
-    
-    /**
      * Start active request.
      *
      * @since S60 v5.0
@@ -393,11 +366,6 @@
      * @since S60 v5.0
      */
     static TInt TimerCallBack(TAny* aAny);
-    
-    /**
-     * Checks if URI is virtual.
-     */
-    TBool IsVirtualUri( const TDesC& aPath ); 
 
 private:
     // data
--- a/imagehandlingutilities/thumbnailmanager/thumbnailclient/src/thumbnaildataimpl.cpp	Wed Sep 15 12:32:44 2010 +0300
+++ b/imagehandlingutilities/thumbnailmanager/thumbnailclient/src/thumbnaildataimpl.cpp	Wed Oct 13 14:53:56 2010 +0300
@@ -41,7 +41,6 @@
 CThumbnailDataImpl::~CThumbnailDataImpl()
     {
     delete iBitmap;
-    iBitmap = NULL;
     iClientData = NULL;
     }
 
--- a/imagehandlingutilities/thumbnailmanager/thumbnailclient/src/thumbnailmanagerimpl.cpp	Wed Sep 15 12:32:44 2010 +0300
+++ b/imagehandlingutilities/thumbnailmanager/thumbnailclient/src/thumbnailmanagerimpl.cpp	Wed Oct 13 14:53:56 2010 +0300
@@ -172,21 +172,21 @@
     
     if(aObjectSource.Id() > 0)
         {
-        getThumbnailActive->GetThumbnailL( aObjectSource.Uri(), aObjectSource.Id(), 
-            aObjectSource.MimeType(),iFlags, iQualityPreference, iSize, iDisplayMode, 
-            priority, aClientData, aGeneratePersistentSizesOnly, KNullDesC, iThumbnailSize);
+        getThumbnailActive->GetThumbnailL( aObjectSource.Uri(), aObjectSource.Id(), iFlags,
+            iQualityPreference, iSize, iDisplayMode, priority, aClientData, aGeneratePersistentSizesOnly,
+            KNullDesC, iThumbnailSize);
         }
     else if ( aObjectSource.Uri().Length())
         {
-        getThumbnailActive->GetThumbnailL( aObjectSource.Uri(), aObjectSource.Id(),
-            aObjectSource.MimeType(), iFlags, iQualityPreference, iSize, iDisplayMode, 
-            priority, aClientData, aGeneratePersistentSizesOnly, KNullDesC, iThumbnailSize );
+        getThumbnailActive->GetThumbnailL( aObjectSource.Uri(), aObjectSource.Id(), iFlags,
+            iQualityPreference, iSize, iDisplayMode, priority, aClientData, aGeneratePersistentSizesOnly,
+            KNullDesC, iThumbnailSize );
         }
     else
         {
-        getThumbnailActive->GetThumbnailL( aObjectSource.FileHandle(), aObjectSource.Id(), 
-            aObjectSource.MimeType(), iFlags, iQualityPreference, iSize, iDisplayMode, 
-            priority, aClientData, aGeneratePersistentSizesOnly, KNullDesC, iThumbnailSize );
+        getThumbnailActive->GetThumbnailL( aObjectSource.FileHandle(), aObjectSource.Id(), iFlags,
+            iQualityPreference, iSize, iDisplayMode, priority, aClientData, aGeneratePersistentSizesOnly,
+            KNullDesC, iThumbnailSize );
         }
     
     iRequestQueue->AddRequestL( getThumbnailActive );
@@ -231,9 +231,9 @@
         ( iFs, iSession, iObserver, iRequestObserver, iRequestId, priority, iRequestQueue );
     CleanupStack::PushL( getThumbnailActive );
     
-    getThumbnailActive->GetThumbnailL( KNullDesC, aThumbnailId, KNullDesC8,
-            iFlags, iQualityPreference, iSize, iDisplayMode, priority, aClientData,
-            EFalse, KNullDesC, iThumbnailSize );
+    getThumbnailActive->GetThumbnailL( KNullDesC, aThumbnailId, iFlags,
+                       iQualityPreference, iSize, iDisplayMode, priority, aClientData,
+                       EFalse, KNullDesC, iThumbnailSize );
     
     iRequestQueue->AddRequestL( getThumbnailActive );
     CleanupStack::Pop( getThumbnailActive );
@@ -267,15 +267,15 @@
 
     if ( aObjectSource.Uri().Length())
         {
-        getThumbnailActive->GetThumbnailL( aObjectSource.Uri(), aObjectSource.Id(), 
-            aObjectSource.MimeType(), iFlags, iQualityPreference, iSize, iDisplayMode, 
-            priority, aClientData, EFalse, aTargetUri, iThumbnailSize );
+        getThumbnailActive->GetThumbnailL( aObjectSource.Uri(), aObjectSource.Id(), iFlags,
+            iQualityPreference, iSize, iDisplayMode, priority, aClientData,
+            EFalse, aTargetUri, iThumbnailSize );
         }
     else
         {
         getThumbnailActive->GetThumbnailL( aObjectSource.FileHandle(), aObjectSource.Id(), 
-            aObjectSource.MimeType(), iFlags, iQualityPreference, iSize, iDisplayMode,
-            priority, aClientData, EFalse, aTargetUri, iThumbnailSize );
+            iFlags, iQualityPreference, iSize, iDisplayMode, priority, aClientData,
+            EFalse, aTargetUri, iThumbnailSize );
         }
     
     iRequestQueue->AddRequestL( getThumbnailActive );
@@ -307,20 +307,13 @@
     CleanupStack::PushL( getThumbnailActive );
     
     if (aObjectSource.Uri().Length() &&
-        aObjectSource.TargetUri().Length())
-        {
-        // from path
-        getThumbnailActive->SetThumbnailL( aObjectSource.Uri(),
-            aObjectSource.MimeType(), iFlags, iQualityPreference, iSize, iDisplayMode, 
-            priority, aClientData, ETrue, aObjectSource.TargetUri(), iThumbnailSize, ETrue);
-        } 
-    else if (aObjectSource.Uri().Length() &&
-             aObjectSource.Bitmap() != NULL)
+        aObjectSource.Bitmap() != NULL)
         {
         // from bitmap
         getThumbnailActive->SetThumbnailL( aObjectSource.GetBitmapOwnership(),
-            aObjectSource.Id(), KBmpMime, iFlags, iQualityPreference, iSize, iDisplayMode,
-            priority, aClientData, ETrue, aObjectSource.Uri(), iThumbnailSize, ETrue);
+                     aObjectSource.Id(), KBmpMime, iFlags, iQualityPreference,
+                     iSize, iDisplayMode, priority, aClientData, ETrue,
+                     aObjectSource.Uri(), iThumbnailSize, ETrue);
         } 
     else if (aObjectSource.Uri().Length() &&
              aObjectSource.Buffer() != NULL &&
@@ -374,9 +367,9 @@
 		else if( !aObjectSource.Buffer() )
 			{        
 			getThumbnailActive->GetThumbnailL( aObjectSource.Id(), 
-						 aObjectSource.Uri(), aObjectSource.MimeType(), iFlags, 
-						 iQualityPreference, iSize, iDisplayMode, priority, NULL, 
-						 ETrue, aObjectSource.Uri(), EUnknownThumbnailSize);      
+						 aObjectSource.Uri(), iFlags, iQualityPreference, iSize,
+						 iDisplayMode, priority, NULL, ETrue, aObjectSource.Uri(), 
+						 EUnknownThumbnailSize);      
 			}
 		else
 			{
--- a/imagehandlingutilities/thumbnailmanager/thumbnailclient/src/thumbnailobjectsource.cpp	Wed Sep 15 12:32:44 2010 +0300
+++ b/imagehandlingutilities/thumbnailmanager/thumbnailclient/src/thumbnailobjectsource.cpp	Wed Oct 13 14:53:56 2010 +0300
@@ -24,7 +24,6 @@
 
 // ---------------------------------------------------------------------------
 // CThumbnailObjectSource::NewL()
-// CThumbnailObjectSource::NewLC()
 // Two-phased constructor.
 // ---------------------------------------------------------------------------
 //
@@ -37,6 +36,12 @@
     return self;
     }
 
+
+// ---------------------------------------------------------------------------
+// CThumbnailObjectSource::NewLC()
+// Two-phased constructor.
+// ---------------------------------------------------------------------------
+//
 EXPORT_C CThumbnailObjectSource* CThumbnailObjectSource::NewLC( const TDesC&
     aUri, const TDesC& aMimeType )
     {
@@ -46,6 +51,11 @@
     return self;
     }
 
+// ---------------------------------------------------------------------------
+// CThumbnailObjectSource::NewL()
+// Two-phased constructor.
+// ---------------------------------------------------------------------------
+//
 EXPORT_C CThumbnailObjectSource* CThumbnailObjectSource::NewL( const RFile64&
     aFile, const TDesC& aMimeType )
     {
@@ -55,6 +65,12 @@
     return self;
     }
 
+
+// ---------------------------------------------------------------------------
+// CThumbnailObjectSource::NewLC()
+// Two-phased constructor.
+// ---------------------------------------------------------------------------
+//
 EXPORT_C CThumbnailObjectSource* CThumbnailObjectSource::NewLC( const RFile64&
     aFile, const TDesC& aMimeType )
     {
@@ -64,16 +80,15 @@
     return self;
     }
 
-EXPORT_C CThumbnailObjectSource* CThumbnailObjectSource::NewL( CFbsBitmap*  aBitmap, 
-    const TDesC& aUri )
+
+EXPORT_C CThumbnailObjectSource* CThumbnailObjectSource::NewL( CFbsBitmap*  aBitmap, const TDesC& aUri )
     {
     CThumbnailObjectSource* self = CThumbnailObjectSource::NewLC( aBitmap, aUri );
     CleanupStack::Pop( self );
     return self;   
     }
 
-EXPORT_C CThumbnailObjectSource* CThumbnailObjectSource::NewLC( CFbsBitmap*  aBitmap,
-    const TDesC& aUri )
+EXPORT_C CThumbnailObjectSource* CThumbnailObjectSource::NewLC( CFbsBitmap*  aBitmap, const TDesC& aUri )
     {
     CThumbnailObjectSource* self = new( ELeave )CThumbnailObjectSource();
     CleanupStack::PushL( self );
@@ -81,60 +96,21 @@
     return self;
     }
 
-EXPORT_C CThumbnailObjectSource* CThumbnailObjectSource::NewL( TDesC8* aBuffer,
-    TDesC& aMimeType, const TDesC& aUri)
+EXPORT_C CThumbnailObjectSource* CThumbnailObjectSource::NewL( TDesC8* aBuffer,  TDesC& aMimeType, const TDesC& aUri)
     {
-    CThumbnailObjectSource* self = CThumbnailObjectSource::NewLC( aBuffer, 
-        aMimeType, aUri );
+    CThumbnailObjectSource* self = CThumbnailObjectSource::NewLC( aBuffer, aMimeType, aUri );
     CleanupStack::Pop( self );
     return self;   
     }
 
-EXPORT_C CThumbnailObjectSource* CThumbnailObjectSource::NewLC( TDesC8* aBuffer, 
-    TDesC& aMimeType, const TDesC& aUri)
+EXPORT_C CThumbnailObjectSource* CThumbnailObjectSource::NewLC( TDesC8* aBuffer,  TDesC& aMimeType, const TDesC& aUri)
     {
     CThumbnailObjectSource* self = new( ELeave )CThumbnailObjectSource();
     CleanupStack::PushL( self );
     self->ConstructL( aBuffer, aMimeType, aUri );
     return self;
     }
-
-EXPORT_C CThumbnailObjectSource* CThumbnailObjectSource::NewL( const TDesC& 
-    aUri, const TThumbnailId aThumbnailId, const TDesC& aMimeType )
-    {
-    CThumbnailObjectSource* self = CThumbnailObjectSource::NewLC( aUri,
-        aThumbnailId, aMimeType );
-    CleanupStack::Pop( self );
-    return self;
-    }
-
-EXPORT_C CThumbnailObjectSource* CThumbnailObjectSource::NewLC( const TDesC& aUri, 
-    const TThumbnailId aThumbnailId, const TDesC& aMimeType )
-    {
-    CThumbnailObjectSource* self = new( ELeave )CThumbnailObjectSource();
-    CleanupStack::PushL( self );
-    self->ConstructL( aUri, aMimeType, aThumbnailId );
-    return self;
-    }
-
-EXPORT_C CThumbnailObjectSource* CThumbnailObjectSource::NewL( const TDesC& aUri, 
-    const TDesC& aTargetUri, const TDesC& aMimeType )
-    {
-    CThumbnailObjectSource* self = CThumbnailObjectSource::NewLC( aUri, aTargetUri,
-        aMimeType );
-    CleanupStack::Pop( self );
-    return self;   
-    }
-
-EXPORT_C CThumbnailObjectSource* CThumbnailObjectSource::NewLC( const TDesC& aUri, 
-    const TDesC& aTargetUri, const TDesC& aMimeType )
-    {
-    CThumbnailObjectSource* self = new( ELeave )CThumbnailObjectSource();
-    CleanupStack::PushL( self );
-    self->ConstructL( aUri, aTargetUri, aMimeType );
-    return self;
-    }
-
+   
 
 // ---------------------------------------------------------------------------
 // CThumbnailObjectSource::CThumbnailObjectSource()
@@ -158,11 +134,15 @@
     iUri = aUri.AllocL();
     iMimeType = HBufC8::NewL( aMimeType.Length() );
     iMimeType->Des().Copy( aMimeType );
-    iThumbnailId = 0;
     iBitmap = NULL;
-    iTargetUri = NULL;
     }
 
+
+// ---------------------------------------------------------------------------
+// CThumbnailObjectSource::ConstructL()
+// Symbian 2nd phase constructor can leave.
+// ---------------------------------------------------------------------------
+//
 void CThumbnailObjectSource::ConstructL( const RFile64& aFile, const TDesC&
     aMimeType )
     {
@@ -171,18 +151,26 @@
     iMimeType->Des().Copy( aMimeType );
     iThumbnailId = 0;
     iBitmap = NULL;
-    iTargetUri = NULL;
     }
 
-void CThumbnailObjectSource::ConstructL( CFbsBitmap* aBitmap, const TDesC& 
-    aUri )
+// ---------------------------------------------------------------------------
+// CThumbnailObjectSource::ConstructL()
+// Symbian 2nd phase constructor can leave.
+// ---------------------------------------------------------------------------
+//
+void CThumbnailObjectSource::ConstructL( CFbsBitmap* aBitmap, const TDesC&
+        aUri )
     {
     iBitmap = aBitmap;
     iUri = aUri.AllocL();
     iThumbnailId = 0;
-    iTargetUri = NULL;
     }
 
+// ---------------------------------------------------------------------------
+// CThumbnailObjectSource::ConstructL()
+// Symbian 2nd phase constructor can leave.
+// ---------------------------------------------------------------------------
+//
 void CThumbnailObjectSource::ConstructL( TDesC8* aBuffer, const TDesC&
     aMimeType, const TDesC& aUri )
     {
@@ -192,9 +180,13 @@
     iUri = aUri.AllocL(); 
     iThumbnailId = 0;
     iBitmap = NULL;
-    iTargetUri = NULL;
     }
 
+// ---------------------------------------------------------------------------
+// CThumbnailObjectSource::ConstructL()
+// Symbian 2nd phase constructor can leave.
+// ---------------------------------------------------------------------------
+//
 void CThumbnailObjectSource::ConstructL( const TDesC& aUri, const TDesC&
     aMimeType, TThumbnailId aThumbnailId )
     {
@@ -202,18 +194,6 @@
     iMimeType = HBufC8::NewL( aMimeType.Length() );
     iMimeType->Des().Copy( aMimeType );
     iThumbnailId = aThumbnailId;
-    iTargetUri = NULL;
-    }
-
-void CThumbnailObjectSource::ConstructL( const TDesC& aUri, const TDesC& 
-    aTargetUri, const TDesC& aMimeType )
-    {
-    iUri = aUri.AllocL();
-    iTargetUri = aTargetUri.AllocL();
-    iMimeType = HBufC8::NewL( aMimeType.Length() );
-    iMimeType->Des().Copy( aMimeType );
-    iThumbnailId = 0;
-    iBitmap = NULL;
     }
 
 
@@ -239,11 +219,12 @@
 // CThumbnailObjectSourceImpl::FileHandle()
 // ---------------------------------------------------------------------------
 //
-EXPORT_C RFile64& CThumbnailObjectSource::FileHandle()
+EXPORT_C  RFile64& CThumbnailObjectSource::FileHandle()
     {
     return iFile;
     }
 
+
 // ---------------------------------------------------------------------------
 // CThumbnailObjectSourceImpl::Uri()
 // ---------------------------------------------------------------------------
@@ -290,15 +271,35 @@
     return KNullDesC8;
     }
 
-// ---------------------------------------------------------------------------
-// CThumbnailObjectSourceImpl::Id()
-// ---------------------------------------------------------------------------
-//
 EXPORT_C TThumbnailId CThumbnailObjectSource::Id()
     {
     return iThumbnailId;
     }
 	
+EXPORT_C CThumbnailObjectSource* CThumbnailObjectSource::NewL( const TDesC&
+aUri, const TThumbnailId aThumbnailId, const TDesC& aMimeType )
+{
+CThumbnailObjectSource* self = CThumbnailObjectSource::NewLC( aUri,
+        aThumbnailId, aMimeType );
+CleanupStack::Pop( self );
+return self;
+    }
+
+
+// ---------------------------------------------------------------------------
+// CThumbnailObjectSource::NewLC()
+// Two-phased constructor.
+// ---------------------------------------------------------------------------
+//
+EXPORT_C CThumbnailObjectSource* CThumbnailObjectSource::NewLC( const TDesC& aUri, 
+	const TThumbnailId aThumbnailId, const TDesC& aMimeType )
+    {
+    CThumbnailObjectSource* self = new( ELeave )CThumbnailObjectSource();
+    CleanupStack::PushL( self );
+    self->ConstructL( aUri, aMimeType, aThumbnailId );
+    return self;
+    }
+
 // ---------------------------------------------------------------------------
 // CThumbnailObjectSourceImpl::Bitmap()
 // ---------------------------------------------------------------------------
@@ -319,18 +320,4 @@
     return temp;
     }
 
-// ---------------------------------------------------------------------------
-// CThumbnailObjectSourceImpl::TargetUri()
-// ---------------------------------------------------------------------------
-//
-EXPORT_C const TDesC& CThumbnailObjectSource::TargetUri()
-    {
-    if ( iTargetUri )
-        {
-        return * iTargetUri;
-        }
-    return KNullDesC;
-    }
-
-
 // End of file
--- a/imagehandlingutilities/thumbnailmanager/thumbnailclient/src/thumbnailrequestactive.cpp	Wed Sep 15 12:32:44 2010 +0300
+++ b/imagehandlingutilities/thumbnailmanager/thumbnailclient/src/thumbnailrequestactive.cpp	Wed Oct 13 14:53:56 2010 +0300
@@ -47,7 +47,6 @@
         {
         iTimer->Cancel();
         }
-    
     delete iTimer;
     iTimer = NULL;
     
@@ -164,14 +163,6 @@
                 TN_DEBUG2( "CThumbnailRequestActive::StartL() - file handle opened for %S", &iPath );
                 
                 CleanupClosePushL( iFile );
-                
-                if ( iParams.iQualityPreference == CThumbnailManager::EOptimizeForQualityWithPreview )
-                    {
-                    // We may need the file handle later for the 2nd phase thumbnail
-                    iMyFileHandle.Close();
-                    User::LeaveIfError( iMyFileHandle.Duplicate( iFile ));
-                    }
-                
                 iSession.RequestThumbnailL( iFile, iPath, iParamsPckg, iStatus );
                 CleanupStack::PopAndDestroy( &iFile );   
                 }
@@ -206,14 +197,6 @@
             TN_DEBUG2( "CThumbnailRequestActive::StartL() - file handle opened for %S", &iTargetUri );
             
             CleanupClosePushL( iFile );
-            
-            if ( iParams.iQualityPreference == CThumbnailManager::EOptimizeForQualityWithPreview )
-                {
-                // We may need the file handle later for the 2nd phase thumbnail
-                iMyFileHandle.Close();
-                User::LeaveIfError( iMyFileHandle.Duplicate( iFile ));
-                }
-            
             iSession.RequestThumbnailL( iFile, iTargetUri, iParamsPckg, iStatus );
             CleanupStack::PopAndDestroy( &iFile );
             break;
@@ -237,29 +220,6 @@
             iSession.RenameThumbnails( iParamsPckg, iStatus );
             break;
             }  
-        case EReqSetThumbnailPath:
-            {
-            // open file handle
-            iFile.Close();
-            User::LeaveIfError( iFile.Open( iFs, iParams.iFileName, EFileShareReadersOrWriters ) );  
-            
-            TN_DEBUG2( "CThumbnailRequestActive::StartL() - file handle opened for %S", &iParams.iFileName );
-            
-            CleanupClosePushL( iFile );
-            
-            if ( iParams.iQualityPreference == CThumbnailManager::EOptimizeForQualityWithPreview )
-                {
-                // We may need the file handle later for the 2nd phase thumbnail
-                iMyFileHandle.Close();
-                User::LeaveIfError( iMyFileHandle.Duplicate( iFile ));
-                }
-            
-            iSession.RequestThumbnailL( iFile, iTargetUri, iParamsPckg, iStatus );
-            CleanupStack::PopAndDestroy( &iFile );
-
-            break;
-            } 
-            
         default:
             {
             break;
@@ -634,7 +594,7 @@
                     }
 	            }
 #endif
-	        TN_DEBUG3( "CThumbnaiRequestActive::HandleError() - iObserver.ThumbnailReady req=%d err=%d", iParams.iRequestId, iError );
+	        TN_DEBUG2( "CThumbnaiRequestActive::HandleError() - iObserver.ThumbnailReady %d", iParams.iRequestId );
 	        iObserver.ThumbnailReady( iError, *iCallbackThumbnail, iParams.iRequestId );
 	            
             }
@@ -659,7 +619,7 @@
 // ---------------------------------------------------------------------------
 //
 void CThumbnailRequestActive::GetThumbnailL( const RFile64& aFile, TThumbnailId aThumbnailId,
-    const TDesC8& aMimeType, CThumbnailManager::TThumbnailFlags aFlags, CThumbnailManager
+    CThumbnailManager::TThumbnailFlags aFlags, CThumbnailManager
     ::TThumbnailQualityPreference aQualityPreference, const TSize& aSize, const
     TDisplayMode aDisplayMode, const TInt aPriority, TAny* aClientData, TBool aGeneratePersistentSizesOnly,
     const TDesC& aTargetUri, TThumbnailSize aThumbnailSize)
@@ -680,7 +640,6 @@
     						EThumbnailGeneratePersistentSizesOnly :
     						EThumbnailNoControlFlags);    
     iParams.iOriginalControlFlags = iParams.iControlFlags;
-    iParams.iMimeType = TDataType( aMimeType );
     iParams.iBitmapHandle = 0;
     iParams.iSize = aSize;
     iParams.iDisplayMode = aDisplayMode;
@@ -692,20 +651,10 @@
     iParams.iThumbnailSize = aThumbnailSize;
     iParams.iThumbnailId = aThumbnailId;
     iParams.iOverwrite = EFalse;
-    iParams.iImport = EFalse;
     
     User::LeaveIfError( iFile.Duplicate( aFile ));
     
     iTargetUri = aTargetUri;
-    
-    if (iParams.iFileName.Length() && IsVirtualUri(iParams.iFileName))
-        {
-        iParams.iVirtualUri = ETrue;
-        }
-    else
-        {
-        iParams.iVirtualUri = EFalse;
-        }
     }
 
 
@@ -715,8 +664,8 @@
 // ---------------------------------------------------------------------------
 //
 void CThumbnailRequestActive::GetThumbnailL( TThumbnailId aThumbnailId,
-    const TDesC& aPath, const TDesC8& aMimeType, CThumbnailManager::TThumbnailFlags aFlags, 
-    CThumbnailManager::TThumbnailQualityPreference aQualityPreference, const TSize& aSize, const
+    const TDesC& aPath, CThumbnailManager::TThumbnailFlags aFlags, CThumbnailManager
+    ::TThumbnailQualityPreference aQualityPreference, const TSize& aSize, const
     TDisplayMode aDisplayMode, const TInt aPriority, TAny* aClientData, TBool aGeneratePersistentSizesOnly,
     const TDesC& aTargetUri, TThumbnailSize aThumbnailSize)
     {
@@ -727,7 +676,6 @@
                             EThumbnailGeneratePersistentSizesOnly :
                             EThumbnailNoControlFlags);
     iParams.iOriginalControlFlags = iParams.iControlFlags;
-    iParams.iMimeType = TDataType( aMimeType );
     iParams.iBitmapHandle = 0;
     iParams.iSize = aSize;
     iParams.iDisplayMode = aDisplayMode;
@@ -739,18 +687,8 @@
     iParams.iThumbnailSize = aThumbnailSize;
     iParams.iThumbnailId = aThumbnailId;
     iParams.iOverwrite = EFalse;
-    iParams.iImport = EFalse;
     
     iTargetUri = aTargetUri;
-    
-    if (iPath.Length() && IsVirtualUri(iPath))
-        {
-        iParams.iVirtualUri = ETrue;
-        }
-    else
-        {
-        iParams.iVirtualUri = EFalse;
-        }
     }
 
 
@@ -760,7 +698,7 @@
 // ---------------------------------------------------------------------------
 //
 void CThumbnailRequestActive::GetThumbnailL( const TDesC& aPath, TThumbnailId aThumbnailId,
-    const TDesC8& aMimeType, CThumbnailManager::TThumbnailFlags aFlags, CThumbnailManager
+    CThumbnailManager::TThumbnailFlags aFlags, CThumbnailManager
     ::TThumbnailQualityPreference aQualityPreference, const TSize& aSize, const
     TDisplayMode aDisplayMode, const TInt aPriority, TAny* aClientData, TBool aGeneratePersistentSizesOnly,
     const TDesC& aTargetUri, TThumbnailSize aThumbnailSize)
@@ -772,7 +710,6 @@
     						EThumbnailGeneratePersistentSizesOnly :
     						EThumbnailNoControlFlags);
     iParams.iOriginalControlFlags = iParams.iControlFlags;
-    iParams.iMimeType = TDataType( aMimeType );
     iParams.iBitmapHandle = 0;
     iParams.iSize = aSize;
     iParams.iDisplayMode = aDisplayMode;
@@ -784,19 +721,9 @@
     iParams.iThumbnailId = aThumbnailId;
     iParams.iFileName = aPath;
     iParams.iOverwrite = EFalse;
-    iParams.iImport = EFalse;
     
     iPath = aPath;
     iTargetUri = aTargetUri;
-    
-    if (iPath.Length() && IsVirtualUri(iPath))
-        {
-        iParams.iVirtualUri = ETrue;
-        }
-    else
-        {
-        iParams.iVirtualUri = EFalse;
-        }
     }
 
 // ---------------------------------------------------------------------------
@@ -830,18 +757,8 @@
     iParams.iQualityPreference = aQualityPreference;
     iParams.iThumbnailId = aThumbnailId;
     iParams.iOverwrite = aOverwrite;
-    iParams.iImport = EFalse;
     
     iTargetUri = aTargetUri;
-    
-    if (iTargetUri.Length() && IsVirtualUri(iTargetUri))
-        {
-        iParams.iVirtualUri = ETrue;
-        }
-    else
-        {
-        iParams.iVirtualUri = EFalse;
-        }
     }
 
 // ---------------------------------------------------------------------------
@@ -872,19 +789,9 @@
     iParams.iThumbnailId = aThumbnailId;
     iParams.iFileName = aTargetUri;
     iParams.iOverwrite = aOverwrite;
-    iParams.iImport = EFalse;
     
     iTargetUri = aTargetUri;
     
-    if (iTargetUri.Length() && IsVirtualUri(iTargetUri))
-        {
-        iParams.iVirtualUri = ETrue;
-        }
-    else
-        {
-        iParams.iVirtualUri = EFalse;
-        }
-    
     TInt memoryFree( 0 );
     HAL::Get( HALData::EMemoryRAMFree, memoryFree );
     
@@ -897,7 +804,7 @@
         iParams.iMimeType = TDataType( aMimeType );
         iRequestType = EReqSetThumbnailBitmap;
         }
-    else if (!iParams.iVirtualUri)
+    else
         {
         // memory low, create thumbs using filehandle
         TN_DEBUG1( "CThumbnaiRequestActive::SetThumbnailbyBitmap() - memory low, create thumbs using filehandle!" );
@@ -906,10 +813,6 @@
         iParams.iPriority = aPriority - 1;
         iRequestType = EReqGetThumbnailHandleLater;
         }
-    else
-        {
-        User::Leave(KErrNoMemory);
-        }
     }
 
 // ---------------------------------------------------------------------------
@@ -935,8 +838,6 @@
     iParams.iQualityPreference = aQualityPreference;
     iParams.iThumbnailId = aThumbnailId;
     iParams.iOverwrite = EFalse;
-    iParams.iVirtualUri = EFalse;
-    iParams.iImport = EFalse;
     
     iPath = aPath;
     iOrientation = aOrientation;
@@ -977,51 +878,6 @@
     }
 
 // ---------------------------------------------------------------------------
-// CThumbnailRequestActive::SetThumbnailL()
-// Set thumbnail from file path.
-// ---------------------------------------------------------------------------
-//
-void CThumbnailRequestActive::SetThumbnailL( const TDesC& aPath, const TDesC8& aMimeType,
-    CThumbnailManager::TThumbnailFlags aFlags, CThumbnailManager
-    ::TThumbnailQualityPreference aQualityPreference, const TSize& aSize, const
-    TDisplayMode aDisplayMode, const TInt aPriority, TAny* aClientData,
-    TBool aGeneratePersistentSizesOnly, const TDesC& aTargetUri, 
-    TThumbnailSize aThumbnailSize, TBool aOverwrite)
-    {
-    iRequestType = EReqSetThumbnailPath;
-    
-    iClientData = aClientData;
-    iParams.iControlFlags = (aGeneratePersistentSizesOnly ?
-                            EThumbnailGeneratePersistentSizesOnly :
-                            EThumbnailNoControlFlags);
-    iParams.iOriginalControlFlags = iParams.iControlFlags;
-    iParams.iMimeType = TDataType( aMimeType );
-    iParams.iBitmapHandle = 0;
-    iParams.iSize = aSize;
-    iParams.iDisplayMode = aDisplayMode;
-    iParams.iFileName = aPath;
-    iParams.iRequestId = iRequestId;
-    iParams.iPriority = aPriority;
-    iParams.iFlags = aFlags;
-    iParams.iQualityPreference = aQualityPreference;
-    iParams.iThumbnailSize = aThumbnailSize;
-    iParams.iOverwrite = aOverwrite;
-    
-    iTargetUri = aTargetUri;
-    
-    if (iTargetUri.Length() && IsVirtualUri(iTargetUri))
-        {
-        iParams.iVirtualUri = ETrue;
-        }
-    else
-        {
-        iParams.iVirtualUri = EFalse;
-        }
-    
-    iParams.iImport = ETrue;
-    }
-
-// ---------------------------------------------------------------------------
 // Request 2nd phase thumbnail
 // ---------------------------------------------------------------------------
 //
@@ -1114,26 +970,4 @@
     return KErrNone;
     }
 
-// ---------------------------------------------------------------------------
-// CThumbnailRequestActive::IsVirtualUri()
-// Checks if URI is virtual.
-// ---------------------------------------------------------------------------
-//
-TBool CThumbnailRequestActive::IsVirtualUri( const TDesC& aPath )
-    {
-    TInt pos = aPath.Find(KBackSlash);
-    
-    // normal URI
-    if ( pos == 2 )
-        {
-        return EFalse;
-        }
-    // virtual URI
-    else
-        {
-        TN_DEBUG1( "CThumbnailRequestActive::IsVirtualUri() - yes");
-        return ETrue;
-        }    
-    }
-
 // End of file
--- a/imagehandlingutilities/thumbnailmanager/thumbnailclient/src/thumbnailrequestqueue.cpp	Wed Sep 15 12:32:44 2010 +0300
+++ b/imagehandlingutilities/thumbnailmanager/thumbnailclient/src/thumbnailrequestqueue.cpp	Wed Oct 13 14:53:56 2010 +0300
@@ -163,7 +163,6 @@
              // delete completed task
              TN_DEBUG3( "CThumbnailRequestQueue::RemoveCompleted() - deleted id = %d (0x%08x)", request->RequestId(), request);
              delete request;
-             request = NULL;
              iRequests.Remove( i );
              }
          }
@@ -204,7 +203,6 @@
             else
                 {
                 delete request;
-                request = NULL;
                 iRequests.Remove( i );
                           
                 TN_DEBUG2( "CThumbnailRequestQueue::CancelRequest() - removed request ID: %d", aRequestId);
--- a/imagehandlingutilities/thumbnailmanager/thumbnailserver/inc/thumbnailcenrep.h	Wed Sep 15 12:32:44 2010 +0300
+++ b/imagehandlingutilities/thumbnailmanager/thumbnailserver/inc/thumbnailcenrep.h	Wed Oct 13 14:53:56 2010 +0300
@@ -142,7 +142,7 @@
     };
     
 public:
-    enum TThumbnailSourceType { EUnknownSourceType, EImage, EVideo, EAudio, EContact };
+    enum TThumbnailSourceType { EUnknownSourceType, EImage, EVideo, EAudio };
     enum TThumbnailSizeType { EUnknownSizeType, EGrid, EList, EFullscreen }; 
     
 public:
@@ -203,10 +203,7 @@
     TBool iVideoFullscreen;
     TBool iAudioGrid;
     TBool iAudioList;
-    TBool iAudioFullscreen;
-    TBool iContactGrid;
-    TBool iContactList;
-    TBool iContactFullscreen; 
+    TBool iAudioFullscreen;    
 };
 
 #endif // THUMBNAILCENREP_H
--- a/imagehandlingutilities/thumbnailmanager/thumbnailserver/inc/thumbnailfetchedchecker.h	Wed Sep 15 12:32:44 2010 +0300
+++ b/imagehandlingutilities/thumbnailmanager/thumbnailserver/inc/thumbnailfetchedchecker.h	Wed Oct 13 14:53:56 2010 +0300
@@ -18,7 +18,6 @@
 #define THUMBNAILFETCHEDCHECKER_H
 
 #include <e32base.h>
-#include <thumbnailmanager.h>
 
 NONSHARABLE_CLASS( CThumbnailFetchedChecker ): public CBase
     {
@@ -26,10 +25,8 @@
     static CThumbnailFetchedChecker* NewL();
     virtual ~CThumbnailFetchedChecker();
 public:
-    TInt LastFetchResult( const TDesC& aUri, const TThumbnailSize aThumbnailSize );
-    void SetFetchResult( const TDesC& aUri, const TThumbnailSize aThumbnailSize, TInt aError );
-    void DeleteFetchResult( const TDesC& aUri );
-    void RenameFetchResultL( const TDesC& aNewUri, const TDesC& aOldUri );
+    TInt LastFetchResult( const TDesC& aUri );
+    void SetFetchResult( const TDesC& aUri, TInt aError );
     void Reset();
 private:
     CThumbnailFetchedChecker();
@@ -37,15 +34,13 @@
     NONSHARABLE_CLASS( CEntry ) : public CBase
         {
     public:
-        static CEntry* NewL( const TDesC& aUri, const TThumbnailSize aThumbnailSize, TInt aError );
-        static TInt FindCB( const CEntry& aEntry1, const CEntry& aEntry );
-        static TInt FindCBUri( const TDesC* aUri, const CEntry& aEntry );
+        static CEntry* NewL( const TDesC& aUri, TInt aError );
+        static TInt FindCB( const TDesC* aUri, const CEntry& aEntry );
         static TInt InsertCB( const CEntry& aEntry1, const CEntry& aEntry2 );
         CEntry();
         virtual ~CEntry();
     public:
         HBufC* iUri;
-        TInt32 iSize;
         TInt iError;
         };
 
--- a/imagehandlingutilities/thumbnailmanager/thumbnailserver/inc/thumbnailgeneratetask.h	Wed Sep 15 12:32:44 2010 +0300
+++ b/imagehandlingutilities/thumbnailmanager/thumbnailserver/inc/thumbnailgeneratetask.h	Wed Oct 13 14:53:56 2010 +0300
@@ -33,7 +33,7 @@
  *  @since S60 v5.0
  */
 class CThumbnailGenerateTask: public CThumbnailTask,
-                              public MThumbnailProviderObserver
+    public MThumbnailProviderObserver
     {
 public:
 
@@ -56,8 +56,7 @@
             TDisplayMode aDisplayMode, TInt aPriority,
             RArray < TThumbnailPersistentSize >* aMissingSizes, const TDesC& aTargetUri,
             TThumbnailSize aThumbnailSize, const TInt64 aModified,
-            const CThumbnailManager::TThumbnailQualityPreference aQualityPreference,
-            TBool aImportVirtual );
+            const CThumbnailManager::TThumbnailQualityPreference aQualityPreference );
 
     /**
      * Destructor.
@@ -234,9 +233,6 @@
     TBool iPortrait;
     
     TInt iBitmapHandle;
-    
-    // virtual uri
-    TBool iVirtualUri;
 };
 
 #endif // THUMBNAILGENERATETASK_H
--- a/imagehandlingutilities/thumbnailmanager/thumbnailserver/inc/thumbnailscaletask.h	Wed Sep 15 12:32:44 2010 +0300
+++ b/imagehandlingutilities/thumbnailmanager/thumbnailserver/inc/thumbnailscaletask.h	Wed Oct 13 14:53:56 2010 +0300
@@ -59,7 +59,7 @@
         TDisplayMode aDisplayMode, TInt aPriority, const TDesC& aTargetUri,
         const TThumbnailSize aThumbnailSize, const TInt64 aModified,
         const TBool aBitmapToPool, const TBool aEXIF, 
-        const TThumbnailServerRequestId aRequestId, const TBool aImportVirtual);
+        const TThumbnailServerRequestId aRequestId);
 
     /**
      * Destructor
@@ -131,7 +131,7 @@
         aDisplayMode, TInt aPriority, const TDesC& aTargetUri,
         const TThumbnailSize aThumbnailSize, const TInt64 aModified,
         const TBool aBitmapToPool, const TBool aEXIF, 
-        const TThumbnailServerRequestId aRequestId, const TBool aImportVirtual);
+        const TThumbnailServerRequestId aRequestId);
 
     /**
      * Symbian 2nd phase constructor can leave.
@@ -278,9 +278,6 @@
      * Is origin EXIF.
      */
     TBool iEXIF;
-    
-    // virtual uri
-    TBool iVirtualUri;
 };
 
 #endif // THUMBNAILSCALETASK_H
--- a/imagehandlingutilities/thumbnailmanager/thumbnailserver/inc/thumbnailserver.h	Wed Sep 15 12:32:44 2010 +0300
+++ b/imagehandlingutilities/thumbnailmanager/thumbnailserver/inc/thumbnailserver.h	Wed Oct 13 14:53:56 2010 +0300
@@ -63,7 +63,7 @@
 
     while ( item )
         {
-        delete *item;
+        delete * item;
         item = iter.NextValue();
         }
     aHashMap.Close();
@@ -168,8 +168,9 @@
      */
     void StoreThumbnailL( const TDesC& aPath, CFbsBitmap* aBitmap, const TSize&
         aOriginalSize, const TBool aCropped, const TThumbnailSize aThumbnailSize,
-        const TInt64 aModified, const TBool aThumbFromPath,
-        const TBool aCheckExist);
+        const TInt64 aModified,
+        const TBool aThumbFromPath = ETrue,
+        const TBool aCheckExist = ETrue);
 
     /**
      * Fetch thumbnail image.
--- a/imagehandlingutilities/thumbnailmanager/thumbnailserver/inc/thumbnailsql.h	Wed Sep 15 12:32:44 2010 +0300
+++ b/imagehandlingutilities/thumbnailmanager/thumbnailserver/inc/thumbnailsql.h	Wed Oct 13 14:53:56 2010 +0300
@@ -210,6 +210,6 @@
 _LIT8( KThumbnailSelectAllPaths, "SELECT ThumbnailInfo.RowID,Path FROM ThumbnailInfo "
         "WHERE NOT EXISTS (SELECT Path FROM ThumbnailDeleted "
         "WHERE ThumbnailInfo.Path = ThumbnailDeleted.Path) "
-        "AND ThumbFromPath = 1 AND ThumbnailInfo.RowID > :RowID ORDER BY ThumbnailInfo.RowID ASC LIMIT :Limit;" );
+        "AND ThumbnailInfo.RowID > :RowID ORDER BY ThumbnailInfo.RowID ASC LIMIT :Limit;" );
 
 #endif // THUMBNAILSQL_H
--- a/imagehandlingutilities/thumbnailmanager/thumbnailserver/inc/thumbnailstore.h	Wed Sep 15 12:32:44 2010 +0300
+++ b/imagehandlingutilities/thumbnailmanager/thumbnailserver/inc/thumbnailstore.h	Wed Oct 13 14:53:56 2010 +0300
@@ -208,10 +208,9 @@
      * @param aFs File server.
      * @param aDrive Drive the store used for
      * @param aCenter Pointer to cenrep data handler
-	 * @param aReadOnly flag is store write protected
      * @return New CThumbnailStore instance.
      */
-    static CThumbnailStore* NewL( RFs& aFs, TInt aDrive, TDesC& aImei, CThumbnailServer* aServer, const TBool aReadOnly );
+    static CThumbnailStore* NewL( RFs& aFs, TInt aDrive, TDesC& aImei, CThumbnailServer* aServer );
 
     /**
      * Destructor
@@ -233,7 +232,9 @@
      */
     void StoreThumbnailL( const TDesC& aPath, CFbsBitmap* aThumbnail, const
         TSize& aOriginalSize, TBool aCropped, const TThumbnailSize aThumbnailSize, 
-        const TInt64 aModified, const TBool aThumbFromPath, TBool aBlackListed);
+        const TInt64 aModified,
+        const TBool aThumbFromPath = ETrue,
+        TBool aBlackListed = EFalse );
 
     /**
      * Fetches thumbnail image.
@@ -359,11 +360,6 @@
      * @contains indication whether file modified
      */
     TBool CheckModifiedByPathL( const TDesC& aPath, const TInt64 aModified, TBool& modifiedChanged);
-    
-    /**
-     *  @return TBool is store write protected
-     */
-    TBool IsReadOnly();
 
 private:
     /**
@@ -372,10 +368,9 @@
      * @since S60 v5.0
      * @param aFs File server.
      * @param aDrive Drive the store used for
-	 * @param aReadOnly set flag if store is write protected
      * @return New CThumbnailStore instance.
      */
-    CThumbnailStore( RFs& aFs, TInt aDrive, TDesC& aImei, CThumbnailServer* aServer, const TBool aReadOnly);
+    CThumbnailStore( RFs& aFs, TInt aDrive, TDesC& aImei, CThumbnailServer* aServer);
 
     /**
      * Symbian 2nd phase constructor can leave.
@@ -447,7 +442,7 @@
     void StoreThumbnailL( const TDesC& aPath, const TDes8& aData, const TSize&
         aSize, const TSize& aOriginalSize, const TThumbnailFormat& aFormat, TInt aFlags, 
         const TThumbnailSize& aThumbnailSize, const TInt64 aModified,
-        const TBool aThumbFromPath);
+        const TBool aThumbFromPath = ETrue);
 
     /**
      * Finds possible existing duplicate thumbnail.
@@ -655,11 +650,6 @@
      * How long previous flush took ms
      */
     TInt iPreviousFlushDelay;
-    
-    /**
-     * is store write protected
-     */
-    TBool iReadOnly;
 
 };
 // End of File
--- a/imagehandlingutilities/thumbnailmanager/thumbnailserver/src/thumbnailcenrep.cpp	Wed Sep 15 12:32:44 2010 +0300
+++ b/imagehandlingutilities/thumbnailmanager/thumbnailserver/src/thumbnailcenrep.cpp	Wed Oct 13 14:53:56 2010 +0300
@@ -67,11 +67,6 @@
         case EAudioFullScreenThumbnailSize:
             iSourceType = EAudio;
             break;
-        case EContactGridThumbnailSize:
-        case EContactListThumbnailSize:
-        case EContactFullScreenThumbnailSize:
-            iSourceType = EContact;
-            break;
         default:
             iSourceType = EUnknownSourceType;        
         }
@@ -85,8 +80,7 @@
 TThumbnailAutoCreate::TThumbnailAutoCreate()
     : iImageGrid(EFalse), iImageList(EFalse), iImageFullscreen(EFalse),
       iVideoGrid(EFalse), iVideoList(EFalse), iVideoFullscreen(EFalse),
-      iAudioGrid(EFalse), iAudioList(EFalse), iAudioFullscreen(EFalse),
-      iContactGrid(EFalse), iContactList(EFalse), iContactFullscreen(EFalse)
+      iAudioGrid(EFalse), iAudioList(EFalse), iAudioFullscreen(EFalse)
     {
     // No implementation required
     }
@@ -113,9 +107,7 @@
     {
     iPersistentSizes.Close();
     delete iAutoCreate;
-    iAutoCreate = NULL;
     delete iRepository;
-    iRepository = NULL;
     }
 
 // ---------------------------------------------------------------------------
@@ -211,57 +203,6 @@
     
     iPersistentSizes.AppendL( TThumbnailPersistentSize( EAudioFullScreenThumbnailSize, TSize( xSize, ySize ),
                               flags, static_cast <TDisplayMode> (raw_mode), format, autoCreate, TThumbnailPersistentSize::EFullscreen ));     
-
-// Contact TN, set default values if not found
-    if(iRepository->Get( KSizeContactGridWidth, xSize ) != KErrNone)
-        {
-        xSize = 54;
-        }
-    if( iRepository->Get( KSizeContactGridHeight, ySize ) != KErrNone)
-        {
-        ySize = 54;
-        }
-    
-    if( iRepository->Get( KAutoCreateContactGrid, autoCreate ) != KErrNone)
-    {
-        autoCreate = 1;
-    }
-
-    iPersistentSizes.AppendL( TThumbnailPersistentSize( EContactGridThumbnailSize, TSize( xSize, ySize ),
-            KGridAndListThumbnailCropped, static_cast <TDisplayMode> (raw_mode), format, autoCreate, TThumbnailPersistentSize::EGrid ));
-    
-    if(  iRepository->Get( KSizeContactListWidth, xSize ) != KErrNone)
-        {
-        xSize = 64;
-        }
-    if(  iRepository->Get( KSizeContactListHeight, ySize ) != KErrNone)
-        {
-        ySize = 64;
-        }
-    if(  iRepository->Get( KAutoCreateContactList, autoCreate ) != KErrNone)
-        {
-        autoCreate = 1;
-        }
-
-    iPersistentSizes.AppendL( TThumbnailPersistentSize( EContactListThumbnailSize, TSize( xSize, ySize ),
-            KGridAndListThumbnailCropped, static_cast <TDisplayMode> (raw_mode), format, autoCreate, TThumbnailPersistentSize::EList ));
-    
-    if( iRepository->Get( KSizeContactFullscreenWidth, xSize ) != KErrNone)
-        {
-        xSize = 250;
-        }
-    if( iRepository->Get( KSizeContactFullscreenHeight, ySize ) != KErrNone)
-        {
-        ySize = 250;
-        }
-    if( iRepository->Get( KAutoCreateContactFullscreen, autoCreate) != KErrNone)
-        {
-        autoCreate = 1;
-        }
-    
-    iPersistentSizes.AppendL( TThumbnailPersistentSize( EContactFullScreenThumbnailSize, TSize( xSize, ySize ),
-                              flags, static_cast <TDisplayMode> (raw_mode), format, autoCreate, TThumbnailPersistentSize::EFullscreen ));     
-    
     
     iAutoCreate = new (ELeave) TThumbnailAutoCreate();
     
@@ -274,19 +215,6 @@
     User::LeaveIfError( iRepository->Get( KAutoCreateAudioGrid, iAutoCreate->iAudioGrid ));
     User::LeaveIfError( iRepository->Get( KAutoCreateAudioList, iAutoCreate->iAudioList ));
     User::LeaveIfError( iRepository->Get( KAutoCreateAudioFullscreen, iAutoCreate->iAudioFullscreen ));    
-    
-    if( iRepository->Get( KAutoCreateContactGrid, iAutoCreate->iContactGrid ) != KErrNone )
-        {
-        iAutoCreate->iContactGrid = 1;
-        }
-    if( iRepository->Get( KAutoCreateContactList, iAutoCreate->iContactList ) != KErrNone )
-        {
-        iAutoCreate->iContactList = 1;
-        }
-    if( iRepository->Get( KAutoCreateContactFullscreen, iAutoCreate->iContactFullscreen ) != KErrNone )
-        {
-        iAutoCreate->iContactFullscreen = 1;
-        }
     }
 
 // ---------------------------------------------------------------------------
--- a/imagehandlingutilities/thumbnailmanager/thumbnailserver/src/thumbnailfetchedchecker.cpp	Wed Sep 15 12:32:44 2010 +0300
+++ b/imagehandlingutilities/thumbnailmanager/thumbnailserver/src/thumbnailfetchedchecker.cpp	Wed Oct 13 14:53:56 2010 +0300
@@ -16,7 +16,6 @@
 */
 
 #include "thumbnailfetchedchecker.h"
-#include "thumbnaillog.h"
 
 const int KMaxStoredEntries = 100;
 
@@ -50,27 +49,13 @@
 // CThumbnailFetchedChecker::LastFetchResult()
 // -----------------------------------------------------------------------------
 //
-TInt CThumbnailFetchedChecker::LastFetchResult( const TDesC& aUri, const TThumbnailSize aThumbnailSize )
+TInt CThumbnailFetchedChecker::LastFetchResult( const TDesC& aUri )
     {
-    TN_DEBUG3( "CThumbnailFetchedChecker::LastFetchResult(aUri=%S aThumbnailSize=%d)", &aUri, aThumbnailSize);
-
-    CEntry* entry = NULL;
-    TRAPD( err, entry = CEntry::NewL( aUri, aThumbnailSize, KErrNone ) );
-    if ( !err && entry )
+    TInt i = iNotFetched.FindInOrder( aUri, CEntry::FindCB );
+    if ( i >= 0 && i < iNotFetched.Count() )
         {
-        TInt ret = iNotFetched.FindInOrder( entry, CEntry::FindCB );
-        if ( ret != KErrNotFound )
-            {
-            TN_DEBUG1( "CThumbnailFetchedChecker::LastFetchResult() -> error found");
-            delete entry;
-            entry = NULL;
-            return iNotFetched[ ret ]->iError;
-            }
+        return iNotFetched[ i ]->iError;
         }
-
-    delete entry;        
-    entry = NULL;
-        
     return KErrNone;
     }
 
@@ -78,44 +63,31 @@
 // CThumbnailFetchedChecker::SetFetchResult()
 // -----------------------------------------------------------------------------
 //
-void CThumbnailFetchedChecker::SetFetchResult( const TDesC& aUri, const TThumbnailSize aThumbnailSize, TInt aError )
+void CThumbnailFetchedChecker::SetFetchResult( const TDesC& aUri, TInt aError )
     {
-    TN_DEBUG4( "CThumbnailFetchedChecker::SetFetchResult(aUri=%S aThumbnailSize=%d aError=%d)", &aUri, aThumbnailSize, aError);
     if ( aError == KErrNone )
         {
-        // Remove successful results from store
-        CEntry* entry = NULL;
-        TRAPD( err, entry = CEntry::NewL( aUri, aThumbnailSize, aError ) );
-        if ( !err && entry )
+        // Do not store successful results
+        TInt i = iNotFetched.FindInOrder( aUri, CEntry::FindCB );
+        if ( i >= 0 && i < iNotFetched.Count() )
             {
-            TInt i = iNotFetched.FindInOrder( entry, CEntry::FindCB );
-            if ( i >= 0 )
-                {
-                TN_DEBUG2( "CThumbnailFetchedChecker::LastFetchResult() -> Remove successful results from store %d",  iNotFetched.Count() );
-                delete iNotFetched[ i ];
-                iNotFetched[ i ] = NULL;
-                iNotFetched.Remove( i );
-                }
+            delete iNotFetched[ i ];
+            iNotFetched.Remove( i );
             }
-        entry = NULL;
-        delete entry;
         }
     else
         {
-
         // Add or update
         CEntry* entry = NULL;
-        TRAPD( err, entry = CEntry::NewL( aUri, aThumbnailSize, aError ) );
+        TRAPD( err, entry = CEntry::NewL( aUri, aError ) );
         if ( !err && entry )
             {
             err = iNotFetched.Find( entry );
             if ( err != KErrNotFound )
                 {
-                // update existing fetch result
-                TInt i = iNotFetched.FindInOrder( entry, CEntry::FindCB );
-                if ( i >= 0 )
+                TInt i = iNotFetched.FindInOrder( aUri, CEntry::FindCB );
+                if ( i >= 0 && i < iNotFetched.Count() )
                     {
-                    TN_DEBUG1( "CThumbnailFetchedChecker::LastFetchResult() -> Update fetched tn error" );
                     iNotFetched[ i ]->iError = aError;
                     }
                 }
@@ -123,11 +95,9 @@
                 {
                 if( iNotFetched.Count() < KMaxStoredEntries )
                     {
-                    // insert new fetch result
                     TInt err = iNotFetched.InsertInOrder( entry, CEntry::InsertCB );
                     if ( err == KErrNone )
                         {
-                        TN_DEBUG2( "CThumbnailFetchedChecker::LastFetchResult() -> Inserted new fetched tn error %d", iNotFetched.Count());	
                         entry = NULL; // owned by array now
                         }
                     }
@@ -140,77 +110,25 @@
     }
 
 // -----------------------------------------------------------------------------
-// CThumbnailFetchedChecker::DeleteFetchResult()
-// -----------------------------------------------------------------------------
-//
-void CThumbnailFetchedChecker::DeleteFetchResult( const TDesC& aUri )
-    {
-    TN_DEBUG2( "CThumbnailFetchedChecker::DeleteFetchResult(%S)", &aUri);
-    // delete all entries of passed uri
-    TInt ret;
-    do
-        {
-        ret = iNotFetched.FindInOrder( aUri, CEntry::FindCBUri );
-        if ( ret >= 0 )
-            {
-            TN_DEBUG1( "CThumbnailFetchedChecker::DeleteFetchResult() -> Deteled URI from fetched list" );	
-            delete iNotFetched[ ret ];
-            iNotFetched[ ret ] = NULL;
-            iNotFetched.Remove( ret );
-            }
-        }
-    while(ret != KErrNotFound );
-    
-    }
-
-// -----------------------------------------------------------------------------
-// CThumbnailFetchedChecker::LastFetchResult()
-// -----------------------------------------------------------------------------
-//
-void CThumbnailFetchedChecker::RenameFetchResultL( const TDesC& aNewUri, const TDesC& aOldUri )
-    {
-    TN_DEBUG3( "CThumbnailFetchedChecker::RenameFetchResult(aNewUri=%S aOldUri=%S)", &aNewUri, &aOldUri);
-    // change every occurence of passed uri
-    TInt ret;
-    do
-        {
-        ret = iNotFetched.FindInOrder( aOldUri, CEntry::FindCBUri );
-        if ( ret >= 0 )
-            {
-            delete iNotFetched[ ret ]->iUri;
-            iNotFetched[ ret ]->iUri = NULL;
-
-            iNotFetched[ ret ]->iUri = aNewUri.AllocL();
-            TN_DEBUG1( "CThumbnailFetchedChecker::RenameeFetchResult() -> Renamed URI in fetched list" );	
-            }
-        }
-    while(ret != KErrNotFound );
-    
-    }
-
-// -----------------------------------------------------------------------------
 // CThumbnailFetchedChecker::Reset()
 // -----------------------------------------------------------------------------
 //
 void CThumbnailFetchedChecker::Reset()
     {
-    TN_DEBUG1( "CThumbnailFetchedChecker::Reset()");
     iNotFetched.ResetAndDestroy();
     }
 
 // -----------------------------------------------------------------------------
-// CThumbnailFetchedChecker::CEntry::NewL()
+// CThumbnailFetchedChecker::CEntry::New()
 // -----------------------------------------------------------------------------
 //
 CThumbnailFetchedChecker::CEntry* CThumbnailFetchedChecker::CEntry::NewL(
-        const TDesC& aUri, const TThumbnailSize aThumbnailSize, TInt aError )
+        const TDesC& aUri, TInt aError )
     {
-    TN_DEBUG4( "CThumbnailFetchedChecker::CEntry::NewL(aUri=%S aThumbnailSize=%d aError=%d)", &aUri, aThumbnailSize, aError);
     CEntry* self  = new (ELeave) CEntry();
     if ( self )
         {
-        self->iUri = aUri.AllocL();
-        self->iSize = aThumbnailSize;
+        self->iUri = aUri.Alloc();
         self->iError = aError;
         if ( !self->iUri )
             {
@@ -226,28 +144,8 @@
 // -----------------------------------------------------------------------------
 //
 TInt CThumbnailFetchedChecker::CEntry::FindCB(
-        const CThumbnailFetchedChecker::CEntry& aEntry, const CThumbnailFetchedChecker::CEntry& aEntry1 )
+    const TDesC* aUri, const CThumbnailFetchedChecker::CEntry& aEntry )
     {
-    TN_DEBUG1( "CThumbnailFetchedChecker::CEntry::FindCB");
-    if( aEntry1.iSize == aEntry.iSize)
-        {
-        // return index if size and uri matches
-        return aEntry.iUri->CompareF( *( aEntry1.iUri ) );
-        }
-    else 
-        {
-        return KErrNotFound;
-        }
-    }
-
-// -----------------------------------------------------------------------------
-// CThumbnailFetchedChecker::CEntry::FindCBUri()
-// -----------------------------------------------------------------------------
-//
-TInt CThumbnailFetchedChecker::CEntry::FindCBUri(
-        const TDesC* aUri, const CThumbnailFetchedChecker::CEntry& aEntry )
-    {
-    TN_DEBUG2( "CThumbnailFetchedChecker::CEntry::FindCBUri(aUri=%S", &aUri);
     return aUri->CompareF( *( aEntry.iUri ) );
     }
 
@@ -259,16 +157,7 @@
         const CThumbnailFetchedChecker::CEntry& aEntry1,
         const CThumbnailFetchedChecker::CEntry& aEntry2 )
     {
-    TN_DEBUG1( "CThumbnailFetchedChecker::CEntry::InsertCB");
-    if( aEntry1.iSize == aEntry2.iSize)
-        {
-        // return index if size and uri matches
-        return aEntry1.iUri->CompareF( *( aEntry2.iUri ) );
-        }
-    else 
-        {
-        return KErrNotFound;
-        }
+    return aEntry1.iUri->CompareF( *( aEntry2.iUri ) );
     }
 
 // -----------------------------------------------------------------------------
@@ -286,5 +175,4 @@
 CThumbnailFetchedChecker::CEntry::~CEntry()
     {
     delete iUri;
-    iUri = NULL;
     }
--- a/imagehandlingutilities/thumbnailmanager/thumbnailserver/src/thumbnailgeneratetask.cpp	Wed Sep 15 12:32:44 2010 +0300
+++ b/imagehandlingutilities/thumbnailmanager/thumbnailserver/src/thumbnailgeneratetask.cpp	Wed Oct 13 14:53:56 2010 +0300
@@ -43,13 +43,12 @@
     const TSize& aSize, TDisplayMode aDisplayMode, TInt aPriority,
     RArray < TThumbnailPersistentSize >* aMissingSizes, const TDesC& aTargetUri,
     TThumbnailSize aThumbnailSize, const TInt64 aModified, 
-    const CThumbnailManager::TThumbnailQualityPreference aQualityPreference,
-    TBool aVirtualUri ): 
+    const CThumbnailManager::TThumbnailQualityPreference aQualityPreference ): 
     CThumbnailTask( aProcessor, aPriority ), iServer( aServer ), 
     iFlags( aFlags ), iSize( aSize ), iDisplayMode( aDisplayMode ),
     iMissingSizes( aMissingSizes ), iTargetUri( aTargetUri ),
     iThumbnailSize( aThumbnailSize ), iModified(aModified),
-    iQualityPreference( aQualityPreference ), iVirtualUri( aVirtualUri )
+    iQualityPreference( aQualityPreference )
     {
     TN_DEBUG2( "CThumbnailGenerateTask(0x%08x)::CThumbnailGenerateTask()", this);
     
@@ -95,7 +94,6 @@
         {
         iMissingSizes->Reset();
         delete iMissingSizes;
-        iMissingSizes = NULL;
         }
 		
     if ( iBitmapHandle )
@@ -127,11 +125,11 @@
     aStart.UniversalTime();
 #endif
    
-    TBuf8< KMaxDataTypeLength > mimeType;
-
-    if ( (!iVirtualUri && iFilename.Right(KExtLength).CompareF(KNonEmbeddedArtExt) == 0) ||
-         (iVirtualUri && iTargetUri.Right(KExtLength).CompareF(KContactExt) == 0) ) // tparse panics with virtual URI
-        {         
+    TParsePtrC parse(iFilename);
+    TPtrC ext(parse.Ext());
+    TBuf8< KMaxDataTypeLength > mimeType;                
+    if  (ext.CompareF(KNonEmbeddedArtExt)== 0) 
+        {       
         mimeType.Copy( KImageMime );  		
         }
     else
@@ -140,7 +138,8 @@
         }
     iProvider = iServer.ResolveProviderL(mimeType);
        	
-    TN_DEBUG3( "CThumbnailGenerateTask(0x%08x) -- provider UID 0x%08x", this, iProvider->Uid());
+    TN_DEBUG3( "CThumbnailGenerateTask(0x%08x) -- provider UID 0x%08x", this,
+        iProvider->Uid());
 
     __ASSERT_DEBUG(( iProvider ), ThumbnailPanic( EThumbnailNullPointer ));
 
@@ -198,7 +197,6 @@
 void CThumbnailGenerateTask::DoCancel()
     {
     TN_DEBUG2( "CThumbnailGenerateTask(0x%08x)::DoCancel()", this );
-    
     if ( iProvider )
         {
         iProvider->CancelGetThumbnail();
@@ -330,31 +328,11 @@
     // compTask is the scale task which returns the bitmap to the client
     CThumbnailScaleTask* complTask = NULL;
 	
-    TInt err1 = KErrNone;
-    TInt err2 = KErrNone;
-    TBool isPublic = ETrue;
-    TBool isPublic2 = ETrue;
-    
-    if(iFilename != KNullDesC)
-        {
-        TRAP(err1, iServer.StoreForPathL(iFilename));
-        
-        isPublic = iServer.IsPublicPath( iFilename );
-        }           
-    if(iTargetUri != KNullDesC )
-        {
-        TRAP(err2, iServer.StoreForPathL(iTargetUri));
-        
-        isPublic2 = iServer.IsPublicPath( iTargetUri );
-        }
-    
-    // check if need to create more than one scale task
     if ( iMissingSizes )
         {
         const TInt count = iMissingSizes->Count();
         
-        // scale small thumbs first, because fullscreen encoding takes longer
-        for ( TInt i( count-1 ); i >= 0; i-- )
+        for ( TInt i( 0 ); i < count; i++ )
             {
             TThumbnailSize size = (*iMissingSizes)[ i ].iType;
 #ifdef _DEBUG
@@ -366,8 +344,7 @@
                 if ( size == EFullScreenThumbnailSize ||
                      size == EVideoFullScreenThumbnailSize ||
                      size == EAudioFullScreenThumbnailSize ||
-                     size == EImageFullScreenThumbnailSize || 
-                     size == EContactFullScreenThumbnailSize )
+                     size == EImageFullScreenThumbnailSize )
                     {
                     TN_DEBUG2( "*iMissingSizes)[ i ].iWidth == %d", (*iMissingSizes)[ i ].iSize.iWidth );
                     TN_DEBUG2( "*iMissingSizes)[ i ].iHeight == %d", (*iMissingSizes)[ i ].iSize.iHeight );
@@ -382,23 +359,41 @@
             CThumbnailScaleTask* complTask = CThumbnailScaleTask::NewL( iProcessor, iServer, iFilename,
                 aBitmap, iOriginalSize, (*iMissingSizes)[ i ].iSize, (*iMissingSizes)[ i ].iCrop, iDisplayMode,
                 KMaxPriority, iTargetUri, (*iMissingSizes)[ i ].iType, iModified, iScaledBitmapToPool, iEXIF,
-                iRequestId, iVirtualUri);
+                iRequestId);
             CleanupStack::PushL( complTask );
             
+            TInt err1 = KErrNone;
+            TInt err2 = KErrNone;
+            
+            if(iFilename != KNullDesC)
+                {
+                TRAP(err1, iServer.StoreForPathL(iFilename));
+                }
+            
+            if(iTargetUri != KNullDesC )
+                {
+                TRAP(err2, iServer.StoreForPathL(iTargetUri));
+                }
             // if trying to access Z drive, don't try to store
             // don't want to store custom sizes
-            // don't store if from private directory
-            if( !isPublic || !isPublic2 ||
-                err1 == KErrAccessDenied || err2 == KErrAccessDenied ||
-                (*iMissingSizes)[ i ].iType == ECustomThumbnailSize || 
-                (*iMissingSizes)[ i ].iType == EUnknownThumbnailSize )
+            if( err1 == KErrAccessDenied || err2 == KErrAccessDenied ||
+                    (*iMissingSizes)[ i ].iType == ECustomThumbnailSize || 
+                    (*iMissingSizes)[ i ].iType == EUnknownThumbnailSize )
                 {
                 complTask->SetDoStore( EFalse );
                 TN_DEBUG2( "CThumbnailGenerateTask(0x%08x)::CreateScaleTasksL() - do not store", this );
                 }
             else
                 {
-                complTask->SetDoStore( ETrue );
+                if(iFilename != KNullDesC)
+                    {
+                    complTask->SetDoStore(iServer.IsPublicPath( iFilename ));
+                    }
+                
+                if(iTargetUri != KNullDesC)
+                    {
+                    complTask->SetDoStore(iServer.IsPublicPath( iTargetUri ));
+                    }
                 }
             
             iProcessor.AddTaskL( complTask );
@@ -420,8 +415,7 @@
             if ( iThumbnailSize == EFullScreenThumbnailSize ||
                  iThumbnailSize == EVideoFullScreenThumbnailSize ||
                  iThumbnailSize == EAudioFullScreenThumbnailSize ||
-                 iThumbnailSize == EImageFullScreenThumbnailSize ||
-                 iThumbnailSize == EContactFullScreenThumbnailSize)
+                 iThumbnailSize == EImageFullScreenThumbnailSize )
                 {
                 TInt width = iSize.iWidth; 
                 iSize.iWidth = iSize.iHeight;
@@ -432,14 +426,22 @@
         complTask = CThumbnailScaleTask::NewL( iProcessor, iServer, iFilename,
             aBitmap, iOriginalSize, iSize, iFlags& CThumbnailManager
             ::ECropToAspectRatio, iDisplayMode, KMaxPriority, iTargetUri,
-            iThumbnailSize, iModified, iScaledBitmapToPool, iEXIF, iRequestId,
-            iVirtualUri);
+            iThumbnailSize, iModified, iScaledBitmapToPool, iEXIF, iRequestId );
         CleanupStack::PushL( complTask );
         
+        TInt err1 = KErrNone;
+        TInt err2 = KErrNone;
+        if(iFilename != KNullDesC)
+            {
+            TRAP(err1, iServer.StoreForPathL(iFilename));
+            }
+        if(iTargetUri != KNullDesC)
+            {
+            TRAP(err2, iServer.StoreForPathL(iTargetUri));
+            }
         // if trying to access Z drive, don't try to store
         // don't want to store custom sizes
-        if( !isPublic || !isPublic2 ||
-            err1 == KErrAccessDenied || err2 == KErrAccessDenied ||
+        if( err1 == KErrAccessDenied || err2 == KErrAccessDenied ||
             iThumbnailSize == ECustomThumbnailSize || 
             iThumbnailSize == EUnknownThumbnailSize )
             {
@@ -448,7 +450,15 @@
             }
         else
             {
-            complTask->SetDoStore( ETrue );
+            if(iFilename != KNullDesC)
+                {
+                complTask->SetDoStore(iServer.IsPublicPath( iFilename ));
+                }
+             
+             if(iTargetUri != KNullDesC)
+                {
+                complTask->SetDoStore(iServer.IsPublicPath( iTargetUri ));
+                }
             }
         
         iProcessor.AddTaskL( complTask );
@@ -496,16 +506,16 @@
     if(iFilename != KNullDesC)
         {
         iServer.StoreForPathL( iFilename )->StoreThumbnailL( 
-            iFilename, tempBitmap, aOriginalSize, EFalse, iThumbnailSize, iModified, !iVirtualUri, ETrue );
+            iFilename, tempBitmap, aOriginalSize, EFalse, iThumbnailSize, iModified, EFalse, ETrue );
 		//remove result from fetched checker
-        iServer.FetchedChecker().SetFetchResult( iFilename,  iThumbnailSize, KErrNone );
+        iServer.FetchedChecker().SetFetchResult( iFilename, KErrNone );
         }
     else if(iTargetUri != KNullDesC)
         {
         iServer.StoreForPathL( iTargetUri )->StoreThumbnailL( 
-            iTargetUri, tempBitmap, aOriginalSize, EFalse, iThumbnailSize, iModified, !iVirtualUri, ETrue );
+            iTargetUri, tempBitmap, aOriginalSize, EFalse, iThumbnailSize, iModified, EFalse, ETrue );
 		//remove result from fetched checker
-        iServer.FetchedChecker().SetFetchResult( iTargetUri, iThumbnailSize, KErrNone );
+        iServer.FetchedChecker().SetFetchResult( iTargetUri, KErrNone );
         }
 
     CleanupStack::PopAndDestroy( tempBitmap );
--- a/imagehandlingutilities/thumbnailmanager/thumbnailserver/src/thumbnailmdsquerytask.cpp	Wed Sep 15 12:32:44 2010 +0300
+++ b/imagehandlingutilities/thumbnailmanager/thumbnailserver/src/thumbnailmdsquerytask.cpp	Wed Oct 13 14:53:56 2010 +0300
@@ -36,7 +36,7 @@
 //
 CThumbnailMDSQueryTask::CThumbnailMDSQueryTask(
         CThumbnailTaskProcessor& aProcessor, TInt aPriority, CMdESession* aMdESession, CThumbnailServer& aServer): 
-        CThumbnailTask( aProcessor, aPriority ), iMdESession( aMdESession ), iQuery(NULL), iServer(aServer), iUpdateToDb(ETrue)
+        CThumbnailTask( aProcessor, aPriority ), iMdESession( aMdESession ), iServer(aServer), iUpdateToDb(ETrue)
     {
     TN_DEBUG2( "CThumbnailMDSQueryTask(0x%08x)::CThumbnailMDSQueryTask()", this );
     }
@@ -55,7 +55,6 @@
         {
         iQuery->Cancel();
         delete iQuery;
-        iQuery = NULL;
         }
     }
 
@@ -183,21 +182,14 @@
     CMdENamespaceDef* defNamespace = &iMdESession->GetDefaultNamespaceDefL();
     CMdEObjectDef& objDef = defNamespace->GetObjectDefL( MdeConstants::Object::KBaseObject );
     
-    delete iQuery;
-    iQuery = NULL;
+    iQuery = iMdESession->NewObjectQueryL( *defNamespace, objDef, this );
+    iQuery->SetResultMode( EQueryResultModeItem );
+
+    CMdELogicCondition& rootCondition = iQuery->Conditions();
+    rootCondition.SetOperator( ELogicConditionOperatorOr );
     
-    iQuery = iMdESession->NewObjectQueryL( *defNamespace, objDef, this );
-	
-	if(iQuery)
-		{
-	    iQuery->SetResultMode( EQueryResultModeItem );
-
-    	CMdELogicCondition& rootCondition = iQuery->Conditions();
-	    rootCondition.SetOperator( ELogicConditionOperatorOr );
-    
-	    // add ID condition
-    	rootCondition.AddObjectConditionL( aId );
-		}
+    // add ID condition
+    rootCondition.AddObjectConditionL( aId );
     }
 
 // ---------------------------------------------------------------------------
--- a/imagehandlingutilities/thumbnailmanager/thumbnailserver/src/thumbnailscaletask.cpp	Wed Sep 15 12:32:44 2010 +0300
+++ b/imagehandlingutilities/thumbnailmanager/thumbnailserver/src/thumbnailscaletask.cpp	Wed Oct 13 14:53:56 2010 +0300
@@ -42,15 +42,14 @@
     aBitmap, const TSize& aOriginalSize, const TSize& aTargetSize, TBool aCrop,
     TDisplayMode aDisplayMode, TInt aPriority, const TDesC& aTargetUri,
     const TThumbnailSize aThumbnailSize, const TInt64 aModified,
-    TBool aBitmapToPool, const TBool aEXIF, const TThumbnailServerRequestId aRequestId,
-    const TBool aImportVirtual)
+    TBool aBitmapToPool, const TBool aEXIF, const TThumbnailServerRequestId aRequestId)
     {
     // We take ownership of aBitmap
     CleanupStack::PushL( aBitmap );
     CThumbnailScaleTask* self = new( ELeave )CThumbnailScaleTask( aProcessor,
         aServer, aFilename, aBitmap, aOriginalSize, aTargetSize, aCrop,
         aDisplayMode, aPriority, aTargetUri, aThumbnailSize, aModified,
-        aBitmapToPool, aEXIF, aRequestId, aImportVirtual);
+        aBitmapToPool, aEXIF, aRequestId);
     CleanupStack::Pop( aBitmap );
     CleanupStack::PushL( self );
     self->ConstructL();
@@ -69,13 +68,12 @@
     const TSize& aOriginalSize, const TSize& aTargetSize, TBool aCrop,
     TDisplayMode aDisplayMode, TInt aPriority, const TDesC& aTargetUri,
     const TThumbnailSize aThumbnailSize, const TInt64 aModified,
-    TBool aBitmapToPool, const TBool aEXIF, const TThumbnailServerRequestId aRequestId,
-    const TBool aVirtualUri):
+    TBool aBitmapToPool, const TBool aEXIF, const TThumbnailServerRequestId aRequestId):
     CThumbnailTask( aProcessor, aPriority ), iServer( aServer ), iOwnBitmap( aBitmap ),
     iOriginalSize( aOriginalSize ), iTargetSize(aTargetSize), iTargetSizeTN( aTargetSize ), iCrop( aCrop ),
     iDisplayMode( aDisplayMode ), iFilename( aFilename ), iTargetUri( aTargetUri ),
     iThumbnailSize(aThumbnailSize), iModified(aModified),
-    iBitmapToPool(aBitmapToPool), iEXIF(aEXIF), iVirtualUri( aVirtualUri )
+    iBitmapToPool(aBitmapToPool), iEXIF(aEXIF)
     {
     TN_DEBUG2( "CThumbnailScaleTask(0x%08x)::CThumbnailScaleTask()", this );
     
@@ -121,7 +119,6 @@
 
     // Scaled bitmap is owned by us, delete now
     delete iScaledBitmap;
-    iScaledBitmap = NULL;
     }
 
 
@@ -241,8 +238,7 @@
     if ( (iThumbnailSize == EFullScreenThumbnailSize ||
           iThumbnailSize == EImageFullScreenThumbnailSize ||
           iThumbnailSize == EVideoFullScreenThumbnailSize ||
-          iThumbnailSize == EAudioFullScreenThumbnailSize ||
-          iThumbnailSize == EContactFullScreenThumbnailSize) &&
+          iThumbnailSize == EAudioFullScreenThumbnailSize) &&
           iOriginalSize.iHeight < iTargetSize.iHeight && 
           iOriginalSize.iWidth < iTargetSize.iWidth )
         {
@@ -352,20 +348,17 @@
             if (iFilename != KNullDesC && iFilename.CompareF(iTargetUri) == 0)
                 {
                 // filename and target URI match, so thumb created from associated path
-                iServer.StoreThumbnailL( iTargetUri, iScaledBitmap, iOriginalSize, iCrop, 
-                                         iThumbnailSize, iModified, !iVirtualUri, !iVirtualUri );
+                iServer.StoreThumbnailL( iTargetUri, iScaledBitmap, iOriginalSize, iCrop, iThumbnailSize, iModified, ETrue );
                 }
             else
                 {
                 // thumb not created from associated path
-                iServer.StoreThumbnailL( iTargetUri, iScaledBitmap, iOriginalSize, iCrop, 
-                                         iThumbnailSize, iModified, !iVirtualUri, EFalse );
+                iServer.StoreThumbnailL( iTargetUri, iScaledBitmap, iOriginalSize, iCrop, iThumbnailSize, iModified, EFalse, EFalse );
                 }  
             }
         else if (iFilename != KNullDesC)
             {
-            iServer.StoreThumbnailL( iFilename, iScaledBitmap, iOriginalSize, iCrop, 
-                                     iThumbnailSize, iModified, !iVirtualUri, !iVirtualUri );
+            iServer.StoreThumbnailL( iFilename, iScaledBitmap, iOriginalSize, iCrop, iThumbnailSize, iModified, ETrue );
             }
         }    
     
--- a/imagehandlingutilities/thumbnailmanager/thumbnailserver/src/thumbnailserver.cpp	Wed Sep 15 12:32:44 2010 +0300
+++ b/imagehandlingutilities/thumbnailmanager/thumbnailserver/src/thumbnailserver.cpp	Wed Oct 13 14:53:56 2010 +0300
@@ -43,7 +43,6 @@
 _LIT8( KThumbnailMimeImage, "image" );
 _LIT8( KThumbnailMimeVideo, "video" );
 _LIT8( KThumbnailMimeAudio, "audio" );
-_LIT8( KThumbnailMimeContact, "contact" );
 
 const TChar KThumbnailMimeSeparatorChar = '/';
 const TChar KThumbnailMimeWildCardChar = '*';
@@ -416,7 +415,6 @@
             "CThumbnailServer::ThreadFunctionL() -- CActiveScheduler::Start() out" );
         // Comes here if server gets shut down
         delete server;
-        server = NULL;
         CleanupStack::PopAndDestroy( scheduler );
         }
     }
@@ -463,7 +461,7 @@
             {
             TN_DEBUG2( "CThumbnailServer::DropSession() - ref->iSession = 0x%08x", ref->iSession );
         
-            delete ref->iBitmap;
+            delete ref->iBitmap;            
             bpiter.RemoveCurrent();
                         
             TN_DEBUG2( "CThumbnailServer::DropSession() - deleted bitmap, left=%d", iBitmapPool.Count());
@@ -560,12 +558,12 @@
     if (!aCheckExist)
         {
         StoreForPathL( aPath )->StoreThumbnailL( aPath, aBitmap, aOriginalSize,
-                       aCropped, aThumbnailSize, aModified, aThumbFromPath, EFalse );
+                       aCropped, aThumbnailSize, aModified, aThumbFromPath );
         }    
     else if(BaflUtils::FileExists( iFs, aPath))
         {
         StoreForPathL( aPath )->StoreThumbnailL( aPath, aBitmap, aOriginalSize,
-                       aCropped, aThumbnailSize, aModified, aThumbFromPath, EFalse );
+                       aCropped, aThumbnailSize, aModified, aThumbFromPath );
         }
     else
         {
@@ -574,7 +572,7 @@
     
     if( iFetchedChecker )    
         {
-        iFetchedChecker->SetFetchResult( aPath, aThumbnailSize, KErrNone );
+        iFetchedChecker->SetFetchResult( aPath, KErrNone );
         }
     }
 
@@ -589,7 +587,7 @@
     TN_DEBUG3( "CThumbnailServer::FetchThumbnailL(aPath=%S aThumbnailSize=%d)", &aPath, aThumbnailSize );
     if( iFetchedChecker )
         {
-        TInt err( iFetchedChecker->LastFetchResult( aPath, aThumbnailSize ) );
+        TInt err( iFetchedChecker->LastFetchResult( aPath ) );
         if ( err == KErrNone ) // To avoid useless sql gets that fails for sure
             {
             // custom sizes are not stored to db, skip fetching
@@ -601,7 +599,7 @@
             TRAP( err, StoreForPathL( aPath )->FetchThumbnailL( aPath, aThumbnail, aData, aThumbnailSize, aOriginalSize) );
             if ( err != KErrNone )
                 {
-                iFetchedChecker->SetFetchResult( aPath, aThumbnailSize, err );
+                iFetchedChecker->SetFetchResult( aPath, err );
                 }
             }
         User::LeaveIfError( err );
@@ -670,7 +668,7 @@
     
     if( iFetchedChecker ) 
         {
-        iFetchedChecker->DeleteFetchResult( aPath );
+        iFetchedChecker->SetFetchResult( aPath, KErrNone );
         }
     }
 
@@ -856,7 +854,7 @@
         if ( ref->iSession == aRequestId.iSession && 
              ref->iRequestId == aRequestId.iRequestId )
             {            
-            delete ref->iBitmap;
+            delete ref->iBitmap;            
             bpiter.RemoveCurrent();                        
                         
             TN_DEBUG2( "CThumbnailServer::DequeTask() - deleted bitmap, left=%d", 
@@ -948,7 +946,7 @@
         }
     else
         {
-        if( iFormatting )
+        if(iFormatting)
            {
            TN_DEBUG1( "CThumbnailServer::StoreForDriveL() - FORMATTING! - ABORT");
            User::Leave( KErrNotSupported );
@@ -957,31 +955,17 @@
         TVolumeInfo volumeInfo;
         TInt err = iFs.Volume( volumeInfo, aDrive );
         
-        if ( err )
-            {
-            // Locked
-            TN_DEBUG2( "CThumbnailServer::StoreForDriveL() - err %d", err);
-            User::Leave( err);
-            }
-        else if( volumeInfo.iDrive.iMediaAtt& KMediaAttLocked )
-            {
-            TN_DEBUG1( "CThumbnailServer::StoreForDriveL() - locked");
-            User::Leave( KErrAccessDenied );
-            }
-		else if ( volumeInfo.iDrive.iDriveAtt& KDriveAttRom ||
+        if ( err || volumeInfo.iDrive.iDriveAtt& KDriveAttRom ||
             volumeInfo.iDrive.iDriveAtt& KDriveAttRemote ||
-            volumeInfo.iDrive.iMediaAtt& KMediaAttWriteProtected )
+            volumeInfo.iDrive.iMediaAtt& KMediaAttWriteProtected ||
+            volumeInfo.iDrive.iMediaAtt& KMediaAttLocked )
             {
-            // We support ROM disks and remote disks in read only mode.
-            TN_DEBUG1( "CThumbnailServer::StoreForDriveL() - rom/remote/write protected");
-            res = CThumbnailStore::NewL( iFs, aDrive, iImei, this, ETrue );
+            // We don't support ROM disks or remote mounts. Media
+            // must be read-write and not locked.
+            User::Leave( KErrAccessDenied);
             }
-        else
-            {
-            TN_DEBUG1( "CThumbnailServer::StoreForDriveL() - normal");
-            res = CThumbnailStore::NewL( iFs, aDrive, iImei, this, EFalse );
-            }
-			
+        
+        res = CThumbnailStore::NewL( iFs, aDrive, iImei, this );
         CleanupStack::PushL( res );
         iStores.InsertL( aDrive, res );
         res->SetPersistentSizes(iPersistentSizes);
@@ -1075,7 +1059,6 @@
     if (store)
         {
         delete *store;
-        *store = NULL;
         iStores.Remove( aDrive );
         }
     }
@@ -1164,7 +1147,7 @@
           // If drive-list entry is zero, drive is not available
             continue;
            }
-
+            
         TInt err = iFs.Volume(volumeInfo, drive);
         TInt err_drive = iFs.Drive(driveInfo, drive);    
         
@@ -1279,45 +1262,62 @@
     TN_DEBUG1( "CThumbnailServer::UpdateThumbnailsL()");
     
     // 1. check path change
-    // 2. check timestamp change
+    // 2. check orientation change
+    // 3. check timestamp change
+
+    TBool orientationChanged = EFalse;
     TBool modifiedChanged = EFalse;
     
     CThumbnailStore* store = StoreForPathL( aPath );
    
-    TN_DEBUG1( "CThumbnailServer::UpdateThumbnailsL() - exist");
-        
-    TBool exists = store->CheckModifiedByPathL(aPath, aModified, modifiedChanged);
-       
-    if(!exists)
-        {
-        TN_DEBUG1( "CThumbnailServer::UpdateThumbnailsL() - exists NO");
-        //not found, needs to be generated
-        return EFalse;
-        }
-    
-    TN_DEBUG1( "CThumbnailServer::UpdateThumbnailsL() - modified ?");
+    // placeholder for orientation check
+    orientationChanged = EFalse;
     
-    if (modifiedChanged)
+    if (orientationChanged)
         {
-        TN_DEBUG1( "CThumbnailServer::UpdateThumbnailsL() - modified YES");
-            
-        // delete old thumbs
-        store->DeleteThumbnailsL(aPath, ETrue);
-            
-        if( iFetchedChecker ) 
-            {
-            iFetchedChecker->DeleteFetchResult( aPath );
-            }
-            
-        // need to create new thumbs
+        TN_DEBUG1( "CThumbnailServer::UpdateThumbnailsL() - orientation updated");
+        
+        // orientation updated, no need to check further
+        return ETrue;
         }
     else
         {
-        TN_DEBUG1( "CThumbnailServer::UpdateThumbnailsL() - modified NO");
+        TN_DEBUG1( "CThumbnailServer::UpdateThumbnailsL() - exist");
+        
+        TBool exists = store->CheckModifiedByPathL(aPath, aModified, modifiedChanged);
+       
+        if(!exists)
+            {
+            TN_DEBUG1( "CThumbnailServer::UpdateThumbnailsL() - exists NO");
+            //not found, needs to be generated
+            return EFalse;
+            }
+        
+        TN_DEBUG1( "CThumbnailServer::UpdateThumbnailsL() - modified ?");
         
-        // not modified
-        return ETrue;
+        if (modifiedChanged)
+            {
+            TN_DEBUG1( "CThumbnailServer::UpdateThumbnailsL() - modified YES");
+            
+            // delete old thumbs
+            store->DeleteThumbnailsL(aPath, ETrue);
+            
+            if( iFetchedChecker ) 
+                {
+                iFetchedChecker->SetFetchResult( aPath, KErrNone );
+                }
+            
+            // need to create new thumbs
+            }
+        else
+            {
+            TN_DEBUG1( "CThumbnailServer::UpdateThumbnailsL() - modified NO");
+            
+            // not modified
+            return ETrue;
+            }
         }
+  
     
     TN_DEBUG1( "CThumbnailServer::UpdateThumbnailsL() - no thumbs found, create new");
     
@@ -1336,7 +1336,8 @@
     
     if( iFetchedChecker ) 
         {
-        iFetchedChecker->RenameFetchResultL( aNewPath, aCurrentPath );
+        iFetchedChecker->SetFetchResult( aNewPath, iFetchedChecker->LastFetchResult(aCurrentPath) );
+        iFetchedChecker->SetFetchResult( aCurrentPath, KErrNone );
         }
     }
 
@@ -1347,7 +1348,8 @@
 TInt CThumbnailServer::MimeTypeFromFileExt( const TDesC& aFileName, TDataType& aMimeType )
     {
     TBool found = ETrue;
-    TPtrC ext( aFileName.Right(KExtLength) ); // tparse panics with virtual URI
+    TParsePtrC parse( aFileName );
+    TPtrC ext( parse.Ext() );
     
     if ( ext.CompareF( KJpegExt ) == 0 || ext.CompareF( KJpgExt ) == 0)
         {
@@ -1461,14 +1463,6 @@
         {
         aMimeType = TDataType( KMatroskaVideoMime );
         } 
-    else if ( ext.CompareF( KContactExt ) == 0 )
-        {
-        aMimeType = TDataType( KContactMime );
-        } 
-    else if ( ext.CompareF( KAlbumArtExt ) == 0 )
-        {
-        aMimeType = TDataType( KAlbumArtMime );
-        }
     else
         {
         aMimeType = TDataType( KNullDesC8 );
@@ -1506,10 +1500,6 @@
         {
         return TThumbnailPersistentSize::EAudio;
         }
-    else if (mediaType.Compare(KThumbnailMimeContact) == 0)
-        {
-        return TThumbnailPersistentSize::EContact;
-        }
 
     return TThumbnailPersistentSize::EUnknownSourceType;        
     }
@@ -1539,11 +1529,6 @@
         case EAudioFullScreenThumbnailSize:
             sourceType = TThumbnailPersistentSize::EAudio;
             break;
-        case EContactListThumbnailSize:
-        case EContactGridThumbnailSize:
-        case EContactFullScreenThumbnailSize:
-            sourceType = TThumbnailPersistentSize::EContact;
-            break;
         default:
             sourceType = TThumbnailPersistentSize::EUnknownSourceType;  
         }
@@ -1563,30 +1548,24 @@
          mimeType.CompareF( KJpeg2000Mime ) == 0 ||
          mimeType.CompareF( KGifMime ) == 0 ||
          mimeType.CompareF( KPngMime ) == 0 ||
-         mimeType.CompareF( KSvgMime ) == 0 ||
+         mimeType.CompareF( KBmpMime ) == 0 ||
          mimeType.CompareF( KMpgMime1 ) == 0 ||
          mimeType.CompareF( KMpeg4Mime ) == 0 ||
          mimeType.CompareF( KMp4Mime ) == 0 ||
          mimeType.CompareF( KAviMime ) == 0 ||
+         mimeType.CompareF( KVideo3gppMime ) == 0 ||
+         mimeType.CompareF( KVideoWmvMime ) == 0 ||
+         mimeType.CompareF( KRealVideoMime ) == 0 ||
          mimeType.CompareF( KMp3Mime ) == 0 ||
-         mimeType.CompareF( KNonEmbeddArtMime ) == 0 ||
-         mimeType.CompareF( KM4aMime ) == 0  ||
          mimeType.CompareF( KAacMime ) == 0 ||
          mimeType.CompareF( KWmaMime ) == 0 ||
-         mimeType.CompareF( KBmpMime ) == 0 ||         
-         mimeType.CompareF( KAudio3gppMime ) == 0 ||
-         mimeType.CompareF( KVideo3gppMime ) == 0 ||
          mimeType.CompareF( KAudioAmrMime ) == 0 ||
-         mimeType.CompareF( KVideoWmvMime ) == 0 ||
          mimeType.CompareF( KRealAudioMime ) == 0 ||
-         mimeType.CompareF( KPmRealAudioPluginMime ) == 0 ||
+         mimeType.CompareF( KM4aMime ) == 0  ||
+         mimeType.CompareF( KFlashVideoMime ) == 0 ||
          mimeType.CompareF( KPmRealVideoPluginMime ) == 0 ||
          mimeType.CompareF( KPmRealVbVideoPluginMime ) == 0 ||
-         mimeType.CompareF( KRealVideoMime ) == 0 ||
-         mimeType.CompareF( KFlashVideoMime ) == 0 ||
-         mimeType.CompareF( KMatroskaVideoMime ) == 0 ||
-         mimeType.CompareF( KContactMime ) == 0 ||
-         mimeType.CompareF( KAlbumArtMime ) == 0 )
+         mimeType.CompareF( KPmRealAudioPluginMime ) == 0 )
         {
         return ETrue;
         }
@@ -1620,7 +1599,6 @@
             "CThumbnailServer::E32Main() -- thread function out, result=%d",
             result );
         delete cleanup;
-        cleanup = NULL;
         }
     if ( result != KErrNone )
         {
--- a/imagehandlingutilities/thumbnailmanager/thumbnailserver/src/thumbnailserversession.cpp	Wed Sep 15 12:32:44 2010 +0300
+++ b/imagehandlingutilities/thumbnailmanager/thumbnailserver/src/thumbnailserversession.cpp	Wed Oct 13 14:53:56 2010 +0300
@@ -480,12 +480,6 @@
         ModifyThumbnailSize(sourceType);
         }
     
-    // delete existing
-    if(params.iImport && params.iOverwrite)
-        {
-        Server()->DeleteThumbnailsL( params.iTargetUri);
-        }
-    
     // CreateThumbnails
     if (params.iControlFlags == EThumbnailGeneratePersistentSizesOnly)
         {
@@ -643,19 +637,6 @@
 	        TN_DEBUG2( 
 	            "CThumbnailServerSession::RequestThumbByPathAsyncL() - thumbnail not found, err = %d", err );
 	        
-	        // don't try to create from virtual URI
-	        if ( params.iVirtualUri )
-	            {
-                User::Leave(err);
-	            }
-	        
-            // disk space check only for stored sizes
-            if ( params.iThumbnailSize != ECustomThumbnailSize && 
-                 Server()->StoreForPathL(params.iFileName)->IsDiskFull() )
-                {
-                User::Leave( KErrDiskFull );
-                }
-	        
 	        if ( (err == KErrNotFound || err == KErrAccessDenied) && 
 	            !(params.iFlags& CThumbnailManager::EDoNotCreate) )
 	            {
@@ -663,6 +644,17 @@
 	            // and retry the request using file handle
 	            err = KThumbnailErrThumbnailNotFound;
 	            }
+	        else
+	            {
+                User::Leave(err);
+                }
+	        
+	        // disk space check only for stored sizes
+	        if ( params.iThumbnailSize != ECustomThumbnailSize && 
+	             Server()->StoreForPathL(params.iFileName)->IsDiskFull() )
+	            {
+	            User::Leave( KErrDiskFull );
+	            }
 
             User::Leave(err);
 	        }   
@@ -810,8 +802,7 @@
         
         TSize bitmapSize = bitmap->SizeInPixels();
         
-        // scale small thumbs first, because fullscreen encoding takes longer
-        for ( TInt i( count-1 ); i >= 0; i-- )
+        for ( TInt i( 0 ); i < count; i++ )
             {           
             if( bitmapSize.iWidth < bitmapSize.iHeight )
                {
@@ -820,8 +811,7 @@
                if ( size == EFullScreenThumbnailSize ||
                     size == EVideoFullScreenThumbnailSize ||
                     size == EAudioFullScreenThumbnailSize ||
-                    size == EImageFullScreenThumbnailSize ||
-                    size == EContactFullScreenThumbnailSize )
+                    size == EImageFullScreenThumbnailSize )
                    {
                    TInt height = (*missingSizes)[i].iSize.iHeight;
                    (*missingSizes)[i].iSize.iHeight = (*missingSizes)[i].iSize.iWidth;
@@ -835,8 +825,7 @@
                     *Server(), params.iTargetUri, bitmap, bitmapSize,
                     (*missingSizes)[i].iSize, (*missingSizes)[i].iCrop, params.iDisplayMode,
                     KMaxPriority, KNullDesC, (*missingSizes)[i].iType, params.iModified, EFalse, EFalse,
-                    reqId, params.iVirtualUri);
-            
+                    reqId);
             CleanupStack::PushL( scaleTask );
             scaleTask->SetDoStore( ETrue );
             Server()->Processor().AddTaskL( scaleTask );
@@ -884,12 +873,7 @@
         "CThumbnailServerSession::CreateGenerateTaskFromFileHandleL() -- create thumbnail generation task for %S", &params.iFileName );
     
     // disk space check only for stored sizes
-    if ( params.iImport && 
-         Server()->StoreForPathL(params.iTargetUri)->IsDiskFull() )
-        {
-        User::Leave( KErrDiskFull );
-        }
-    else if ( params.iThumbnailSize != ECustomThumbnailSize && 
+    if ( params.iThumbnailSize != ECustomThumbnailSize && 
          Server()->StoreForPathL(params.iFileName)->IsDiskFull() )
         {
         User::Leave( KErrDiskFull );
@@ -907,28 +891,19 @@
 		
 	    TBool gridSizeOnly(EFalse);
             
-	    if ( params.iQualityPreference == CThumbnailManager::EOptimizeForQualityWithPreview )
+	    if ( params.iQualityPreference == CThumbnailManager
+	                    ::EOptimizeForQualityWithPreview )
 	        {
 	        gridSizeOnly = ETrue;
 	        }
         
-	    // import vs. normal
-	    if(params.iImport)
-	        {
-            Server()->GetMissingSizesL( params.iTargetUri, sourceType, *missingSizes, gridSizeOnly);
-	        }
-	    else
-	        {
-            Server()->GetMissingSizesL( params.iFileName, sourceType, *missingSizes, gridSizeOnly);
-	        }     
+        Server()->GetMissingSizesL( params.iFileName, sourceType, *missingSizes, gridSizeOnly);
         
         if ( missingSizes->Count() == 0)
             {
             // all thumbs already exist
             CleanupStack::PopAndDestroy( missingSizes );
             delete missingSizes;
-            missingSizes = NULL;
-            
             if( aFile )
                {
                aFile->Close();
@@ -973,8 +948,7 @@
     CThumbnailGenerateTask* task = new( ELeave )CThumbnailGenerateTask( Server()
         ->Processor(), * Server(), aFile, NULL, &params.iMimeType, params.iFlags,
         params.iSize, params.iDisplayMode, priority, missingSizes, params.iTargetUri,
-        params.iThumbnailSize, params.iModified, params.iQualityPreference,
-        params.iVirtualUri);
+        params.iThumbnailSize, params.iModified, params.iQualityPreference );
 
     // do not store bitmaps to server pool when generating only
     if( params.iControlFlags & EThumbnailGeneratePersistentSizesOnly )
@@ -1060,8 +1034,6 @@
             // all thumbs already exist
             CleanupStack::PopAndDestroy( missingSizes );
             delete missingSizes;
-            missingSizes = NULL;
-            
             if ( aBuffer)
                {
                delete aBuffer;
@@ -1088,8 +1060,7 @@
     CThumbnailGenerateTask* task = new( ELeave )CThumbnailGenerateTask( Server()
         ->Processor(), * Server(), NULL, aBuffer, &params.iMimeType, params.iFlags,
         params.iSize, params.iDisplayMode, priority, missingSizes, params.iTargetUri,
-        params.iThumbnailSize, params.iModified, params.iQualityPreference,
-        params.iVirtualUri);
+        params.iThumbnailSize, params.iModified, params.iQualityPreference );
 
     // do not store bitmaps to server pool when generating only
     if( params.iControlFlags & EThumbnailGeneratePersistentSizesOnly )
@@ -1383,21 +1354,6 @@
                params.iThumbnailSize = EAudioListThumbnailSize;
                }       
            }
-    else if(aSourceType == TThumbnailPersistentSize::EContact)
-           {
-           if(params.iThumbnailSize == EFullScreenThumbnailSize)
-               {
-               params.iThumbnailSize = EContactFullScreenThumbnailSize;
-               }
-           else if(params.iThumbnailSize == EGridThumbnailSize)
-               {
-               params.iThumbnailSize = EContactGridThumbnailSize;
-               }
-           else if(params.iThumbnailSize == EListThumbnailSize)
-               {
-               params.iThumbnailSize = EContactListThumbnailSize;
-               }       
-           }
     }
 
 //------------------------------------------------------------------------
@@ -1411,42 +1367,34 @@
         
     // mime type
     if ( params.iMimeType.Des8() == KNullDesC8 && !Server()->SupportedMimeType(params.iMimeType) )
-        {
-        // try parsing from file extension
-        if (params.iImport)
-            {
-            res = Server()->MimeTypeFromFileExt( params.iTargetUri, params.iMimeType );
-            }
-        else
-            {
-            res = Server()->MimeTypeFromFileExt( params.iFileName, params.iMimeType );
-            }
-        
-        if ( res == KErrNotFound )
-            {
-            if( aFile )
-                {
-                // parsed type not in the list, resolve from file
-                params.iMimeType = Server()->ResolveMimeTypeL(*aFile);
-                }
-            else
-                {
-                Server()->Fs().ShareProtected();
-                RFile64 file;
-                CleanupClosePushL( file );
-              
-                User::LeaveIfError( file.Open( Server()->Fs(), params.iFileName, EFileShareReadersOrWriters )); 
-                TN_DEBUG2( "CThumbnailServerSession::ResolveMimeType - file handle opened for %S", &params.iFileName );
-              
-                params.iMimeType = Server()->ResolveMimeTypeL(file);
-              
-                file.Close();
-                TN_DEBUG1("CThumbnailServerSession::ResolveMimeType - file handle closed");
-              
-                CleanupStack::Pop( &file );    
-                }    
-            }        
-        }       
+       {
+       // try parsing from file extension
+       res = Server()->MimeTypeFromFileExt( params.iFileName, params.iMimeType );
+       if ( res == KErrNotFound )
+           {
+          if( aFile )
+             {
+             // parsed type not in the list, resolve from file
+             params.iMimeType = Server()->ResolveMimeTypeL(*aFile);
+             }
+          else
+             {
+             Server()->Fs().ShareProtected();
+             RFile64 file;
+             CleanupClosePushL( file );
+             
+             User::LeaveIfError( file.Open( Server()->Fs(), params.iFileName, EFileShareReadersOrWriters )); 
+             TN_DEBUG2( "CThumbnailServerSession::ResolveMimeType - file handle opened for %S", &params.iFileName );
+             
+             params.iMimeType = Server()->ResolveMimeTypeL(file);
+             
+             file.Close();
+             TN_DEBUG1("CThumbnailServerSession::ResolveMimeType - file handle closed");
+             
+             CleanupStack::Pop( &file );    
+             }    
+          }        
+       }      
     }
 
 
@@ -1587,5 +1535,4 @@
         }
     }
 
-
 // End of file
--- a/imagehandlingutilities/thumbnailmanager/thumbnailserver/src/thumbnailstore.cpp	Wed Sep 15 12:32:44 2010 +0300
+++ b/imagehandlingutilities/thumbnailmanager/thumbnailserver/src/thumbnailstore.cpp	Wed Oct 13 14:53:56 2010 +0300
@@ -47,6 +47,7 @@
 //Symbian^3 v4
 _LIT( KThumbnailDatabaseName, ":[102830AB]thumbnail_v4.db" );
 
+_LIT( KDrv, ":");
 
 // Allow access to database only for the server process
 const TSecurityPolicy KThumbnailDatabaseSecurityPolicy( TSecureId(
@@ -166,9 +167,9 @@
 // Two-phased constructor.
 // ---------------------------------------------------------------------------
 //
-CThumbnailStore* CThumbnailStore::NewL( RFs& aFs, TInt aDrive, TDesC& aImei, CThumbnailServer* aServer, const TBool aReadOnly )
+CThumbnailStore* CThumbnailStore::NewL( RFs& aFs, TInt aDrive, TDesC& aImei, CThumbnailServer* aServer )
     {
-    CThumbnailStore* self = new( ELeave )CThumbnailStore( aFs, aDrive, aImei, aServer, aReadOnly );
+    CThumbnailStore* self = new( ELeave )CThumbnailStore( aFs, aDrive, aImei, aServer );
     CleanupStack::PushL( self );
     self->ConstructL();
     CleanupStack::Pop( self );
@@ -222,9 +223,9 @@
 // C++ default constructor can NOT contain any code, that might leave.
 // ---------------------------------------------------------------------------
 //
-CThumbnailStore::CThumbnailStore( RFs& aFs, TInt aDrive, TDesC& aImei, CThumbnailServer* aServer, const TBool aReadOnly ): 
-    iFs( aFs ), iDrive( aDrive ), iDriveChar( 0 ), iBatchItemCount(0), iImei(aImei), iServer(aServer), iDiskFullNotifier(NULL), 
-    iDiskFull(EFalse), iActivityManager(NULL), iUnrecoverable(ETrue), iBatchFlushItemCount(KMInBatchItems), iReadOnly(aReadOnly)
+CThumbnailStore::CThumbnailStore( RFs& aFs, TInt aDrive, TDesC& aImei, CThumbnailServer* aServer ): 
+    iFs( aFs ), iDrive( aDrive ), iDriveChar( 0 ), iBatchItemCount(0), iImei(aImei), 
+    iServer(aServer), iDiskFull(EFalse), iUnrecoverable(ETrue), iBatchFlushItemCount(KMInBatchItems)
     {
     // no implementation required
     }
@@ -241,39 +242,31 @@
 #ifdef _DEBUG
     iThumbCounter = 0;
 #endif
-    if(!iReadOnly)
-        {
-        HBufC* databasePath = HBufC::NewLC( KMaxFileName );
-        TPtr pathPtr = databasePath->Des();
-        User::LeaveIfError( RFs::DriveToChar( iDrive, iDriveChar ));
-        pathPtr.Append( iDriveChar );
-        pathPtr.Append( KThumbnailDatabaseName );
-        
-        //start disk space monitor
-        iDiskFullNotifier = CThumbnailStoreDiskSpaceNotifierAO::NewL( *this, 
-                                                KDiskFullThreshold,
-                                                pathPtr );
-
-        CleanupStack::PopAndDestroy( databasePath );
     
-        TN_DEBUG2( "CThumbnailStore::ConstructL() drive: %d", iDrive );
+    HBufC* databasePath = HBufC::NewLC( KMaxFileName );
+    TPtr pathPtr = databasePath->Des();
+    User::LeaveIfError( RFs::DriveToChar( iDrive, iDriveChar ));
+    pathPtr.Append( iDriveChar );
+    pathPtr.Append( KThumbnailDatabaseName );
     
-        OpenDatabaseL();
+	//start disk space monitor
+    iDiskFullNotifier = CThumbnailStoreDiskSpaceNotifierAO::NewL( *this, 
+                                            KDiskFullThreshold,
+                                            pathPtr );
+
+    CleanupStack::PopAndDestroy( databasePath );
     
-        // to monitor device activity
-        iActivityManager = CTMActivityManager::NewL( this, KStoreMaintenanceIdle);
-        iActivityManager->Start();
+    TN_DEBUG2( "CThumbnailStore::ConstructL() drive: %d", iDrive );
     
-        iDeleteThumbs = ETrue;
-        iCheckFilesExist = ETrue;
-        }
-    else
-        {
-	    TN_DEBUG1( "CThumbnailStore::ConstructL() - read only, dymmy mode..." );
-        iDeleteThumbs = EFalse;
-        iCheckFilesExist = EFalse;
-        iLastCheckedRowID = -1;
-        }
+    OpenDatabaseL();
+    
+    // to monitor device activity
+    iActivityManager = CTMActivityManager::NewL( this, KStoreMaintenanceIdle);
+    iActivityManager->Start();
+    
+    iDeleteThumbs = ETrue;
+    iCheckFilesExist = ETrue;
+    iLastCheckedRowID = -1;
     }
 
 // ---------------------------------------------------------------------------
@@ -332,7 +325,16 @@
             checkError = CheckVersion();
             if(checkError == KErrNone)
                 {
+#ifdef _DEBUG
+    TN_DEBUG1( "CThumbnailStore::OpenDatabaseL() start CheckRowIDs");
+    TTime aStart, aStop;
+    aStart.UniversalTime();
+#endif
                 checkError = CheckRowIDs();
+#ifdef _DEBUG
+    aStop.UniversalTime();
+    TN_DEBUG2( "CThumbnailStore::OpenDatabaseL() CheckRowIDs took %d ms", (TInt)aStop.MicroSecondsFrom(aStart).Int64()/1000);
+#endif
                 }
             }
 
@@ -1075,12 +1077,6 @@
 	const TThumbnailSize& aThumbnailSize, const TInt64 aModified, const TBool aThumbFromPath )
     {
     TN_DEBUG1( "CThumbnailStore::StoreThumbnailL( private ) in" );
-    
-    if(iReadOnly)
-        {
-        TN_DEBUG1( "CThumbnailStore::StoreThumbnailL() read only, skip..." );
-        return;
-        }
 
 #ifdef _DEBUG
     TTime aStart, aStop;
@@ -1232,12 +1228,6 @@
     {
     TSize thumbSize = aThumbnail->SizeInPixels();
     TN_DEBUG4( "CThumbnailStore::StoreThumbnailL( public ) aThumbnailSize = %d, aThumbnailSize(%d,%d) IN", aThumbnailSize, thumbSize.iWidth, thumbSize.iHeight );
-    
-    if(iReadOnly)
-        {
-        TN_DEBUG1( "CThumbnailStore::StoreThumbnailL() read only, skip..." );
-        return;
-        }
 
     __ASSERT_DEBUG(( aThumbnail ), ThumbnailPanic( EThumbnailNullPointer ));
     
@@ -1276,10 +1266,8 @@
                 flags |= KThumbnailDbFlagBlacklisted;
                 }
             
-            if( (aThumbnailSize == EImageFullScreenThumbnailSize || 
-                 aThumbnailSize == EVideoFullScreenThumbnailSize ||
-                 aThumbnailSize == EAudioFullScreenThumbnailSize ||
-                 aThumbnailSize == EContactFullScreenThumbnailSize) && !aBlackListed )
+            if( (aThumbnailSize == EImageFullScreenThumbnailSize || aThumbnailSize == EVideoFullScreenThumbnailSize ||
+                 aThumbnailSize == EAudioFullScreenThumbnailSize) && !aBlackListed )
                 {
                 TN_DEBUG1( "CThumbnailStore::StoreThumbnailL( public ) - encode jpg" );
             
@@ -1287,20 +1275,17 @@
                 CleanupStack::PushL( data );
                 
                 CImageEncoder* encoder = NULL;
-				
-				CImageEncoder::TOptions options = ( CImageEncoder::TOptions )( CImageEncoder::EOptionAlwaysThread );
-				
-                TRAPD( decErr, encoder = CExtJpegEncoder::DataNewL( CExtJpegEncoder::EHwImplementation, data, options ) );
+                TRAPD( decErr, encoder = CExtJpegEncoder::DataNewL( CExtJpegEncoder::EHwImplementation, data, CImageEncoder::EOptionAlwaysThread ) );
                 if ( decErr != KErrNone )
                     {
                     TN_DEBUG2( "CThumbnailStore::StoreThumbnailL( public ) - HW CExtJpegEncoder failed %d", decErr);
                 
-                    TRAPD( decErr, encoder = CExtJpegEncoder::DataNewL( CExtJpegEncoder::ESwImplementation, data, options ) );
+                    TRAPD( decErr, encoder = CExtJpegEncoder::DataNewL( CExtJpegEncoder::ESwImplementation, data, CImageEncoder::EOptionAlwaysThread ) );
                     if ( decErr != KErrNone )
                         {
                         TN_DEBUG2( "CThumbnailStore::StoreThumbnailL( public ) - SW CExtJpegEncoder failed %d", decErr);
                     
-                        TRAPD( decErr, encoder = CImageEncoder::DataNewL( data,  KJpegMime(), options ) );
+                        TRAPD( decErr, encoder = CImageEncoder::DataNewL( data,  KJpegMime(), CImageEncoder::EOptionAlwaysThread ) );
                         if ( decErr != KErrNone )
                             {
                             TN_DEBUG2( "CThumbnailStore::StoreThumbnailL( public ) - CImageEncoder failed %d", decErr);
@@ -1333,7 +1318,7 @@
                 
                 // Set some format specific data
                 imageData->iSampleScheme = TJpegImageData::EColor444;
-                imageData->iQualityFactor = 80;
+                imageData->iQualityFactor = 75;
                 
                 // imageData - ownership passed to frameImageData after AppendImageData
                 User::LeaveIfError(frameImageData->AppendImageData(imageData));
@@ -1382,7 +1367,7 @@
             
                 StoreThumbnailL( *path, buf->Ptr( 0 ), aThumbnail->SizeInPixels(),
                                  aOriginalSize, EThumbnailFormatFbsBitmap, flags, 
-                                 aThumbnailSize, aModified, aThumbFromPath);
+                                 aThumbnailSize, aModified);
   
                 CleanupStack::PopAndDestroy( buf );
                 }
@@ -1403,12 +1388,6 @@
 TBool CThumbnailStore::FindDuplicateL( const TDesC& aPath, const TThumbnailSize& aThumbnailSize )
     {
     TN_DEBUG1( "CThumbnailStore::FindDuplicateL()" );
-	
-	if(iReadOnly)
-		{
-		TN_DEBUG1( "CThumbnailStore::FindDuplicateL() read only, skip..." );
-		return EFalse;
-		}
     
     User::LeaveIfError( CheckDbState() );
     
@@ -1505,12 +1484,6 @@
     {
     TN_DEBUG2( "CThumbnailStore::GetMissingSizesL() aSourceType == %d", aSourceType );
     
-    if(iReadOnly)
-        {
-        TN_DEBUG1( "CThumbnailStore::GetMissingSizesL() read only, skip..." );
-		return;
-        }
-    
     User::LeaveIfError( CheckDbState() );
     
     HBufC* path = aPath.AllocLC();
@@ -1620,12 +1593,6 @@
     {
     TN_DEBUG3( "CThumbnailStore::FetchThumbnailL(%S) aThumbnailSize==%d", &aPath, aThumbnailSize );
     
-    if(iReadOnly)
-        {
-        TN_DEBUG1( "CThumbnailStore::FetchThumbnailL() read only, skip..." );
-        User::Leave( KErrNotFound );
-        }
-    
     User::LeaveIfError( CheckDbState() );
     
     HBufC* path = aPath.AllocLC();
@@ -1750,12 +1717,6 @@
     {
     TN_DEBUG2( "CThumbnailStore::DeleteThumbnailsL(%S)", &aPath );
 
-    if(iReadOnly)
-        {
-        TN_DEBUG1( "CThumbnailStore::DeleteThumbnailsL() read only, skip..." );
-        return;
-        }
-    
 #ifdef _DEBUG
     TTime aStart, aStop;
     aStart.UniversalTime();
@@ -1955,12 +1916,6 @@
     {
     TN_DEBUG2( "CThumbnailStore::RenameThumbnailsL(%S)", &aCurrentPath );
     
-    if(iReadOnly)
-        {
-        TN_DEBUG1( "CThumbnailStore::RenameThumbnailsL() read only, skip..." );
-        return;
-        }
-    
 #ifdef _DEBUG
     TTime aStart, aStop;
     aStart.UniversalTime();
@@ -2050,12 +2005,6 @@
     
     StopAutoFlush();
     
-    if(iReadOnly)
-        {
-        TN_DEBUG1( "CThumbnailStore::FlushCacheTable() read only, skip..." );
-        return;
-        }
-    
     if(iBatchItemCount <= 0 || CheckDbState() != KErrNone)
         {
         // cache empty or db unusable
@@ -2197,12 +2146,6 @@
     {
     TN_DEBUG1( "CThumbnailStore::StartAutoFlush()" );
     
-    if(iReadOnly)
-        {
-        TN_DEBUG1( "CThumbnailStore::StartAutoFlush() read only, skip..." );
-        return;
-        }
-    
     TInt err = KErrNone;
     
     if( iAutoFlushTimer )
@@ -2384,13 +2327,6 @@
     {
     TN_DEBUG2( "CThumbnailStore::CheckModifiedByPathL() %S", &aPath);
     
-    if(iReadOnly)
-    	{
-    	TN_DEBUG1( "CThumbnailStore::CheckModifiedByPathL() read only, skip..." );
-		modifiedChanged = EFalse;
-    	return ETrue;
-    	}
-	
     User::LeaveIfError( CheckDbState() );
     
     HBufC* path = aPath.AllocLC();
@@ -2470,16 +2406,6 @@
     return ret;
 }
 	
-
-// -----------------------------------------------------------------------------
-// IsReadOnly()
-// -----------------------------------------------------------------------------
-//
-TBool CThumbnailStore::IsReadOnly()
-    {
-    return iReadOnly;
-    }
-
 // -----------------------------------------------------------------------------
 // PrepareBlacklistedItemsForRetryL()
 // -----------------------------------------------------------------------------
@@ -2510,12 +2436,6 @@
 TInt CThumbnailStore::DeleteMarkedL()
     {
     TN_DEBUG1( "CThumbnailStore::DeleteMarkedL()" );
-    
-    if(iReadOnly)
-        {
-        TN_DEBUG1( "CThumbnailStore::DeleteMarkedL() read only, skip..." );
-        return KErrAccessDenied;
-        }
    
 #ifdef _DEBUG
     TTime aStart, aStop;
@@ -2607,12 +2527,6 @@
 TInt CThumbnailStore::FileExistenceCheckL()
     {
     TN_DEBUG1( "CThumbnailStore::FileExistenceCheckL()" );
-	
-    if(iReadOnly)
-		{
-		TN_DEBUG1( "CThumbnailStore::FileExistenceCheckL() read only, skip..." );
-		return ETrue;
-		}
     
 #ifdef _DEBUG
     TTime aStart, aStop;
@@ -2711,21 +2625,11 @@
 void CThumbnailStore::StripDriveLetterL( TDes& aPath )
     {
     TInt pos = aPath.Find(KDrv);
-    TInt pos2 = aPath.Find(KBackSlash);
     
     // if URI contains drive letter
     if ( pos == 1 )
         {
-        // normal URI
-        if ( pos2 == 2 )
-            {
-            aPath.Delete(0,pos+1);
-            }
-        // virtual URI
-        else
-            {
-            aPath.Replace(0,2,KBackSlash);
-            }
+        aPath.Delete(0,pos+1);
         }
     }
 
@@ -2735,7 +2639,7 @@
 //
 TInt CThumbnailStore::CheckDbState()
     {
-    if (iUnrecoverable && !iReadOnly)
+    if (iUnrecoverable)
         {
         TN_DEBUG1( "CThumbnailStore::CheckDbState() - database in unrecoverable state" );
         __ASSERT_DEBUG( !iUnrecoverable, ThumbnailPanic( EThumbnailDatabaseUnrecoverable ));
@@ -2765,11 +2669,6 @@
 
 TBool CThumbnailStore::IsDiskFull()
     {
-    if(iReadOnly)
-        {
-        TN_DEBUG1( "CThumbnailStore::IsDiskFull() read only, skip..." );
-        return EFalse;
-        }
     return iDiskFull;
     }
 
@@ -2781,12 +2680,6 @@
     {
     TN_DEBUG2( "CThumbnailStore::ActivityChanged() aActive == %d", aActive);
     
-    if( iReadOnly )
-        {
-        TN_DEBUG1( "CThumbnailStore::ActivityChanged() read only, skip..." );
-        return;
-        }
-    
     if( aActive )
         {
         iIdle = EFalse;
--- a/imagehandlingutilities/thumbnailmanager/thumbnailserver/src/thumbnailtask.cpp	Wed Sep 15 12:32:44 2010 +0300
+++ b/imagehandlingutilities/thumbnailmanager/thumbnailserver/src/thumbnailtask.cpp	Wed Oct 13 14:53:56 2010 +0300
@@ -49,6 +49,7 @@
 //
 CThumbnailTask::~CThumbnailTask()
     {
+    TN_DEBUG1( "CThumbnailTask::~CThumbnailTask()" );
     Cancel();
     CancelMessage();
     
@@ -231,6 +232,7 @@
 //
 void CThumbnailTask::CancelMessage()
     {
+    TN_DEBUG1( "CThumbnailTask::CancelMessage()");
     if ( ClientThreadAlive() )
         {
         iMessage.Complete( KErrCancel );
--- a/imagehandlingutilities/thumbnailmanager/thumbnailserver/src/tmgetimei.cpp	Wed Sep 15 12:32:44 2010 +0300
+++ b/imagehandlingutilities/thumbnailmanager/thumbnailserver/src/tmgetimei.cpp	Wed Oct 13 14:53:56 2010 +0300
@@ -45,7 +45,6 @@
     Cancel();
 
     delete iTelephony;
-    iTelephony = NULL;
     }
 
 TBuf<KImeiBufferSize> CTMGetImei::GetIMEI()
--- a/imagehandlingutilities/thumbnailmanager/tmiadrestart/src/tmiadrestart.cpp	Wed Sep 15 12:32:44 2010 +0300
+++ b/imagehandlingutilities/thumbnailmanager/tmiadrestart/src/tmiadrestart.cpp	Wed Oct 13 14:53:56 2010 +0300
@@ -150,7 +150,6 @@
     TRAP(err, MainL());
 
     delete cleanup;
-    cleanup = NULL;
     __UHEAP_MARKEND;
     return err;
     }