iaupdate/IAD/updater/src/iaupdaterdialog.cpp
changeset 0 ba25891c3a9e
child 29 26b6f0522fd8
child 65 7333d7932ef7
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/iaupdate/IAD/updater/src/iaupdaterdialog.cpp	Thu Dec 17 08:51:10 2009 +0200
@@ -0,0 +1,250 @@
+/*
+* Copyright (c) 2007-2008 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:   This file contains the implementation of CDialogWrapper
+*
+*/
+
+
+
+#include <AknGlobalNote.h>
+#include <avkon.rsg>
+#include <bautils.h>
+#include <data_caging_path_literals.hrh> 
+#include <iaupdater.rsg>
+#include <StringLoader.h>
+#include <AknUtils.h>   //For AknTextUtils
+
+#include "iaupdaterdialog.h"
+#include "iaupdaterdefs.h"
+#include "iaupdatercancelobserver.h"
+#include "iaupdatedebug.h"
+
+
+// ======== LOCAL FUNCTIONS ========
+
+// ======== MEMBER FUNCTIONS ========
+
+
+// -----------------------------------------------------------------------------
+// CIAUpdaterDialog::CIAUpdaterDialog
+// C++ default constructor 
+// -----------------------------------------------------------------------------
+//
+CIAUpdaterDialog::CIAUpdaterDialog( RFs& aFs, 
+                                    MIAUpdaterCancelObserver& aObserver )
+: CActive( CActive::EPriorityStandard ),
+  iFs( aFs ),
+  iObserver ( &aObserver ) 
+    {
+    CActiveScheduler::Add( this );
+    }
+
+
+// -----------------------------------------------------------------------------
+// CIAUpdaterDialog::NewL
+// Two-phased constructor.
+// -----------------------------------------------------------------------------
+//
+CIAUpdaterDialog* CIAUpdaterDialog::NewL( RFs& aFs, 
+                                          MIAUpdaterCancelObserver& aObserver )
+    {
+    CIAUpdaterDialog* self =
+        CIAUpdaterDialog::NewLC( aFs, aObserver );
+    CleanupStack::Pop( self );
+    return self;    
+    }
+
+
+// -----------------------------------------------------------------------------
+// CIAUpdaterDialog::NewLC
+// Two-phased constructor.
+// -----------------------------------------------------------------------------
+//
+CIAUpdaterDialog* CIAUpdaterDialog::NewLC( RFs& aFs, 
+                                           MIAUpdaterCancelObserver& aObserver )
+    {
+    CIAUpdaterDialog* self = 
+        new( ELeave ) CIAUpdaterDialog( aFs, aObserver );
+    CleanupStack::PushL( self );
+    self->ConstructL();
+    return self;    
+    }
+
+
+// -----------------------------------------------------------------------------
+// CIAUpdaterDialog::ConstructL
+// Symbian 2nd phase constructor can leave.
+// -----------------------------------------------------------------------------
+//
+void CIAUpdaterDialog::ConstructL()
+    {
+    IAUPDATE_TRACE("[IAUpdater] CIAUpdaterDialog::ConstructL begin");
+    
+    // Get resource file path
+    TFileName fileName;
+    fileName.Copy( TParsePtrC( RProcess().FileName() ).Drive() );
+    fileName.Append( KDC_APP_RESOURCE_DIR );
+    fileName.Append( IAUpdaterDefs::KIAUpdaterResourceFile );
+    
+    // Get language of resource file        
+    BaflUtils::NearestLanguageFile( iFs, fileName );
+
+    // Open resource file
+    iResourceFile.OpenL( iFs, fileName );
+    iResourceFile.ConfirmSignatureL();    
+
+    IAUPDATE_TRACE("[IAUpdater] CIAUpdaterDialog::ConstructL end");
+    }
+
+ 
+// -----------------------------------------------------------------------------
+// CIAUpdaterDialog::~CIAUpdaterDialog()
+// C++ Destructor
+// -----------------------------------------------------------------------------
+//
+CIAUpdaterDialog::~CIAUpdaterDialog()
+    {
+    Cancel();
+    delete iNote;
+    iResourceFile.Close();    
+    }
+
+
+// -----------------------------------------------------------------------------
+// CIAUpdaterDialog::ShowWaitingNoteL  
+// Show global waiting note during installing.
+// -----------------------------------------------------------------------------
+// 
+void CIAUpdaterDialog::ShowWaitingNoteL( const TDesC& aName, TInt aIndex, TInt aTotalCount )
+	{	
+	IAUPDATE_TRACE("[IAUpdater] CIAUpdaterDialog::ShowWaitingNoteL begin");
+	if ( iNoteId == 0 )
+		{ 		                             
+	    IAUPDATE_TRACE("[IAUpdater] Creating global waiting note.");
+	
+        // Get localiced string from resc. file. 
+        HBufC* string = ReadResourceLC( R_IAUPDATER_INSTALLING ); 
+                                          
+        HBufC* temp1 = HBufC::NewLC( string->Length() + aName.Length() );          
+        TPtr temp1Ptr = temp1->Des();
+        
+        // Add pkg's name to string (U0).
+        StringLoader::Format( temp1Ptr, *string, 0, aName );
+                                        
+        // Increase buffer length for the number.        
+        HBufC* temp2 = 
+            HBufC::NewLC( temp1->Length() + IAUpdaterDefs::KIAUpdaterParamLen );        
+        TPtr temp2Ptr = temp2->Des();
+         
+        // Add index number to string (N1) 
+        StringLoader::Format( temp2Ptr, *temp1, 1, aIndex );
+                        
+        // Increase buffer length for the number.  
+        HBufC* finalString = 
+            HBufC::NewLC( temp2->Length() + IAUpdaterDefs::KIAUpdaterParamLen );        
+        TPtr finalPtr = finalString->Des();
+        
+        // Add max count number to string (N2) 
+        StringLoader::Format( finalPtr, *temp2, 2, aTotalCount );
+        
+        AknTextUtils::DisplayTextLanguageSpecificNumberConversion( finalPtr );         
+        if ( !iNote )
+            {
+        	iNote = CAknGlobalNote::NewL();   
+    	    iNote->SetSoftkeys( R_AVKON_SOFTKEYS_CANCEL );
+            }
+     	
+	    IAUPDATE_TRACE("[IAUpdater] Showing global waiting note.");
+    	iNoteId = iNote->ShowNoteL( iStatus, EAknGlobalWaitNote, *finalString );
+    	SetActive();    	    	
+     
+    	CleanupStack::PopAndDestroy( finalString );
+    	CleanupStack::PopAndDestroy( temp2 );
+    	CleanupStack::PopAndDestroy( temp1 );
+    	CleanupStack::PopAndDestroy( string );
+		}
+	IAUPDATE_TRACE("[IAUpdater] CIAUpdaterDialog::ShowWaitingNoteL end");
+	}
+
+	
+// -----------------------------------------------------------------------------
+// CIAUpdaterDialog::CancelWaitingNoteL  
+// Cancel global waiting note after installing.
+// -----------------------------------------------------------------------------
+// 
+void CIAUpdaterDialog::CancelWaitingNoteL()
+	{
+    IAUPDATE_TRACE("[IAUpdater] CIAUpdaterDialog::CancelWaitingNoteL begin");
+	
+	if ( iNoteId != 0 )
+		{
+        IAUPDATE_TRACE("[IAUpdater] Cancel waiting note.");
+	    iNote->CancelNoteL( iNoteId );
+	    iNoteId = 0;
+		}
+
+    IAUPDATE_TRACE("[IAUpdater] CIAUpdaterDialog::CancelWaitingNoteL end");
+	}
+
+	
+// -----------------------------------------------------------------------------	
+// CIAUpdaterDialog::LoadResourceLC
+// Read resource string.
+// -----------------------------------------------------------------------------
+// 
+HBufC* CIAUpdaterDialog::ReadResourceLC( TInt aResourceId )
+    {
+    TResourceReader reader;
+    HBufC8* buff = iResourceFile.AllocReadLC( aResourceId );    
+    reader.SetBuffer( buff );
+    HBufC* text = reader.ReadHBufCL();
+    CleanupStack::PopAndDestroy( buff );
+    CleanupStack::PushL( text );
+
+    return text;
+    }
+    
+    
+// ---------------------------------------------------------------------------
+// CIAUpdaterDialog:::DoCancel
+// 
+// ---------------------------------------------------------------------------
+// 
+void CIAUpdaterDialog::DoCancel()
+    {
+    TRAP_IGNORE( CancelWaitingNoteL() );
+    }
+
+// ---------------------------------------------------------------------------
+// CIAUpdateNetworkRegistration::RunL()
+// 
+// ---------------------------------------------------------------------------
+//
+void CIAUpdaterDialog::RunL()
+    {
+    IAUPDATE_TRACE_1("[IAUpdater] CIAUpdaterDialog::RunL() iStatus : %d", iStatus.Int() );
+    iNoteId = 0;
+    if ( iStatus.Int() == EAknSoftkeyCancel )
+        {
+    	iObserver->UserCancel();
+        }
+    else
+        {
+        iObserver->UserExit();	
+        }
+    }
+
+// ======== GLOBAL FUNCTIONS ========
+
+//  EOF