diff -r 08cc4cc059d4 -r 59ea2209bb67 ImagePrint/ImagePrintEngine/DeviceProtocols/pictbridge2/src/cpbprintingdevice.cpp --- a/ImagePrint/ImagePrintEngine/DeviceProtocols/pictbridge2/src/cpbprintingdevice.cpp Fri Jun 11 16:24:10 2010 +0100 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,1377 +0,0 @@ -/* -* Copyright (c) 2002-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 CPBPrintingDevice class definition. -* -*/ - - -#include -#include -#include -#include - -#include "cpbprintingdevice.h" -#include "printcapabilitycodes.h" -#include "printmessagecodes.h" -#include "imageprint.h" -#include "cpbconnect.h" -#include "clog.h" - -// CONSTANTS -namespace - { - const TInt KPBVersionMajor = 0; - const TInt KPBVersionMinor = 0; - const TInt KPBVersionBuild = 1; - } - -const TInt KConfigLength = 16; -const TInt KMaxRetry = 10; -_LIT( KConfigInfoFile, "config.DPS"); - - -MProtPrintingDevice* CPBPrintingDevice::NewL() - { - return new (ELeave) CPBPrintingDevice(); - } - - -CPBPrintingDevice::CPBPrintingDevice() : -CActive( CActive::EPriorityStandard ), iState(EPBUninitialized), iDisconnectPrinter(EFalse) - { - CActiveScheduler::Add(this); - } - -void CPBPrintingDevice::ConstructL(const TDesC& /*aDLLPath*/) - { - LOG("CPBPrintingDevice::ConstructL begin"); - - iDpsEngine = CDpsEngine::GetEngineL(); - iConnect = CPBConnect::NewL( *iDpsEngine, *this ); - - iCongFileName = HBufC::NewL( iDpsEngine->DpsFolder().Length() + KConfigLength ); - TInt k = iDpsEngine->DpsFolder().Length() + KConfigLength; - iCongFileName->Des().Copy( iDpsEngine->DpsFolder() ); - iCongFileName->Des().Append( KConfigInfoFile ); - - iCancelRetry = 0; - - // for Cert software to indicate that printing state and idle state - iPrintingStateComplete = 0; - - iUserSelectedPaperSize = EDpsPaperSizeDefault; - iNewJobOK = ETrue; - - LOG("CPBPrintingDevice::ConstructL end"); - } - - -CPBPrintingDevice::~CPBPrintingDevice() - { - LOG("CPBPrintingDevice::~CPBPrintingDevice begin"); - Cancel(); - delete iConnect; - delete iCongFileName; - if ( iDpsEngine ) - { - iDpsEngine->Delete(); - } - REComSession::DestroyedImplementation( iDtor_ID_Key ); - LOG("CPBPrintingDevice::~CPBPrintingDevice end"); - } - - -TVersion CPBPrintingDevice::Version() - { - return TVersion(KPBVersionMajor, KPBVersionMinor, KPBVersionBuild); - } - -TUint CPBPrintingDevice::SupportedProtocols() - { - return KImagePrint_PrinterProtocol_PictBridge; - } - -void CPBPrintingDevice::StartDiscoveryL(MProtDiscoveryObserver& aObserver, TUint aProtocol) - { - LOG1("CPBPrintingDevice::StartDiscoveryL aProtocol: %d", aProtocol); - iDiscoveryObserver = &aObserver; - - if ( IsActive() ) - { - LOG1("CPBPrintingDevice::StartDiscoveryL invalid state %d, cannot start discovery", iState); - iDiscoveryObserver->DiscoveryStatusL( EDiscoveryFinished, KErrInvalidSequence, 0 ); - return; - } - - if ( !( aProtocol & KImagePrint_PrinterProtocol_PictBridge ) ) - { - LOG("CPBPrintingDevice::StartDiscoveryL NO protocol match, ending discovery..."); - iDiscoveryObserver->DiscoveryStatusL( EDiscoveryFinished, KErrNotSupported, 0 ); - return; - } - - if ( !iPrinterConnected ) - { - LOG("CPBPrintingDevice::StartDiscoveryL no printer connected, ending discovery"); - iDiscoveryObserver->DiscoveryStatusL( EDiscoveryFinished, KErrNone, 0 ); - return; - } - - - // clear capability map - iCapToDps.Close(); - - iConfigS.iReqParam.Reset(); - iDpsEngine->GetDpsConfigL( iConfigS.iReqParam ); - iDpsEngine->DoDpsRequestL( &iConfigS, iStatus ); - iState = EPBDiscovery; - SetActive(); - LOG("CPBPrintingDevice::StartDiscoveryL setting state to Discovery"); - - LOG("CPBPrintingDevice::StartDiscoveryL end"); - } - - -TInt CPBPrintingDevice::RemoveCachedDeviceL( TInt aDeviceID ) - { - LOG1("CPBPrintingDevice::RemoveCachedDeviceL, aDeviceID: %d", aDeviceID); - return KErrInvalidData; - } - -void CPBPrintingDevice::CancelDiscovery( TBool aDoCallBack ) - { - LOG2("CPBPrintingDevice::CancelDiscovery aDoCallBack %d, iState %d", aDoCallBack, iState ); - if ( iState == EPBDiscovery ) - { - Cancel(); - if ( aDoCallBack && iDiscoveryObserver ) - { - //We're not interested if the call back leaves - TRAP_IGNORE( iDiscoveryObserver->DiscoveryStatusL( EDiscoveryCancelling, KErrNone, 0 ) ); - //We're not interested if the call back leaves - TRAP_IGNORE( iDiscoveryObserver->DiscoveryStatusL( EDiscoveryFinished, KErrNone, 0 ) ); - } - iState = EPBUninitialized; - } - LOG("CPBPrintingDevice::CancelDiscovery end"); - } - - -TInt CPBPrintingDevice::CreatePrintJobL(TInt aDeviceID, RPointerArray& aImages, MProtPrintEventObserver& aObserver) - { - LOG2("CPBPrintingDevice::CreatePrintJobL begin, deviceid %d imagecount %d", aDeviceID, aImages.Count()); - iPrintEventObserver = &aObserver; - - if ( aDeviceID != 0 ) - { - LOG("CPBPrintingDevice::CreatePrintJobL invalid device"); - return KErrArgument; - } - - if ( iState != EPBReady && iState != EPBJobReady ) - { - LOG1("CPBPrintingDevice::CreatePrintJobL invalid state %d", iState); - if(iDisconnectPrinter) // If printer is disconnected then return KErrDisconnected. - return KErrDisconnected; - else - return KErrInvalidSequence; - } - - iStart.iReqParam.Reset(); - - // these must be appended in same order as PBJobSettingIndex - - TDpsArgsInt arg; - arg.iElement = EDpsArgPaperSize; - arg.iContent = EDpsPaperSizeDefault; - iStart.iReqParam.iJobConfig.Append(arg); - - arg.iElement = EDpsArgQuality; - arg.iContent = EDpsPrintQualityDefault; - iStart.iReqParam.iJobConfig.Append(arg); - - arg.iElement = EDpsArgLayout; - arg.iContent = EDpsLayoutDefault; - iStart.iReqParam.iJobConfig.Append(arg); - - for ( TInt i = 0; i < aImages.Count(); ++i ) - { - TDpsPrintInfo info; - info.Reset(); - const TDesC& image = *aImages[i]; - LOG1("CPBPrintingDevice::CreatePrintJobL image %S", &image); - info.iFile.Copy( image ); - iStart.iReqParam.iPrintInfo.Append( info ); - } - - LOG("CPBPrintingDevice::CreatePrintJobL setting state to JobReady"); - iState = EPBJobReady; - - LOG("CPBPrintingDevice::CreatePrintJobL end"); - return KErrNone; - } - -void CPBPrintingDevice::SubmitPrintJobL() - { - LOG("CPBPrintingDevice::SubmitPrintJobL begin"); - - // Checking that job is ready and printer has send aStatus.iRepParam.iNewJobOk - // Check PrinterNotify function - if ( iState == EPBJobReady && iNewJobOK ) - { - iDpsEngine->DoDpsRequestL( &iStart, iStatus ); - iState = EPBSubmittingJob; - SetActive(); - LOG("CPBPrintingDevice::SubmitPrintJobL setting state to SubmittingJob"); - } - else - { - LOG1("CPBPrintingDevice::SubmitPrintJobL invalid state %d", iState); - if( iDisconnectPrinter ) - { - User::Leave( KErrDisconnected ); - } - else - { - // Job or printer not ready, inform user - if( iPrintEventObserver ) - { - LOG("CPBPrintingDevice::SubmitPrintJobL sending EPbStatusErrorReasonHardwarePrinterBusy message to UI"); - iPrintEventObserver->PrinterStatusEvent( EPbStatusErrorReasonHardwarePrinterBusy ); - } - else - { - LOG1("CPBPrintingDevice::SubmitPrintJobL invalid state %d", iState); - User::Leave( KErrInvalidSequence ); - } - } - - } - - LOG("CPBPrintingDevice::SubmitPrintJobL end"); - } - -TInt CPBPrintingDevice::CancelPrintJob() - { - LOG("CPBPrintingDevice::CancelPrintJob begin"); - - if( iCancelRetry > KMaxRetry ) - { - return KErrInUse; - } - - if ( iState == EPBSubmittingJob || iState == EPBPrinting || iState == EPBCancelling ) - { - Cancel(); - iAbort.iReqParam.iAbortStyle = EDpsAbortStyleImmediately; - TRAPD( err, iDpsEngine->DoDpsRequestL( &iAbort, iStatus ) ); - if ( err != KErrNone ) - { - LOG1("CPBPrintingDevice::CancelPrintJob FATAL, DoDpsRequestL failed %d, setting state to Uninitialized", err); - iState = EPBUninitialized; - return KErrGeneral; - } - iState = EPBCancelling; - SetActive(); - LOG("CPBPrintingDevice::CancelPrintJob setting state to Cancelling"); - } - else if ( iState == EPBJobReady ) - { - LOG("CPBPrintingDevice::CancelPrintJob state is JobReady so doing nothing"); - return KErrNone; - } - else - { - LOG1("CPBPrintingDevice::CancelPrintJob invalid state %d", iState); - return KErrInvalidSequence; - } - - LOG("CPBPrintingDevice::CancelPrintJob end"); - return KErrNone; - } - -TInt CPBPrintingDevice::ContinuePrintJobL() - { - LOG1("CPBPrintingDevice::ContinuePrintJobL returns with: %d", KErrNotSupported); - return KErrNotSupported; - } - -TInt CPBPrintingDevice::GetNumPrintPages() - { - LOG("CPBPrintingDevice::GetNumPrintPages begin"); - - if ( iState != EPBJobReady && iState != EPBSubmittingJob && iState != EPBPrinting ) - { - LOG1("CPBPrintingDevice::GetNumPrintPages invalid state %d, returning 0", iState); - return 0; - } - - TInt imagesPerPage = 1; - TDpsArgsInt& config = iStart.iReqParam.iJobConfig[EPBSettingLayout]; - switch ( config.iContent ) - { - case EDpsLayout2Up: - imagesPerPage = 2; - break; - case EDpsLayout4Up: - imagesPerPage = 4; - break; - case EDpsLayout6Up: - imagesPerPage = 6; - break; - case EDpsLayout9Up: - imagesPerPage = 9; - break; - default: - break; - } - - TInt numPrintPages = (iStart.iReqParam.iPrintInfo.Count() + imagesPerPage - 1) / imagesPerPage; - LOG1("CPBPrintingDevice::GetNumPrintPages end, result %d", numPrintPages); - return numPrintPages; - } - -TInt CPBPrintingDevice::GetPrintJobStatus() - { - LOG1("CPBPrintingDevice::GetPrintJobStatus returns with: %d", KErrNotSupported); - return KErrNotSupported; - } - -TInt CPBPrintingDevice::GetPrinterStatus(TInt /*aDeviceID*/) - { - LOG1("CPBPrintingDevice::GetPrinterStatus returns with: %d", KErrNotSupported); - return KErrNotSupported; - } - -TInt CPBPrintingDevice::GetDeviceCapabilityIDsL(TInt aDeviceID, RArray& aCapabilityIDs) - { - LOG1("CPBPrintingDevice::GetDeviceCapabilityIDsL begins with aDeviceID: %d", aDeviceID); - - if ( aDeviceID != 0 ) - { - LOG("CPBPrintingDevice::GetDeviceCapabilityL invalid device"); - return KErrArgument; - } - - if ( iState != EPBReady && iState != EPBJobReady ) - { - LOG1("CPBPrintingDevice::GetDeviceCapabilityL invalid state %d", iState); - return KErrInvalidSequence; - } - - aCapabilityIDs.Append( EPrintCapabLayout ); - aCapabilityIDs.Append( EPrintCapabQuality ); - aCapabilityIDs.Append( EPrintCapabPaperSize ); - - LOG("CPBPrintingDevice::GetDeviceCapabilityIDsL end"); - return KErrNone; - } - -TInt CPBPrintingDevice::GetDeviceCapabilityL(TInt aDeviceID, TInt aCapabilityID, TPrintCapability& aCapability) - { - LOG2("CPBPrintingDevice::GetDeviceCapabilityL begins with aDeviceID %d, aCapabilityID %d", aDeviceID, aCapabilityID); - - if ( aDeviceID != 0 ) - { - LOG("CPBPrintingDevice::GetDeviceCapabilityL invalid device"); - return KErrArgument; - } - - if ( iState != EPBReady && iState != EPBJobReady ) - { - LOG1("CPBPrintingDevice::GetDeviceCapabilityL invalid state %d", iState); - return KErrInvalidSequence; - } - - if ( aCapabilityID == EPrintCapabPaperSize ) - { - // paper sizes - iCap.iRepParam.Reset(); - iCap.iReqParam.iCap = EDpsArgPaperSizes; - iDpsEngine->DoDpsRequestL(&iCap, iStatus); - SetActive(); - iWait.Start(); - HandlePapersizesResponseL( aCapability ); - - if ( !aCapability.iEnumCount ) - { - LOG("CPBPrintingDevice::GetDeviceCapabilityL paper sizes not supported, set to default"); - aCapability.iEnumCodes[aCapability.iEnumCount++] = EPrintCapabPaperSizeAuto; - iCapToDps.InsertL( EPrintCapabPaperSizeAuto, EDpsPaperSizeDefault ); - } - } - else if ( aCapabilityID == EPrintCapabQuality ) - { - // qualities - LOG("CPBPrintingDevice::GetDeviceCapabilityL qualities"); - iCap.iRepParam.Reset(); - iCap.iReqParam.iCap = EDpsArgQualities; - iDpsEngine->DoDpsRequestL( &iCap, iStatus ); - SetActive(); - iWait.Start(); - HandleQualitiesResponseL( aCapability ); - } - else if ( aCapabilityID == EPrintCapabLayout ) - { - // layouts - LOG("CPBPrintingDevice::GetDeviceCapabilityL layouts"); - iCap.iRepParam.Reset(); - iCap.iReqParam.iCap = EDpsArgLayouts; - iCap.iReqParam.iAttribute = iUserSelectedPaperSize; - LOG("CPBPrintingDevice::GetDeviceCapabilityL layouts dodpsrequest"); - iDpsEngine->DoDpsRequestL(&iCap, iStatus); - SetActive(); - LOG("CPBPrintingDevice::GetDeviceCapabilityL layouts wait"); - iWait.Start(); - HandleLayoutsResponseL( aCapability ); - } - else - { - LOG("CPBPrintingDevice::GetDeviceCapabilityL invalid capabilityID"); - return KErrArgument; - } - - LOG1("CPBPrintingDevice::GetDeviceCapabilityL iCapToDps count %d", iCapToDps.Count()); - - LOG("CPBPrintingDevice::GetDeviceCapabilityL end"); - return KErrNone; - } - -TInt CPBPrintingDevice::GetJobSetting(TInt aCapabilityID, TInt& aValue) - { - LOG1("CPBPrintingDevice::GetJobSetting begin, aCapabilityID %d", aCapabilityID); - - TInt err = KErrNone; - if ( iState != EPBJobReady ) - { - LOG1("CPBPrintingDevice::GetJobSetting invalid state %d", iState); - err = KErrInvalidSequence; - } - else if ( aCapabilityID == EPrintCapabPaperSize ) - { - err = GetPapersizeJobSetting( aValue ); - } - else if ( aCapabilityID == EPrintCapabQuality ) - { - err = GetQualityJobSetting( aValue ); - } - else if ( aCapabilityID == EPrintCapabLayout ) - { - err = GetLayoutJobSetting( aValue ); - } - else - { - LOG("CPBPrintingDevice::GetJobSetting invalid capabilityID"); - err = KErrArgument; - } - - LOG2("CPBPrintingDevice::GetJobSetting end, return code %d value %d", err, aValue); - return err; - } - -TInt CPBPrintingDevice::SetJobSettingL(TInt aCapabilityID, TInt aValue, TInt& aAffectedCapability) - { - LOG2("CPBPrintingDevice::SetJobSettingL begin, aCapabilityID %d aValue %d", aCapabilityID, aValue); - - aAffectedCapability = aCapabilityID; - - RArray& config = iStart.iReqParam.iJobConfig; - TInt err = KErrNone; - if ( iState != EPBJobReady ) - { - LOG1("CPBPrintingDevice::SetJobSettingL invalid state %d", iState); - err = KErrInvalidSequence; - } - else if ( aCapabilityID == EPrintCapabPaperSize ) - { - TInt* dpsValue = iCapToDps.Find( aValue ); - if ( dpsValue ) - { - config[EPBSettingPaperSize].iContent = *dpsValue; - - // for CertSW: needs layouts for particular paper sizes - iUserSelectedPaperSize = config[EPBSettingPaperSize].iContent; - } - else - { - LOG("CPBPrintingDevice::SetJobSettingL invalid value"); - err = KErrInvalidData; - } - } - else if ( aCapabilityID == EPrintCapabQuality ) - { - TInt* dpsValue = iCapToDps.Find( aValue ); - if ( dpsValue ) - { - config[EPBSettingQuality].iContent = *dpsValue; - } - else - { - LOG("CPBPrintingDevice::SetJobSettingL invalid value"); - err = KErrInvalidData; - } - } - else if ( aCapabilityID == EPrintCapabLayout ) - { - TInt* dpsValue = iCapToDps.Find( aValue ); - if ( dpsValue ) - { - config[EPBSettingLayout].iContent = *dpsValue; - } - else - { - LOG("CPBPrintingDevice::SetJobSettingL invalid value"); - err = KErrInvalidData; - } - } - else - { - LOG("CPBPrintingDevice::SetJobSettingL invalid capabilityID"); - err = KErrArgument; - } - - LOG1("CPBPrintingDevice::SetJobSettingL end, return code %d", err); - return err; - } - - -TInt CPBPrintingDevice::GetNumPreviewPages() - { - LOG1("CPBPrintingDevice::GetNumPreviewPages ends with: %d", 1); - return 1; - } - -TInt CPBPrintingDevice::GetJobTemplateIconL( TInt /*aTemplateID*/, TInt& /*aFsBitmapHandle*/ ) - { - return KErrNone; - } - - -TInt CPBPrintingDevice::CreatePreviewImage(TInt /*aPageNumber*/) - { - return KErrNotSupported; - } - -void CPBPrintingDevice::RegisterIdleObserver( MProtIdleObserver *aObserver ) - { - iIdleObserver = aObserver; - } - -void CPBPrintingDevice::DoCancel() - { - iDpsEngine->CancelDpsRequest(); - if ( iWait.IsStarted() ) - { - LOG("CPBPritingDevice::DoCancel() calling iWait.AsyncStop()"); - iWait.AsyncStop(); - } - } - -void CPBPrintingDevice::RunL() - { - LOG2("CPBPrintingDevice::RunL begin, status %d state %d", iStatus.Int(), iState); - - if ( iWait.IsStarted() ) - { - LOG("CPBPrintingDevice::RunL calling iWait.AsyncStop() and returning"); - iWait.AsyncStop(); - return; - } - - if ( iStatus.Int() == KErrNone ) // everything ok - { - switch( iState ) - { - case EPBDiscovery: - { - iPrinter.iPrinterID = 0; - iPrinter.iProtocol = KImagePrint_PrinterProtocol_PictBridge; - iPrinter.iProperties = 0; - - if( iConfigS.iResult.iMajorCode == EDpsResultOk ) - { - iPrinter.iVendor = TPrinter::EVendorNone; - - HBufC* buf = HBufC::NewLC( iConfigS.iRepParam.iProductName.Length() ); - TPtr p = buf->Des(); - p.Copy( iConfigS.iRepParam.iProductName ); - if ( p.Length() > 84 ) - { - TPtrC p2 = p.Left( 84 ); - iPrinter.iDisplayName = p2; - } - else - { - iPrinter.iDisplayName = p; - } - - CleanupStack::PopAndDestroy( buf ); - LOG1("CPBPrinterDevice::RunL config displayname %S", &iPrinter.iDisplayName); - - // Config info have to be saved in file, because it can retrieved only once - // when cable is plugged in the device - SaveConfigInfoL(); - } - - if( iConfigS.iResult.iMajorCode == EDpsResultNotExecuted ) - { - // Read info from file - ReadConfigInfoL(); - } - - iDiscoveryObserver->FoundDeviceL( iPrinter ); - iDiscoveryObserver->DiscoveryStatusL( EDiscoveryFinished, KErrNone, 0 ); - iState = EPBReady; - - // Close Dps request to avoid -14 error - iDpsEngine->CancelDpsRequest(); - iDpsEngine->CancelDpsEventNotify(); - - LOG("CPBPrintingDevice::RunL setting state to Ready"); - break; - } - case EPBSubmittingJob: - LOG2("CPBPrintingDevice::RunL submittingjob result major 0x%x minor 0x%x", iStart.iResult.iMajorCode, iStart.iResult.iMinorCode); - if ( iStart.iResult.iMajorCode == EDpsResultOk ) - { - LOG("CPBPrintingDevice::RunL setting state to Printing"); - iState = EPBPrinting; - - // for Cert software remove dialog from UI - iPrintEventObserver->PrintJobProgressEvent( EDone, 100, ENoMessage ); - } - else - { - LOG("CPBPrintingDevice::RunL error occurred, setting state to JobReady"); - iState = EPBJobReady; - if ( iPrintEventObserver ) - { - TPrintMessageCodes err = EPbStatusErrorReasonNoReason; - if ( iStart.iResult.iMajorCode == EDpsResultNotSupported && - iStart.iResult.iMinorCode == EDpsResultMissingParam ) - { - // image file is probably missing - err = EPbFileNotFound; - } - iPrintEventObserver->PrinterStatusEvent( err ); - iPrintEventObserver->PrintJobProgressEvent( EDone, 100, ECancelling ); - } - } - break; - case EPBCancelling: - LOG2("CPBPrintingDevice::RunL cancelling result major 0x%x minor 0x%x", iAbort.iResult.iMajorCode, iAbort.iResult.iMinorCode); - - if( iAbort.iResult.iMajorCode == EDpsResultNotExecuted ) - { - iCancelRetry++; - CancelPrintJob(); - } - - if( iAbort.iResult.iMajorCode == EDpsResultOk ) - { - if ( iPrintEventObserver ) - { - iPrintEventObserver->PrintJobProgressEvent( EDone, 100, ECancelling ); - } - - LOG("CPBPrintingDevice::RunL setting state to JobReady"); - iState = EPBJobReady; - iCancelRetry = 0; - } - break; - default: - LOG1("CPBPrintingDevice::RunL unrecognized state %d", iState); - break; - } - } - else // iStatus != KErrNone -> Handle error here - { - switch( iStatus.Int() ) - { - case KErrTimedOut: - LOG( "CPBPrintingDevice::RunL KErrTimedOut" ); - if ( iPrintEventObserver ) - { - LOG("CPBPrintingDevice::Timeout, finish printing..."); - iPrintEventObserver->PrintJobProgressEvent( EDone, 100, ECancelling ); - } - break; - default: - // Handle error here. - LOG2( "CPBPrintingDevice::RunL error, status %d state %d", iStatus.Int(), iState ); - break; - } - } - - LOG("CPBPrintingDevice::RunL end"); - } - -TInt CPBPrintingDevice::RunError( TInt aError ) - { - LOG1("CPBPrintingDevice::RunError code %d", aError); - if ( iWait.IsStarted() ) - { - LOG("CPBPrintingDevice::RunError calling iWait.AsyncStop()"); - iWait.AsyncStop(); - } - return KErrNone; - } - - -void CPBPrintingDevice::SetNumsOfCopiesL( const RArray& aNumsOfCopies, TInt& aErr ) - { - LOG("CPBPrintingDevice::SetNumsOfCopiesL begin"); - - if ( iState != EPBJobReady ) - { - LOG1("CPBPrintingDevice::SetNumsOfCopiesL invalid state %d", iState); - aErr = KErrInvalidSequence; - } - else if ( aNumsOfCopies.Count() != iStart.iReqParam.iPrintInfo.Count() ) - { - LOG2("CPBPrintingDevice::SetNumsOfCopiesL counts don't match, %d %d", aNumsOfCopies.Count(), iStart.iReqParam.iPrintInfo.Count()); - aErr = KErrInvalidData; - } - else - { - for ( TInt i = 0; i < aNumsOfCopies.Count(); ++i ) - { - iStart.iReqParam.iPrintInfo[i].iCopies = aNumsOfCopies[i]; - } - aErr = KErrNone; - } - - LOG("CPBPrintingDevice::SetNumsOfCopiesL end"); - } - - -void CPBPrintingDevice::ConnectionNotifyL( TInt aStatus ) - { - LOG2("CPBPrintingDevice::ConnectionNotifyL begin, status %d iState %d", aStatus, iState); - switch ( aStatus ) - { - case CDpsEngine::ENotConnected: - LOG("CPBPrintingDevice::ConnectionNotify not connected"); - break; - case CDpsEngine::EPrinterConnected: - LOG("CPBPrintingDevice::ConnectionNotifyL printer connected"); - iPrinterConnected = ETrue; - iDisconnectPrinter = EFalse; - if ( iIdleObserver ) - { - LOG("CPBPrintingDevice::ConnectionNotifyL informing idle observer about connect"); - TEvent event = { KImagePrint_PrinterProtocol_PictBridge, ENotSpecified, EConnect }; - iIdleObserver->StatusEvent( event, KErrConnected, ENoMessage ); - } - break; - case CDpsEngine::EPrinterDisconnected: - iPrinterConnected = EFalse; - iDisconnectPrinter = ETrue; - if ( iState != EPBUninitialized ) - { - Cancel(); - if ( iState == EPBDiscovery ) - { - //We're not interested if the call back leaves - TRAP_IGNORE( iDiscoveryObserver->DiscoveryStatusL( EDiscoveryFinished, KErrNone, 0 ) ); - } - LOG("CPBPrintingDevice::ConnectionNotifyL printer disconnected, setting state to Uninitialized"); - iState = EPBUninitialized; - } - if ( iIdleObserver ) - { - LOG("CPBPrintingDevice::ConnectionNotifyL informing idle observer about disconnect"); - TEvent event = { KImagePrint_PrinterProtocol_PictBridge, ENotSpecified, EDisconnect }; - iIdleObserver->StatusEvent( event, KErrDisconnected, ENoMessage ); - } - break; - case CDpsEngine::EOtherConnected: - LOG("CPBPrintingDevice::ConnectionNotify other connected"); - break; - case CDpsEngine::EWrongPrintModeConnected: - LOG("CPBPrintingDevice::ConnectionNotify Other personality"); - iPrinterConnected = ETrue; - iDisconnectPrinter = EFalse; - if ( iIdleObserver ) - { - LOG("CPBPrintingDevice::ConnectionNotifyL informing idle observer about connect"); - TEvent event = { KImagePrint_PrinterProtocol_PictBridge, ENotSpecified, EConnect }; - iIdleObserver->StatusEvent( event, KErrConnected, ENoMessage ); - } - break; - default: - LOG1("CPBPrintingDevice::ConnectionNotifyL unrecognized status %d", aStatus); - break; - } - LOG("CPBPrintingDevice::ConnectionNotifyL end"); - } - -void CPBPrintingDevice::JobNotify( const TDpsGetJobStatus& aStatus ) - { - LOG1("CPBPrintingDevice::JobNotify begin, state %d", iState); - LOG2("CPBPrintingDevice::JobNotify progress %d, prtPID %d", aStatus.iRepParam.iProgress, aStatus.iRepParam.iPrtPID); - LOG1("CPBPrintingDevice::JobNotify copyID %d", aStatus.iRepParam.iCopyID); - LOG2("CPBPrintingDevice::JobNotify filepath %S, images printed %d", &aStatus.iRepParam.iFilePath, aStatus.iRepParam.iImagesPrinted); - - if ( iPrintEventObserver ) - { - iPrintEventObserver->PrintJobProgressEvent( EActive, aStatus.iRepParam.iProgress, ENoMessage ); - } - - LOG("CPBPrintingDevice::JobNotify end"); - } - -void CPBPrintingDevice::PrinterNotify( const TDpsGetPrinterStatus& aStatus ) - { - LOG1("CPBPrintingDevice::PrinterNotify begin, state %d", iState ); - LOG2("CPBPrintingDevice::PrinterNotify service status 0x%x, job status 0x%x", aStatus.iRepParam.iPrintStatus, aStatus.iRepParam.iJobStatus); - LOG2("CPBPrintingDevice::PrinterNotify error status 0x%x, job end reason 0x%x", aStatus.iRepParam.iErrorStatus, aStatus.iRepParam.iJobEndReason.iMajor); - LOG1("CPBPrintingDevice::PrinterNotify aStatus.iRepParam.iNewJobOk 0x%x,", aStatus.iRepParam.iNewJobOk); - - // New job checking that job is ok and device status is ok. - iNewJobOK = aStatus.iRepParam.iNewJobOk; - - TPBProtocolState oldState = iState; - if ( iState == EPBPrinting ) - { - // for SWCert software to indicate that printing state has executed - iPrintingStateComplete = 1; - - if ( aStatus.iRepParam.iJobStatus == EDpsJobStatusEndedOk ) - { - LOG("CPBPrintingDevice::PrinterNotify job finished successfully, setting state to JobReady"); - if ( iPrintEventObserver ) - { - LOG("CPBPrintingDevice::PrinterNotify job finished iPrintEventObserver->PrintJobProgressEvent( EDone, 100, ENoMessage );"); - iPrintEventObserver->PrintJobProgressEvent( EDone, 100, ENoMessage ); - } - iState = EPBJobReady; - } - else if ( aStatus.iRepParam.iJobStatus != EDpsJobStatusNotEnded ) - { - LOG("CPBPrintingDevice::PrinterNotify job aborted, setting state to JobReady"); - if ( iPrintEventObserver ) - { - iPrintEventObserver->PrintJobProgressEvent( EDone, 100, ECancelling ); - } - iState = EPBJobReady; - } - } - - if ( iState == EPBJobReady ) - { - // for Cert software: CertSW doesn't give any indication about aStatus.iRepParam.iJobStatus - // it only indicate printer state. We have to send message to UI to remove generig progress bar. - if ( aStatus.iRepParam.iPrintStatus == EDpsPrintServiceStatusIdle && iPrintingStateComplete ) - { - // for Cert software to indicate that idle state has executed - iPrintingStateComplete = 0; - - if ( iPrintEventObserver ) - { - LOG("CPBPrintingDevice::PrinterNotify job finished iPrintEventObserver->PrintJobProgressEvent( EDone, 100, ENoMessage );"); - - // for Cert software remove dialog from UI - iPrintEventObserver->PrintJobProgressEvent( EDone, 100, ENoMessage ); - } - } - } - - if ( !iPrintEventObserver ) - { - LOG("CPBPrintingDevice::PrinterNotify no event observer, returning"); - return; - } - - TPrintMessageCodes err = DpsJobError( aStatus.iRepParam.iJobEndReason ); - if ( err == ENoMessage && aStatus.iRepParam.iErrorStatus == EDpsErrorStatusFatal ) - { - // Show fatal error - err = EPbStatusErrorReasonHardwareFatal; - } - - if ( err == ENoMessage && aStatus.iRepParam.iErrorStatus == EDpsErrorStatusWarning ) - { - // Show warning - err = EPbStatusErrorReasonWarning; - } - - if ( err != ENoMessage ) - { - if ( oldState == EPBPrinting ) - { - LOG1("CPBPrintingDevice::PrinterNotify calling PrintJobErrorEvent with code %d", err); - iPrintEventObserver->PrintJobErrorEvent( err ); - } - else - { - LOG1("CPBPrintingDevice::PrinterNotify calling PrinterStatusEvent with code %d", err); - iPrintEventObserver->PrinterStatusEvent( err ); - } - } - - LOG("CPBPrintingDevice::PrinterNotify end"); - } - -void CPBPrintingDevice::HandlePapersizesResponseL( TPrintCapability& aCapability ) - { - LOG2("CPBPrintingDevice::HandlePapersizesResponseL result major 0x%x minor 0x%x", iCap.iResult.iMajorCode, iCap.iResult.iMinorCode); - LOG2("CPBPrintingDevice::HandlePapersizesResponseL cap 0x%x count %d", iCap.iRepParam.iCap, iCap.iRepParam.iContent.Count()); - - aCapability.iCapabilityID = EPrintCapabPaperSize; - aCapability.iType = TPrintCapability::Int; - aCapability.iDefaultValue = EPrintCapabPaperSizeAuto; - aCapability.iEnumCount = 0; - - if ( iCap.iResult.iMajorCode == EDpsResultOk ) - { - for ( TInt i = 0; i < iCap.iRepParam.iContent.Count() && aCapability.iEnumCount < KMaxEnumAmount; ++i ) - { - LOG1("CPBPrintingDevice::HandlePapersizesResponseL content 0x%x", iCap.iRepParam.iContent[i]); - switch ( iCap.iRepParam.iContent[i] ) - { - case EDpsPaperSizeDefault: - aCapability.iEnumCodes[aCapability.iEnumCount++] = EPrintCapabPaperSizeAuto; - iCapToDps.InsertL( EPrintCapabPaperSizeAuto, EDpsPaperSizeDefault ); - break; - case EDpsPaperSizeLetter: - aCapability.iEnumCodes[aCapability.iEnumCount++] = EPrintCapabPaperSizeLetter; - iCapToDps.InsertL( EPrintCapabPaperSizeLetter, EDpsPaperSizeLetter ); - break; - case EDpsPaperSizeA4: - aCapability.iEnumCodes[aCapability.iEnumCount++] = EPrintCapabPaperSizeA4; - iCapToDps.InsertL( EPrintCapabPaperSizeA4, EDpsPaperSizeA4 ); - break; - case EDpsPaperSizeA6: - aCapability.iEnumCodes[aCapability.iEnumCount++] = EPrintCapabPaperSizeA6; - iCapToDps.InsertL( EPrintCapabPaperSizeA6, EDpsPaperSizeA6 ); - break; - case EDpsPaperSize4x6: - aCapability.iEnumCodes[aCapability.iEnumCount++] = EPrintCapabPaperSize4x6; - iCapToDps.InsertL( EPrintCapabPaperSize4x6, EDpsPaperSize4x6 ); - break; - case EDpsPaperSize2L: - aCapability.iEnumCodes[aCapability.iEnumCount++] = EPrintCapabPaperSize5x7; - iCapToDps.InsertL( EPrintCapabPaperSize5x7, EDpsPaperSize2L ); - break; - default: - break; - } - } - } - } - - -void CPBPrintingDevice::HandleQualitiesResponseL( TPrintCapability& aCapability ) - { - LOG2("CPBPrintingDevice::HandleQualitiesResponseL result major 0x%x minor 0x%x", iCap.iResult.iMajorCode, iCap.iResult.iMinorCode); - LOG2("CPBPrintingDevice::HandleQualitiesResponseL cap 0x%x count %d", iCap.iRepParam.iCap, iCap.iRepParam.iContent.Count()); - - aCapability.iCapabilityID = EPrintCapabQuality; - aCapability.iType = TPrintCapability::Int; - aCapability.iDefaultValue = EPrintCapabQualityDefault; - aCapability.iEnumCount = 0; - - if ( iCap.iResult.iMajorCode == EDpsResultOk ) - { - for ( TInt i = 0; i < iCap.iRepParam.iContent.Count() && aCapability.iEnumCount < KMaxEnumAmount; ++i ) - { - LOG1("CPBPrintingDevice::HandleQualitiesResponseL content 0x%x", iCap.iRepParam.iContent[i]); - switch ( iCap.iRepParam.iContent[i] ) - { - case EDpsPrintQualityDefault: - aCapability.iEnumCodes[aCapability.iEnumCount++] = EPrintCapabQualityDefault; - iCapToDps.InsertL( EPrintCapabQualityDefault, EDpsPrintQualityDefault ); - break; - case EDpsPrintQualityNormal: - aCapability.iEnumCodes[aCapability.iEnumCount++] = EPrintCapabQualityNormal; - iCapToDps.InsertL( EPrintCapabQualityNormal, EDpsPrintQualityNormal ); - break; - case EDpsPrintQualityDraft: - aCapability.iEnumCodes[aCapability.iEnumCount++] = EPrintCapabQualityDraft; - iCapToDps.InsertL( EPrintCapabQualityDraft, EDpsPrintQualityDraft ); - break; - case EDpsPrintQualityFine: - aCapability.iEnumCodes[aCapability.iEnumCount++] = EPrintCapabQualityFine; - iCapToDps.InsertL( EPrintCapabQualityFine, EDpsPrintQualityFine ); - break; - default: - break; - } - } - } - if ( !aCapability.iEnumCount ) - { - LOG("CPBPrintingDevice::HandleQualitiesResponseL not supported, set to default"); - aCapability.iEnumCodes[aCapability.iEnumCount++] = EPrintCapabQualityDefault; - iCapToDps.InsertL( EPrintCapabQualityDefault, EDpsPrintQualityDefault ); - } - } - -void CPBPrintingDevice::HandleLayoutsResponseL( TPrintCapability& aCapability ) - { - LOG2("CPBPrintingDevice::HandleLayoutsResponseL result major 0x%x minor 0x%x", iCap.iResult.iMajorCode, iCap.iResult.iMinorCode); - LOG2("CPBPrintingDevice::HandleLayoutsResponseL cap 0x%x count %d", iCap.iRepParam.iCap, iCap.iRepParam.iContent.Count()); - - aCapability.iCapabilityID = EPrintCapabLayout; - aCapability.iType = TPrintCapability::Int; - aCapability.iDefaultValue = EPrintCapabLayout1Up; - aCapability.iEnumCount = 0; - - if ( iCap.iResult.iMajorCode == EDpsResultOk ) - { - for ( TInt i = 0; i < iCap.iRepParam.iContent.Count() && aCapability.iEnumCount < KMaxEnumAmount; ++i ) - { - LOG1("CPBPrintingDevice::HandleLayoutsResponseL content 0x%x", iCap.iRepParam.iContent[i]); - switch ( iCap.iRepParam.iContent[i] ) - { - case EDpsLayout1Up: - aCapability.iEnumCodes[aCapability.iEnumCount++] = EPrintCapabLayout1Up; - iCapToDps.InsertL( EPrintCapabLayout1Up, EDpsLayout1Up ); - break; - case EDpsLayout2Up: - aCapability.iEnumCodes[aCapability.iEnumCount++] = EPrintCapabLayout2Up; - iCapToDps.InsertL( EPrintCapabLayout2Up, EDpsLayout2Up ); - break; - case EDpsLayout4Up: - aCapability.iEnumCodes[aCapability.iEnumCount++] = EPrintCapabLayout4Up; - iCapToDps.InsertL( EPrintCapabLayout4Up, EDpsLayout4Up ); - break; - case EDpsLayout6Up: - aCapability.iEnumCodes[aCapability.iEnumCount++] = EPrintCapabLayout6Up; - iCapToDps.InsertL( EPrintCapabLayout6Up, EDpsLayout6Up ); - break; - case EDpsLayout9Up: - aCapability.iEnumCodes[aCapability.iEnumCount++] = EPrintCapabLayout9Up; - iCapToDps.InsertL( EPrintCapabLayout9Up, EDpsLayout9Up ); - break; - // do not support this EDpsLayoutBorderless, set default value - case EDpsLayoutBorderless: - aCapability.iEnumCodes[aCapability.iEnumCount++] = EPrintCapabLayout1UpBorderless; - iCapToDps.InsertL( EPrintCapabLayout1UpBorderless, EDpsLayoutDefault ); - break; - default: - break; - } - } - } - if ( !aCapability.iEnumCount ) - { - LOG("CPBPrintingDevice::HandleLayoutsResponseL not supported, set to default"); - aCapability.iEnumCodes[aCapability.iEnumCount++] = EPrintCapabLayout1Up; - iCapToDps.InsertL( EPrintCapabLayout1Up, EDpsLayoutDefault ); - } - } - -TInt CPBPrintingDevice::GetPapersizeJobSetting( TInt& aValue ) - { - LOG("CPBPrintingDevice::GetPapersizeJobSetting begin"); - - TDpsArgsInt& paper = iStart.iReqParam.iJobConfig[EPBSettingPaperSize]; - switch ( paper.iContent ) - { - case EDpsPaperSizeDefault: - aValue = EPrintCapabPaperSizeAuto; - return KErrNone; - case EDpsPaperSizeLetter: - aValue = EPrintCapabPaperSizeLetter; - return KErrNone; - case EDpsPaperSizeA4: - aValue = EPrintCapabPaperSizeA4; - return KErrNone; - case EDpsPaperSizeA6: - aValue = EPrintCapabPaperSizeA6; - return KErrNone; - case EDpsPaperSize4x6: - aValue = EPrintCapabPaperSize4x6; - return KErrNone; - case EDpsPaperSize2L: - aValue = EPrintCapabPaperSize5x7; - return KErrNone; - default: - LOG1("CPBPrintingDevice::GetPapersizeJobSetting unknown %x", paper.iContent); - break; - } - - LOG("CPBPrintingDevice::GetPapersizeJobSetting end"); - return KErrInvalidData; - } - -TInt CPBPrintingDevice::GetQualityJobSetting( TInt& aValue ) - { - LOG("CPBPrintingDevice::GetQualityJobSetting begin"); - - TDpsArgsInt& config = iStart.iReqParam.iJobConfig[EPBSettingQuality]; - switch ( config.iContent ) - { - case EDpsPrintQualityDefault: - aValue = EPrintCapabQualityDefault; - return KErrNone; - case EDpsPrintQualityNormal: - aValue = EPrintCapabQualityNormal; - return KErrNone; - case EDpsPrintQualityDraft: - aValue = EPrintCapabQualityDraft; - return KErrNone; - case EDpsPrintQualityFine: - aValue = EPrintCapabQualityFine; - return KErrNone; - default: - LOG1("CPBPrintingDevice::GetQualityJobSetting unknown %x", config.iContent); - break; - } - - LOG("CPBPrintingDevice::GetQualityJobSetting end"); - return KErrInvalidData; - } - -TInt CPBPrintingDevice::GetLayoutJobSetting( TInt& aValue ) - { - LOG("CPBPrintingDevice::GetLayoutJobSetting begin"); - - TDpsArgsInt& config = iStart.iReqParam.iJobConfig[EPBSettingLayout]; - switch ( config.iContent ) - { - case EDpsLayoutDefault: - // Not supported default value is EPrintCapabLayout1UpBorderless - // because other protocols use it too - // EPrintCapabLayout1UpBorderless is mapped with EDpsLayoutDefault - aValue = EPrintCapabLayout1UpBorderless; - case EDpsLayout1Up: - aValue = EPrintCapabLayout1Up; - return KErrNone; - case EDpsLayout2Up: - aValue = EPrintCapabLayout2Up; - return KErrNone; - case EDpsLayout4Up: - aValue = EPrintCapabLayout4Up; - return KErrNone; - case EDpsLayout6Up: - aValue = EPrintCapabLayout6Up; - return KErrNone; - case EDpsLayout9Up: - aValue = EPrintCapabLayout9Up; - return KErrNone; - case EDpsLayoutBorderless: - aValue = EPrintCapabLayout1UpBorderless; - return KErrNone; - default: - LOG1("CPBPrintingDevice::GetLayoutJobSetting unknown %x", config.iContent); - break; - } - - LOG("CPBPrintingDevice::GetLayoutJobSetting end"); - return KErrInvalidData; - } - -TPrintMessageCodes CPBPrintingDevice::DpsJobError( const TDpsJobEndReason& aReason ) - { - TPrintMessageCodes err = ENoMessage; - switch ( aReason.iMajor ) - { - case EDpsJobErrorPaper: - LOG1("CPBPrintingDevice::DpsJobError paper error 0x%x", aReason.iPaperMinor); - HandlePaperError( aReason, err ); - break; - case EDpsJobErrorInk: - LOG1("CPBPrintingDevice::DpsJobError ink error 0x%x", aReason.iInkMinor); - HandleInkError( aReason, err ); - break; - case EDpsJobErrorHardware: - LOG1("CPBPrintingDevice::DpsJobError hardware error 0x%x", aReason.iHardMinor); - HandleHwError( aReason, err ); - break; - case EDpsJobErrorFile: - LOG1("CPBPrintingDevice::DpsJobError file error 0x%x", aReason.iFileMinor); - HandleFileError( aReason, err ); - break; - default: - break; - } - return err; - } -void CPBPrintingDevice::HandlePaperError ( const TDpsJobEndReason& aReason, TPrintMessageCodes& aErr ) - { - switch ( aReason.iPaperMinor ) - { - case EDpsPaperEmpty: - aErr = EPbStatusErrorReasonPaperEmpty; - break; - case EDpsPaperLoad: - aErr = EPbStatusErrorReasonPaperLoad; - break; - case EDpsPaperEject: - aErr = EPbStatusErrorReasonPaperEject; - break; - case EDpsPaperMedia: - aErr = EPbStatusErrorReasonPaperMedia; - break; - case EDpsPaperJam: - aErr = EPbStatusErrorReasonPaperJam; - break; - case EDpsPaperNearlyEmpty: - aErr = EPbStatusErrorReasonPaperNearlyEmpty; - break; - case EDpsPaperTypeSizeNoMatch: - aErr = EPbStatusErrorReasonPaperCombination; - break; - default: - aErr = EPbStatusErrorReasonPaper; - break; - } - } - -void CPBPrintingDevice::HandleInkError ( const TDpsJobEndReason& aReason, TPrintMessageCodes& aErr ) - { - switch ( aReason.iInkMinor ) - { - case EDpsInkEmpty: - aErr = EPbStatusErrorReasonInkEmpty; - break; - case EDpsInkLow: - aErr = EPbStatusErrorReasonInkLow; - break; - case EDpsInkWaste: - aErr = EPbStatusErrorReasonInkWaste; - break; - default: - aErr = EPbStatusErrorReasonInk; - break; - } - } - -void CPBPrintingDevice::HandleHwError ( const TDpsJobEndReason& aReason, TPrintMessageCodes& aErr ) - { - switch ( aReason.iHardMinor ) - { - case EDpsHardFatal: - aErr = EPbStatusErrorReasonHardwareFatal; - break; - case EDpsHardServiceCall: - aErr = EPbStatusErrorReasonHardwareServiceCall; - break; - case EDpsHardNotAvailable: - aErr = EPbStatusErrorReasonHardwarePrinterUnavailable; - break; - case EDpsHardBusy: - aErr = EPbStatusErrorReasonHardwarePrinterBusy; - break; - case EDpsHardLever: - aErr = EPbStatusErrorReasonHardwareLever; - break; - case EDpsHardCoverOpen: - aErr = EPbStatusErrorReasonHardwareCoverOpen; - break; - case EDpsHardNoMarkingHead: - aErr = EPbStatusErrorReasonHardwareNoMarkingAgent; - break; - case EDpsHardInkCoverOpen: - aErr = EPbStatusErrorReasonHardwareCoverOpen; - break; - case EDpsHardNoInkCartridge: - aErr = EPbStatusErrorReasonHardwareNoInkCartridge; - break; - default: - aErr = EPbStatusErrorReasonHardware; - break; - } - } - -void CPBPrintingDevice::HandleFileError ( const TDpsJobEndReason& aReason, TPrintMessageCodes& aErr ) - { - switch ( aReason.iFileMinor ) - { - case EDpsFilePrintInfo: - aErr = EPbStatusErrorReasonFilePrintInfo; - break; - case EDpsFileDecode: - aErr = EPbStatusErrorReasonFileFileDecode; - break; - default: - aErr = EPbStatusErrorReasonFile; - break; - } - } - -TBool CPBPrintingDevice::HasCapability( TPrintCapability& aCapability, TPrintCapabilityOptions aOption ) - { - for ( TInt i = 0; i < aCapability.iEnumCount; ++i ) - { - if ( aCapability.iEnumCodes[i] == aOption ) - { - return ETrue; - } - } - return EFalse; - } - -void CPBPrintingDevice::SaveConfigInfoL() - { - LOG("CPBPrintingDevice::SaveConfigInfoL begin"); - - RFs rFs; - RFile file; - - User::LeaveIfError( rFs.Connect() ); - CleanupClosePushL( rFs ); - - User::LeaveIfError( file.Replace( rFs, iCongFileName->Des() ,EFileWrite ) ); // create the file for writing - - RFileWriteStream stream( file ); - CleanupClosePushL( stream ); - - ExternalizeL( stream ); - - CleanupStack::PopAndDestroy( &stream ); - CleanupStack::PopAndDestroy( &rFs ); - - LOG("CPBPrintingDevice::SaveConfigInfoL end"); - } - -void CPBPrintingDevice::ExternalizeL( RWriteStream& aStream ) const - { - LOG("CPBPrintingDevice::ExternalizeL begin"); - - aStream << iPrinter.iDisplayName; - aStream.WriteUint32L( iPrinter.iVendor ); - aStream.CommitL(); - - LOG("CPBPrintingDevice::ExternalizeL end"); - } - -void CPBPrintingDevice::ReadConfigInfoL() - { - LOG("CPBPrintingDevice::ReadConfigInfoL begin"); - - RFs rFs; - RFile file; - - User::LeaveIfError( rFs.Connect() ); - CleanupClosePushL( rFs ); - - User::LeaveIfError( file.Open( rFs, iCongFileName->Des() ,EFileRead ) ); - - RFileReadStream readStream( file ); - CleanupClosePushL( readStream ); - - readStream >> iPrinter.iDisplayName; - iPrinter.iVendor = readStream.ReadUint32L(); - - CleanupStack::PopAndDestroy( &readStream ); - CleanupStack::PopAndDestroy( &rFs ); - - LOG("CPBPrintingDevice::ReadConfigInfoL end"); - } - -// End of File