diff -r 6369bfd1b60d -r 08b5eae9f9ff upnpsettings/upnpsharingui/src/upnpappfilesharingdialog.cpp --- a/upnpsettings/upnpsharingui/src/upnpappfilesharingdialog.cpp Mon Nov 01 13:44:24 2010 +0200 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,596 +0,0 @@ -/* -* Copyright (c) 2005-2007 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: File sharing view of Home Network application -* -*/ - - - - - - -// INCLUDE FILES -// system -#include -#include -#include -#include -#include -#include -#include -#include -#include //displayinfol -#include // CAknInputBlock -#include // BaflUtils - -// internal interfaces -#include "cupnpmultiselectionui.h" -#include "upnpfilesharingengine.h" -#include "upnpfilesharingengineobserver.h" - -// this component -#include -#include "upnpsharingui.hrh" -#include "upnpappfilesharinglist.h" -#include "upnpappfilesharingdialog.h" - - -_LIT( KComponentLogfile, "upnpsharingui.txt"); -#include "upnplog.h" - -// CONSTANTS -const TInt KHomeConnectUID3 = 0x10208A0A; // needed for help context -_LIT( KUPNP_HLP_SHARE_CONTENT, "UPNP_HLP_SHARE_CONTENT" ); -// Filename of rsc file -_LIT( KSharingUiRscFile, "\\resource\\upnpsharingui.rsc" ); - - -// ============================ MEMBER FUNCTIONS ============================ - - -// -------------------------------------------------------------------------- -// CUPnPAppFileSharingDialog::NewL -// Two-phased constructor. -// -------------------------------------------------------------------------- -// -EXPORT_C CUPnPAppFileSharingDialog* CUPnPAppFileSharingDialog::NewL( - TInt aMenuResource, - CUPnPFileSharingEngine& aEng ) - { - __LOG("CUPnPAppFileSharingDialog::NewL"); - - CUPnPAppFileSharingDialog* self = - new (ELeave) CUPnPAppFileSharingDialog( aEng ); - CleanupStack::PushL(self); - self->ConstructL( aMenuResource ); - CleanupStack::Pop( self ); - return self; - } - -// -------------------------------------------------------------------------- -// Constructor -// -------------------------------------------------------------------------- -// -CUPnPAppFileSharingDialog::CUPnPAppFileSharingDialog( - CUPnPFileSharingEngine& aEng ) - : iFileSharingEngine( aEng ) - , iFeatureManagerInitialized( EFalse ) - { - } - -// -------------------------------------------------------------------------- -// CUPnPAppFileSharingDialog::ConstructL -// Symbian 2nd phase constructor can leave. -// -------------------------------------------------------------------------- -// -void CUPnPAppFileSharingDialog::ConstructL( TInt aMenuResource ) - { - __LOG("CUPnPAppFileSharingDialog::ConstructL"); - - iFileSharingEngine.SetObserver(this); - - if ( aMenuResource == 0 ) - { - aMenuResource = R_SHARINGUI_MENUBAR; - } - - // determine resource file location - iCoeEnv = CEikonEnv::Static(); - RFs& fileSession = iCoeEnv->FsSession(); - TFileName rscFileName( KSharingUiRscFile ); - TFileName dllName; - Dll::FileName( dllName ); - TBuf<2> drive = dllName.Left( 2 ); // Drive letter followed by ':' - rscFileName.Insert( 0, drive ); - BaflUtils::NearestLanguageFile( fileSession, rscFileName ); - if ( !BaflUtils::FileExists( fileSession, rscFileName ) ) - { - User::Leave( KErrNotFound ); - } - // load the resource file - iResFileOffset = iCoeEnv->AddResourceFileL( rscFileName ); - FeatureManager::InitializeLibL(); - iFeatureManagerInitialized = ETrue; - - CAknDialog::ConstructL( aMenuResource ); - } - -// -------------------------------------------------------------------------- -// Destructor -// -------------------------------------------------------------------------- -// -CUPnPAppFileSharingDialog::~CUPnPAppFileSharingDialog() - { - __LOG("CUPnPAppFileSharingDialog::~CUPnPAppFileSharingDialog"); - - iFileSharingEngine.SetObserver( NULL ); - - // unload resource file - if ( iResFileOffset ) - { - iCoeEnv->DeleteResourceFile( iResFileOffset ); - iResFileOffset = 0; - } - - if( iFeatureManagerInitialized ) - { - FeatureManager::UnInitializeLib(); - } - } - -// -------------------------------------------------------------------------- -// CUPnPAppFileSharingDialog::ExecuteSharingDialogLD() -// Executes the dialog using the component's own resource -// -------------------------------------------------------------------------- -// -EXPORT_C TInt CUPnPAppFileSharingDialog::ExecuteSharingDialogLD() - { - return ExecuteLD( R_SHARINGUI_DIALOG ); - } - - -// -------------------------------------------------------------------------- -// CUPnPAppFileSharingDialog::OkToExitL(TInt aButtonId) -// called by framework when the softkey is pressed -// -------------------------------------------------------------------------- -// -TBool CUPnPAppFileSharingDialog::OkToExitL(TInt aButtonId) -{ - __LOG("CUPnPAppFileSharingDialog::OkToExitL"); - - TBool retval(EFalse); - if (aButtonId == EAknSoftkeyOptions) - { - DisplayMenuL(); - } - else if (aButtonId == EAknSoftkeyBack) - { - iTitlePane->SetTextToDefaultL(); - retval = ETrue; //back to previous dialog - } - else if ( aButtonId == EAknSoftkeyChange ) - { - // msk event - TKeyEvent tmpEvent; - tmpEvent.iCode = EKeyOK; - tmpEvent.iModifiers = 0; - tmpEvent.iRepeats = 0; - tmpEvent.iScanCode = 0; - TEventCode eventType = EEventKey; - OfferKeyEventL( tmpEvent, eventType ); - } - return retval; -} - -// -------------------------------------------------------------------------- -// CUPnPAppFileSharingDialog::DynInitMenuPaneL -// Dynamically initalizes menu pane -// -------------------------------------------------------------------------- -// -void CUPnPAppFileSharingDialog::DynInitMenuPaneL( TInt aResourceId, - CEikMenuPane* aMenuPane ) - { - __LOG("CUPnPAppMainDialog::CUPnPAppFileSharingDialog"); - - if (aResourceId == R_SHARINGUI_MENU && - !FeatureManager::FeatureSupported( KFeatureIdHelp ) ) - { - aMenuPane->SetItemDimmed( EAknCmdHelp, ETrue ); - } - } - - -// -------------------------------------------------------------------------- -// CUPnPAppFileSharingDialog::PreLayoutDynInitL() -// called by framework before dialog is shown -// -------------------------------------------------------------------------- -// -void CUPnPAppFileSharingDialog::PreLayoutDynInitL() - { - __LOG("CUPnPAppFileSharingDialog::PreLayoutDynInitL"); - - iFileSharingList->LoadDataFromEngineL(); - - // set dialog title - iStatusPane = iEikonEnv->AppUiFactory()->StatusPane(); - iTitlePane = (CAknTitlePane*)iStatusPane->ControlL( - TUid::Uid(EEikStatusPaneUidTitle)); - iTitlePane->SetTextL(*StringLoader::LoadLC( R_SHARINGUI_TITLE_TEXT ) ); - CleanupStack::PopAndDestroy(); - } - -// -------------------------------------------------------------------------- -// CUPnPAppFileSharingDialog::ProcessCommandL() -// called by framework when menu command is selected -// -------------------------------------------------------------------------- -// -void CUPnPAppFileSharingDialog::ProcessCommandL(TInt aCommand) - { - __LOG("CUPnPAppFileSharingDialog::ProcessCommandL"); - - HideMenu(); - - switch ( aCommand ) - { - case ESharingUiCmdRefresh: - { - TInt selectedItem = iFileSharingList-> - ListBox()->CurrentItemIndex(); - iFileSharingEngine.RefreshSharedMediaL( EImageAndVideo ); - iFileSharingEngine.RefreshSharedMediaL( EPlaylist ); - DisplayInfoL( R_SHARINGUI_UPDATING_CONTENT_HEADER, - R_SHARINGUI_UPDATING_CONTENT_NOTE_TEXT, - R_SHARINGUI_INFO_QUERY ); - break; - } - case ESharingUiCmdAppChange: - { - TInt selectedItem = iFileSharingList->ListBox()->CurrentItemIndex(); - if ( selectedItem == ESharingUiSettingItemVisibility ) - { - iFileSharingList->EditItemL(selectedItem, ETrue); - } - else - { - RunMultiselectionDialogL(); - } - break; - } - - case EAknCmdExit: - { - User::Exit(KErrNone); - break; - } - - case EAknCmdHelp: - { - HlpLauncher::LaunchHelpApplicationL( iEikonEnv->WsSession(), - iEikonEnv->EikAppUi()->AppHelpContextL() ); - break; - } - - default: - { - __LOG("CUPnPAppFileSharingDialog::ProcessCommandL Unknown cmd"); - } - } - - CAknDialog::ProcessCommandL(aCommand); - } - -// -------------------------------------------------------------------------- -// CUPnPAppSettingsDialog::OfferKeyEventL() -// called by framework when key is pressed -// -------------------------------------------------------------------------- -// -TKeyResponse CUPnPAppFileSharingDialog::OfferKeyEventL( - const TKeyEvent &aKeyEvent, TEventCode aType ) - { - __LOG("CUPnPAppFileSharingDialog::OfferKeyEventL"); - - TKeyResponse retval = EKeyWasNotConsumed; - switch ( aKeyEvent.iCode ) - { - case EKeyDownArrow: - case EKeyUpArrow: - { - if (aType == EEventKey) - { - retval = iFileSharingList->OfferKeyEventL( aKeyEvent, aType ); - } - break; - } - - case EKeyOK: - { - if ( aType == EEventKey ) - { - TInt selectedItem = - iFileSharingList->ListBox()->CurrentItemIndex(); - if ( selectedItem == ESharingUiSettingItemVisibility ) - { - retval = iFileSharingList->OfferKeyEventL(aKeyEvent, aType); - } - else - { - RunMultiselectionDialogL(); - retval = EKeyWasConsumed; - } - } - break; - } - - default: - { - retval = CAknDialog::OfferKeyEventL(aKeyEvent, aType); - break; - } - } - - return retval; - } - -// -------------------------------------------------------------------------- -// CUPnPAppFileSharingDialog::HandleSharingStatus -// Function informs when file sharing was enabled or disabled -// -------------------------------------------------------------------------- -// -void CUPnPAppFileSharingDialog::HandleSharingStatus( - CUPnPFileSharingEngine& aEngine, - TInt aError, - TBool aPhase ) - { - __LOG( "[CUPnPAppFileSharingDialog]\t CUPnPAppFileSharingDialog::\ -HandleSharingStatus begin"); - - iFileSharingList->HandleSharingStatus( aEngine, aError, aPhase ); - - if( !aError ) - { - TInt strId( R_UPNP_PHONE_HIDDEN_TEXT ); - if( aPhase ) - { - strId = R_UPNP_PHONE_VISIBLE_TEXT; - } - - TRAP_IGNORE( - HBufC* str = StringLoader::LoadLC( strId ); - CAknInformationNote* note = new ( ELeave ) CAknInformationNote; - note->ExecuteLD( *str ); - CleanupStack::PopAndDestroy( str ) ); - } - - __LOG( "[CUPnPAppFileSharingDialog]\t CUPnPAppFileSharingDialog::\ -HandleSharingStatus end"); - } - -// -------------------------------------------------------------------------- -// CUPnPAppFileSharingDialog::HandleSharingProgress -// Informs about status of the sharing progress -// -------------------------------------------------------------------------- -// -void CUPnPAppFileSharingDialog::HandleSharingProgress( - CUPnPFileSharingEngine& /*aEngine*/, - const RArray& aProgress ) - { - __LOG( "[CUPnPAppFileSharingDialog]\t CUPnPAppFileSharingDialog::\ -HandleSharingProgress begin"); - - TRAPD( err, - CAknInputBlock::NewLC(); - iFileSharingList->SetFilesharingTextsL( aProgress ); - CleanupStack::PopAndDestroy() ); - if ( err != KErrNone ) - { - //show some critical errors using - //default symbian error notes - CActiveScheduler::Current()->Error( err ); - } - - __LOG( "[CUPnPAppFileSharingDialog]\t CUPnPAppFileSharingDialog::\ -HandleSharingProgress end"); - } - -// -------------------------------------------------------------------------- -// CUPnPAppFileSharingDialog::HandleSharingDone -// Function informs when file sharing is done -// -------------------------------------------------------------------------- -// -void CUPnPAppFileSharingDialog::HandleSharingDone( - CUPnPFileSharingEngine& /*aEngine*/, TInt aError ) - { - __LOG( "[CUPnPAppFileSharingDialog]\t CUPnPAppFileSharingDialog::\ -HandleSharingDone begin"); - - //Show information note that sharing is completed - if ( aError == KErrInUse || - aError == KErrNoMemory || - aError == KErrDiskFull ) - { - //show some critical errors using - //default symbian error notes - CActiveScheduler::Current()->Error( aError ); - } - - __LOG( "[CUPnPAppFileSharingDialog]\t CUPnPAppFileSharingDialog::\ -HandleSharingDone end"); - } - -// -------------------------------------------------------------------------- -// CUPnPAppFileSharingDialog::HandleSharingConnectionLost -// Callback to inform if connection has been lost -// -------------------------------------------------------------------------- -// -void CUPnPAppFileSharingDialog::HandleSharingConnectionLost( - CUPnPFileSharingEngine& aEngine ) - { - __LOG("CUPnPAppFileSharingDialog::HandleSharingConnectionLost"); - - TRAPD( err, - CAknInputBlock::NewLC(); - iFileSharingList->HandleSharingConnectionLost( aEngine ); - CleanupStack::PopAndDestroy() ); //CAknInputBlock - if ( err != KErrNone ) - { - //show some critical errors using - //default symbian error notes - CActiveScheduler::Current()->Error( err ); - } - } - -// -------------------------------------------------------------------------- -// CUPnPAppFileSharingDialog::RunMultiselectionDialogL(); -// Opens album selection dialog and sends selected albums -// to engine -// -------------------------------------------------------------------------- -// -void CUPnPAppFileSharingDialog::RunMultiselectionDialogL(void) - { - __LOG("CUPnPAppFileSharingDialog::RunMultiselectionDialogL"); - - CUPnPMultiselectionUi* multiselectionDialog; - - TInt selectedItem = iFileSharingList->ListBox()->CurrentItemIndex(); - - TInt visualSharingState; - - - THomeConnectMediaType mediaType; - if ( selectedItem == ESharingUiSettingItemVisual ) - { - mediaType = - EImageAndVideo; - } - - else - { - mediaType = - EPlaylist; - } - CArrayFix* markedItems = new(ELeave) CArrayFixFlat(3); - CleanupStack::PushL( markedItems ); - multiselectionDialog = CUPnPMultiselectionUi::NewL( - mediaType, - &iFileSharingEngine, - visualSharingState, - markedItems ); - CleanupStack::PushL( multiselectionDialog ); - TInt ret = multiselectionDialog->ExecuteDlgLD(); - - CleanupStack::PopAndDestroy( multiselectionDialog ); - - multiselectionDialog = NULL; - - // Set title back - iTitlePane->SetTextL(*StringLoader::LoadLC( R_SHARINGUI_TITLE_TEXT )); - CleanupStack::PopAndDestroy(); - - if ( ret ) - { - __LOG("CUPnPAppFileSharingDialog::RunMultiselectionDialogL: \ -Calling ShareMediaFilesL.."); - // set selections - iFileSharingEngine.SetSelectionIndexesL( mediaType, *markedItems ); - - // Share files asynchronously - iFileSharingEngine.ShareMediaL( mediaType ); - - DisplayInfoL( R_SHARINGUI_UPDATING_CONTENT_HEADER, - R_SHARINGUI_UPDATING_CONTENT_NOTE_TEXT, - R_SHARINGUI_INFO_QUERY ); - } - CleanupStack::PopAndDestroy( markedItems ); - - } - -// -------------------------------------------------------------------------- -// CUPnPAppFileSharingDialog::GetHelpContext -// -------------------------------------------------------------------------- -// -void CUPnPAppFileSharingDialog::GetHelpContext( - TCoeHelpContext& aContext) const - { - __LOG("CUPnPAppMainDialog::CUPnPAppFileSharingDialog"); - - aContext.iMajor = TUid::Uid( KHomeConnectUID3 ); - aContext.iContext = KUPNP_HLP_SHARE_CONTENT; - } - -// -------------------------------------------------------------------------- -// CUPnPAppFileSharingDialog::CreateCustomControlL -// From CAknDialog -// -------------------------------------------------------------------------- -// -SEikControlInfo CUPnPAppFileSharingDialog::CreateCustomControlL( - TInt aControlType) - { - __LOG( "[CUPnPAppFileSharingDialog]\t CreateCustomControlL"); - iFileSharingList = CUPnPAppFileSharingList::NewL( - &iFileSharingEngine ); - - SEikControlInfo controlInfo; - controlInfo.iControl = NULL; - controlInfo.iTrailerTextId = 0; - controlInfo.iFlags = 0; - - if ( aControlType == KAknCtLastControlId ) - { - controlInfo.iControl = iFileSharingList; - } - iFileSharingEngine.RequestSharingProgressL(); - - return controlInfo; - } - -// -------------------------------------------------------------------------- -// CUPnPAppFileSharingDialog::DisplayInfoL(); -// Shows message query to user -// -------------------------------------------------------------------------- -// -void CUPnPAppFileSharingDialog::DisplayInfoL(TInt aHeaderResourceId, - TInt aMessageResourceId, - TInt aDialogResourceId) - { - 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); - } - -// -------------------------------------------------------------------------- -// CUPnPAppFileSharingDialog::UpdateFileSharingListL(); -// Get the pointer of iFileSharingList,update the visibity of item -// -------------------------------------------------------------------------- -// -EXPORT_C void CUPnPAppFileSharingDialog::UpdateFileSharingListL() - { - if( iFileSharingList ) - { - iFileSharingList->UpdateVisibitySettingItemL(); - } - - } -// End of File