commonuis/CommonUi/src/DocDefaultHandler.cpp
branchRCL_3
changeset 21 978afdc0236f
parent 20 d48ab3b357f1
--- a/commonuis/CommonUi/src/DocDefaultHandler.cpp	Wed Sep 01 12:16:19 2010 +0100
+++ b/commonuis/CommonUi/src/DocDefaultHandler.cpp	Tue Sep 14 21:48:24 2010 +0300
@@ -361,7 +361,7 @@
                     done = ETrue;
                     error = KErrNone;
                     break;
-                case EDocFileRenameNew:  
+                case EDocFileRenameNew:
                     CheckFileNameExtensionL( iDestFile, iDataType );
                     break;
                 default:
@@ -558,6 +558,15 @@
 	return SetAndReturnStatus( KErrNone );
 	}
 
+void CDocDefaultHandler::ResetSrcFile()
+	{
+	if( iFileHandleSet )
+		{
+	    iFile.Close();
+	    iFileHandleSet = EFalse;
+		}
+	}
+
 // ---------------------------------------------------------
 // CDocDefaultHandler::SetDestName()
 // Check the name and set iDestFile.
@@ -1660,54 +1669,56 @@
     // If we have iSourceFile available, we check first that is file DCF file. 
     // If it is, then we will use dcf file extensions, which override all other extensions.
     if (iSourceFile.Length() > 0)
-        {
+    	{
         TInt ret = EFalse;
         TBuf<6> ext;
 
-		CContent* content = NULL;
-		if( iFileHandleSet )
-			{
-		    content = CContent::NewL( iFile );
-		    iFile.Close();
-		    iFileHandleSet = EFalse;
-			}
-		else
-			{
-		    content = CContent::NewL( iSourceFile );
-			}
-		
-		CleanupStack::PushL(content);
-		content->GetAttribute( ContentAccess::EIsProtected, ret  );
-		if ( ret )
-			{
-			content->GetAttribute( EFileType, ret );
+        CContent* content = NULL;
+        TInt err = KErrNone;
+        if( iFileHandleSet )
+           {
+           TRAP(err, content = CContent::NewL( iFile ));
+           }
+       else
+           {
+           TRAP(err, content = CContent::NewL( iSourceFile ));
+           }
+        
+        if( err == KErrNone)
+            {
+            content->GetAttribute( ContentAccess::EIsProtected, ret  );
+            if ( ret )
+                {
+                content->GetAttribute( EFileType, ret );
             
-			#ifdef _DEBUG             
-			RDebug::Print( _L("DocumentHandler: CDocDefaultHandler::CheckFileNameExtensionL: GetAttribute called, ret =%d"), ret);
-			#endif 
+                #ifdef _DEBUG             
+                RDebug::Print( _L("DocumentHandler: CDocDefaultHandler::CheckFileNameExtensionL: GetAttribute called, ret =%d"), ret);
+                #endif 
     
-			if ( ret == EOma1Dcf )
-				{
-				// change extension to .dcf
-				ext.Copy( KOma1DcfExtension );         
-				ReplaceExtension( aFileName, ext );            
-				CleanupStack::PopAndDestroy();  // content
-				return;            
-				}
-			else if ( ret == EOma2Dcf )
-	            {
-		        // change extension to .odf if not already .o4a, .o4v or .odf
-			    ext.Copy( KOma2DcfExtension );
-				if ( NeedsToReplaceDcf2Extension( aFileName ) )
-					{
-				    ReplaceExtension( aFileName, ext );
-	                }
-		        CleanupStack::PopAndDestroy();  // content
-			    return;            
-				}
-			}
-		CleanupStack::PopAndDestroy();  // content
-		}
+                if ( ret == EOma1Dcf )
+                    {
+                    // change extension to .dcf
+                    ext.Copy( KOma1DcfExtension );         
+                    ReplaceExtension( aFileName, ext );  
+                    delete content;
+                    return;            
+                    }
+                else if ( ret == EOma2Dcf )
+                    {
+                    // change extension to .odf if not already .o4a, .o4v or .odf
+                    ext.Copy( KOma2DcfExtension );
+                    if ( NeedsToReplaceDcf2Extension( aFileName ) )
+                        {
+                        ReplaceExtension( aFileName, ext );
+                        }
+                    delete content;
+                    return;            
+                    }
+                }
+            delete content;
+            content = NULL;
+            }
+        }
 
     //if mime type=oma 2 dcf check extension separately
     if ( aDataType.Des8().FindF( KOma2DcfContentType ) != KErrNotFound )