commonuis/CommonUi/src/DocSaver.cpp
changeset 0 2f259fa3e83a
--- /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