--- 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 <AknUtils.h>
-#include <featmgr.h>
-#include <bautils.h>
-#include <StringLoader.h>
-#include <eikspmod.h>
-#include <eikclb.h>
-#include <aknview.h>
-#include <aknViewAppUi.h>
-#include <eikprogi.h>
-#include <aknmessagequerydialog.h> //CAknMessageQueryDialog
-#include <aknlistquerydialog.h> //CAknListQueryDialog
-#include <es_sock.h> //RSocketServ
-#include <commdb.h>
-#include <cdbcols.h>
-#include <WlanCdbCols.h>
-#include <wlanmgmtinterface.h>
-#include <aknnotewrappers.h> //CAknWaitDialog
-#include <AknWaitDialog.h>
-#include <cupnpappwizard.rsg>
-#include <commdb.h> // 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<TInt>(3);
- iShareMusicArray = new (ELeave) CArrayFixFlat<TInt>(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<CAknViewAppUi*>( 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<TInt64> 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<TInt>* resArr = new (ELeave) CArrayFixFlat<TInt>(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<TInt>* 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<CBase*>(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<TInt64>& 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<TInt>* 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<TInt>* 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<TInt64>& 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