diff -r 26673e532f65 -r 159fc2f68139 ImagePrint/ImagePrintUI/imgpprintdll/src/cimgpprintdlgmanager.cpp --- a/ImagePrint/ImagePrintUI/imgpprintdll/src/cimgpprintdlgmanager.cpp Tue May 25 12:42:41 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,463 +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: -* -*/ - - -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include - -#include "cimgpprintdlgmanager.h" -#include "imgpprintapputil.h" -#include "cimgpprintprogressdlg.h" -#include "clog.h" -#include "cimgpprintutils.h" -#include "mprintingobserver.h" -#include "tprinter.h" -#include "printmessagecodes.h" -#include "imageprintconsts.h" - -_LIT(KPlain, "%S"); - -const TUint KProgressFinalValue = 100; - -// Timeout for MMC InformationNote ( timeout = 5 000 000 ms -> 5 s ) -const TInt KTimeOut = 5000000; - - -// CONSTRUCTION -EXPORT_C CIMGPPrintDlgManager* CIMGPPrintDlgManager::NewL( - TInt aNoc, - MPrintJob* aPrintJob, - TUint aNumOfPages, - TBool aMMCPrinting, - TUint aVendor, - CIMGPPrintUtils* aPrintUtils, - MPrintingObserver* aPrintingObserver ) - { - CIMGPPrintDlgManager* self = - CIMGPPrintDlgManager::NewLC( aNoc, - aPrintJob, - aNumOfPages, - aMMCPrinting, - aVendor, - aPrintUtils, - aPrintingObserver ); - CleanupStack::Pop( self ); - return self; - } - -CIMGPPrintDlgManager* CIMGPPrintDlgManager::NewLC( - TInt aNoc, - MPrintJob* aPrintJob, - TUint aNumOfPages, - TBool aMMCPrinting, - TUint aVendor, - CIMGPPrintUtils* aPrintUtils, - MPrintingObserver* aPrintingObserver ) - { - CIMGPPrintDlgManager* self = - new ( ELeave ) CIMGPPrintDlgManager( aNoc, - aPrintJob, - aNumOfPages, - aMMCPrinting, - aVendor, - aPrintUtils, - aPrintingObserver ); - self->ConstructL(); - CleanupStack::PushL( self ); - - return self; - } - - -// Second class constructor -void CIMGPPrintDlgManager::ConstructL() - { - - } - -// Default constructor -CIMGPPrintDlgManager::CIMGPPrintDlgManager( - TInt aNoc, - MPrintJob* aPrintJob, - TUint aNumOfPages, - TBool aMMCPrinting, - TUint aVendor, - CIMGPPrintUtils* aPrintUtils, - MPrintingObserver* aPrintingObserver ) : - iPrintJob( aPrintJob ), - iNumOfPages( aNumOfPages ), - iMMCPrinting( aMMCPrinting ), - iVendor( aVendor ) - { - iCancellingDialog = 0; - // Used only in aiw printing - if( aPrintUtils ) - { - iPrintUtils = aPrintUtils; - } - if( aPrintingObserver ) - { - iPrintingObserver = aPrintingObserver; - } - iNoc = aNoc; - } - -// Destructor -CIMGPPrintDlgManager::~CIMGPPrintDlgManager() - { - LOG("CIMGPPrintDlgManager::~CIMGPPrintDlgManager BEGIN"); - if ( iDialog ) - { - delete iDialog; - iDialog = 0; - } - LOG("CIMGPPrintDlgManager::~CIMGPPrintDlgManager END"); - } - -// Starts the print job -EXPORT_C void CIMGPPrintDlgManager::StartPrintingL() - { - LOG("CIMGPPrintDlgManager::StartPrintingL BEGIN"); - - iFirstNote = ETrue; - - TRAPD( err, iPrintJob->PrintL( this )); - if ( err == KErrNone ) - { - LOG("CIMGPPrintDlgManager::StartPrintingL printing..."); - PrepareProgressDialogL(); - iCancelling = EFalse; - iPrintingCancelled = EFalse; - iDialog->RunLD(); - } - else - { - LOG("CIMGPPrintDlgManager::StartPrintingL failed"); - if ( iDialog ) - { - delete iDialog; - iDialog = 0; - } - if( iPrintUtils ) - { - iPrintUtils->JobFinished(); - } - if( iPrintingObserver ) - { - TRAP_IGNORE( iPrintingObserver->PrintingCompletedL( EFalse )); - } - // Don't leave for KErrNotFound, as there's another note for it - if ( err != KErrNotFound ) - { - TRAP_IGNORE( IMGPPrintAppUtil::ShowErrorMsgL( err )); - } - } - LOG("CIMGPPrintDlgManager::StartPrintingL END"); - } - -void CIMGPPrintDlgManager::PrepareProgressDialogL() - { - LOG("CIMGPPrintDlgManager::PrepareProgressDialogL START"); - HBufC* txt; - if ( !iMMCPrinting ) - { - txt = StringLoader::LoadLC( - R_QTN_PRINT_PROGRESS_NOTE_TITLE ); - } - else - { - txt = StringLoader::LoadLC( - R_QTN_COPY_PROGRESS_NOTE_TITLE); - } - - TBuf<128> buf; - buf.Format( KPlain, txt ); - CleanupStack::PopAndDestroy( txt ); - - iDialog = new ( ELeave ) CAknProgressDialog( - (REINTERPRET_CAST( CEikDialog**, &iDialog )), EFalse ); - iDialog->PrepareLC( R_PRINT_PROGRESS_PLAIN_PROG_NOTE ); - - CEikProgressInfo* info = iDialog->GetProgressInfoL(); - info->SetFinalValue( KProgressFinalValue ); - iDialog->SetTextL( buf ); - iDialog->SetCallback( this ); - LOG("CIMGPPrintDlgManager::PrepareProgressDialogL END"); - } - - -// Called to update the print progress -void CIMGPPrintDlgManager::PrintProgress( - TUint aComplete ) - { - TInt err = KErrNone; - TRAP( err, PrintProgressL( aComplete ) ); - if ( err != KErrNone ) - { - TRAP_IGNORE( IMGPPrintAppUtil::ShowErrorMsgL( err ) ); - } - } - -// Called to update the print progress -void CIMGPPrintDlgManager::PrintProgressL( - TUint aComplete ) - { - LOG1( "CIMGPPrintDlgManager::PrintProgressL START with: %d", aComplete ); - if( !iCancelling ) - { - if ( !iDialog ) - { - LOG("CIMGPPrintDlgManager::PrintProgressL: creating dialog again"); - PrepareProgressDialogL(); - iDialog->RunLD(); - } - CEikProgressInfo* info = iDialog->GetProgressInfoL(); - info->SetAndDraw( aComplete ); - } - LOG("CIMGPPrintDlgManager::PrintProgressL END"); - } - -// Called when the print job is finished -void CIMGPPrintDlgManager::JobFinished() - { - - LOG("CIMGPPrintDlgManager::JobFinished BEGIN"); - if ( iDialog ) - { - delete iDialog; - iDialog = 0; - } - if ( iMMCPrinting && !iCancelling ) - { - LOG("CIMGPPrintDlgManager::JobFinished mmc note"); - TRAP_IGNORE( ShowMMCPrintingCompletedDlgL() ); - LOG("CIMGPPrintDlgManager::JobFinished mmc note done"); - } - if ( iCancelling ) - { - if(iCancellingDialog) - { - TRAP_IGNORE( iCancellingDialog->ProcessFinishedL() ); - iCancellingDialog = 0; - iCancelling = EFalse; - } - } - else - { - if( iPrintUtils ) - { - LOG("CIMGPPrintDlgManager::JobFinished iPrintUtils"); - iPrintUtils->JobFinished(); - LOG("CIMGPPrintDlgManager::JobFinished iPrintUtils done"); - } - if( iPrintingObserver ) - { - TRAP_IGNORE( iPrintingObserver->PrintingCompletedL( EFalse )); - } - } - LOG("CIMGPPrintDlgManager::JobFinished END"); - } - -// Manages print job errors -void CIMGPPrintDlgManager::JobError( - TInt aErrCode, TInt aErrorStringCode ) - { - LOG2("CIMGPPrintDlgManager::JobError BEGIN, error = %d, stringcode = %d", aErrCode, aErrorStringCode ); - - if( iMMCPrinting && aErrCode == ECancellingNoMessage ) - { - if ( iDialog ) - { - delete iDialog; - iDialog = 0; - } - return; - } - - if ( iMMCPrinting && !iCancelling ) - { - TRAP_IGNORE( IMGPPrintAppUtil::ShowErrorNoteL( R_NOTE_IMAGEPRINT_MMCCOPYFAIL ) ); - // Nothing to do if the displaying of error note fails - // Just need to make sure that this method never leaves - } - if ( iCancelling ) - { - LOG( "CIMGPPrintDlgManager::JobError ---> iCancellingDialog->ProcessFinishedL()" ); - TRAP_IGNORE( iCancellingDialog->ProcessFinishedL() ); - iCancellingDialog = 0; - iCancelling = EFalse; - } - else - { - // Delete dialog - if ( iDialog ) - { - delete iDialog; - iDialog = 0; - } - if( iPrintUtils && - aErrCode != KHCIErrorBase-EPageTimedOut && - aErrorStringCode != EObexConnectError ) - { - iPrintUtils->JobFinished(); - } - if( iPrintingObserver ) - { - TRAP_IGNORE( iPrintingObserver->PrintingCompletedL( EFalse )); - } - } - - /* Error note is shown to user in normal cases, but not when - * printing is done to MMC, canceled, done via quickprint, or - * BT timeout happens, as these cases are handled in other parts - * of code - */ - if ( !iMMCPrinting && - aErrCode != ECancelling && - ( !iPrintUtils || - ( aErrCode != KHCIErrorBase-EPageTimedOut && - aErrorStringCode != EObexConnectError ))) - { - TRAP_IGNORE( IMGPPrintAppUtil::ShowErrorMsgL( aErrCode, aErrorStringCode )); - // Nothing to do to handle err - } - LOG("CIMGPPrintDlgManager::JobError END"); - } - -// Manages print job status events -void CIMGPPrintDlgManager::JobStatusEvent( TInt aErrCode, TInt aErrorStringCode ) - { - LOG2("CIMGPPrintDlgManager::JobStatusEvent = %d, stringcode = %d", aErrCode, aErrorStringCode ); - // If printer is disconnected cancel printing else - // just show the error message - if ( aErrCode == KErrDisconnected ) - { - TRAP_IGNORE( IMGPPrintAppUtil::ShowErrorMsgL( KErrDisconnected, aErrorStringCode )); - if ( iDialog ) - { - // This ends the printing - delete iDialog; - iDialog = 0; - } - } - else - { - TRAP_IGNORE( IMGPPrintAppUtil::ShowErrorMsgL( aErrCode, aErrorStringCode )); - } - LOG("CIMGPPrintDlgManager::JobStatusEvent END"); - } - -// Shows printing completed dlg -void CIMGPPrintDlgManager::ShowMMCPrintingCompletedDlgL() - { - LOG("CIMGPPrintDlgManager::ShowMMCPrintingCompletedDlgL BEGIN"); - - RPointerArray allImages; - CleanupClosePushL( allImages ); - iPrintJob->GetPrintJobL( allImages ); - TInt imagesCount = allImages.Count(); - CleanupStack::PopAndDestroy( &allImages ); - HBufC* buf = NULL; - - // Blocks possibility to show note when exiting image print. - if (iFirstNote) - { - if ( iNoc == 1 && imagesCount == 1 ) - { - buf = StringLoader::LoadLC( R_SETTINGS_IMAGEPRINT_MMC_PRINT_NOTE_ONE_PICTURE ); //r_settings_imageprint_mmc_print_note_one_picture - } - else - { - buf = StringLoader::LoadLC( R_SETTINGS_IMAGEPRINT_MMC_PRINT_NOTE ); - } - - CAknInformationNote* dlg = new ( ELeave ) CAknInformationNote( ETrue ); - dlg->SetTimeout( (CAknNoteDialog::TTimeout) KTimeOut ); - dlg->ExecuteLD( *buf ); - CleanupStack::PopAndDestroy( buf ); - - iFirstNote = EFalse; - - } - - LOG("CIMGPPrintDlgManager::ShowMMCPrintingCompletedDlgL END"); - } - -// Called when dialog gets dismissed -void CIMGPPrintDlgManager::DialogDismissedL( - TInt aButtonId ) - { - LOG("CIMGPPrintDlgManager::DialogDismissedL BEGIN"); - // If user pressed cancel, cancel printing - LOG1( "CIMGPPrintDlgManager::DialogDismissedL iPrintingCancelled: %d", iPrintingCancelled ); - if ( ( aButtonId == EAknSoftkeyCancel ) && ( iPrintingCancelled == EFalse ) ) - { - LOG("CIMGPPrintDlgManager::DialogDismissedL aButtonId == EAknSoftkeyCancel"); - iDialog = 0; - iCancelling = ETrue; - - // Printing cancelled - iPrintingCancelled = ETrue; - - TRAPD( err, iPrintJob->CancelL() ); - if( err == KErrNone ) - { - ShowCancelWaitNoteL(); - } - else - { - iCancelling = EFalse; - } - } - - LOG("CIMGPPrintDlgManager::DialogDismissedL END"); - } - -// Displays the cancel wait note -void CIMGPPrintDlgManager::ShowCancelWaitNoteL() - { - iCancellingDialog = - new ( ELeave ) CAknWaitDialog( - (REINTERPRET_CAST(CEikDialog**,&iCancellingDialog))); - iCancellingDialog->PrepareLC(R_CANCEL_PRINTING_DIALOG); - HBufC* text = StringLoader::LoadLC( R_QTN_PRINT_PROGRESS_PROMPT_CANCEL ); - iCancellingDialog->SetTextL( *text ); - CleanupStack::PopAndDestroy(text); - - iCancellingDialog->SetTone( CAknNoteDialog::ENoTone ); - iCancellingDialog->RunLD(); - - if( iPrintUtils ) - { - iPrintUtils->JobFinished(); - } - if( iPrintingObserver ) - { - iPrintingObserver->PrintingCompletedL( ETrue ); - } - } - -// End of File