diff -r 6369bfd1b60d -r 08b5eae9f9ff upnpsettings/appwizard/src/cupnpappwizard.cpp --- a/upnpsettings/appwizard/src/cupnpappwizard.cpp Mon Nov 01 13:44:24 2010 +0200 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,1314 +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 -#include -#include -#include -#include -#include -#include -#include -#include -#include //CAknMessageQueryDialog -#include //CAknListQueryDialog -#include //RSocketServ -#include -#include -#include -#include -#include //CAknWaitDialog -#include -#include -#include // COMMS DB - for checking AP validity - -// upnp stack -#include "upnpstring.h" //String::ToUnicodeL - -// ADO internal interfaces -#include "upnpsettingsengine.h" //Friendly name, AP -#include "upnpsettingsengine.hrh" //AP -#include "cupnpmultiselectionui.h" //CUPnPMultiSelectionUi - -// this component -#include "cupnpappwizard.h" - -// logging facility -_LIT( KComponentLogfile, "upnpsetupwizard.txt"); -#include "upnplog.h" - -// CONSTANTS -// Filename of rsc file -_LIT( KUPnPSetupWizardRscFile, "\\resource\\cupnpappwizard.rsc" ); - -// ============================ MEMBER FUNCTIONS ============================ - -// -------------------------------------------------------------------------- -// CUPnPAppWizard::CUPnPAppWizard -// -------------------------------------------------------------------------- -// -CUPnPAppWizard::CUPnPAppWizard() - { - __LOG("CUPnPAppWizard::CUPnPAppWizard"); - iDialogDismissed = ETrue; - iFeatureManagerInitialized = EFalse; - } - -// -------------------------------------------------------------------------- -// CUPnPAppWizard::ConstructL() -// Symbian 2nd phase constructor can leave. -// -------------------------------------------------------------------------- -// -void CUPnPAppWizard::ConstructL( const TDesC& aFirstStepText, - CUPnPFileSharingEngine* aEng ) - { - __LOG("CUPnPAppWizard::ConstructL begin"); - - iShareImgAndVideoArray = new (ELeave) CArrayFixFlat(3); - iShareMusicArray = new (ELeave) CArrayFixFlat(3); - - iCoeEnv = CEikonEnv::Static(); - RFs& fileSession = iCoeEnv->FsSession(); - - - // Load resource file - TFileName rscFileName( KUPnPSetupWizardRscFile ); - TFileName dllName; - Dll::FileName( dllName ); - TBuf<2> drive = dllName.Left( 2 ); // Drive letter followed by ':' - rscFileName.Insert( 0, drive ); - - // Get the exact filename of the resource file - BaflUtils::NearestLanguageFile( fileSession, rscFileName ); - // Check if the resource file exists or not - if ( !BaflUtils::FileExists( fileSession, rscFileName ) ) - { - User::Leave( KErrNotFound ); - } - TInt err( KErrNone ); - TRAP( err, iResFileOffset = iCoeEnv->AddResourceFileL( rscFileName ) ); - - FeatureManager::InitializeLibL(); - iFeatureManagerInitialized = ETrue; - - // Get AppUI pointer - iAppUi = static_cast( iCoeEnv->EikAppUi() ); - - iSetEng = CUPnPSettingsEngine::NewL(); - if ( aEng ) - { - iFileEng = aEng; - } - else - { - User::Leave( KErrArgument); - } - iFileEng->SetObserver( this ); - iFirstStepText = aFirstStepText.AllocL(); - - iSharingState = iFileEng->SharingStateL(); - iSelections = new (ELeave) CSelectionStorage( iSetEng, iFileEng ); - __LOG("CUPnPAppWizard::ConstructL end"); - } - -// -------------------------------------------------------------------------- -// CUPnPAppWizard::NewL() -// Two-phased constructor. -// -------------------------------------------------------------------------- -// -EXPORT_C CUPnPAppWizard* CUPnPAppWizard::NewL( const TDesC& aFirstStepText, - CUPnPFileSharingEngine* aEng ) - { - __LOG("CUPnPAppWizard::NewL begin"); - - CUPnPAppWizard* self = new ( ELeave) CUPnPAppWizard(); - CleanupStack::PushL( self ); - - self->ConstructL( aFirstStepText, aEng ); - - CleanupStack::Pop(); - __LOG("CUPnPAppWizard::NewL end"); - return self; - } - -// -------------------------------------------------------------------------- -// Destructor -// -------------------------------------------------------------------------- -// -CUPnPAppWizard::~CUPnPAppWizard() - { - __LOG("CUPnPAppWizard::~CUPnPAppWizard begin"); - - if ( iFeatureManagerInitialized ) - { - FeatureManager::UnInitializeLib(); - } - - // Un-Load resource file - if ( iResFileOffset ) - { - CEikonEnv::Static()->DeleteResourceFile( iResFileOffset ); - iResFileOffset = 0; - } - - delete iSetEng; - - delete iSelections; - delete iIapNameArr; - delete iFirstStepText; - - if ( iWait.IsStarted() ) - { - if ( iWait.CanStopNow() ) - { - iWait.AsyncStop(); - } - else - { - __LOG("CUPnPAppWizard: \ -Error cant stop iWait"); - } - } - - if ( iFileEng ) - { - iFileEng->SetObserver( NULL ); - } - - delete iShareImgAndVideoArray; - delete iShareMusicArray; - - __LOG("CUPnPAppWizard::~CUPnPAppWizard end"); - } - -// -------------------------------------------------------------------------- -// CUPnPAppWizard::StartL -// The main loop of setup wizard -// -------------------------------------------------------------------------- -// - -EXPORT_C TInt CUPnPAppWizard::StartL( ) - { - __LOG("CUPnPAppWizard::StartL begin"); - TInt ret(KErrNone); - do - { - switch ( iStep ) - { - case EInfo1: - { - ret = ShowFirstStepL( R_UPNP_WIZARD_POPUP_DIALOG_1 ); - } - break; - case EInfo2: - { - ret = ShowInfoStepL( R_UPNP_WIZARD_POPUP_DIALOG_2 ); - } - break; - case EDeviceName: - { - ret = ShowTextStepL( R_UPNP_WIZARD_POPUP_DIALOG_3 ); - } - break; - case EInfo4: - { - ret = ShowInfoStepL( R_UPNP_WIZARD_POPUP_DIALOG_4 ); - } - break; - case EAccessPoint: - { - ret = ShowListStepL( R_UPNP_WIZARD_POPUP_DIALOG_5 ); - } - break; - case EInfo6: - { - ret = ShowInfoStepL( R_UPNP_WIZARD_POPUP_DIALOG_6 ); - } - break; - case EShareImages: - { - ret = ShowMultiselectionStepL( R_UPNP_WIZARD_HEAD_7_TEXT ); - } - break; - case EShareMusic: - { - ret = ShowMultiselectionStepL(R_UPNP_WIZARD_HEAD_8_TEXT ); - } - break; - case EInfo9: - { - if ( iSelections->HasSomethingToShare() ) - { - ret = ShowInfoStepL( R_UPNP_WIZARD_POPUP_DIALOG_9A ); - } - else - { - iFileEng->SetObserver( this ); - ret = ShowInfoStepL( R_UPNP_WIZARD_POPUP_DIALOG_9B ); - } - } - break; - case EStoreSettings: - { - iSelections->StoreSettingsL(); - if ( !iSharingState && iSelections->HasSomethingToShare() ) - { - __LOG("CUPnPAppWizard::StartL: \ -Staring sharing.."); - // need to wait for DialogDismissed() - iDialogDismissed = EFalse; - ShowWaitNoteL( R_UPNP_WIZARD_STARTING_FILE_SHARING_NOTE ); - DisplayInfoL( R_UPNP_WIZARD_UPDATING_CONTENT_HEADER, - R_UPNP_WIZARD_UPDATING_CONTENT_NOTE_TEXT, - R_UPNP_WIZARD_INFO_QUERY ); - } - else if ( iSharingState && !iSelections->HasSomethingToShare() ) - { - __LOG("CUPnPAppWizard::StartL: \ -Stopping sharing.."); - iFileEng->SetSharingStateL( EFalse ); - iWait.Start(); - } - - // Stores also videofiles - iSelections->ImageStoreSharedFilesL(); - - - } - break; - default : - { - __LOG("CUPnPAppWizard::StartL: default!"); - _LIT(KUser, "USER"); - User::Panic(KUser, 0); - } - break; - } - SetNextStep( ret ); - } - while ( iStep != EFinished ); - __LOG("CUPnPAppWizard::StartL end"); - return ret; - } - -// -------------------------------------------------------------------------- -// CUPnPAppWizard::ShowListStepL -// Show the UI dialog with selection list -// -------------------------------------------------------------------------- -// -TInt CUPnPAppWizard::ShowListStepL( TInt aMain ) - { - __LOG("CUPnPAppWizard::ShowListStepL begin"); - TInt returnValue(KErrNone); - TInt currentSel(0); - TInt selectedIap(1); - TInt oldIap; - iSelections->GetIapId( oldIap ); - TBool sharingCheck; - RArray iapIdArr; - TInt oldIapCount(0); - - if ( !iIapNameArr ) - { - iIapNameArr = new (ELeave) CDesCArrayFlat(3); - } - - do - { - sharingCheck = ETrue;// ok to exit - currentSel = 0; - iSelections->InitializeIapArraysL( iIapNameArr, iapIdArr ); - CUPnPSettingsEngine::GetWLANAccessPointsL( iIapNameArr, iapIdArr ); - - // Set correct initial selection for ui - if ( currentSel != KUPnPCreateNewInd ) - { - iSelections->GetCurrentSelection( currentSel, iapIdArr ); - } - else - { - // ..in case user has selected "Create new" - if ( !iSharingState && - returnValue && - oldIapCount ) - { - if ( oldIapCount != iapIdArr.Count() ) - { - currentSel = iapIdArr.Count() - 1; - } - } - } - CAknListQueryDialog* dlg = new - ( ELeave ) CAknListQueryDialog( ¤tSel ); - - if ( !dlg ) - { - User::Leave( KErrNoMemory ); - } - dlg->PrepareLC( aMain ); - - HBufC* head = StringLoader::LoadLC( R_UPNP_WIZARD_HEAD_5_TEXT ); - dlg->SetHeaderTextL( *head ); - CleanupStack::PopAndDestroy( head ); - - dlg->SetItemTextArray( iIapNameArr ); - dlg->SetOwnershipType( ELbmDoesNotOwnItemArray ); - - CListBoxView* listBoxView = dlg->ListBox()->View(); - listBoxView->SetCurrentItemIndex( currentSel ); - - returnValue = dlg->RunLD(); - - TInt c( iapIdArr.Count() ); - - if ( currentSel == KUPnPCreateNewInd ) - { - /* call to Wlan creator API */ - - __LOG("CUPnPAppWizard::ShowListStepL:\ -Create new IAP.."); - CUPnPSettingsEngine::CreateAccessPointL(); - oldIapCount = iapIdArr.Count(); - } - else if ( currentSel-1 < c ) - { - // set last iap as selected if user succesfully created new iap - selectedIap = iapIdArr[ currentSel ]; - } - if ( iSharingState && - ( selectedIap != oldIap ) && - returnValue ) - { - // show info note if sharing is on and user pressed ok - sharingCheck = EFalse; - ShowInfoNoteL( R_UPNP_WIZARD_IAP_TURN_SHARING_OFF ); - } - iapIdArr.Reset(); - iIapNameArr->Reset(); - } - while ( currentSel == KUPnPCreateNewInd || - ! sharingCheck ); - - iSelections->SetIapId( selectedIap, currentSel ); - - iapIdArr.Reset(); - __LOG("CUPnPAppWizard::ShowListStepL end"); - return returnValue; - } - -// --------------------------------------------------------- -// CUPnPAppWizard::ShowTextStepL( TInt aMain ) -// Shows popup with text and header -// --------------------------------------------------------- -// -TInt CUPnPAppWizard::ShowTextStepL( TInt aMain ) - { - __LOG("CUPnPAppWizard::ShowTextStepL"); - TInt returnValue(KErrNone); - - TBuf<64> data; - TBool sharingCheck( ETrue ); - iSelections->GetDeviceNameL( data ); - HBufC16* oldName16 = HBufC16::NewL( data.Size() ); - CleanupStack::PushL( oldName16 ); - *oldName16 = data; - - do - { - sharingCheck = ETrue; - CAknTextQueryDialog* dlg = CAknTextQueryDialog::NewL( data ); - - dlg->PrepareLC( aMain ); - - HBufC* head = StringLoader::LoadLC( R_UPNP_WIZARD_HEAD_3_TEXT ); - dlg->SetPromptL( *head ); - CleanupStack::PopAndDestroy( head ); - - returnValue = dlg->RunLD(); - - if ( iSharingState && - returnValue ) - { - TInt compRes = oldName16->CompareF( data ); - if ( compRes ) - { - // show info note if sharing is on - sharingCheck = EFalse; - ShowInfoNoteL( R_UPNP_WIZARD_IAP_TURN_SHARING_OFF ); - data = *oldName16; - } - } - } - while ( !sharingCheck ); - CleanupStack::PopAndDestroy( oldName16 ); - if ( returnValue ) - { - iSelections->SetDeviceNameL( data ); - } - return returnValue; - } - -// -------------------------------------------------------------------------- -// CUPnPAppWizard::ShowInfoNoteL -// Show the information note without buttons -// -------------------------------------------------------------------------- -// -void CUPnPAppWizard::ShowInfoNoteL( TInt aMain ) const - { - __LOG("CUPnPAppWizard::ShowInfoNoteL"); - - CAknInformationNote* note = new (ELeave) CAknInformationNote(ETrue); - HBufC* noteText = CCoeEnv::Static()->AllocReadResourceLC( - aMain); - note->ExecuteLD(*noteText); - CleanupStack::PopAndDestroy(noteText); - } - -// -------------------------------------------------------------------------- -// CUPnPAppWizard::ShowInfoStepL -// Show the information note with OK BACK buttons -// -------------------------------------------------------------------------- -// -TInt CUPnPAppWizard::ShowInfoStepL( TInt aMain ) const - { - __LOG("CUPnPAppWizard::ShowInfoStepL"); - TInt returnValue(KErrNone); - HBufC* messageText; - - CAknMessageQueryDialog* dlg = new (ELeave) - CAknMessageQueryDialog( CAknQueryDialog::ENoTone ); - - dlg->PrepareLC( aMain ); - - switch( aMain ) - { - case R_UPNP_WIZARD_POPUP_DIALOG_2: - { - HBufC* head = StringLoader::LoadLC( R_UPNP_WIZARD_HEAD_2_TEXT ); - dlg->SetHeaderTextL( *head ); - CleanupStack::PopAndDestroy( head ); - - HBufC* body = StringLoader::LoadLC( R_UPNP_WIZARD_2_TEXT ); - dlg->SetMessageTextL( *body ); - CleanupStack::PopAndDestroy( body ); - - break; - } - case R_UPNP_WIZARD_POPUP_DIALOG_5: - { - HBufC* head = StringLoader::LoadLC( R_UPNP_WIZARD_HEAD_5_TEXT ); - dlg->SetHeaderTextL( *head ); - CleanupStack::PopAndDestroy( head ); - break; - } - case R_UPNP_WIZARD_POPUP_DIALOG_6: - { - HBufC* head = StringLoader::LoadLC( R_UPNP_WIZARD_HEAD_6_TEXT ); - dlg->SetHeaderTextL( *head ); - CleanupStack::PopAndDestroy( head ); - - messageText = StringLoader::LoadLC( R_UPNP_WIZARD_6_2_TEXT ); - dlg->SetMessageTextL( messageText->Des() ); - CleanupStack::PopAndDestroy( ); - break; - } - case R_UPNP_WIZARD_POPUP_DIALOG_9A: - { - HBufC* head = StringLoader::LoadLC( R_UPNP_WIZARD_HEAD_9_TEXT ); - dlg->SetHeaderTextL( *head ); - CleanupStack::PopAndDestroy( head ); - - messageText = StringLoader::LoadLC( R_UPNP_WIZARD_9A_TEXT ); - dlg->SetMessageTextL( messageText->Des() ); - CleanupStack::PopAndDestroy( ); - break; - } - case R_UPNP_WIZARD_POPUP_DIALOG_9B: - { - HBufC* head = StringLoader::LoadLC( R_UPNP_WIZARD_HEAD_9_TEXT ); - dlg->SetHeaderTextL( *head ); - CleanupStack::PopAndDestroy( head ); - - messageText = StringLoader::LoadLC( R_UPNP_WIZARD_9B_TEXT ); - dlg->SetMessageTextL( messageText->Des() ); - CleanupStack::PopAndDestroy( ); - break; - } - default: - break; - } - - if ( iStep == EInfo4 ) - { - HBufC* head = StringLoader::LoadLC( R_UPNP_WIZARD_HEAD_4_TEXT ); - dlg->SetHeaderTextL( *head ); - CleanupStack::PopAndDestroy( head ); - - HBufC* itemText2 = StringLoader::LoadLC( R_UPNP_WIZARD_ALWAYS_ASK_TEXT ); - HBufC* itemText1 = StringLoader::LoadLC( R_UPNP_WIZARD_4_TEXT, - *itemText2 ); - - dlg->SetMessageTextL( itemText1->Des() ); - CleanupStack::PopAndDestroy( 2 ); //itemText 1 & 2 - } - returnValue = dlg->RunLD(); - - return returnValue; - } - -// -------------------------------------------------------------------------- -// CUPnPAppWizard::ShowFirstStepL -// Show the first information note with OK BACK buttons and given text -// -------------------------------------------------------------------------- -// -TInt CUPnPAppWizard::ShowFirstStepL( TInt aMain ) const - { - __LOG("CUPnPAppWizard::ShowFirstStepL"); - TInt returnValue( KErrNone ); - - CAknMessageQueryDialog* dlg = new (ELeave) - CAknMessageQueryDialog( CAknQueryDialog::ENoTone ); - - dlg->PrepareLC( aMain ); - HBufC* head = StringLoader::LoadLC( R_UPNP_WIZARD_HEAD_1_TEXT ); - dlg->SetHeaderTextL( *head ); - CleanupStack::PopAndDestroy( head ); - - if ( iFirstStepText->Length() ) - { - // if the text for first step is given use it insted of default - __LOG( "Setting text" ); - dlg->SetMessageTextL( *iFirstStepText ); - } - else - { - __LOG( " StringLoader::LoadLC" ); - HBufC* body = StringLoader::LoadLC(R_UPNP_WIZARD_1_TEXT); - __LOG( "SetMessageTextL" ); - dlg->SetMessageTextL( *body ); - __LOG( "PopAndDestroy" ); - CleanupStack::PopAndDestroy(); - } - returnValue = dlg->RunLD(); - - return returnValue; - } - -// -------------------------------------------------------------------------- -// CUPnPAppWizard::ShowInfoStepL -// Show the multiselection popup dialog for setting content to share -// -------------------------------------------------------------------------- -// -TInt CUPnPAppWizard::ShowMultiselectionStepL( TInt aText ) - { - __LOG("CUPnPAppWizard::ShowMultiselectionStepL"); - - TInt returnValue(KErrNone); - - THomeConnectMediaType mediaType( EImageAndVideo ); - - CArrayFix* resArr = new (ELeave) CArrayFixFlat(5); - CleanupStack::PushL( resArr ); - - if ( iStep == EShareMusic ) - { - mediaType = EPlaylist; - } - TInt visualSharingState; - HBufC* head = StringLoader::LoadLC( aText ); - - // no ownership transfers - CUPnPMultiselectionUi* uiDlg = CUPnPMultiselectionUi:: - NewL(mediaType, - iFileEng, - visualSharingState, - resArr, - CUPnPMultiselectionUi::EPopup, - head ); - CleanupStack::PushL( uiDlg ); - - ModifyMarkedArrayL(ESetMarked,NULL,uiDlg); - - returnValue = uiDlg->ExecutePopupLD(); - - CleanupStack::PopAndDestroy( uiDlg ); - - CleanupStack::PopAndDestroy( head ); - - if ( returnValue ) - { - ModifyMarkedArrayL(EResetArray); - for( TInt i = 0 ; i < resArr->Count() ; ++i ) - { - TInt tmp = resArr->At(i); - ModifyMarkedArrayL(EAddToArray,tmp); - } - // Transfer ownership of all dynamic variables( resARr ) - iSelections->SetSharedContent( mediaType, - resArr ); - iFileEng->SetSelectionIndexesL( mediaType, *resArr ); - } - - CleanupStack::PopAndDestroy( resArr ); - return returnValue; - } - -// -------------------------------------------------------------------------- -// CUPnPAppWizard::ModifyMarkedArrayL -// -------------------------------------------------------------------------- -// -void CUPnPAppWizard::ModifyMarkedArrayL( TShareArrayState aArrayState - , TInt aValue - , CUPnPMultiselectionUi* aUiDlg ) - { - CArrayFix* array = NULL; - if( iStep == EShareMusic ) - { - array = iShareMusicArray; - } - else if( EShareImages == iStep ) - { - array = iShareImgAndVideoArray; - } - if( array ) - { - switch(aArrayState) - { - case ESetMarked: - { - if( aUiDlg ) - { - aUiDlg->SetMarkedItemsL( *array ); - } - break; - } - case EResetArray: - { - array->Reset(); - break; - } - case EAddToArray: - { - array->AppendL(aValue); - break; - } - default: - break; - } - } - } - -// -------------------------------------------------------------------------- -// CUPnPAppWizard::SetNextStep -// Calculates the next step in wizard -// -------------------------------------------------------------------------- -// -void CUPnPAppWizard::SetNextStep( const TInt& aSelection ) - { - __LOG("CUPnPAppWizard::SetNextStep"); - - switch ( iStep ) - { - case EInfo1: - { - if ( aSelection ) - { - iStep++; - } - else - { - iStep = EFinished; - } - } - break; - case EInfo2: - // fall through - case EDeviceName: - // fall through - case EInfo4: - // fall through - case EAccessPoint: - // fall through - case EInfo6: - // fall through - case EShareImages: - // fall through - case EShareMusic: - // fall through - case EInfo9: - // fall through - case EStoreSettings: - { - if ( aSelection ) - { - iStep++; - } - else - { - iStep--; - } - } - break; - default : - { - __LOG("CUPnPAppWizard::SetNextStep: default!"); - _LIT(KUser, "USER"); - User::Panic(KUser, 0); - } - break; - } - } - -// -------------------------------------------------------------------------- -// CUPnPAppWizard::ShowErrorNoteL -// Shows note with error message -// -------------------------------------------------------------------------- -// -void CUPnPAppWizard::ShowErrorNoteL( TInt aMain ) const - { - __LOG("CUPnPAppWizard::ShowErrorNoteL begin"); - - // show error note - HBufC* errorNote = StringLoader::LoadLC( aMain ); - CAknErrorNote* note = new (ELeave) CAknErrorNote(ETrue); - note->ExecuteLD(*errorNote); - CleanupStack::PopAndDestroy(); //errorNote - __LOG("CUPnPAppWizard::ShowErrorNoteL end"); - } - -// -------------------------------------------------------------------------- -// CUPnPAppWizard::ShowWaitNoteL -// Shows standard wait note -// -------------------------------------------------------------------------- -// -void CUPnPAppWizard::ShowWaitNoteL( TInt aMain ) - { - __LOG("CUPnPAppWizard::ShowWaitNoteL begin"); - - CAknWaitNoteWrapper* waitNoteWrapper = CAknWaitNoteWrapper::NewL(); - CleanupStack::PushL(reinterpret_cast(waitNoteWrapper)); - waitNoteWrapper->ExecuteL( - aMain, // TInt aResId, - *this, // MAknBackgroundProcess& aBackgroundProcess - ETrue); - CleanupStack::PopAndDestroy(); - __LOG("CUPnPAppWizard::ShowWaitNoteL end"); - } - -// -------------------------------------------------------------------------- -// CUPnPAppWizard::StepL -// Step done during wait note -// -------------------------------------------------------------------------- -// -void CUPnPAppWizard::StepL(void) - { - if ( iStartingSharing == ENotActive ) - { - iStartingSharing = EStartingSharing; - } - - } - - -// -------------------------------------------------------------------------- -// CUPnPAppWizard::IsProcessDone -// Returns ETrue if process finished -// -------------------------------------------------------------------------- -// -TBool CUPnPAppWizard::IsProcessDone(void) const - { - - TBool ret(EFalse); - if ( iStartingSharing == ENotActive ) - { - TRAPD( err, iFileEng->SetSharingStateL( ETrue ) ); - if( err != KErrNone ) - { - return ETrue; - } - } - else if ( iStartingSharing == ESharingStarted ) - { - ret = ETrue; - } - else - { - __LOG( "CUPnPAppWizard::IsProcessDone: else branch"); - } - return ret; - } - -// -------------------------------------------------------------------------- -// CUPnPAppWizard::HandleSharingStatus -// Function informs when file sharing was enabled or disabled -// -------------------------------------------------------------------------- -// -void CUPnPAppWizard::HandleSharingStatus( - CUPnPFileSharingEngine& /*aEngine*/, - TInt aError, - TBool aPhase ) - { - __LOG("CUPnPAppWizard::HandleSharingStatus begin"); - - if ( aPhase ) - { - __LOG("CUPnPAppWizard::HandleSharingStatus:\ - activating sharing"); - iStartingSharing = ESharingStarted; - if ( aError ) - { - // If there domtree wasn't able to be written due to disk full - // situation, send leave to kernel to inform user - if( aError == KErrDiskFull || - aError == KErrNoMemory || - aError == KErrInUse ) - { - //show some critical errors using - //default symbian error notes - CActiveScheduler::Current()->Error( aError ); - } - else - { - if ( !iDialogDismissed ) - { - // must ensure that wait note is gone, see DialogDismissed - iWait.Start(); - } - TRAP_IGNORE( - ShowErrorNoteL( - R_UPNP_WIZARD_START_SHARING_ERROR_TEXT ) ); - } - } - if ( iWait.IsStarted() ) - { - if ( iWait.CanStopNow() ) - { - iWait.AsyncStop(); - } - else - { - __LOG("CUPnPAppWizard: \ -Error cant stop iWait"); - } - } - } - else - { - __LOG("CUPnPAppWizard::HandleSharingStatus:\ - deactivating sharing"); - // stop showing wait note - if ( iWait.IsStarted() ) - { - iWait.AsyncStop(); - } - } - - __LOG("CUPnPAppWizard::HandleSharingStatus end"); - } - -// -------------------------------------------------------------------------- -// CUPnPAppWizard::HandleSharingConnectionLost -// Callback to inform if connection has been lost -// -------------------------------------------------------------------------- -// -void CUPnPAppWizard::HandleSharingConnectionLost( - CUPnPFileSharingEngine& /*aEngine*/ ) - { - __LOG( "[CUPnPAppWizard]\t CUPnPAppWizard::HandleSharingConnectionLost\ - begin" ); - - iSharingState = EFalse; - - __LOG( "[CUPnPAppWizard]\t CUPnPAppWizard::HandleSharingConnectionLost\ - end" ); - } - -// -------------------------------------------------------------------------- -// CUPnPAppWizard::DialogDismissedL -// Callback for dialog disappearing -// -------------------------------------------------------------------------- -// -void CUPnPAppWizard::DialogDismissedL( TInt /*aButtonId*/ ) - { - __LOG( "[CUPnPAppWizard]\t DialogDismissedL begin" ); - - iDialogDismissed = ETrue; - if ( iWait.IsStarted()) - { - iWait.AsyncStop(); - } - - __LOG( "[CUPnPAppWizard]\t DialogDismissedL end" ); - } - -// -------------------------------------------------------------------------- -// CUPnPAppWizard::DisplayInfoL() -// Shows message query to user -// -------------------------------------------------------------------------- -// -void CUPnPAppWizard::DisplayInfoL( - TInt aHeaderResourceId, - TInt aMessageResourceId, - TInt aDialogResourceId ) - { - __LOG("CUPnPAppWizard::DisplayInfoL begin"); - HBufC* noteHeader = StringLoader::LoadL( - aHeaderResourceId); - CleanupStack::PushL(noteHeader); - HBufC* noteMsg = StringLoader::LoadL( - aMessageResourceId); - CleanupStack::PushL(noteMsg); - - CAknMessageQueryDialog* dlg = CAknMessageQueryDialog::NewL(*noteMsg); - - - dlg->PrepareLC(aDialogResourceId); - dlg->QueryHeading()->SetTextL(*noteHeader); - dlg->RunLD(); - - - CleanupStack::PopAndDestroy(noteMsg); - CleanupStack::PopAndDestroy(noteHeader); - __LOG("CUPnPAppWizard::DisplayInfoL end"); - } - - -// -------------------------------------------------------------------------- -// CUPnPAppWizard::CSelectionStorage functions -// -// -------------------------------------------------------------------------- -// - -// -------------------------------------------------------------------------- -// CSelectionStorage::CSelectionStorage -// Destructor -// -------------------------------------------------------------------------- -// -CUPnPAppWizard::CSelectionStorage::~CSelectionStorage() - { - __LOG("[UPnPAppWizard]\tCSelectionStorage::~CSelectionStorage() begin"); - delete iDeviceName; - delete iMusicSelectionArray; - delete iImageSelectionArray; - __LOG("CSelectionStorage::~CSelectionStorage() end"); - } - -// -------------------------------------------------------------------------- -// CSelectionStorage::CSelectionStorage -// Constructor -// -------------------------------------------------------------------------- -// -CUPnPAppWizard::CSelectionStorage::CSelectionStorage( - CUPnPSettingsEngine* aSetEng, - CUPnPFileSharingEngine* aFileEng ) - { - __LOG("CSelectionStorage::CSelectionStorage() begin"); - iSetEng = aSetEng; - iFileEng = aFileEng; - __LOG("CSelectionStorage::CSelectionStorage() end"); - } - -// -------------------------------------------------------------------------- -// CSelectionStorage::SetDeviceNameL -// Function for setting the device name to local storage -// -------------------------------------------------------------------------- -// -void CUPnPAppWizard::CSelectionStorage::SetDeviceNameL( TDes& aDeviceName ) - { - __LOG("CSelectionStorage::SetDeviceNameL begin"); - delete iDeviceName; - iDeviceName = NULL; - iDeviceName = HBufC::NewL(aDeviceName.Length()); - - *iDeviceName = aDeviceName; - __LOG("CSelectionStorage::SetDeviceNameL end"); - } - -// -------------------------------------------------------------------------- -// CSelectionStorage::GetDeviceNameL -// Function for getting the device name from local storage or from cenrep -// -------------------------------------------------------------------------- -// -TInt CUPnPAppWizard::CSelectionStorage::GetDeviceNameL( TDes& aDeviceName ) - { - __LOG("CSelectionStorage::GetDeviceNameL begin"); - TInt err(0); - if ( iDeviceName ) - { - aDeviceName = iDeviceName->Des(); - } - else - { - THostName data; - TBuf8<65> deviceName8; - err = iSetEng->GetLocalFriendlyName( deviceName8 ); - - HBufC* deviceName16 = UpnpString::ToUnicodeL( deviceName8 ); - CleanupStack::PushL( deviceName16 ); - aDeviceName = deviceName16->Des(); - CleanupStack::PopAndDestroy( deviceName16 ); - } - __LOG("CSelectionStorage::GetDeviceNameL end"); - return err; - } - -// -------------------------------------------------------------------------- -// CSelectionStorage::GetIapId -// Function for getting the iapid from local storage or from cenrep -// -------------------------------------------------------------------------- -// -TInt CUPnPAppWizard::CSelectionStorage::GetIapId( TInt& aIapId ) - { - __LOG("CSelectionStorage::GetIapId begin"); - TInt err( KErrNone ); - if ( iIapId ) - { - aIapId = iIapId; - } - else - { - err = iSetEng->GetAccessPoint( iIapId ); - aIapId = iIapId; - } - __LOG("CSelectionStorage::GetIapId end"); - return err; - } - -// -------------------------------------------------------------------------- -// CSelectionStorage::SetIapId -// Function for setting the iapid to local storage -// -------------------------------------------------------------------------- -// -void CUPnPAppWizard::CSelectionStorage::SetIapId( const TInt aIapId, - const TInt aIndexForUi ) - { - __LOG("CSelectionStorage::SetIapId begin"); - - iIapId = aIapId; - iIndexForUi = aIndexForUi; - - __LOG("CSelectionStorage::SetIapId end"); - } - -// -------------------------------------------------------------------------- -// CSelectionStorage::StoreSettingsL -// Function for storing devicename and iapid to cenrep -// -------------------------------------------------------------------------- -// -TInt CUPnPAppWizard::CSelectionStorage::StoreSettingsL() - { - __LOG("CSelectionStorage::StoreSettingsL begin"); - TInt err(0); - if ( iDeviceName ) - { - HBufC8* name8 = UpnpString::FromUnicodeL( iDeviceName->Des() ); - CleanupStack::PushL( name8 ); - err = iSetEng->SetLocalFriendlyName( name8->Des() ); - CleanupStack::PopAndDestroy( name8 ); - } - if ( iIapId >= EUPnPSettingsEngineIAPIdAlwaysAsk ) - { - // Stores iap id. - iSetEng->SetAccessPoint( iIapId ); - - // Stores iap selection type. - TInt iapForHomeNetworkUi( EUPnPSettingsEngineIAPItemUserDefined ); - if ( iIapId == EUPnPSettingsEngineIAPIdAlwaysAsk ) - { - iapForHomeNetworkUi = EUPnPSettingsEngineIAPItemAlwaysAsk; - } - iSetEng->SetAccessPointSetting( iapForHomeNetworkUi ); - - // index for HN ui? - iSetEng->SetWapId( iIndexForUi+1 ); - } - - __LOG("CSelectionStorage::StoreSettingsL end"); - return err; - } - -// -------------------------------------------------------------------------- -// CSelectionStorage::ImageStoreSharedFilesL -// Function for storing image and video -// -------------------------------------------------------------------------- -// -TInt CUPnPAppWizard::CSelectionStorage::ImageStoreSharedFilesL( ) - { - /* Save Images and Videos */ - __LOG( "CSelectionStorage::Sharing image and video .." ); - if ( iFileEng ) - { - iFileEng->ShareMediaL( EImageAndVideo ); - iFileEng->ShareMediaL( EPlaylist ); - } - __LOG( "CSelectionStorage::ImageStoreSharedFilesL end" ); - return KErrNone; - } - -// -------------------------------------------------------------------------- -// CSelectionStorage::InitializeIapArraysL -// Add default items to iap name array -// -------------------------------------------------------------------------- -// -void CUPnPAppWizard::CSelectionStorage::InitializeIapArraysL( - CDesCArray* aIapNameArr, - RArray& aIapIdArr ) const - { - __LOG("[UPnPAppWizard]\tCSelectionStorage::InitializeIapArraysL begin"); - - HBufC* itemText1 = StringLoader::LoadLC( R_UPNP_WIZARD_ALWAYS_ASK_TEXT ); - HBufC* itemText2 = StringLoader::LoadLC( R_UPNP_WIZARD_CREATE_NEW_TEXT ); - - aIapNameArr->AppendL( itemText1->Des() ); - aIapIdArr.AppendL( EUPnPSettingsEngineIAPIdAlwaysAsk ); - aIapNameArr->AppendL( itemText2->Des() ); - aIapIdArr.AppendL( EUPnPSettingsEngineIAPIdCreateNew ); - - //aIapNameArr does not own the items - CleanupStack::PopAndDestroy(2); - - __LOG("[UPnPAppWizard]\tCSelectionStorage::InitializeIapArraysL end"); - } - -// ------------------------------------------------------------- -// CSelectionStorage::SetSharedContent() -// Sets the users sharing selections to local storage -// ------------------------------------------------------------- -// -void CUPnPAppWizard::CSelectionStorage::SetSharedContent( - THomeConnectMediaType aMedia, - CArrayFix* aSelections ) - { - __LOG("CSelectionStorage::SetSharedContent begin"); - - if ( aMedia == EImageAndVideo ) - { - // determine the users selections from UI - // if there is only one item selected and its value is not 0 - // -> Share all is selected - if ( ! (aSelections->Count() == 1 && aSelections->At(0) == 0 ) ) - { - iVisualImageSelection = ETrue; - } - } - else - { - - if ( ! (aSelections->Count() == 1 && aSelections->At(0) == 0 ) ) - { - // no difference between EShareAll and EShareMany - iVisualMusicSelection = ETrue; - } - - } - - __LOG("CSelectionStorage::SetSharedContent end"); - } - - -// ------------------------------------------------------------- -// CSelectionStorage::SetSharedContent() -// Gets the users sharing selections from local storage -// ------------------------------------------------------------- -// -void CUPnPAppWizard::CSelectionStorage::GetSelectionsL( - THomeConnectMediaType aMedia, - CArrayFix* aSelections ) - { - __LOG("CSelectionStorage::GetSelectionsL begin"); - - if ( aMedia == EImageAndVideo ) - { - if ( iImageSelectionArray ) - { - for ( TInt i = 0; i < iImageSelectionArray->Count(); i++ ) - { - TInt tmp = iImageSelectionArray->At( i ); - aSelections->AppendL( tmp ); - } - } - } - else - { - if ( iMusicSelectionArray ) - { - for ( TInt i = 0; i < iMusicSelectionArray->Count(); i++ ) - { - TInt tmp = iMusicSelectionArray->At( i ); - aSelections->AppendL( tmp ); - } - } - } - __LOG("CSelectionStorage::GetSelectionsL end"); - } - -// ------------------------------------------------------------- -// CSelectionStorage::HasSomethingToShare() -// Determines if the user has selected content to share -// ------------------------------------------------------------- -// -TBool CUPnPAppWizard::CSelectionStorage::HasSomethingToShare() const - { - __LOG("CSelectionStorage::HasSomethingToShare begin"); - TBool retVal( EFalse ); - if ( iVisualImageSelection || iVisualMusicSelection ) - { - retVal = ETrue; - } - __LOG("CSelectionStorage::HasSomethingToShare end"); - return retVal; - } - -// -------------------------------------------------------------------------- -// CSelectionStorage::GetCurrentSelection -// Gets the user selected iapid or iapid from cenrep -// -------------------------------------------------------------------------- -// -void CUPnPAppWizard::CSelectionStorage::GetCurrentSelection( - TInt& aCurrentSelection, RArray& aIapIdArr ) - { - __LOG("CSelectionStorage::GetCurrentSelection begin"); - // Get the current selection - TInt userIapId( 0 ); - GetIapId( userIapId ); - - if ( userIapId < 1 || - userIapId == aIapIdArr[ KUPnPAlwaysAskInd ] ) - { - aCurrentSelection = 0; - } - else - { - aCurrentSelection = aIapIdArr.Find( userIapId ); - - if ( aCurrentSelection <= KUPnPCreateNewInd ) - { - /* Current iap is not in the list or it is Always Ask */ - aCurrentSelection = 0; - } - } - __LOG("CSelectionStorage::GetCurrentSelection end"); - } - - -// End of File