diff -r 000000000000 -r 2f259fa3e83a commonuis/CommonUi/src/DocSaver.cpp --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/commonuis/CommonUi/src/DocSaver.cpp Tue Feb 02 01:00:49 2010 +0200 @@ -0,0 +1,419 @@ +/* +* 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: +* +*/ + + +// INCLUDE FILES +#include +#include // Resource ids +#include "DocSaver.h" +#include "DocumentHandlerUI.hrh" +#include "DocDefaultHandler.h" + + +// EXTERNAL DATA STRUCTURES + +// EXTERNAL FUNCTION PROTOTYPES + +// CONSTANTS + +// MACROS + +// LOCAL CONSTANTS AND MACROS + +// MODULE DATA STRUCTURES + +// LOCAL FUNCTION PROTOTYPES + +// ==================== LOCAL FUNCTIONS ==================== + +// ================= MEMBER FUNCTIONS ======================= + +// C++ default constructor can NOT contain any code, that +// might leave. +// +CDocSaver::CDocSaver() + { + } + +// EPOC default constructor can leave. +void CDocSaver::ConstructL() + { + } + +// Two-phased constructor. +CDocSaver* CDocSaver::NewL() + { + CDocSaver* self = new (ELeave) CDocSaver; + + CleanupStack::PushL( self ); + self->ConstructL(); + CleanupStack::Pop(); + + return self; + } + +// Destructor +CDocSaver::~CDocSaver() + { + } + +// --------------------------------------------------------- +// CDocSaver::ConfNoteL +// "File saved to SomeApplication" confirmation note. +// +// --------------------------------------------------------- +// +void CDocSaver::ConfNoteL( const TDesC& aText, TBool aWait ) + { + #ifdef _DEBUG + RDebug::Print( _L("DocumentHandler: CDocSaver::ConfNoteL: Called")); + #endif + CAknConfirmationNote* myNote = new ( ELeave ) CAknConfirmationNote( aWait ); + + myNote->ExecuteLD( aText ); + #ifdef _DEBUG + RDebug::Print( _L("DocumentHandler: CDocSaver::ConfNoteL: Returns")); + #endif + } + + +// ================= MEMBER FUNCTIONS ======================= + +// C++ default constructor can NOT contain any code, that +// might leave. +// + + +// CDocWaitDialog +// ---------------------------------------------------------------- + +CDocWaitDialog::CDocWaitDialog( + CEikDialog** aSelfPtr, + const TDesC& aText): + CAknWaitDialog(aSelfPtr, EFalse), + iText(aText), + iFinished(EFalse) + { + } +// --------------------------------------------------------- +// CDocWaitDialog::ExecuteDlgLD() +// +// +// --------------------------------------------------------- +// +TInt CDocWaitDialog::ExecuteDlgLD() + { + PrepareLC(R_DOCHANDLER_WAIT_NOTE); + SetTextL( iText ); + TInt ret = RunDlgLD(CAknNoteDialog::ENoTone); + return ret; + } + +// --------------------------------------------------------- +// CDocWaitDialog::Finish() +// +// +// --------------------------------------------------------- +// +TBool CDocWaitDialog::Finish() + { + #ifdef _DEBUG + RDebug::Print( _L("DocumentHandler: CDocWaitDialog::Finish: Called")); + #endif + TBool state = ETrue; + if (iState == EProcessOnDisplayOff) + { + iProgressDialogTimer->Cancel(); + state = EFalse; + iFinished = ETrue; + } + TRAP_IGNORE( ProcessFinishedL() ); + #ifdef _DEBUG + if (state) + { + RDebug::Print( _L("DocumentHandler: CDocWaitDialog::Finish: state=ETRUE")); + } + else + { + RDebug::Print( _L("DocumentHandler: CDocWaitDialog::Finish: state=EFALSE")); + } + #endif + return state; + } + + +// CDocAsyncSaver +// ---------------------------------------------------------------- +// C++ default constructor can NOT contain any code, that +// might leave. +// + +CDocAsyncSaver::CDocAsyncSaver(): + CActive(EPriorityStandard), + iShowDialog(EFalse), + iSilent(EFalse) + { + } + +// EPOC default constructor can leave. +void CDocAsyncSaver::ConstructL() + { + + } + +// Two-phased constructor. +CDocAsyncSaver* CDocAsyncSaver::NewL() + { + CDocAsyncSaver* self = NewLC(); + CleanupStack::Pop(); + + return self; + } + +CDocAsyncSaver* CDocAsyncSaver::NewLC() + { + CDocAsyncSaver* self = new (ELeave) CDocAsyncSaver(); + + CleanupStack::PushL( self ); + self->ConstructL(); + CActiveScheduler::Add(self); + + return self; + } + + +// Destructor +CDocAsyncSaver::~CDocAsyncSaver() + { + if (iDocWaitDialog) + { + delete iDocWaitDialog; + iDocWaitDialog = NULL; + } + Cancel(); + Deque(); + } +// --------------------------------------------------------- +// CDocAsyncSaver::WriteToFileL() +// +// +// --------------------------------------------------------- +// +void CDocAsyncSaver::WriteToFileL( + const TDesC8& aContent, + RFile& aDestFile, + const TDesC& aText ) + { + iDocWaitDialog = + new (ELeave) CDocWaitDialog( + ( REINTERPRET_CAST( + CEikDialog**, + &iDocWaitDialog ) ), + aText ); + iDocWaitDialog->ExecuteDlgLD(); + aDestFile.Write( aContent, iStatus ); + SetActive(); + iWait.Start(); + + } + +// --------------------------------------------------------- +// CDocAsyncSaver::CopyFileL() +// +// +// --------------------------------------------------------- +// +void CDocAsyncSaver::CopyFileL( + CFileMan* aFileManager, + const TFileName& aSourceFile, + const TFileName& aDestFile, + TUint aSwitch, + const TDesC& aText ) + { + iDocWaitDialog = + new (ELeave) CDocWaitDialog( + ( REINTERPRET_CAST( + CEikDialog**, + &iDocWaitDialog ) ), + aText ); + iDocWaitDialog->ExecuteDlgLD(); + + TInt error = + aFileManager->Copy( + aSourceFile, + aDestFile, + aSwitch, + iStatus ); + + if ( error != KErrNone ) + { + iStatus = error; + iDocWaitDialog->Finish(); + } + else + { + SetActive(); + iWait.Start(); + } + } + +// --------------------------------------------------------- +// CDocAsyncSaver::CopyFileL() +// +// +// --------------------------------------------------------- +// +void CDocAsyncSaver::CopyFileL( + CFileMan* aFileManager, + const RFile& aSourceFile, + const TFileName& aDestFile, + TUint aSwitch, + const TDesC& aText ) + { + iDocWaitDialog = + new (ELeave) CDocWaitDialog( + ( REINTERPRET_CAST( + CEikDialog**, + &iDocWaitDialog ) ), + aText ); + iDocWaitDialog->ExecuteDlgLD(); + + TInt error = + aFileManager->Copy( + aSourceFile, + aDestFile, + aSwitch, + iStatus ); + + if ( error != KErrNone ) + { + iStatus = error; + iDocWaitDialog->Finish(); + } + else + { + SetActive(); + iWait.Start(); + } + } + +// --------------------------------------------------------- +// CDocAsyncSaver::MoveFileL() +// +// +// --------------------------------------------------------- +// +void CDocAsyncSaver::MoveFileL( + CFileMan* aFileManager, + const TFileName& aSourceFile, + const TFileName& aDestFile, + TUint aSwitch, + const TDesC& aText, + const TBool aSilent ) + { + iSilent = aSilent; + if (!iSilent) + { + iDocWaitDialog = + new (ELeave) CDocWaitDialog( + ( REINTERPRET_CAST( + CEikDialog**, + &iDocWaitDialog ) ), + aText ); + iDocWaitDialog->ExecuteDlgLD(); + } + + TInt error = + aFileManager->Move( + aSourceFile, + aDestFile, + aSwitch, + iStatus ); + if ( error != KErrNone ) + { + iStatus = error; + if (!iSilent) + { + iDocWaitDialog->Finish(); + } + } + else + { + SetActive(); + iWait.Start(); + } + } + +// --------------------------------------------------------- +// CDocAsyncSaver::Status() +// +// +// --------------------------------------------------------- +// +TRequestStatus CDocAsyncSaver::Status() + { + return iStatus; + } + +// --------------------------------------------------------- +// CDocAsyncSaver::ShowDialog() +// +// +// --------------------------------------------------------- +// +TBool CDocAsyncSaver::ShowDialog() + { + #ifdef _DEBUG + RDebug::Print( _L("DocumentHandler: CDocAsyncSaver::ShowDialog: Called")); + #endif + iShowDialog = EFalse; + if (iSilent) + { + iShowDialog = EFalse; + } + else if (!iDocWaitDialog->Finish()) + { + iShowDialog = ETrue; + #ifdef _DEBUG + RDebug::Print( _L("DocumentHandler: CDocAsyncSaver::ShowDialog: Returns ETRUE")); + #endif + } + return iShowDialog; + } +// --------------------------------------------------------- +// CDocAsyncSaver::RunL() +// +// +// --------------------------------------------------------- +// +void CDocAsyncSaver::RunL() + { + iWait.AsyncStop(); + } + + +// --------------------------------------------------------- +// CDocAsyncSaver::DoCancel() +// +// +// --------------------------------------------------------- +// +void CDocAsyncSaver::DoCancel() + { + } + +// End of File