usbuis/imageprintuiprovider/src/caiwimageprintIf.cpp
changeset 0 1e05558e2206
child 3 47c263f7e521
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/usbuis/imageprintuiprovider/src/caiwimageprintIf.cpp	Thu Dec 17 09:14:30 2009 +0200
@@ -0,0 +1,197 @@
+/*
+* Copyright (c) 2006, 2007 Nokia Corporation and/or its subsidiary(-ies).
+* All rights reserved.
+* This component and the accompanying materials are made available
+* under the terms of "Eclipse Public License v1.0"
+* which accompanies this distribution, and is available
+* at the URL "http://www.eclipse.org/legal/epl-v10.html".
+*
+* Initial Contributors:
+* Nokia Corporation - initial contribution.
+*
+* Contributors:
+*
+* Description:  Check if file is OK for printing
+*
+*/
+
+
+
+//External includes
+#include <badesca.h>
+#include <bautils.h>
+#include <e32std.h>
+#include <f32file.h>
+#include <drmcommon.h>
+#include <ImageConversion.h>
+#include <PathInfo.h> 
+
+//Internal includes
+#include "caiwimageprintif.h"
+#include "imageprintuidebug.h"
+
+
+_LIT8( KJpegFileType, "image/jpeg" );
+_LIT( KJpegFileType16, "image/jpeg" );
+
+
+// ---------------------------------------------------------------------------
+// 
+// ---------------------------------------------------------------------------
+//
+CAiwImagePrintIf::~CAiwImagePrintIf()
+    {
+    iEikEnv.FsSession().Delete(*iPrintFileName);
+    iEikEnv.FsSession().Delete(*iUnsuppFileName);
+    iEikEnv.DeleteResourceFile( iResourceOffset );
+    delete iDRM;
+    delete iPrintFileName;
+    delete iUnsuppFileName;
+    }
+
+// ---------------------------------------------------------------------------
+// 
+// ---------------------------------------------------------------------------
+//
+CAiwImagePrintIf::CAiwImagePrintIf():iEikEnv( *CEikonEnv::Static() )
+    {
+    }
+
+// ---------------------------------------------------------------------------
+// 
+// ---------------------------------------------------------------------------
+//
+void CAiwImagePrintIf::ConstructL()
+    {
+    
+    TFileName file( KResource );
+    file = PathInfo::RomRootPath();
+    TBuf<KResource> length2(KResourceFile);    
+    file.SetLength(KDriver + length2.Length());
+    file.Replace(KDriver, length2.Length(), KResourceFile);
+    
+    BaflUtils::NearestLanguageFile( iEikEnv.FsSession(), file );
+    iResourceOffset = iEikEnv.AddResourceFileL( file );
+    iDRM = DRMCommon::NewL();
+    User::LeaveIfError( iDRM->Connect() );
+    iNumberOfUnSuppFiles = 0;
+    
+    
+    TFileName printNameFile( KResource ); 
+    printNameFile = PathInfo::PhoneMemoryRootPath(); 
+    TBuf<KResource> length3(KParamFile);
+    printNameFile.SetLength(KDriver + length3.Length());
+    printNameFile.Replace(KDriver, length3.Length(), KParamFile); 
+    
+    iPrintFileName = HBufC::NewL(printNameFile.Length() );
+    iPrintFileName->Des().Copy(printNameFile);
+    
+    TFileName unSuppFile( KResource ); 
+    unSuppFile = PathInfo::PhoneMemoryRootPath(); 
+    TBuf<KResource> lengthUn(KUnSuppFile);
+    unSuppFile.SetLength(KDriver + lengthUn.Length());
+    unSuppFile.Replace(KDriver, lengthUn.Length(), KUnSuppFile);
+    
+    iUnsuppFileName = HBufC::NewL(unSuppFile.Length() );
+    iUnsuppFileName->Des().Copy(unSuppFile);
+    
+    }
+
+// ---------------------------------------------------------------------------
+// 
+// ---------------------------------------------------------------------------
+//
+TBool CAiwImagePrintIf::IsPrintingSupported( const CAiwGenericParamList& aInParamList )
+    {  
+    TInt index(0);
+    FLOG(_L("[CAiwImagePrintIf]  IsPrintingSupported "));
+    const TAiwGenericParam* param = aInParamList.FindFirst( index, EGenericParamMIMEType );
+	TBool printable( EFalse );
+	
+    if ( index == KErrNotFound )	
+        {    
+        index = 0;
+   	    const TAiwGenericParam* param = aInParamList.FindFirst(index, EGenericParamFile, EVariantTypeDesC);
+
+        //Check if there is any printable images available. At least image must be
+        //JPEG and it also must be unprotected to be printable.
+        while ( index != KErrNotFound && !printable)
+            {
+            FLOG(_L("[CAiwImagePrintIf]  IsPrintingSupported 3"));
+            TRAP_IGNORE( printable = IsPrintingSupportedL( param->Value().AsDes() ));
+   	        param = aInParamList.FindNext(index, EGenericParamFile, EVariantTypeDesC);        
+            }
+        FTRACE(FPrint(_L("[CAiwImagePrintIf] IsPrintingSupported  printable is  %d"), printable ));     
+        return printable;    
+        }
+	
+	while ( index != KErrNotFound && !printable )
+		{
+	   	if ( param->Value().TypeId() == EVariantTypeDesC &&
+			 param->Value().AsDes() == KJpegFileType16 )
+	    	{
+	    	// MIME-type parameter follows filename parameter in parameter list.
+	    	// Because of that previous item in list is used.
+	    	if (index > 0)
+	    	    {   
+	    	    FLOG(_L("[CAiwImagePrintIf]  IsPrintingSupported 5")); 	    
+    	      	printable = !IsProtected( aInParamList[index-1].Value().AsDes() );
+	    	    }
+	    	}
+
+	    if ( !printable )
+	        {        
+    	   	param = aInParamList.FindNext(index, EGenericParamMIMEType);
+	        }
+       	}    
+	FTRACE(FPrint(_L("[CAiwImagePrintIf] IsPrintingSupported 2 printable is  %d"), printable ));     
+    return printable;	 
+    }
+    
+// ---------------------------------------------------------------------------
+// 
+// ---------------------------------------------------------------------------
+//
+TBool CAiwImagePrintIf::IsPrintingSupportedL( const TDesC& aFileName )
+    {       
+    //1. check: Mimetype should be correct (JPEG)
+    FLOG(_L("[CAiwImagePrintIf]  IsPrintingSupported TBool 1"));
+    TBool printable = CheckMIMETypeL( KJpegFileType, aFileName ); 
+       
+    if (printable)
+        {
+        //2. check: file should not be protected
+        printable = !IsProtected( aFileName ); 
+        }     
+    FTRACE(FPrint(_L("[CAiwImagePrintIf] IsPrintingSupportedL  TBool printable is  %d"), printable ));    
+    return printable;                                      
+    }
+
+// ---------------------------------------------------------------------------
+// 
+// ---------------------------------------------------------------------------
+//
+TBool CAiwImagePrintIf::IsProtected( const TDesC& aFileName )
+    {
+    TBool fileProtect;
+    TInt err = iDRM->IsProtectedFile( aFileName, fileProtect );
+    FTRACE(FPrint(_L("[CAiwImagePrintIf] IsProtected   retVal is  %d"), err ? ETrue : fileProtect )); 
+    return err ? ETrue : fileProtect;  
+    }
+    
+// ---------------------------------------------------------------------------
+// 
+// ---------------------------------------------------------------------------
+//    
+TBool CAiwImagePrintIf::CheckMIMETypeL( const TDesC8& aMimeType,
+											   const TDesC& aFileName )
+    {
+    TBuf8<128> mimeType(0);
+    CImageDecoder::GetMimeTypeFileL(iEikEnv.FsSession(), aFileName, mimeType);
+
+    // Check that MIME-type matches (compare returns 0), otherwise return EFalse
+    FTRACE(FPrint(_L("[CAiwImagePrintIf] CheckMIMETypeL   retVal is  %d"), mimeType.CompareF( aMimeType ) ? EFalse : ETrue )); 
+    return mimeType.CompareF( aMimeType ) ? EFalse : ETrue;
+    }
+
+// End of file