imagehandlingutilities/thumbnailmanager/thumbnailmanagerqt/src/thumbnailmanager_p_qt.cpp
changeset 15 7197e789b953
parent 14 2edacbf5d3f9
child 17 ffa62e555b02
--- a/imagehandlingutilities/thumbnailmanager/thumbnailmanagerqt/src/thumbnailmanager_p_qt.cpp	Fri Mar 19 09:35:30 2010 +0200
+++ b/imagehandlingutilities/thumbnailmanager/thumbnailmanagerqt/src/thumbnailmanager_p_qt.cpp	Fri Apr 16 15:16:16 2010 +0300
@@ -162,6 +162,42 @@
     return result;
 }
 
+int ThumbnailManagerPrivate::setThumbnail( const QImage& source, const QString& fileName, 
+        void * clientData, int priority )
+{
+    int result( -1 );
+    RBuf file;
+    _LIT( mime, "image/png" );
+
+    if( !byteArray ){
+        byteArray = new QByteArray();
+    }
+    QBuffer buffer( byteArray );
+    buffer.open( QBuffer::ReadWrite );
+    QDataStream dataStream( &buffer );
+
+    dataStream << source;
+
+    int offset = ( dataStream.version() >= 5 ? 4 : 0 );
+    
+    TRAP_IGNORE( 
+        CleanupClosePushL( file );
+        file.CreateL( fileName.length() );
+        file.Copy( fileName.utf16(), fileName.length() );
+
+        HBufC* mimetype = HBufC::NewLC( 9 );
+        mimetype->Des() = mime();
+
+        TPtrC8* ptr = new TPtrC8( reinterpret_cast<const TUint8*>( byteArray->data() + offset ), byteArray->count() - offset );
+                
+        CThumbnailObjectSource* objSrc = CThumbnailObjectSource::NewLC( ptr, *mimetype, file );
+        result = iThumbnailManager->SetThumbnailL( *objSrc, clientData, priority );
+        CleanupStack::PopAndDestroy( 3, &file );
+    );
+    
+    return result;
+}
+
 void ThumbnailManagerPrivate::deleteThumbnails( const QString& fileName )
 {
     QString symbFileName( fileName );