voipplugins/voipadapters/voipxmlprovisioning/provisioningappui/Src/VoIPProvisioningAppUi.cpp
changeset 17 6d0b9f605b61
parent 2 7b872347d83b
--- a/voipplugins/voipadapters/voipxmlprovisioning/provisioningappui/Src/VoIPProvisioningAppUi.cpp	Tue Feb 02 00:05:57 2010 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,375 +0,0 @@
-/*
-* Copyright (c) 2009-2010 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:  Application UI implementation.
-*
-*/
-
-
-// INCLUDES
-#include <EIKDOC.H>
-#include <stringloader.h>
-#include <AknQueryDialog.h>
-#include <VoIPProvisioningApp.rsg>
-#include <aknnotewrappers.h>
-#include <apgcli.h> // RApaLsSession
-#include <bautils.h>
-#include <xspviewservices.h>
-#include <BrowserUiSDKCRKeys.h>
-#include <pathinfo.h>
-#include <DriveInfo.h>
-#include <zipfile.h>
-#include <zipfilememberinputstream.h>
-#include <aknwaitdialog.h>
-
-#include "voipxmlparser.h"
-#include "VoIPProvisioningAppUi.h"
-#include "VoIPProvisioningApp.h"
-#include "VoIPProvisioningDocument.h"
-
-const TInt KOneSecond( 1000000 );
-const TUid KMecoServiceTabUid = {0x20012423};
-const TInt KFiveTimes( 5 );
-_LIT( KDownloadFileName, "tempbranddatapackage.zip" );
-_LIT( KBrandMifPath,     ":\\private\\102828DD\\import\\" );
-_LIT( KBrandInstallPath, ":\\private\\102828DD\\import\\install\\" );
-_LIT( KBrandXmlPath,     ":\\private\\102828E1\\import\\" );
-_LIT( KXmlExtension,     ".xml" );
-_LIT( KMifExtension,     ".mif" );
-_LIT( KInstallExtension, ".install" );
-_LIT8( KZipExtension,    ".zip" );
-
-// ----------------------------------------------------------------------------
-// CVoIPProvisioningAppUi::CVoIPProvisioningAppUi
-// ----------------------------------------------------------------------------
-//
-CVoIPProvisioningAppUi::CVoIPProvisioningAppUi()
-    {
-    }
-
-// ----------------------------------------------------------------------------
-// CVoIPProvisioningAppUi::ConstructL
-// ----------------------------------------------------------------------------
-
-void CVoIPProvisioningAppUi::ConstructL()
-    {
-    // Call base classes ConstructL method.
-    BaseConstructL( ENoScreenFurniture | EAknEnableMSK );
-
-    StatusPane()->MakeVisible( EFalse );
-    HideApplicationFromFSW( ETrue );
-
-    iBrandPackageName.Copy( PathInfo::PhoneMemoryRootPath() );
-    iBrandPackageName.Append( PathInfo::OthersPath() );
-    iBrandPackageName.Append( KDownloadFileName );
-    }
-
-// ----------------------------------------------------------------------------
-// CVoIPProvisioningAppUi::~CVoIPProvisioningAppUi
-// ----------------------------------------------------------------------------
-//
-CVoIPProvisioningAppUi::~CVoIPProvisioningAppUi()
-    {
-    iDownloadMgr.Close();
-    if ( iWaitDialog )
-        {
-        TRAP_IGNORE( iWaitDialog->ProcessFinishedL() );
-        iWaitDialog = NULL;
-        }
-    }
-
-// ----------------------------------------------------------------------------
-// CVoIPProvisioningAppUi::ProcessCommandParametersL
-// ----------------------------------------------------------------------------
-//
-TBool CVoIPProvisioningAppUi::ProcessCommandParametersL(
-    TApaCommand /*aCommand*/, TFileName& /*aDocumentName*/,
-    const TDesC8& /*aTail*/ )
-    {
-    // Always return ETrue to make CVoIPProvisioningDocument's
-    // OpenFileL to be called.
-    return ETrue;
-    }
-
-// ----------------------------------------------------------------------------
-// CVoIPProvisioningAppUi::HandleFileL
-// ----------------------------------------------------------------------------
-//
-void CVoIPProvisioningAppUi::HandleFileL( RFile& aFile )
-    {
-    RFile file;
-    User::LeaveIfError( file.Duplicate( aFile ) );
-    CVoipXmlParser* parser = CVoipXmlParser::NewLC(); // CS:1
-    TBuf8<KMaxFileName> brandUrl( KNullDesC8 );
-    HBufC* queryText = parser->ReadDescriptionLC( aFile, brandUrl ); // CS:2
-    if ( !queryText->Des().Length() )
-        {
-        CleanupStack::PopAndDestroy( queryText );
-        queryText = NULL;
-        queryText = StringLoader::LoadLC( R_VOIP_DEFAULT_SAVE_QUERY );
-        }
-    CAknQueryDialog* query = CAknQueryDialog::NewL();
-    CleanupStack::PushL( query ); // CS:3
-    query->SetPromptL( queryText->Des() );
-    TBool launchTab( EFalse );
-    TUint32 serviceTabId;
-    if ( query->ExecuteLD( R_VOIP_PROVISIONING_QUERY_INSTALL_SERVICE ) )
-        {
-        iWaitDialog = new( ELeave ) CAknWaitDialog( 
-            REINTERPRET_CAST( CEikDialog**, &iWaitDialog ) );
-        iWaitDialog->SetTone( CAknNoteDialog::ENoTone );
-        iWaitDialog->ExecuteLD( R_WAITNOTE_CONFIGURE );
-
-        FetchBrandingDataL( brandUrl );
-
-        // Start phonebook into backgound.
-        RxSPViewServices viewServices;
-        CleanupClosePushL( viewServices ); // CS:4
-        TInt viewSrvErr = viewServices.Open();
-        if ( KErrServerTerminated == viewSrvErr || KErrNotFound == viewSrvErr )
-            {
-            viewServices.Close();
-            viewSrvErr = viewServices.Open();
-            }
-        if ( KErrNone == viewSrvErr )
-            {
-            viewServices.Close();
-            }
-
-        // Ownership of file is trasferred.
-        TInt error = parser->ImportDocument( file, serviceTabId );
-        if ( KErrNone == error )
-            {
-            iWaitDialog->ProcessFinishedL();
-            iWaitDialog = NULL;
-            ShowDoneNoteL();
-            launchTab = ETrue;
-            }
-        else
-            {
-            iWaitDialog->ProcessFinishedL();
-            iWaitDialog = NULL;
-            ShowFailNoteL();
-            }
-        CleanupStack::PopAndDestroy( &viewServices ); // CS:3
-        }
-    CleanupStack::Pop( query ); // CS:2
-    // queryText, parser
-    CleanupStack::PopAndDestroy( 2, parser ); // CS:0
-
-    // Launch service tab.
-    if ( launchTab )
-        {
-        TInt err = KErrNotFound;
-        TInt counter( 0 );
-        RxSPViewServices viewServices;
-        CleanupClosePushL( viewServices ); // CS:1
-        while ( KErrNone != err && KFiveTimes > counter )
-            {
-            err = viewServices.Activate( 
-                KMecoServiceTabUid.iUid, (TInt32)serviceTabId );
-            if ( KErrServerTerminated == err || KErrNotFound == err )
-                {
-                err = viewServices.Activate( 
-                    KMecoServiceTabUid.iUid, (TInt32)serviceTabId );
-                }
-            // Wait...
-            User::After( KOneSecond );
-            counter++;
-            }
-
-        CleanupStack::PopAndDestroy( &viewServices ); // CS:0
-        TApaTaskList taskList( CEikonEnv::Static()->WsSession() );
-        TApaTask browserTask = taskList.FindApp( KCRUidBrowser );
-        if ( browserTask.Exists() )
-            {
-            browserTask.EndTask();
-            }
-        }
-
-    if ( iWaitDialog )
-        {
-        iWaitDialog->ProcessFinishedL();
-        iWaitDialog = NULL;
-        }
-
-    iDownloadMgr.Close();
-#ifndef __EUNIT_TESTING
-    User::Exit( KErrNone );
-#endif
-    }
-
-// ----------------------------------------------------------------------------
-// CVoIPProvisioningAppUi::ShowFailNoteL
-// ----------------------------------------------------------------------------
-//
-void CVoIPProvisioningAppUi::ShowFailNoteL() const
-    {
-    HBufC* text = StringLoader::LoadLC( R_VOIP_INVALID_DATA );
-    CAknErrorNote* note = new (ELeave) CAknErrorNote( R_AKN_ERROR_NOTE );
-    note->ExecuteLD( *text );
-    CleanupStack::PopAndDestroy( text );
-    }
-
-// ----------------------------------------------------------------------------
-// CVoIPProvisioningAppUi::ShowDoneNoteL
-// ----------------------------------------------------------------------------
-//
-void CVoIPProvisioningAppUi::ShowDoneNoteL() const
-    {
-    HBufC* text = StringLoader::LoadLC( R_VOIP_INSTALLED );
-    CAknInformationNote* note =
-        new (ELeave) CAknInformationNote( R_AKN_INFORMATION_NOTE );
-    note->ExecuteLD( *text );
-    CleanupStack::PopAndDestroy( text );
-    }
-
-// ---------------------------------------------------------------------------
-// From base class MHttpDownloadMgrObserver.
-// Handles download manager events.
-// ---------------------------------------------------------------------------
-//
-void CVoIPProvisioningAppUi::HandleDMgrEventL( RHttpDownload& aDownload,
-    THttpDownloadEvent aEvent )
-    {
-    if ( EHttpDlPaused == aEvent.iDownloadState && 
-        EHttpContentTypeReceived == aEvent.iProgressState )
-        {
-        TInt32 length;
-        TInt err = aDownload.GetIntAttribute( EDlAttrLength, length );
-        if ( KDefaultContentLength != length && 0 < length )
-            {
-            // Continue.
-            aDownload.Start();
-            }
-        else
-            {
-            CActiveScheduler::Stop();
-            aDownload.Delete();
-            }
-        }
-    else if ( EHttpDlCompleted == aEvent.iDownloadState )
-        {
-        CActiveScheduler::Stop();
-        // We don't need the leave code; un-branded service is OK.
-        TRAP_IGNORE( UncompressFilesL() );
-        aDownload.Delete();
-        }
-    else if ( EHttpDlFailed == aEvent.iDownloadState )
-        {
-        CActiveScheduler::Stop();
-        aDownload.Delete();
-        }
-    else if ( EHttpDlInprogress == aEvent.iDownloadState && 
-        EHttpProgDisconnected == aEvent.iProgressState )
-        {
-        CActiveScheduler::Stop();
-        aDownload.Delete();
-        }
-    }
-
-// ---------------------------------------------------------------------------
-// Starts branding data download.
-// ---------------------------------------------------------------------------
-//
-TInt CVoIPProvisioningAppUi::FetchBrandingDataL( const TDesC8& aUrl )
-    {
-    if ( !aUrl.Length() || KErrNotFound == aUrl.Find( KZipExtension ) )
-        {
-        return KErrNotFound;
-        }
-    iDownloadMgr.ConnectL( KUidVoIPProvisioningAppUid, *this, EFalse );
-    RHttpDownload& download = iDownloadMgr.CreateDownloadL( aUrl );
-    download.SetStringAttribute( EDlAttrDestFilename, iBrandPackageName );
-    TInt err = download.Start();
-    CActiveScheduler::Start();
-    return err;
-    }
-
-// ---------------------------------------------------------------------------
-// Uncompresses files from a zip file.
-// ---------------------------------------------------------------------------
-//
-void CVoIPProvisioningAppUi::UncompressFilesL()
-    {
-    RFs fs;
-    User::LeaveIfError( fs.Connect() );
-    CleanupClosePushL( fs ); // CS:1
-    CZipFile* zipfile = CZipFile::NewL( fs, iBrandPackageName );
-    CleanupStack::PushL( zipfile ); // CS:2
-    CZipFileMemberIterator* iterator = zipfile->GetMembersL();
-    CleanupStack::PushL( iterator ); // CS:3
-    CZipFileMember* fileMember = iterator->NextL();
-    TChar drive;
-    DriveInfo::GetDefaultDrive( DriveInfo::EDefaultPhoneMemory, drive );
-
-    RFile output;
-    CleanupClosePushL( output ); // CS:4
-
-    while ( fileMember )
-        {
-        TFileName memberFileName = *fileMember->Name();
-        TFileName outputPath;
-        outputPath.Append( drive );
-        if ( KErrNotFound != memberFileName.Find( KXmlExtension ) )
-            {
-            outputPath.Append( KBrandXmlPath );
-            outputPath.Append( memberFileName );
-            }
-        else if ( KErrNotFound != memberFileName.Find( KInstallExtension ))
-            {
-            outputPath.Append( KBrandInstallPath );
-            outputPath.Append( memberFileName );
-            }
-        else if ( KErrNotFound != memberFileName.Find( KMifExtension ))
-            {
-            outputPath.Append( KBrandMifPath );
-            outputPath.Append( memberFileName );
-            }
-        else
-            {
-            // Ignore this file and get next file from zip.
-            fileMember = iterator->NextL();
-            break;
-            }
-
-        TInt err = fs.MkDirAll( outputPath );
-        err = output.Replace( fs, outputPath, EFileShareAny|EFileWrite );
-
-        TUint32 size = fileMember->UncompressedSize();
-        RBuf8 outputData;
-        outputData.CreateL( size );
-        CleanupClosePushL( outputData ); // CS:5
-        RZipFileMemberReaderStream* stream;
-        zipfile->GetInputStreamL( fileMember, stream );
-        CleanupStack::PushL( stream ); // CS:6
-
-        err = stream->Read( outputData, size );
-        err = output.Write( outputData );
-
-        output.Flush();
-
-        // stream, &outputData
-        CleanupStack::PopAndDestroy( 2, &outputData ); // CS:4
-
-        fileMember = iterator->NextL();
-        }
-    // &output, iterator, zipfile, &fs
-    CleanupStack::PopAndDestroy( 3, zipfile ); // CS:1
-
-    // Finally, delete temp zip file.
-    fs.Delete( iBrandPackageName );    
-    CleanupStack::PopAndDestroy( &fs ); // CS:0
-    }
-
-// End of file.