--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/ImagePrint/ImagePrintEngine/ImagePrintServer/src/client/cjobguard.cpp Thu Dec 17 08:45:53 2009 +0200
@@ -0,0 +1,112 @@
+/*
+* 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:
+*
+*/
+
+
+#include "cjobguard.h"
+#include "rimageprintclient.h"
+#include "imageprint.h"
+#include "clog.h"
+#include "tjobguarddata.h"
+
+EXPORT_C CJobGuard* CJobGuard::NewL( RImagePrintClient& aClient )
+ {
+ CJobGuard* self = new ( ELeave ) CJobGuard( aClient );
+ CleanupStack::PushL( self );
+ self->ConstructL();
+ CleanupStack::Pop(); // self
+ return self;
+ }
+
+CJobGuard::CJobGuard( RImagePrintClient& aClient ) :
+ CActive( CActive::EPriorityHigh ),
+ iClient( aClient )
+ {
+ CActiveScheduler::Add( this );
+ }
+
+EXPORT_C CJobGuard::~CJobGuard()
+ {
+ Cancel();
+ delete iData;
+ }
+
+void CJobGuard::ConstructL()
+ {
+ iData = new (ELeave) TJobGuardData;
+ }
+
+EXPORT_C TInt CJobGuard::Guard( TInt aPrinterID, RPointerArray<TDesC>& aImages, MPrintEventObserver& aObserver )
+ {
+ LOG1("CJobGuard::Guard begin with aPrinterID: %d", aPrinterID);
+ Cancel();
+ iObserver = &aObserver;
+ TInt err = iClient.CreateJob( aPrinterID, *iData, aImages, iStatus );
+ if( !err )
+ {
+ SetActive();
+ }
+ LOG1("CJobGuard::Guard end with err: %d", err);
+ return err;
+ }
+
+void CJobGuard::RunL()
+ {
+ LOG1("CJobGuard::RunL begin with iStatus.Int(): %d", iStatus.Int());
+ if( iStatus == KErrNone && iObserver )
+ {
+ switch( iData->iCb )
+ {
+ case TJobGuardData::EProgressEventCb:
+ LOG("CJobGuard::RunL TJobGuardData::EProgressEventCb");
+ LOG1("CJobGuard::RunL iData->iStatus: %d", iData->iStatus);
+ LOG1("CJobGuard::RunL iData->iPercentCompletion: %d", iData->iPercentCompletion);
+ LOG1("CJobGuard::RunL iData->iJobStateCode: %d", iData->iJobStateCode);
+ iObserver->PrintJobProgressEvent( iData->iStatus, iData->iPercentCompletion, iData->iJobStateCode );
+ break;
+ case TJobGuardData::EErrorEventCb:
+ LOG("CJobGuard::RunL TJobGuardData::EErrorEventCb");
+ LOG1("CJobGuard::RunL iData->iError: %d", iData->iError);
+ LOG1("CJobGuard::RunL iData->iErrorStringCode: %d", iData->iErrorStringCode);
+ iObserver->PrintJobErrorEvent( iData->iError, iData->iErrorStringCode );
+ break;
+ case TJobGuardData::EStatusEventCb:
+ LOG("CJobGuard::RunL TJobGuardData::EStatusEventCb");
+ LOG1("CJobGuard::RunL iData->iError: %d", iData->iError);
+ LOG1("CJobGuard::RunL iData->iErrorStringCode: %d", iData->iErrorStringCode);
+ iObserver->PrintJobErrorEvent( iData->iError, iData->iErrorStringCode );
+ break;
+ case TJobGuardData::EImageEventCb:
+ LOG("CJobGuard::RunL TJobGuardData::EImageEventCb");
+ LOG1("CJobGuard::RunL iData->iFsBitmapHandle: %d", iData->iFsBitmapHandle);
+ iObserver->PreviewImageEvent( iData->iFsBitmapHandle );
+ break;
+ default:
+ break;
+ }
+
+ iClient.ContinueCreateJob( *iData, iStatus );
+ SetActive();
+ }
+ LOG("CJobGuard::RunL end");
+ }
+
+void CJobGuard::DoCancel()
+ {
+ iClient.CancelCreateJob();
+ }
+
+// End of File