--- /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 <aknnotewrappers.h>
+#include <documenthandlerui.rsg> // 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