homesync/contentmanager/homesyncwizard/src/cmsappwizard.cpp
branchIOP_Improvements
changeset 40 08b5eae9f9ff
parent 39 6369bfd1b60d
child 41 b4d83ea1d6e2
--- a/homesync/contentmanager/homesyncwizard/src/cmsappwizard.cpp	Mon Nov 01 13:44:24 2010 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,1254 +0,0 @@
-/*
-* Copyright (c) 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:  Implementation of setup Wizard
-*
-*/
-
-
-// INCLUDE FILES
-#include <StringLoader.h>
-#include <cmsappwizard.rsg>
-#include "upnpavdevice.h"
-#include "upnpavcontroller.h"
-#include "upnpavcontrollerfactory.h"
-#include <driveinfo.h>
-#include <utf.h>
-#include <aknnotewrappers.h>
-
-#include "cmdriveinfo.h"
-#include "cmmediaserverfull.h"
-#include "cmstorerulecontainer.h"
-#include "cmstorerule.h"
-#include "cmfillrulecontainer.h"
-#include "cmfillrule.h"
-#include "cmsappwizard.h"
-#include "msengine.h"
-#include "cmsmultiselectionpopup.h"
-#include "cmsselectionstorage.h"
-#include "msconstants.h"
-#include "msdebug.h"
-#include "upnpavdevicelist.h"
-
-// CONSTANTS
-_LIT( KMSSetupWizardRscFile, "\\resource\\apps\\cmsappwizard.rsc" );
-#ifdef _DEBUG
-_LIT( KPanicedUnit, "MSAPPWIZARD" );
-#endif // _DEBUG
-
-const TInt KArrayGranularity = 3;
-const TInt KFillListGranularity = 3;
-const TInt KStoreListGranularity = 5;
-
-
-// --------------------------------------------------------------------------
-// CMSAppWizard::CMSAppWizard
-// --------------------------------------------------------------------------
-//
-CMSAppWizard::CMSAppWizard( CMSEngine& aMSEngine )
-    {
-    iMSEngine = &aMSEngine;
-    iMaxSteps = ELastStep;
-    LOG(_L("[MSAppWizard]\t CMSAppWizard::CMSAppWizard"));
-    }
-
-// --------------------------------------------------------------------------
-// CMSAppWizard::ConstructL()
-// Symbian 2nd phase constructor can leave.
-// --------------------------------------------------------------------------
-//
-void CMSAppWizard::ConstructL()
-    {
-    LOG(_L("[MSAppWizard]\t CMSAppWizard::ConstructL begin"));
-
-    iCoeEnv = CEikonEnv::Static();
-    iFileSession = iCoeEnv->FsSession();
-
-    // Load resource file
-    TFileName rscFileName( KMSSetupWizardRscFile );
-    User::LeaveIfError( CompleteWithAppPath( rscFileName ) );
-
-    // Get the exact filename of the resource file
-    BaflUtils::NearestLanguageFile( iFileSession, rscFileName );
-    // Check if the resource file exists or not
-    if ( !BaflUtils::FileExists( iFileSession, rscFileName ) )
-        {
-        User::Leave( KErrNotFound );
-        }
-
-    TInt err(KErrNone);
-    TRAP( err, iResFileOffset = iCoeEnv->AddResourceFileL( rscFileName ) );
-    User::LeaveIfError( err );
-
-    iSelections = CMSSelectionStorage::NewL( *iMSEngine,
-                                             iMediaServers,
-                                             iFileSession );
-
-    iDeviceNameArray = new (ELeave) CDesCArrayFlat( KArrayGranularity );
-
-    // original servers
-    iOriginalServers = iMSEngine->GetMediaServersL();
-    ClearServersSystemUpdateId();
-
-    // Start searching servers
-    TInt error = CreateAvControllerL();
-    if ( !error && iAvController )
-        {
-        // Process devices that AVController has already discovered.
-        FetchAlreadyDiscoveredDevicesL();
-        }
-    
-#if _DEBUG
-    RDebug::Printf("[MSAppWizard]\t CMSAppWizard::ConstructL: %s, %s\n",\
-__DATE__,__TIME__);
-#endif
-    LOG( _L("[MSAppWizard]\t CMSAppWizard::ConstructL end") );
-    }
-
-// --------------------------------------------------------------------------
-// CMSAppWizard::NewL()
-// Two-phased constructor.
-// --------------------------------------------------------------------------
-//
-EXPORT_C CMSAppWizard* CMSAppWizard::NewL( CMSEngine& aMSEngine )
-    {
-    LOG( _L("[MSAppWizard]\t CMSAppWizard::NewL begin") );
-
-    CMSAppWizard* self = CMSAppWizard::NewLC( aMSEngine );
-    
-    CleanupStack::Pop( self );
-    LOG( _L("[MSAppWizard]\t CMSAppWizard::NewL end") );
-    return self;
-    }
-
-// --------------------------------------------------------------------------
-// CMSAppWizard::NewLC()
-// Two-phased constructor.
-// --------------------------------------------------------------------------
-//
-EXPORT_C CMSAppWizard* CMSAppWizard::NewLC( CMSEngine& aMSEngine )
-    {
-    LOG( _L("[MSAppWizard]\t CMSAppWizard::NewLC begin") );
-
-    CMSAppWizard* self = new ( ELeave) CMSAppWizard( aMSEngine );
-    CleanupStack::PushL( self );
-
-    self->ConstructL();
-
-    LOG( _L("[MSAppWizard]\t CMSAppWizard::NewLC end") );
-    return self;
-    }    
-
-// --------------------------------------------------------------------------
-// Destructor
-// --------------------------------------------------------------------------
-//
-CMSAppWizard::~CMSAppWizard()
-    {
-    LOG( _L("[MSAppWizard]\t CMSAppWizard::~CMSAppWizard begin") );
-
-    // stop device search
-    CancelDeviceSearch();
-    
-    // UnLoad resource file
-    iCoeEnv->DeleteResourceFile( iResFileOffset );
-
-    if ( iOriginalServers )
-        {
-        iOriginalServers->ResetAndDestroy();
-        iOriginalServers->Close();
-        delete iOriginalServers;
-        }
-
-    if ( iDeviceNameArray )
-        {
-        iDeviceNameArray->Reset();
-        delete iDeviceNameArray;
-        }
-
-    iDriveIndexes.Close();
-
-    iDriveArray.ResetAndDestroy();
-    iDriveArray.Close();
-
-    iStoreServers.Reset();
-    iStoreServers.Close();
-
-    iMediaServers.ResetAndDestroy();
-    iMediaServers.Close();
-
-    delete iSelections;
-
-    if ( iAvController )
-        {
-        iAvController->RemoveDeviceObserver();
-		iAvController->Release();
-		iAvController = NULL;
-        }
-
-    CloseWaitDialog();
-
-    if ( iWait.IsStarted() )
-        {
-        iWait.AsyncStop();
-        }
-
-    LOG( _L("[MSAppWizard]\t CMSAppWizard::~CMSAppWizard end") );
-    }
-
-// --------------------------------------------------------------------------
-// CMSAppWizard::StartL
-// The main loop of setup wizard
-// --------------------------------------------------------------------------
-//
-
-EXPORT_C TInt CMSAppWizard::StartL()
-    {
-    LOG( _L("[MSAppWizard]\t CMSAppWizard::StartL begin") );
-    TInt ret(KErrNone);
-    do
-        {
-        switch ( iStep )
-            {
-            case EStep1:
-                {
-                HBufC* head = StringLoader::LoadLC(
-                                        R_MS_HEADING_STEP_1, ELastStep );
-                ret = ShowInfoStepL( iStep, head->Des() );
-                CleanupStack::PopAndDestroy( head );
-                break;
-                }
-            case EStep2:
-                {
-                HBufC* head = StringLoader::LoadLC(
-                                        R_MS_HEADING_STEP_2, ELastStep );
-                ret = ShowInfoStepL( iStep, head->Des() );
-                CleanupStack::PopAndDestroy( head );
-                break;
-                }
-            case EStep3:
-                {
-                HBufC* head = StringLoader::LoadLC(
-                                        R_MS_HEADING_STEP_3, ELastStep );                
-                
-                CDesCArrayFlat* itemArray =
-                                    CreateMultiselectionFillListItemsLC();
-
-                CArrayFix<TInt>* resultArray =
-                    new (ELeave) CArrayFixFlat<TInt>( KFillListGranularity );
-                CleanupStack::PushL( resultArray );
-                                                    
-                ret = ShowMultiselectionStepL( *itemArray,
-                                               *resultArray,
-                                               head->Des() );
-                // keep selection safe
-                iSelections->SetFillListSelections( *resultArray );                
-                CleanupStack::Pop( resultArray );
-                CleanupStack::PopAndDestroy( itemArray );                                                           
-                CleanupStack::PopAndDestroy( head );
-                break;
-                }
-            case EStep4:
-                {
-                HBufC* head = StringLoader::LoadLC(
-                                        R_MS_HEADING_STEP_4, ELastStep );
-                ret = ShowInfoStepL( iStep, head->Des() );
-                CleanupStack::PopAndDestroy( head );
-                break;
-                }
-            case EStep5:
-                {
-                CreateServerNameListL( iMediaServers );
-                
-                if ( iDeviceNameArray->Count() == 0 )
-                    {
-                    // no devices yet - show wait note                
-                    ShowWaitNoteL();
-                    // wait here for the first device before
-                    // showing device selection
-                    iWait.Start();                    
-                    }
-                if ( !iUserCancelledSearch )
-                    {
-                    HBufC* head = StringLoader::LoadLC(
-                                        R_MS_HEADING_STEP_5, ELastStep );
-
-                    CArrayFix<TInt>* selectedIndexes =
-                       new (ELeave) CArrayFixFlat<TInt>( KArrayGranularity );
-                    CleanupStack::PushL( selectedIndexes );                                                      
-                    ret = ShowMultiselectionStepL( *iDeviceNameArray,
-                                               *selectedIndexes,
-                                               head->Des() );
-                    iSelections->SetServersForFillRulesL( *selectedIndexes );
-                    CleanupStack::PopAndDestroy( selectedIndexes );
-                    CleanupStack::PopAndDestroy( head );                
-                    }
-                else
-                    {
-                    ret = KErrCancel;
-                    }                                
-                
-                break;
-                }
-            case EStep6:
-                {
-                HBufC* head = StringLoader::LoadLC(
-                                        R_MS_HEADING_STEP_6, ELastStep );
-                ret = ShowInfoStepL( iStep, head->Des() );
-                CleanupStack::PopAndDestroy( head );
-                break;
-                }
-            case EStep7:
-                {
-                HBufC* head = StringLoader::LoadLC(
-                                        R_MS_HEADING_STEP_7, ELastStep );
-                //used CreateMultiselectionStoreListItemsLC before, modify then to 
-                //make it the same with UI spec
-                CDesCArrayFlat* itemArray =
-                                    CreateMultiselectionUIStoreListStringLC();
-
-                CArrayFix<TInt>* resultArray =
-                   new (ELeave) CArrayFixFlat<TInt>( KStoreListGranularity );
-                CleanupStack::PushL( resultArray );    
-                                                    
-                ret = ShowMultiselectionStepL( *itemArray,
-                                               *resultArray,
-                                               head->Des() ); 
-                // keep selection safe
-                iSelections->SetStoreListSelections( *resultArray );                                                                
-                CleanupStack::Pop( resultArray );
-                CleanupStack::PopAndDestroy( itemArray );                
-                CleanupStack::PopAndDestroy( head );
-                break;
-                }
-            case EStep8:
-                {
-                HBufC* head = StringLoader::LoadLC(
-                                        R_MS_HEADING_STEP_8, ELastStep );
-                ret = ShowInfoStepL( iStep, head->Des() );
-                CleanupStack::PopAndDestroy( head );
-                break;
-                }
-            case EStep9:
-                {                
-                HBufC* head = StringLoader::LoadLC(
-                                    R_MS_HEADING_STEP_9, ELastStep );
-                                    
-				// Clear previous store servers
-    			iStoreServers.Reset();
-    			
-        		// copy those media servers to store servers list, 
-        		// where copy capability is active
-				for ( TInt index=0; index < iMediaServers.Count(); index++ )
-					{
-					if ( iMediaServers.operator[](index)->CopyCapability() )
-						{
-						iStoreServers.AppendL( 
-						    iMediaServers.operator[]( index ) );
-						}
-					}
-
-                // append items to iDeviceNameArray
-                CreateServerNameListL( iStoreServers );
-
-                CArrayFix<TInt>* selectedIndexes =
-                       new (ELeave) CArrayFixFlat<TInt>( KArrayGranularity );
-                CleanupStack::PushL( selectedIndexes );                       
-
-                if ( iDeviceNameArray->Count() )
-                    {
-                    ret = ShowMultiselectionStepL( *iDeviceNameArray,
-                                               *selectedIndexes,
-                                               head->Des() ); 
-                    if ( ret > 0 && selectedIndexes->Count() == 0 )
-                        {
-                        ShowInfoNoteL( R_MS_NO_TARGET_DEVICES_SELECTED_INFO );
-                        // clear store list selections
-                        iSelections->ClearStoreListSelections();
-                        }                                                
-                    iSelections->SetServersForStoreRulesL( *selectedIndexes,
-                                                           iStoreServers );
-                    }
-                else // no devices available - show info note
-                    {
-                    ret = ShowInfoStepL( iStep, head->Des() );
-                    if ( ret > KErrNone )
-                        {                        
-                        // clear store list selections
-                        iSelections->ClearStoreListSelections();
-                        iSelections->SetServersForStoreRulesL(
-                                                *selectedIndexes,
-                                                iStoreServers );
-                        }
-                    }                    
-                
-                CleanupStack::PopAndDestroy( selectedIndexes );                                    
-                CleanupStack::PopAndDestroy( head );                                                                                  
-                break;
-                }
-
-            case EStep10:
-                {
-                HBufC* head = StringLoader::LoadLC(
-                                        R_MS_HEADING_STEP_10, ELastStep );
-                ret = ShowInfoStepL( iStep, head->Des() );
-                CleanupStack::PopAndDestroy( head );
-                break;
-                }
-            case EStep11:
-                {
-                HBufC* head = StringLoader::LoadLC(
-                                        R_MS_HEADING_STEP_11, ELastStep );
-                ret = ShowListStepL( R_MS_WIZARD_SELECTION_DIALOG_8,
-                                     head->Des() );
-                CleanupStack::PopAndDestroy( head );
-                break;
-                }
-            case EStep12:
-                {
-                 // two parameters
-                CArrayFix<TInt>* stepArray =
-                                new ( ELeave ) CArrayFixFlat<TInt>(2);
-                CleanupStack::PushL( stepArray );
-                stepArray->AppendL( ELastStep );                                
-                stepArray->AppendL( ELastStep );
-                HBufC* head = StringLoader::LoadLC(
-                                        R_MS_HEADING_STEP_12, *stepArray );                
-                ret = ShowInfoStepL( iStep, head->Des() );                
-                CleanupStack::PopAndDestroy( head );
-                CleanupStack::PopAndDestroy( stepArray );
-                break;
-                }                
-            case ELastStep:
-                {                
-                // stop device search
-                CancelDeviceSearch();
-                
-                // set remove status and name to old servers
-                CheckAndSetServerStateL();
-                // clear ids again because there might be new unselected servers
-                ClearServersSystemUpdateId();
-
-                iMSEngine->SetMediaServersL( *iOriginalServers );
-
-                // Set used drives
-                iSelections->SetDriveInformationL();
-
-                iSelections->StoreMSSettingsL();
-
-                ret = ELastStep; // stop looping
-                break;
-                }
-            case ECancelWizard:
-            	{
-                // stop device search
-                CancelDeviceSearch();
-                
-            	// Wizard is cancelled, do not start information refreshing
-            	ret = KErrNone;
-            	break;
-            	}
-            default :
-                {
-                LOG( _L("[MSAppWizard]\t CMSAppWizard::StartL: default!") );
-                __ASSERT_DEBUG( EFalse, User::Panic( KPanicedUnit, 0 ) );
-                break;
-                }
-            }
-            
-        SetNextStep( ret );
-        }
-    while ( iStep != EWizardEnd );
-    
-    LOG(_L("[MSAppWizard]\t CMSAppWizard::StartL end"));
-    
-    return ret;
-    }
-
-// ---------------------------------------------------------------------------
-// CMSAppWizard::DialogDismissedL
-// ---------------------------------------------------------------------------
-//
-void CMSAppWizard::DialogDismissedL( TInt aButtonId )
-    {
-    LOG(_L("[MSAppWizard]\t CMSAppWizard::DialogDismissedL"));
-    if( aButtonId != EAknSoftkeyDone )
-        {
-        LOG(_L("[MSAppWizard]\t CMSAppWizard::DialogDismissedL CANCEL"));
-        if ( aButtonId == EAknSoftkeyCancel )
-            {
-            iUserCancelledSearch = ETrue;
-            }
-        }
-    if ( iWait.IsStarted() )
-        {
-        iWait.AsyncStop();
-        }
-    }
-
-// --------------------------------------------------------------------------
-// CMSAppWizard::ShowInfoNoteL
-// --------------------------------------------------------------------------
-//
-void CMSAppWizard::ShowInfoNoteL( TInt aBodyTextResource )
-    {
-    LOG(_L("[MSAppWizard]\t CMSAppWizard::ShowInfoNoteL"));
-    CAknInformationNote* dlg = new(ELeave)CAknInformationNote( ETrue );
-    CleanupStack::PushL( dlg );
-    HBufC* noteText = StringLoader::LoadLC( aBodyTextResource );
-    dlg->ExecuteLD( *noteText );
-    CleanupStack::PopAndDestroy( noteText );
-    CleanupStack::Pop( dlg );
-    }
-
-// --------------------------------------------------------------------------
-// CMSAppWizard::AddDeviceNameL
-// --------------------------------------------------------------------------
-//
-void CMSAppWizard::AddDeviceNameL( const CUpnpAVDevice& aDevice )
-    {
-    CUpnpAVDevice* device = const_cast<CUpnpAVDevice*> ( &aDevice );
-
-    HBufC* devName = CnvUtfConverter::ConvertToUnicodeFromUtf8L(
-	                                           device->FriendlyName() );
-	CleanupStack::PushL( devName );
-	TRACE(Print(_L("[MSAppWizard]\t device Name= %S"), devName ));
-	iDeviceNameArray->AppendL( *devName );        
-	CleanupStack::PopAndDestroy( devName );	
-	}
-
-// --------------------------------------------------------------------------
-// CMSAppWizard::ShowInfoStepL
-//
-// --------------------------------------------------------------------------
-//
-TInt CMSAppWizard::ShowInfoStepL( TInt aStep, TPtr aHeading )
-    {
-    LOG(_L("[MSAppWizard]\t CMSAppWizard::ShowInfoStepL"));
-    TInt returnValue( KErrNone );
-
-    CAknMessageQueryDialog* dlg = new (ELeave)
-    CAknMessageQueryDialog( CAknQueryDialog::ENoTone );
-    CleanupStack::PushL( dlg );
-
-    dlg->PrepareLC( R_MS_WIZARD_INFO_DIALOG );
-
-    // do number conversion
-    AknTextUtils::DisplayTextLanguageSpecificNumberConversion( aHeading );
-    
-    dlg->SetHeaderTextL( aHeading );
-    HBufC* body = NULL;
-    switch ( aStep )
-        {
-        case EStep1:
-            {
-            body = StringLoader::LoadLC( R_MS_STEP_1_BODY_TEXT );
-            break;
-            }
-        case EStep2:
-            {
-            body = StringLoader::LoadLC( R_MS_STEP_2_BODY_TEXT );
-            break;
-            }                
-        case EStep4:
-            {
-            body = StringLoader::LoadLC( R_MS_STEP_4_BODY_TEXT );
-            break;
-            }
-        case EStep6:
-            {
-            body = StringLoader::LoadLC( R_MS_STEP_6_BODY_TEXT );
-            break;
-            }
-        case EStep8:
-            {
-            body = StringLoader::LoadLC( R_MS_STEP_8_BODY_TEXT );
-            break;
-            }
-        case EStep9:
-            {
-            body = StringLoader::LoadLC( R_MS_STEP_9_2_BODY_TEXT );
-            break;
-            }                            
-        case EStep10:
-            {
-            body = StringLoader::LoadLC( R_MS_STEP_10_BODY_TEXT );
-            break;
-            }
-        case EStep12:
-            {
-            body = StringLoader::LoadLC( R_MS_LAST_STEP_BODY_TEXT );
-            break;
-            }                                
-        default:
-            {
-            LOG(_L("[MSAppWizard]\t CMSAppWizard::ShowInfoStepL \
-                    Step not found"));
-            break;
-            }                
-        }
-        
-    if ( body )  // long body text
-        {            
-        dlg->SetMessageTextL( *body );
-        CleanupStack::PopAndDestroy( body );
-        }
-    
-    returnValue = dlg->RunLD();
-    CleanupStack::Pop( dlg );
-    
-    return returnValue;
-    }
-
-// --------------------------------------------------------------------------
-// CMSAppWizard::ShowListStepL
-// Show the UI dialog with selection list
-// --------------------------------------------------------------------------
-//
-TInt CMSAppWizard::ShowListStepL( TInt aMain, TPtr aHeading )
-    {
-    LOG(_L("[MSAppWizard]\t CMSAppWizard::ShowListStepL begin"));
-    TInt returnValue(KErrNone);
-
-    TBool currSelection =  iSelections->AutoManualSelection();
-
-    CDesCArrayFlat* storeTypeSelection = new (ELeave) CDesCArrayFlat(
-        KArrayGranularity );
-    CleanupStack::PushL( storeTypeSelection );
-
-    HBufC* itemText1 = StringLoader::LoadLC( R_MS_AUTOMATIC_TEXT );
-    HBufC* itemText2 = StringLoader::LoadLC( R_MS_MANUAL_TEXT );
-
-    storeTypeSelection->AppendL( *itemText1 );
-    storeTypeSelection->AppendL( *itemText2 );
-
-    CleanupStack::PopAndDestroy(2, itemText1 );
-
-    CAknListQueryDialog* dlg = new
-        ( ELeave ) CAknListQueryDialog( &currSelection );
-
-    dlg->PrepareLC( aMain );
-
-    // do number conversion
-    AknTextUtils::DisplayTextLanguageSpecificNumberConversion( aHeading );
-
-    dlg->SetHeaderTextL( aHeading );
-    dlg->SetItemTextArray( storeTypeSelection );
-    dlg->SetOwnershipType( ELbmDoesNotOwnItemArray );
-
-    CListBoxView* listBoxView = dlg->ListBox()->View();
-    listBoxView->SetCurrentItemIndex( currSelection );
-
-    returnValue = dlg->RunLD();
-
-    TRACE(
-        Print( _L("MSAppWizard]\t ShowListStepL exit dlg: %d" ),
-        returnValue ) );
-    iSelections->SetAutoManualSelection( currSelection );
-
-    CleanupStack::PopAndDestroy( storeTypeSelection );
-
-    LOG(_L("[MSAppWizard]\t CMSAppWizard::ShowListStepL ends"));
-    return returnValue;
-    }
-
-// --------------------------------------------------------------------------
-// CMSAppWizard::ShowMultiselectionStepL
-// Show the multiselection popup dialog for setting content to share
-// --------------------------------------------------------------------------
-//
-TInt CMSAppWizard::ShowMultiselectionStepL( CDesCArrayFlat& aItemArray,
-                                            CArrayFix<TInt>& aResultArray,
-                                            TPtr aHeading
-                                             )
-    {
-    LOG(_L("[MSAppWizard]\t CMSAppWizard::ShowMultiselectionStepL"));
-    TInt returnValue(KErrNone);
-
-    // do number conversion
-    AknTextUtils::DisplayTextLanguageSpecificNumberConversion( aHeading );
-
-    iMultiSelectionDlg = CMSMultiselectionPopup::NewL(
-                                &aItemArray,
-                                &aResultArray,
-                                aHeading );
-    
-    iMultiSelectionDlg->PrepareLC( R_MS_WIZARD_MULTISELECTION_DIALOG );
-
-    // For Device selection
-    if ( iStep == EStep5 || iStep == EStep9 )
-        {
-#ifndef __WINS__
-        iMultiSelectionDlg->QueryHeading()->SetHeaderAnimationL(
-                                    R_MS_ANIMATION_FOR_SELECTION_DIALOG );
-#endif
-        if ( iStep == EStep9 ) // no upload servers found
-            {            
-            HBufC* defaultText =
-                        StringLoader::LoadLC( R_MS_STEP_9_2_BODY_TEXT );
-            iMultiSelectionDlg->ListBox()->View()->SetListEmptyTextL(
-                                                             *defaultText );
-            CleanupStack::PopAndDestroy( defaultText );
-            }
-        }
-      
-    returnValue = iMultiSelectionDlg->RunLD();        
-    iMultiSelectionDlg = NULL;        
-    
-    return returnValue;
-    }
-
-// --------------------------------------------------------------------------
-// CMSAppWizard::ShowWaitNoteL
-// --------------------------------------------------------------------------
-//
-TInt CMSAppWizard::ShowWaitNoteL()
-    {
-    TInt returnValue( 0 );
-        
-    iUserCancelledSearch = EFalse;
-    iWLanLost = EFalse;
-    iWaitDialog = new ( ELeave ) CAknWaitDialog(
-              ( REINTERPRET_CAST( CEikDialog**, &iWaitDialog ) ) );
-    iWaitDialog->SetCallback( this );
-    iWaitDialog->ExecuteLD( R_MS_WIZARD_WAIT_DIALOG );
-
-    return returnValue;
-    }
-
-// --------------------------------------------------------------------------
-// CMSAppWizard::SetNextStep
-// Calculates the next step in wizard
-// --------------------------------------------------------------------------
-//
-void CMSAppWizard::SetNextStep( const TInt aDirection )
-    {
-    LOG(_L("[MSAppWizard]\t CMSAppWizard::SetNextStep"));
-
-    if ( aDirection > 0 || EEikBidOk == aDirection )    
-        {
-        iStep++;     
-        }
-    else if ( iStep <= 0 )
-	    {
-	    iStep = ECancelWizard;
-	    }
-    else
-    	{
-        iStep--;
-        }    
-    }
-
-// --------------------------------------------------------------------------
-// CMSAppWizard::CancelDeviceSearch
-//
-// --------------------------------------------------------------------------
-//
-void CMSAppWizard::CancelDeviceSearch()
-    {
-    LOG(_L("[MSAppWizard]\t CMSAppWizard::CancelDeviceSearch"));
-
-    if ( iAvController )
-        {
-        iAvController->RemoveDeviceObserver();
-		iAvController->Release();
-		iAvController = NULL;
-        }
-    }
-
-// --------------------------------------------------------------------------
-// CMSAppWizard::CreateAvControllerL
-//
-// --------------------------------------------------------------------------
-//
-TInt CMSAppWizard::CreateAvControllerL()
-    {
-    LOG(_L("[MSAppWizard]\t CMSAppWizard::CreateAvControllerL begins"));
-
-    TInt retVal(KErrNone);
-
-
-    iMediaServers.ResetAndDestroy();
-    iMediaServers.Close();
-
-
-    if( iDeviceNameArray )
-        {
-        iDeviceNameArray->Reset();
-        delete iDeviceNameArray;
-        iDeviceNameArray = NULL;
-        iDeviceNameArray = new (ELeave) CDesCArrayFlat( KArrayGranularity );
-        }
-    
-    if( iAvController )
-        {
-		iAvController->Release();
-		iAvController = NULL;
-        }
-    
-    LOG(_L("[MSAppWizard]\t CMSAppWizard::CreateAvControllerL before"));
-    TRAP( retVal, 
-          iAvController = UPnPAVControllerFactory::NewUPnPAVControllerL() );
-    
-    LOG(_L("[MSAppWizard]\t CMSAppWizard::CreateAvControllerL afterr"));
-    
-    if( retVal != KErrNone )
-        {
-        TRACE( Print(
-             _L("[MediaServant]\t AvController create FAILED, \
-                 err = %d"), retVal)
-             );
-        if( retVal == KErrCancel )
-            {
-            //operation cancelled, return to dialog 4/8
-            CloseWaitDialog();
-            }
-        }
-    else
-        {
-        iAvController->SetDeviceObserver( *this );
-        }
-
-    LOG(_L("[MSAppWizard]\t CMSAppWizard::CreateAvControllerL ends"));
-    return retVal;
-    }
-
-// ---------------------------------------------------------------------------
-// CMSAppWizard::UpdateDevicePopupDlgL
-// Updates popup data with found device
-// ---------------------------------------------------------------------------
-//
-void CMSAppWizard::UpdateDevicePopupDlgL()
-    {
-    LOG(_L("[MSAppWizard]\t CMSAppWizard::UpdateDevicePopupDlgL begins"));
-
-    iMultiSelectionDlg->UpdateAndDrawPopupL( iDeviceNameArray );
-    LOG(_L("[MSAppWizard]\t CMSAppWizard::UpdateDevicePopupDlgL ends"));
-    }
-
-
-// ---------------------------------------------------------------------------
-// CMSAppWizard::UPnPDeviceDiscovered
-// Returns discovered device from UPnP AV control point
-// ---------------------------------------------------------------------------
-//
-void CMSAppWizard::UPnPDeviceDiscovered( const CUpnpAVDevice& aDevice )
-    {
-    LOG(_L("[MediaServant]\t CMSSettingItemDevices::\
-             UPnPDeviceDiscovered"));
-
-    TRAP_IGNORE( UPnPDeviceDiscoveredL(aDevice) );
-    }
-
-
-// ---------------------------------------------------------------------------
-// CMSAppWizard::UPnPDeviceDiscoveredL
-//
-// ---------------------------------------------------------------------------
-//
-void CMSAppWizard::UPnPDeviceDiscoveredL( const CUpnpAVDevice& aDevice )
-    {
-    LOG(_L("[MSAppWizard]\t CMSAppWizard::DeviceDiscoveredL begins"));
-
-    CUpnpAVDevice* device = const_cast<CUpnpAVDevice*> ( &aDevice );
-
-    if( device->DeviceType() == CUpnpAVDevice::EMediaServer &&
-        device->SearchCapability() &&
-        device->DlnaCompatible() )
-        {
-        LOG(_L("[MSAppWizard]\t Found device is Media server!"));
-        CCmMediaServerFull* tempServer = CCmMediaServerFull::NewL();
-        CleanupStack::PushL( tempServer );
-        tempServer->SetUDNL( device->Uuid() );
-        tempServer->SetMediaServerNameL( device->FriendlyName() );
-        tempServer->SetSystemUpdateID( -1 );      
-        tempServer->SetCopyCapability( aDevice.CopyCapability() );
-            
-        TTime timeStamp;
-        timeStamp.HomeTime();
-        tempServer->SetVisibleDate( timeStamp );
-        iMediaServers.AppendL( tempServer );
-        
-        if ( iStep == EStep9 )
-        	{
-	        // Add only store servers in step EStep9
-        	if ( tempServer->CopyCapability() )
-        		{
-        		iStoreServers.AppendL( tempServer );
-        		AddDeviceNameL( aDevice );
-        		}
-        	}
-        else
-        	{
-        	AddDeviceNameL( aDevice );
-        	}
-
-        CleanupStack::Pop( tempServer );
-        }
-    else
-        {
-        LOG(_L("[MSAppWizard]\t Found device is NOT Dlna compliant \
-        Media server!"));
-        return;
-        }
-
-    if ( iWaitDialog )
-        {
-        CloseWaitDialog();
-        }
-    // Ensure that we are in device selection step before adding items
-    // to the dialog
-    else if( iMultiSelectionDlg  && ( iStep == EStep5 || iStep == EStep9 ))
-        {
-        //update device list for UI
-        UpdateDevicePopupDlgL();
-        }
-
-    LOG(_L("[MSAppWizard]\t CMSAppWizard::DeviceDiscoveredL ends"));
-
-    }
-
-// ---------------------------------------------------------------------------
-// CMSAppWizard::UPnPDeviceDisappeared
-// Returns disappeared device from UPnP AV control point.
-// ---------------------------------------------------------------------------
-//
-void CMSAppWizard::UPnPDeviceDisappeared( const CUpnpAVDevice& aDevice )
-    {
-    LOG(_L("[MediaServant]\t CMSSettingItemDevices::\
-             UPnPDeviceDisappeared"));
-
-    TRAP_IGNORE( UPnPDeviceDisappearedL( aDevice ) );
-    }
-
-// ---------------------------------------------------------------------------
-// CMSAppWizard::UPnPDeviceDisappearedL
-//
-// ---------------------------------------------------------------------------
-//
-void CMSAppWizard::UPnPDeviceDisappearedL( const CUpnpAVDevice& aDevice )
-    {
-    LOG(_L("[MSAppWizard]\t CMSAppWizard::DeviceDisappearedL begins"));
-    TPtrC8 ptr( aDevice.Uuid() );
-    TInt serverIndex(0);
-
-    if (!ptr.Compare(_L8("ConnectionLost")))
-        {
-        LOG(_L("[MSAppWizard]\t CMSAppWizard::\
-             UPnPDeviceDisappearedL: Connection lost!"));
-        }
-
-    TPtrC8 serverUid = aDevice.Uuid();
-
-    if( MatchFoundServer( serverUid, serverIndex ) == KErrNone )
-        {
-        // remove server and update screen
-        LOG(_L("[MSAppWizard]\t CMSAppWizard::DeviceDisappearedL, MATCH"));
-        delete (iMediaServers)[serverIndex];
-        (iMediaServers)[serverIndex] = NULL;
-        iMediaServers.Remove( serverIndex );
-        iDeviceNameArray->Delete( serverIndex );
-        
-        if( iMultiSelectionDlg  && ( iStep == EStep5 || iStep == EStep9 ) )
-        	{
-        	UpdateDevicePopupDlgL();
-        	}
-        }
-
-    LOG(_L("[MSAppWizard]\t CMSAppWizard::DeviceDisappearedL ends"));
-    }
-
-// ---------------------------------------------------------------------------
-// CMSAppWizard::WLANConnectionLost
-// Called when wlan connection is lost
-// ---------------------------------------------------------------------------
-//
-void CMSAppWizard::WLANConnectionLost()
-    {
-    LOG(_L("[MSAppWizard]\t CMSAppWizard::WLANConnectionLost"));
-    iWLanLost = ETrue;
-    TRAP_IGNORE( DialogDismissedL( EAknSoftkeyCancel ) );
-    }
-
-// ---------------------------------------------------------------------------
-// CMSAppWizard::MatchFoundServer
-// returns KErrNone if match found
-// ---------------------------------------------------------------------------
-//
-TInt CMSAppWizard::MatchFoundServer( TDesC8& aUid, TInt &aServerIndex )
-    {
-    TInt retVal( KErrNotFound );
-    TInt devicecount = iMediaServers.Count();
-
-    for( TInt i=0; i<devicecount; i++ )
-        {
-
-        retVal = (iMediaServers)[i]->MediaServer().Compare( aUid );
-
-        if ( retVal == KErrNone )
-            {
-            aServerIndex = i;
-            i = devicecount; // break from the for loop
-            }
-        }
-    return retVal;
-    }
-
-// ---------------------------------------------------------------------------
-// CMSAppWizard::CheckAndSetServerStateL
-// sets remove state to server if it is old one
-// also update the server name
-// ---------------------------------------------------------------------------
-//
-void CMSAppWizard::CheckAndSetServerStateL()
-    {
-    LOG(_L("[MSAppWizard]\t CMSAppWizard::CheckAndSetServerStateL"));
-
-    TKeyArrayFix sortKey( 0, ECmpNormal );
-
-    // set remove status to all original servers
-    for ( TInt ind = 0; ind < iOriginalServers->Count(); ind++ )
-        {
-        CCmMediaServerFull* tempServer = (*iOriginalServers)[ind];
-        tempServer->SetIsActive( KServerRemoved );
-        tempServer->SetStoreUsage( EFalse );
-        tempServer->SetFillUsage( EFalse );
-        }
-
-    // Change found servers statuses
-    for ( TInt i = 0; i < iMediaServers.Count(); i++ )
-        {
-        CCmMediaServerFull* newServer = iMediaServers[i];
-        TBool found( EFalse );
-        TInt iterations = iOriginalServers->Count();
-        for ( TInt j = 0; j < iterations; j++ )
-            {
-            CCmMediaServerFull* origServer = (*iOriginalServers)[j];
-                {
-                if ( origServer->MediaServer() == newServer->MediaServer())
-                    {
-                    origServer->SetIsActive( newServer->IsActive() );
-                    origServer->SetStoreUsage( newServer->StoreUsage() );
-                    origServer->SetFillUsage( newServer->FillUsage() );
-                    found = ETrue;
-                    j = iterations; // break loop
-                    //update the server name
-                    origServer->SetMediaServerNameL(
-                        newServer->MediaServerName() );
-                    }
-                }
-            }
-        if ( !found )
-            {            
-            // append new server to the server list
-            iOriginalServers->Append( newServer );
-            
-            iMediaServers.Remove( i );
-            // reduce index because of the server remove to
-            // check all items
-            i--;
-            }
-        }
-
-    }
-
-// ---------------------------------------------------------------------------
-// CMSAppWizard::ClearServersSystemUpdateId
-// clears system update ids of unselected servers
-// ---------------------------------------------------------------------------
-//
-void CMSAppWizard::ClearServersSystemUpdateId()
-    {
-    LOG(_L("[MSAppWizard]\t CMSAppWizard::ClearServersSystemUpdateId"));
-
-    for ( TInt ind = 0; ind < iOriginalServers->Count(); ind++ )
-        {
-        CCmMediaServerFull* server = (*iOriginalServers)[ind];
-        if ( !server->IsActive() )
-            {
-            server->SetSystemUpdateID( -1 );
-            }
-        }
-    }
-
-// ---------------------------------------------------------------------------
-// CMSAppWizard::FetchAlreadyDiscoveredDevicesL
-// Fetches devices from AVController and calls
-// DeviceDiscovered-callback for each of them.
-// ---------------------------------------------------------------------------
-//
-void CMSAppWizard::FetchAlreadyDiscoveredDevicesL()
-    {
-    LOG( _L("[MSAppWizard]\t CMSAppWizard::FetchAlreadyDiscoveredDevicesL") );
-
-    // If iAvController is not created, this method is unusable. 
-    // Call CreateAvControllerL first.
-    User::LeaveIfNull( iAvController );
-
-    // Fetch already found devices from AVController.
-    CUpnpAVDeviceList* discoveredDevices =
-        iAvController->GetMediaServersL();
-    CleanupStack::PushL( discoveredDevices );
-
-    if ( discoveredDevices && discoveredDevices->Count() > 0 )
-        {
-        // the AVController already has some devices.
-        LOG(_L("[MSAppWizard]\t CMSAppWizard::FetchAlreadyDiscoveredDevicesL:\
-                AVController has already discovered devices"));
-
-        // process the already existing devices
-        for ( TInt i = 0 ; i < discoveredDevices->Count() ; i++ )
-            {
-            UPnPDeviceDiscovered(
-                *( discoveredDevices->operator[](i) ) );
-            }
-        }
-
-    // clean up
-    CleanupStack::PopAndDestroy( discoveredDevices );
-    discoveredDevices = NULL;
-    }
-
-// ---------------------------------------------------------------------------
-// CMSAppWizard::CloseWaitDialog
-// Close wait dialog
-// ---------------------------------------------------------------------------
-void CMSAppWizard::CloseWaitDialog()
-    {
-    LOG( _L("[MSAppWizard]\t CMSAppWizard::CloseWaitDialog") );
-    if ( iWaitDialog )
-        {
-        TRAP_IGNORE( iWaitDialog->ProcessFinishedL() );
-        iWaitDialog = NULL;
-        }
-    }
-    
-// ---------------------------------------------------------------------------
-// CMSAppWizard::CreateMultiselectionFillListItemsLC
-// ---------------------------------------------------------------------------    
-CDesCArrayFlat* CMSAppWizard::CreateMultiselectionFillListItemsLC()
-    {
-    LOG(_L("[MSAppWizard]\t CMSAppWizard:: \
-            CreateMultiselectionFillListItemsLC"));
-    
-    CDesCArrayFlat* itemArray = new (ELeave) CDesCArrayFlat(
-                                                KFillListGranularity );
-    CleanupStack::PushL( itemArray );                                                     
-    
-    // Read fill lists from engine
-    CCmFillRuleContainer* listContainer = iMSEngine->FillRulesL();
-
-    for ( TInt index = 0; index < listContainer->FillRuleCount(); index++ )
-        {
-        CCmFillRule* rule = listContainer->FillRule( index );
-        HBufC* itemText = CnvUtfConverter::ConvertToUnicodeFromUtf8L(
-                                                               rule->Name() );
-        CleanupStack::PushL( itemText );
-        
-        itemArray->AppendL( *itemText );
-
-        CleanupStack::PopAndDestroy( itemText );        
-        }   
-
-    delete listContainer;
-    listContainer = NULL;
-
-    return itemArray;
-    }
-
-// ---------------------------------------------------------------------------
-// CMSAppWizard::CreateMultiselectionStoreListItemsLC
-// ---------------------------------------------------------------------------    
-CDesCArrayFlat* CMSAppWizard::CreateMultiselectionStoreListItemsLC()
-    {
-    LOG(_L("[MSAppWizard]\t CMSAppWizard:: \
-            CreateMultiselectionStoreListItemsLC"));
-    
-    CDesCArrayFlat* itemArray = new (ELeave) CDesCArrayFlat(
-                                                    KFillListGranularity );
-    CleanupStack::PushL( itemArray );                                                    
-    
-    // Read store lists from engine
-    CCmStoreRuleContainer* listContainer = iMSEngine->StoreRulesL();
-
-    for ( TInt index = 0; index < listContainer->StoreRuleCount(); index++ )
-        {
-        CCmStoreRule* rule = listContainer->StoreRule( index );
-        HBufC* itemText = CnvUtfConverter::ConvertToUnicodeFromUtf8L(
-                                                            rule->Name() );
-        CleanupStack::PushL( itemText );
-
-        itemArray->AppendL( *itemText );
-
-        CleanupStack::PopAndDestroy( itemText );        
-        }   
-
-    delete listContainer;
-    listContainer = NULL;
-
-    return itemArray;
-    }
-
-
-// ---------------------------------------------------------------------------
-// CMSAppWizard::CreateMultiselectionUIStoreListStringLC
-// ---------------------------------------------------------------------------    
-CDesCArrayFlat* CMSAppWizard::CreateMultiselectionUIStoreListStringLC()
-    {
-    LOG(_L("[MSAppWizard]\t CMSAppWizard:: \
-            CreateMultiselectionUIStoreListStringLC"));
-    
-    CDesCArrayFlat* itemArray = new (ELeave) CDesCArrayFlat(
-    		                                        KStoreListGranularity );
-    CleanupStack::PushL( itemArray );
-   
-    HBufC* capturedPic = StringLoader::LoadLC( R_MS_WIZARD_CAPTURED_IMAGES );
-    HBufC* otherPic = StringLoader::LoadLC( R_MS_WIZARD_OTHER_IMAGES );
-    HBufC* capturedVideo = StringLoader::LoadLC( R_MS_WIZARD_CAPTURED_VIDEOS );
-    HBufC* otherVideo = StringLoader::LoadLC( R_MS_WIZARD_OTHER_VIDEOS );
-    HBufC* music = StringLoader::LoadLC( R_MS_WIZARD_MUSIC );
-    
-    itemArray->AppendL( *capturedPic );
-    itemArray->AppendL( *otherPic );
-    itemArray->AppendL( *capturedVideo );
-    itemArray->AppendL( *otherVideo );
-    itemArray->AppendL( *music );
-    
-    CleanupStack::PopAndDestroy( 5 );   
-
-    return itemArray;
-    }
-
-// ---------------------------------------------------------------------------
-// CMSAppWizard::CreateServerNameListL
-// ---------------------------------------------------------------------------    
-void CMSAppWizard::CreateServerNameListL(
-                            RPointerArray<CCmMediaServerFull>& aServerArray )
-    {
-    LOG(_L("[MSAppWizard]\t CMSAppWizard::CreateServerNameListL"));
-
-    // reset previous names
-    iDeviceNameArray->Reset();
-
-    for ( TInt i = 0; i < aServerArray.Count(); i++ )            
-        {
-        CCmMediaServerFull* server = aServerArray[i];
-        HBufC* name = CnvUtfConverter::ConvertToUnicodeFromUtf8L(
-                                                server->MediaServerName() );
-        CleanupStack::PushL( name );                                                
-        iDeviceNameArray->AppendL( *name );
-        CleanupStack::PopAndDestroy( name );
-        }
-    }   
-    
-// End of File