diff -r 26673e532f65 -r 159fc2f68139 ImagePrint/ImagePrintEngine/DeviceProtocols/dpof/src/cdpofprintingdevice.cpp --- a/ImagePrint/ImagePrintEngine/DeviceProtocols/dpof/src/cdpofprintingdevice.cpp Tue May 25 12:42:41 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,969 +0,0 @@ -/* -* Copyright (c) 2004-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: Contains the CDPOFPrintingDevice class definition. -* -*/ - - -#include -#include -#include -#include - -#include "cdpofprintingdevice.h" -#include "cconfirmationquery.h" -#include "cprintercapabilities.h" -#include "cprinterelement.h" -#include "imgprintkonst.h" -#include "tsetting.h" -#include "rsutils.h" -#include "printcapabilitycodes.h" -#include "printmessagecodes.h" -#include "imageprint.h" -#include "clog.h" -#include "cprintjob.h" - -// CONSTANTS -namespace - { - /// DPOF Version Major. - const TInt KDPOFVersionMajor = 0; - /// DPOF Version Minor. - const TInt KDPOFVersionMinor = 0; - /// DPOF Version Build. - const TInt KDPOFVersionBuild = 1; - - _LIT( KResourceFileName, "imageprintdata\\protocols\\dpof.rsc" ); - - const TInt KMmcPrinterId = 1; - _LIT( KMmcPrinterName, "Memory Card" ); - } - - -MProtPrintingDevice* CDPOFPrintingDevice::NewL() - { - return new (ELeave) CDPOFPrintingDevice(); - } - - -CDPOFPrintingDevice::CDPOFPrintingDevice() : CActive( CActive::EPriorityStandard ), - iPrintError( KErrNone ), - iPrintErrorMsgCode( 0 ) - { - CActiveScheduler::Add(this); - } - -void CDPOFPrintingDevice::ConstructL(const TDesC& /*aDLLPath*/) - { - LOG("CDPOFPrintingDevice::ConstructL begin"); - - iCancelledByUser = EFalse; - - iPrintJob = new (ELeave) CPrintJob(); - - iMappingArray.AppendL(TMapping(1,EPrintCapabLayout1UpMedium)); - iMappingArray.AppendL(TMapping(2,EPrintCapabLayout2Up)); - iMappingArray.AppendL(TMapping(4,EPrintCapabLayout4Up)); - iMappingArray.AppendL(TMapping(6,EPrintCapabLayout6Up)); - iMappingArray.AppendL(TMapping(9,EPrintCapabLayout9Up)); - iMappingArray.AppendL(TMapping(12,EPrintCapabLayout12Up)); - iMappingArray.AppendL(TMapping(16,EPrintCapabLayout16Up)); - - RFs fs; - User::LeaveIfError( fs.Connect() ); - CleanupClosePushL( fs ); - // Loading nearest Loc File. - - TFileName resourceFileName; - resourceFileName.Append( KDC_RESOURCE_FILES_DIR ); - resourceFileName.Append( KResourceFileName ); - BaflUtils::NearestLanguageFile( fs, resourceFileName ); - RResourceFile resourceFile; - resourceFile.OpenL( fs, resourceFileName ); - - CleanupClosePushL( resourceFile ); - iCapabilities = LoadCapabilityL( resourceFile, DPOF_CAPABILITIES ); - CleanupStack::PopAndDestroy( 2 ); // resourceFile, fs - - iDPOF = CRsDpofEngine::NewL( *this ); - - SetMMCPrinterL(); - - LOG("CDPOFPrintingDevice::ConstructL end"); - } - -void CDPOFPrintingDevice::SetMMCPrinterL() - { - LOG("CDPOFPrintingDevice::SetMMCPrinterL begin"); - - // New implementation - LOG("CDPOFPrintingDevice::SetMMCPrinterL calling iDPOF->SetMMCPathL ..."); - iDPOF->SetMMCPathL(); - - if( iDPOF->HasMmc() ) - { - CPrinterElement* printElem = CPrinterElement::NewLC(); - printElem->iPrinter.iDisplayName = KMmcPrinterName; - printElem->iPrinter.iPrinterID = KMmcPrinterId; - printElem->iPrinter.iProperties = TPrinter::SupportsPreview; - printElem->iPrinter.iProtocol = KImagePrint_PrinterProtocol_DPOF; - printElem->iTransport = DPOFTrans; - printElem->iPrinterClass = EDefault; - printElem->iPrinterCapabilities = CPrinterCapabilities::NewL( iCapabilities, printElem->iPrinterClass ); - User::LeaveIfError( iDeviceList.Append( printElem ) ); - CleanupStack::Pop( printElem ); - printElem = NULL; - } - - LOG("CDPOFPrintingDevice::SetMMCPrinterL end"); - } - - -CDPOFPrintingDevice::~CDPOFPrintingDevice() - { - LOG("CDPOFPrintingDevice::~CDPOFPrintingDevice begin"); - Cancel(); - delete iDPOF; - delete iCapabilities; - iDeviceList.ResetAndDestroy(); - iDeviceList.Close(); - iMappingArray.Close(); - delete iPrintJob; - iReadyRequests.Close(); - REComSession::DestroyedImplementation( iDtor_ID_Key ); - - if (iConfirmationQuery) - { - delete iConfirmationQuery; - iConfirmationQuery = NULL; - } - - if (iPQ) - { - delete iPQ; - iPQ = NULL; - } - - if (iQuestion) - { - delete iQuestion; - iQuestion = NULL; - } - - LOG("CDPOFPrintingDevice::~CDPOFPrintingDevice end"); - } - - -TVersion CDPOFPrintingDevice::Version() - { - return TVersion(KDPOFVersionMajor, KDPOFVersionMinor, KDPOFVersionBuild); - } - -TUint CDPOFPrintingDevice::SupportedProtocols() - { - return KImagePrint_PrinterProtocol_DPOF; - } - - -void CDPOFPrintingDevice::StartDiscoveryL(MProtDiscoveryObserver& aObserver, TUint aProtocol) - { - LOG1("CDPOFPrintingDevice::StartDiscoveryL aProtocol: %d", aProtocol); - iDiscoveryObserver = &aObserver; - Cancel(); - if( aProtocol & KImagePrint_PrinterProtocol_DPOF ) - { - LOG("CDPOFPrintingDevice::StartDiscoveryL protocol match, starting discovery..."); - iDPOF->StartDiscovery( iStatus ); - if( !IsActive() ) SetActive(); - } - else - { - LOG("CDPOFPrintingDevice::StartDiscoveryL NO protocol match, ending discovery..."); - AddReadyRequestAndSetActive( EDiscoveryDone ); - } - LOG("CDPOFPrintingDevice::StartDiscoveryL end"); - } - - -TInt CDPOFPrintingDevice::RemoveCachedDeviceL( TInt aDeviceID ) - { - LOG1("CDPOFPrintingDevice::RemoveCachedDeviceL aDeviceID: %d", aDeviceID); - CPrinterElement* targetPrinter = FindDeviceL( aDeviceID ); - LOG1("CDPOFPrintingDevice::RemoveCachedDeviceL targetPrinter address: %d", (TInt)targetPrinter); - return ( targetPrinter ) ? KErrNone : KErrInvalidData; - } - -void CDPOFPrintingDevice::CancelDiscovery( TBool aDoCallBack ) - { - LOG1("CDPOFPrintingDevice::CancelDiscovery aDoCallBack: %d", aDoCallBack); - if( aDoCallBack ) - { - AddReadyRequestAndSetActive( ECancelDiscovery ); - } - LOG("CDPOFPrintingDevice::CancelDiscovery end"); - } - - -TInt CDPOFPrintingDevice::CreatePrintJobL(TInt aDeviceID, RPointerArray& aImages, MProtPrintEventObserver& aObserver) - { - LOG1("CDPOFPrintingDevice::CreatePrintJobL aDeviceID: %d", aDeviceID); - LOG1("CDPOFPrintingDevice::CreatePrintJobL aImages.Count(): %d", aImages.Count()); - - iPrintEventObserver = &aObserver; - iPrintJob->iState = PJSNone; // Reset value until Job is fully setup in case of a leave. - CPrinterElement *TargetPrinter = FindDeviceL( aDeviceID ); - if( TargetPrinter == NULL ) - { - LOG("CDPOFPrintingDevice::CreatePrintJobL no device found, returning error"); - return KErrInvalidData; - } - - iPrintJob->iTransport = DPOFTrans; - iPrintJob->iPrinterID = aDeviceID; - TInt NumImages = aImages.Count(); - iPrintJob->iImages.ResetAndDestroy(); - for (TInt i = 0 ; i < NumImages; i++) - { - HBufC* Image = aImages[i]->AllocLC(); - User::LeaveIfError( iPrintJob->iImages.Append( Image ) ); - CleanupStack::Pop(Image); - } - LOG("CDPOFPrintingDevice::CreatePrintJobL image names copied"); - - // Now we can access the capabilities and fill in the printer settings. - RArray CapabilityIDs; - CleanupClosePushL( CapabilityIDs ); - GetDeviceCapabilityIDsL( aDeviceID, CapabilityIDs ); - LOG1("CDPOFPrintingDevice::CreatePrintJobL capability ids count: %d", CapabilityIDs.Count()); - - iPrintJob->iSettings.Reset(); - for (TInt i = 0; i < CapabilityIDs.Count(); i++) - { - TPrintCapability capability; - GetDeviceCapabilityL(aDeviceID, CapabilityIDs[i], capability); - TInt nCurrentValue; - TBool bHasValue = TargetPrinter->iPrinterCapabilities->GetCurrentValue(CapabilityIDs[i], nCurrentValue); - TSetting Setting; - Setting.iCapabilityID = capability.iCapabilityID; - if (bHasValue) - Setting.iValue = nCurrentValue; - else - Setting.iValue = capability.iDefaultValue; - - User::LeaveIfError(iPrintJob->iSettings.Append(Setting)); - } - LOG("CDPOFPrintingDevice::CreatePrintJobL capabilities copied"); - - CleanupStack::PopAndDestroy(); // CapabilityIDs - - iPrintJob->iState = PJSCreated; - LOG("CDPOFPrintingDevice::CreatePrintJobL end"); - return KErrNone; - } - - -void CDPOFPrintingDevice::SubmitPrintJobL() - { - LOG("CDPOFPrintingDevice::SubmitPrintJobL begin"); - - if( iDPOF->AutoPrintFileExists() ) - { - ShowConfirmationQueryL(); - } - else - { - OverwriteExistingJobL (); - } - - LOG("CDPOFPrintingDevice::SubmitPrintJobL end"); - } - -void CDPOFPrintingDevice::ShowConfirmationQueryL() - { - LOG("CDPOFPrintingDevice::ShowConfirmationQueryL begin"); - - RFs fs; - User::LeaveIfError( fs.Connect() ); - CleanupClosePushL( fs ); - TFileName resourceFileName; - resourceFileName.Append ( KDC_RESOURCE_FILES_DIR ); - resourceFileName.Append ( KResourceFileName ); - BaflUtils::NearestLanguageFile( fs, resourceFileName ); - RResourceFile resFile; - resFile.OpenL( fs, resourceFileName ); - CleanupClosePushL( resFile ); - HBufC8 *resBuffer = resFile.AllocReadLC( R_QTN_PRINT_DPOF_CONFIRMATION_DIALOG ); - TResourceReader reader; - reader.SetBuffer( resBuffer ); - TPtrC ptrQuestion = reader.ReadTPtrC(); - iQuestion = ptrQuestion.AllocL(); - CleanupStack::PopAndDestroy( 3 ); // resBuffer, resFile, fs - - iPQ = CAknGlobalConfirmationQuery::NewL(); - - iConfirmationQuery = CConfirmationQuery::NewL( *this ); - - iConfirmationQuery->StartWaitingAnswer( ); - - iPQ->ShowConfirmationQueryL( iConfirmationQuery->iStatus, *iQuestion, R_AVKON_SOFTKEYS_YES_NO ); - - LOG("CDPOFPrintingDevice::ShowConfirmationQueryL end"); - } - - -TInt CDPOFPrintingDevice::CancelPrintJob() - { - LOG1("CDPOFPrintingDevice::CancelPrintJob begin with job state: %d", iPrintJob->iState); - TInt retVal(KErrNone); - - if( iPrintJob->iState == PJSSubmitted ) - { - LOG("CDPOFPrintingDevice::CancelPrintJob calling iDPOF->Stop()"); - iDPOF->Stop(); - iPrintJob->iState = PJSCreated; - AddReadyRequestAndSetActive( EPrintJobDone ); - } - else - { - retVal = KErrInvalidSequence; - } - - LOG1("CDPOFPrintingDevice::CancelPrintJob end with code: %d", retVal); - return retVal; - } - -TInt CDPOFPrintingDevice::ContinuePrintJobL() - { - LOG1("CDPOFPrintingDevice::ContinuePrintJobL returns with: %d", KErrNotSupported); - return KErrNotSupported; - } - -TInt CDPOFPrintingDevice::GetNumPrintPages() - { - LOG1("CDPOFPrintingDevice::GetNumPrintPages begin with job state: %d", iPrintJob->iState); - if( iPrintJob->iState == PJSNone ) - { - LOG("CDPOFPrintingDevice::GetNumPrintPages job state == PJSNone, ending with 0"); - return 0; - } - - - TInt ImagesPerPage = 1; - TInt NumPrintPages; - TInt NumImages = iPrintJob->iImages.Count(); - - // Get Num images per page from the mapping table. - TSetting Setting; - FindSetting(EPrintCapabLayout, Setting); - - for (TInt j = 0; j < iMappingArray.Count(); j++) - { - if (iMappingArray[j].iCode == Setting.iValue) - { - ImagesPerPage = iMappingArray[j].iImagesPerPage; - break; - } - } - - if( ImagesPerPage == 0 ) // Stickers, Uses only one image, and populates a single page - NumPrintPages = 1; - else - NumPrintPages = (NumImages + ImagesPerPage - 1) / ImagesPerPage; - - LOG1("CDPOFPrintingDevice::GetNumPrintPages returns: %d", NumPrintPages); - return NumPrintPages; - } - -TInt CDPOFPrintingDevice::GetPrintJobStatus() - { - LOG1("CDPOFPrintingDevice::GetPrintJobStatus returns with: %d", KErrNotSupported); - return KErrNotSupported; - } - -TInt CDPOFPrintingDevice::GetPrinterStatus(TInt /*aDeviceID*/) - { - LOG1("CDPOFPrintingDevice::GetPrinterStatus returns with: %d", KErrNotSupported); - return KErrNotSupported; - } - -TInt CDPOFPrintingDevice::GetDeviceCapabilityIDsL(TInt aDeviceID, RArray& aCapabilityIDs) - { - LOG1("CDPOFPrintingDevice::GetDeviceCapabilityIDsL begins with aDeviceID: %d", aDeviceID); - TInt err(KErrNone); - aCapabilityIDs.Reset(); - CPrinterElement* TargetPrinter = FindDeviceL(aDeviceID); - if( TargetPrinter ) - { - TargetPrinter->iPrinterCapabilities->GetIDs(aCapabilityIDs); - } - else - { - err = KErrInvalidData; - } - LOG1("CDPOFPrintingDevice::GetDeviceCapabilityIDsL ends with err: %d", err); - return err; - } - -TInt CDPOFPrintingDevice::GetDeviceCapabilityL(TInt aDeviceID, TInt aCapabilityID, TPrintCapability& aCapability) - { - LOG1("CDPOFPrintingDevice::GetDeviceCapabilityL begins with aDeviceID: %d", aDeviceID); - LOG1("CDPOFPrintingDevice::GetDeviceCapabilityL begins with aCapabilityID: %d", aCapabilityID); - TInt err(KErrNone); - CPrinterElement* TargetPrinter = FindDeviceL(aDeviceID); - if( TargetPrinter ) - { - TargetPrinter->iPrinterCapabilities->GetCapability(aCapabilityID, aCapability); - } - else - { - err = KErrInvalidData; - } - LOG1("CDPOFPrintingDevice::GetDeviceCapabilityL ends with err: %d", err); - return err; - } - -TInt CDPOFPrintingDevice::GetJobSetting(TInt aCapabilityID, TInt& aValue) - { - LOG1("CDPOFPrintingDevice::GetJobSetting begins with aCapabilityID: %d", aCapabilityID); - TInt err(KErrNone); - if( iPrintJob->iState == PJSNone ) - { - err = KErrInvalidSequence; - } - else - { - TSetting Setting; - if( FindSetting(aCapabilityID, Setting) ) - { - aValue = Setting.iValue; - } - else - { - err = KErrInvalidData; - } - } - LOG1("CDPOFPrintingDevice::GetJobSetting ends with err: %d", err); - return err; - } - -TInt CDPOFPrintingDevice::SetJobSettingL(TInt aCapabilityID, TInt aValue, TInt& aAffectedCapability) - { - LOG1("CDPOFPrintingDevice::SetJobSettingL begins with aCapabilityID: %d", aCapabilityID); - LOG1("CDPOFPrintingDevice::SetJobSettingL begins with aValue: %d", aValue); - LOG1("CDPOFPrintingDevice::SetJobSettingL begins with aAffectedCapability: %d", aAffectedCapability); - - if( iPrintJob->iState == PJSNone ) - { - LOG("CDPOFPrintingDevice::SetJobSettingL job state == PJSNone"); - LOG1("CDPOFPrintingDevice::SetJobSettingL ends with: %d", KErrInvalidSequence); - return KErrInvalidSequence; - } - - aAffectedCapability = 0; - TSetting Setting; - if( FindSetting(aCapabilityID, Setting) == EFalse ) - { - LOG("CDPOFPrintingDevice::SetJobSettingL FindSetting == EFalse"); - LOG1("CDPOFPrintingDevice::SetJobSettingL ends with: %d", KErrInvalidData); - return KErrInvalidData; - } - - // Get the Target printer and capability - TPrintCapability TargetCapability; - CPrinterElement* TargetPrinter = FindDeviceL( iPrintJob->iPrinterID ); - if( TargetPrinter == NULL ) - { - LOG("CDPOFPrintingDevice::SetJobSettingL TargetPrinter == NULL"); - LOG1("CDPOFPrintingDevice::SetJobSettingL ends with: %d", KErrInvalidData); - return KErrInvalidData; - } - - TargetPrinter->iPrinterCapabilities->GetCapability(aCapabilityID, TargetCapability); - - // Check Validity against the target capability ranges - if ((TargetCapability.iType == TPrintCapability::Int) || - (TargetCapability.iType == TPrintCapability::Float)) - { - if (((aValue < TargetCapability.iLow) && (TargetCapability.iLow != -1)) || - ((aValue > TargetCapability.iHigh) && (TargetCapability.iHigh != -1))) - { - LOG("CDPOFPrintingDevice::SetJobSettingL capability ranges error"); - LOG1("CDPOFPrintingDevice::SetJobSettingL ends with: %d", KErrInvalidData); - return KErrInvalidData; - } - - } - else // enum - { - TBool Valid = EFalse; - for (TInt i = 0; i < TargetCapability.iEnumCount; i++) - { - if (aValue == TargetCapability.iEnumCodes[i]) - { - Valid = ETrue; - break; - } - } - if (!Valid) - { - LOG("CDPOFPrintingDevice::SetJobSettingL !Valid"); - LOG1("CDPOFPrintingDevice::SetJobSettingL ends with: %d", KErrInvalidData); - return KErrInvalidData; - } - } - - for (TInt i = 0; i < iPrintJob->iSettings.Count(); i++) - { - if (aCapabilityID == iPrintJob->iSettings[i].iCapabilityID) - { - iPrintJob->iSettings[i].iValue = aValue; - break; - } - } - - aAffectedCapability = TargetPrinter->iPrinterCapabilities->SetCurrentValueL(aCapabilityID, aValue); - LOG1("CDPOFPrintingDevice::SetJobSettingL ends with aAffectedCapability: %d", aAffectedCapability); - LOG1("CDPOFPrintingDevice::SetJobSettingL ends with code: %d", KErrNone); - return KErrNone; - } - - -TInt CDPOFPrintingDevice::GetNumPreviewPages() - { - LOG1("CDPOFPrintingDevice::GetNumPreviewPages ends with: %d", 1); - return 1; - } - -TInt CDPOFPrintingDevice::GetJobTemplateIconL( TInt /*aTemplateID*/, TInt& /*aFsBitmapHandle*/ ) - { - return KErrNone; - } - - -TInt CDPOFPrintingDevice::CreatePreviewImage(TInt /*aPageNumber*/) - { - return KErrNone; - } - - -void CDPOFPrintingDevice::HandleDpofEngineEventL(const TInt aStatus, const TInt aRetCode) - { - LOG1("CDPOFPrintingDevice::HandleDpofEngineEventL begins with aStatus: %d", aStatus); - LOG1("CDPOFPrintingDevice::HandleDpofEngineEventL begins with aRetCode: %d", aRetCode); - - iPrintError = aRetCode; - iPrintErrorMsgCode = 0; - - if( (aRetCode != KErrNone) && !(aRetCode==KErrCancel && aStatus==EJobCancelled) ) - { - AddReadyRequestAndSetActive( EPrintError ); - } - else - { - switch(aStatus) - { - case EDeleteDirectory: - case ECopyImageFiles: - case EDPOFGenerate: - AddReadyRequestAndSetActive( EPrintJobProgress ); - break; - case EJobError: - AddReadyRequestAndSetActive( EPrintError ); - break; - case EJobCompleted: - case EJobCancelled: - AddReadyRequestAndSetActive( EPrintJobDone ); - break; - default: - break; - } - } - LOG("CDPOFPrintingDevice::HandleDpofEngineEventL end"); - } - -void CDPOFPrintingDevice::DoCancel() - { - } - -void CDPOFPrintingDevice::RunL() - { - LOG1("CDPOFPrintingDevice::RunL begins with iStatus.Int: %d", iStatus.Int()); - PrintSessionStatus PEStatus = (PrintSessionStatus)iStatus.Int(); - - switch ( PEStatus ) - { - case KErrNone: - break; - case EPrinterDiscovered: - { - TPrinter foundPrinter; - foundPrinter.iDisplayName = KMmcPrinterName; - foundPrinter.iPrinterID = KMmcPrinterId; - foundPrinter.iProperties = TPrinter::SupportsPreview; - foundPrinter.iProtocol = KImagePrint_PrinterProtocol_DPOF; - foundPrinter.iVendor = TPrinter::EVendorNone; - - LOG("CDPOFPrintingDevice::RunL printer discovered, informing observer"); - if( iDiscoveryObserver ) - { - iDiscoveryObserver->FoundDeviceL( foundPrinter ); - } - AddReadyRequestAndSetActive( EDiscoveryDone ); - break; - } - case EDiscoveryDone: - { - LOG("CDPOFPrintingDevice::RunL discovery done, informing observer"); - if( iDiscoveryObserver ) - { - iDiscoveryObserver->DiscoveryStatusL(EDiscoveryFinished, KErrNone, 0); - } - break; - } - case ECancelDiscovery: - { - LOG("CDPOFPrintingDevice::RunL discovery cancelled, informing observer"); - if( iDiscoveryObserver ) - { - iDiscoveryObserver->DiscoveryStatusL(EDiscoveryFinished, KErrCancel, 0); - } - break; - } - case EPrintError: - { - LOG("CDPOFPrintingDevice::RunL print error, informing observer"); - LOG1("CDPOFPrintingDevice::RunL print error iPrintError: %d", iPrintError); - LOG1("CDPOFPrintingDevice::RunL print error iPrintErrorMsgCode: %d", iPrintErrorMsgCode); - if( iPrintEventObserver ) - { - iPrintEventObserver->PrintJobErrorEvent( iPrintError, iPrintErrorMsgCode ); - } - iPrintJob->iState = PJSCreated; - break; - } - case EPrintJobProgress: - { - LOG("CDPOFPrintingDevice::RunL job progress, informing observer"); - if( iPrintEventObserver ) - { - iPrintEventObserver->PrintJobProgressEvent(EActive, iDPOF->GetPrintPercentage(), ECopying); - } - break; - } - case EPrintJobDone: - { - iPrintJob->iState = PJSCreated; // go back to created so it can be re-submitted - if( iPrintEventObserver ) - { - LOG1("CDPOFPrintingDevice::RunL job done percentage: %d", iDPOF->GetPrintPercentage()); - - if (iDPOF->WasCancelled() ) - { - LOG("CDPOFPrintingDevice::RunL job cancelled"); - iPrintEventObserver->PrintJobProgressEvent(EDone, iDPOF->GetPrintPercentage(), ECancelling); - } - else - { - LOG("CDPOFPrintingDevice::RunL job done"); - iPrintEventObserver->PrintJobProgressEvent(EDone, 100, ENoMessage); - } - } - break; - } - - default: - { - LOG("CDPOFPrintingDevice::RunL default, informing observer"); - if( iPrintEventObserver ) - { - iPrintEventObserver->PrintJobErrorEvent(KErrGeneral, 0); - } - iPrintJob->iState = PJSCreated; - break; - } - } - - CheckReadyRequestAndSetActive(); - LOG("CDPOFPrintingDevice::RunL end"); - } - - -CCapabilityArray* CDPOFPrintingDevice::LoadCapabilityL(RResourceFile& aResFile, TInt aCapID) - { - LOG1("CDPOFPrintingDevice::LoadCapabilityL begins with capID: %d", aCapID); - HBufC8* res = aResFile.AllocReadLC(aCapID); - TResourceReader theReader; - theReader.SetBuffer( res ); - CCapabilityArray *capabilities = CCapabilityArray::NewL( theReader ); - CleanupStack::PopAndDestroy(); // res - LOG("CDPOFPrintingDevice::LoadCapabilityL end"); - return capabilities; - } - - -CPrinterElement* CDPOFPrintingDevice::FindDeviceL(TInt aDeviceID) - { - LOG1("CDPOFPrintingDevice::FindDeviceL begins with aDeviceID: %d", aDeviceID); - // Add this here to fix problem - // if application is started without MMC and then user insert MMC in the phone ->cannot find MMC - if( iDeviceList.Count() == 0 ) - { - SetMMCPrinterL(); - } - for( TInt i = 0; i < iDeviceList.Count(); i++ ) - { - if(iDeviceList[i]->iPrinter.iPrinterID == aDeviceID ) - { - LOG("CDPOFPrintingDevice::FindDeviceL device found"); - return iDeviceList[i]; - } - } - LOG("CDPOFPrintingDevice::FindDeviceL device NOT found"); - return NULL; - } - -TBool CDPOFPrintingDevice::FindSetting(TInt aCapabilityID, TSetting& aSetting) - { - LOG1("CDPOFPrintingDevice::FindSetting begins with aCapabilityID: %d", aCapabilityID); - for(TInt i = 0; i < iPrintJob->iSettings.Count(); i++) - { - if (aCapabilityID == iPrintJob->iSettings[i].iCapabilityID) - { - aSetting = iPrintJob->iSettings[i]; - LOG("CDPOFPrintingDevice::FindSetting setting found"); - return ETrue; - } - } - LOG("CDPOFPrintingDevice::FindSetting setting NOT found"); - return EFalse; - } -/* -TInt CDPOFPrintingDevice::AddReadyRequestAndSetActive( TInt aRequest ) - { - LOG1("CDPOFPrintingDevice::AddRequestAndSetActive aRequest: %d", aRequest); - TInt err = iReadyRequests.Append( aRequest ); - LOG1("CDPOFPrintingDevice::AddRequestAndSetActive err: %d", err); - LOG1("CDPOFPrintingDevice::AddRequestAndSetActive iReadyRequests.Count(): %d", iReadyRequests.Count()); - if( !err ) - { - TInt request = iReadyRequests[0]; - LOG1("CDPOFPrintingDevice::AddRequestAndSetActive request: %d", request); - iReadyRequests.Remove( 0 ); - iStatus = KRequestPending; - TRequestStatus* TempTRS = &iStatus; - if( !IsActive() ) SetActive(); - User::RequestComplete( TempTRS, request ); - } - LOG1("CDPOFPrintingDevice::AddRequestAndSetActive return: %d", err); - return err; - } - -TInt CDPOFPrintingDevice::CheckReadyRequestAndSetActive() - { - LOG("CDPOFPrintingDevice::CheckReadyRequestAndSetActive begin"); - TInt count = iReadyRequests.Count(); - LOG1("CDPOFPrintingDevice::AddRequestAndSetActive count: %d", count); - TInt err( KErrNotFound ); - if( count ) - { - TInt request = iReadyRequests[0]; - LOG1("CDPOFPrintingDevice::AddRequestAndSetActive request: %d", request); - iReadyRequests.Remove( 0 ); - iStatus = KRequestPending; - TRequestStatus* TempTRS = &iStatus; - if( !IsActive() ) SetActive(); - User::RequestComplete( TempTRS, request ); - err = KErrNone; - } - LOG1("CDPOFPrintingDevice::CheckReadyRequestAndSetActive return: %d", err); - return err; - } -*/ - -TInt CDPOFPrintingDevice::AddReadyRequestAndSetActive( TInt aRequest ) - { - LOG1("CDPOFPrintingDevice::AddRequestAndSetActive aRequest: %d", aRequest); - TInt err = iReadyRequests.Append( aRequest ); - LOG1("CDPOFPrintingDevice::AddRequestAndSetActive err: %d", err); - LOG1("CDPOFPrintingDevice::AddRequestAndSetActive iReadyRequests.Count(): %d", iReadyRequests.Count()); - if( !err ) - { - LOG1("CDPOFPrintingDevice::AddRequestAndSetActive IsActive(): %d", IsActive()); - if( !IsActive() ) - { - TInt request = iReadyRequests[0]; - LOG1("CDPOFPrintingDevice::AddRequestAndSetActive request: %d", request); - iReadyRequests.Remove( 0 ); - iStatus = KRequestPending; - TRequestStatus* TempTRS = &iStatus; - SetActive(); - User::RequestComplete( TempTRS, request ); - } - } - LOG1("CDPOFPrintingDevice::AddRequestAndSetActive return: %d", err); - return err; - } - -TInt CDPOFPrintingDevice::CheckReadyRequestAndSetActive() - { - LOG("CDPOFPrintingDevice::CheckReadyRequestAndSetActive begin"); - TInt count = iReadyRequests.Count(); - LOG1("CDPOFPrintingDevice::AddRequestAndSetActive count: %d", count); - TInt err( KErrNotFound ); - if( count ) - { - LOG1("CDPOFPrintingDevice::AddRequestAndSetActive IsActive(): %d", IsActive()); - if( !IsActive() ) - { - TInt request = iReadyRequests[0]; - LOG1("CDPOFPrintingDevice::AddRequestAndSetActive request: %d", request); - iReadyRequests.Remove( 0 ); - iStatus = KRequestPending; - TRequestStatus* TempTRS = &iStatus; - SetActive(); - User::RequestComplete( TempTRS, request ); - err = KErrNone; - } - } - LOG1("CDPOFPrintingDevice::CheckReadyRequestAndSetActive return: %d", err); - return err; - } - -void CDPOFPrintingDevice::ConfirmationQueryCompleteL ( TInt aError ) - { - TBool answer = ( aError == EAknSoftkeyYes ); - if( answer ) - { - iCancelledByUser = EFalse; // user want to write file - OverwriteExistingJobL (); - } - else - { - iCancelledByUser = ETrue; - } - - if( iDPOF->AutoPrintFileExists() ) - { - if( iCancelledByUser ) - { - iPrintEventObserver->PrintJobProgressEvent( EDone, 100, ECancellingNoMessage ); - LOG("CDPOFPrintingDevice::SubmitPrintJobL end"); - return; - } - } - } - -void CDPOFPrintingDevice::OverwriteExistingJobL () - { - iPrintError = KErrNone; - iPrintErrorMsgCode = 0; - - CRsDpofEngine::TRsDpofImageLayout layout; - iDPOF->SetImageFileNamesL(iPrintJob->iImages); - TSetting layoutSetting; - FindSetting(EPrintCapabLayout, layoutSetting); - LOG1("CDPOFPrintingDevice::OverwriteExistingJobL layoutSetting.iValue: %d", layoutSetting.iValue); - switch(layoutSetting.iValue) - { - case EPrintCapabLayout1UpSmall: - layout = CRsDpofEngine::EOnePerPageSmall; - break; - case EPrintCapabLayout1UpMedium: - case EPrintCapabLayout1UpLarge: - layout = CRsDpofEngine::EOnePerPageLarge; - break; - case EPrintCapabLayout2Up: - layout = CRsDpofEngine::ETwoPerPage; - break; - case EPrintCapabLayout4Up: - layout = CRsDpofEngine::EFourPerPage; - break; - case EPrintCapabLayout6Up: - layout = CRsDpofEngine::ESixPerPage; - break; - case EPrintCapabLayout9Up: - layout = CRsDpofEngine::ENinePerPage; - break; - case EPrintCapabLayout12Up: - layout = CRsDpofEngine::ETwelvePerPage; - break; - case EPrintCapabLayout16Up: - layout = CRsDpofEngine::ESixteenPerPage; - break; - default: - layout = CRsDpofEngine::EOnePerPageMedium; - break; - } - - iDPOF->SetImageLayout(layout); - LOG1("CDPOFPrintingDevice::OverwriteExistingJobL 1 iStatus.Int(): %d", iStatus.Int()); - TInt err = iDPOF->PrintL(); - LOG1("CDPOFPrintingDevice::OverwriteExistingJobL iDPOF->PrintL() error: %d", err); - LOG1("CDPOFPrintingDevice::OverwriteExistingJobL 2 iStatus.Int(): %d", iStatus.Int()); - - if( err ) - { - iPrintError = err; - iPrintErrorMsgCode = ENoMessage; - AddReadyRequestAndSetActive( EPrintError ); - } - else - { - LOG("CDPOFPrintingDevice::OverwriteExistingJobL job submitted"); - iPrintJob->iState = PJSSubmitted; - if(!IsActive()) SetActive(); - } - } - - -void CDPOFPrintingDevice::SetNumsOfCopiesL( const RArray& aNumsOfCopies, TInt& aErr ) - { - LOG("CDPOFPrintingDevice::SetNumsOfCopiesL begin"); - LOG1("CDPOFPrintingDevice::SetNumsOfCopiesL iPrintJob->iState: %d", iPrintJob->iState); - TInt err( KErrNone ); - if( iPrintJob->iState != PJSCreated ) - { - err = KErrInvalidSequence; - } - if( !err ) - { - LOG1("CDPOFPrintingDevice::SetNumsOfCopiesL iPrintJob->iImages.Count(): %d", iPrintJob->iImages.Count()); - LOG1("CDPOFPrintingDevice::SetNumsOfCopiesL aNumsOfCopies.Count(): %d", aNumsOfCopies.Count()); - if( iPrintJob->iImages.Count() != aNumsOfCopies.Count() ) - { - err = KErrInvalidData; - } - } - if( !err ) - { - TInt count = aNumsOfCopies.Count(); - for( TInt i = 0; i < count && !err; i++ ) - { - LOG1("CDPOFPrintingDevice::SetNumsOfCopiesL i: %d", i); - LOG1("CDPOFPrintingDevice::SetNumsOfCopiesL aNumsOfCopies[i]: %d", aNumsOfCopies[i]); - if( aNumsOfCopies[i] <= 0 ) - { - err = KErrInvalidData; - } - } - } - if( !err ) - { - iDPOF->SetNumsOfCopiesL( aNumsOfCopies ); - } - aErr = err; - LOG1("CDPOFPrintingDevice::SetNumsOfCopiesL aErr: %d", aErr); - } - -// End of File