diff -r 6369bfd1b60d -r 08b5eae9f9ff upnpframework/upnpcommonui/src/upnpcommonui.cpp --- a/upnpframework/upnpcommonui/src/upnpcommonui.cpp Mon Nov 01 13:44:24 2010 +0200 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,669 +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 Common UI. -* -*/ - - -// INCLUDE FILES -// System -#include -#include -#include -#include -#include -#include //PathInfo - -// upnp stack api -#include - -// upnpframework / avcontroller api -#include "upnpavcontroller.h" -#include "upnpavrenderingsession.h" -#include "upnpavdevice.h" -#include "upnpmediaserversettings.h" - -// upnpframework / internal api's -#include "upnpmusicadapter.h" - -// commonui internal -#include "upnpcommonui.h" -#include -#include "upnpexternaldevicedialog.h" -#include "upnpbrowsedialog.h" -#include "upnpvideoplayerdialog.h" -#include "upnpadvfinddialog.h" -#include "upnpselectiondialog.h" - -// debug stuff -_LIT( KComponentLogfile, "commonui.txt"); -#include "upnplog.h" - -// CONSTANTS -// Filename of rsc file -_LIT( KUPnPCommonUiRscFile, "\\resource\\upnpcommonui.rsc" ); - -// ============================ MEMBER FUNCTIONS ============================ - -// -------------------------------------------------------------------------- -// CUPnPCommonUI::CUPnPCommonUI -// -------------------------------------------------------------------------- -// -CUPnPCommonUI::CUPnPCommonUI() - { - __LOG( "CUPnPCommonUI::CUPnPCommonUI" ); - iFeatureManagerInitialized = EFalse; - } - -// -------------------------------------------------------------------------- -// CUPnPCommonUI::ConstructL() -// Symbian 2nd phase constructor can leave. -// -------------------------------------------------------------------------- -// -void CUPnPCommonUI::ConstructL() - { - __LOG( "CUPnPCommonUI::ConstructL" ); - - iCoeEnv = CEikonEnv::Static(); - RFs& fileSession = iCoeEnv->FsSession(); - - // Load common ui resource file - TFileName rscFileName( KUPnPCommonUiRscFile ); - 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 ); - } - iResFileOffset = iCoeEnv->AddResourceFileL( rscFileName ); - - FeatureManager::InitializeLibL(); - iFeatureManagerInitialized = ETrue; - - // Get AppUI pointer - iAppUi = static_cast( iCoeEnv->EikAppUi() ); - } - -// -------------------------------------------------------------------------- -// CUPnPCommonUI::NewL() -// Two-phased constructor. -// -------------------------------------------------------------------------- -// -EXPORT_C CUPnPCommonUI* CUPnPCommonUI::NewL() - { - __LOG( "CUPnPCommonUI::NewL" ); - - CUPnPCommonUI* self = new ( ELeave) CUPnPCommonUI(); - CleanupStack::PushL( self ); - - self->ConstructL(); - CleanupStack::Pop(); - return self; - } - -// -------------------------------------------------------------------------- -// Destructor -// -------------------------------------------------------------------------- -// -EXPORT_C CUPnPCommonUI::~CUPnPCommonUI() - { - __LOG( "CUPnPCommonUI::~CUPnPCommonUI" ); - - if ( iFeatureManagerInitialized ) - { - FeatureManager::UnInitializeLib(); - } - - // Un-Load resource file - if ( iResFileOffset ) - { - iCoeEnv->DeleteResourceFile( iResFileOffset ); - iResFileOffset = 0; - } - } - -// -------------------------------------------------------------------------- -// CUPnPCommonUI::ExecuteDeviceDialogL -// -------------------------------------------------------------------------- -// -EXPORT_C TInt CUPnPCommonUI::ExecuteDeviceDialogL( - MUPnPAVController& aAVControl ) - { - __LOG( "CUPnPCommonUI::ExecuteDeviceDialogL" ); - - TInt returnValue = KErrArgument; - - iExternalDeviceSelection = CUPnPExternalDeviceDialog::NewL( - R_UPNPCOMMONUI_EXTERNAL_DEVICE_DIALOG_MENUBAR, - aAVControl, - *this ); - - - iExternalDeviceSelection->SetMopParent( iAppUi ); - returnValue = iExternalDeviceSelection->ExecuteLD( - R_UPNPCOMMONUI_EXTERNAL_MEDIA_SELECT_DIALOG ); - iExternalDeviceSelection = NULL; - - return returnValue; - } - -// -------------------------------------------------------------------------- -// CUPnPCommonUI::ExecuteBrowseDialogL -// -------------------------------------------------------------------------- -// -EXPORT_C TInt CUPnPCommonUI::ExecuteBrowseDialogL( - MUPnPAVController& aAVControl, - const CUpnpAVDevice& aDevice) - { - __LOG( "CUPnPCommonUI::ExecuteBrowseDialogL" ); - - - TInt returnValue = KErrArgument; - - TInt error = KErrNone; - - - iBrowseSelection = CUPnPBrowseDialog::NewL( - R_UPNPCOMMONUI_BROWSE_DIALOG_MENUBAR, aAVControl, aDevice, *this ); - - iBrowseSelection->SetMopParent( iAppUi ); - TRAP( error, returnValue = iBrowseSelection->ExecuteLD( - R_UPNPCOMMONUI_BROWSE_DIALOG ) ); - iBrowseSelection = NULL; - - if( error != KErrNone ) - { - returnValue = error; - } - return returnValue; - } - -// -------------------------------------------------------------------------- -// CUPnPCommonUI::ExecuteVideoPlayerL -// -------------------------------------------------------------------------- -// -EXPORT_C TInt CUPnPCommonUI::ExecuteVideoPlayerL( - MUPnPAVRenderingSession& aRenderingSession, - const CUpnpObject& aObject ) - { - __LOG( "CUPnPCommonUI::ExecuteVideoPlayerL" ); - - TInt returnValue = KErrArgument; - - iVideoPlayerDialog = CUPnPVideoPlayerDlg::NewL( - aRenderingSession, aObject, *this ); - iVideoPlayerDialog->SetMopParent( iAppUi ); - TRAPD( error, returnValue = iVideoPlayerDialog->ExecuteLD( - R_UPNPCOMMONUI_VIDEO_PLAYER_DIALOG ) ); - iVideoPlayerDialog = NULL; - - if( error != KErrNone ) - { - returnValue = error; - } - - return returnValue; - } - -// -------------------------------------------------------------------------- -// CUPnPCommonUI::ExecuteMusicPlayerL -// -------------------------------------------------------------------------- -// -EXPORT_C TInt CUPnPCommonUI::ExecuteMusicPlayerL( - MUPnPAVController& aAVControl, - CUPnPPlayListFiller* aFiller, - const CUpnpAVDevice* aTargetDevice ) - { - TInt returnValue = KErrArgument; - - iMusicAdapter = CUPnPMusicAdapter::NewL( aAVControl ); - TInt error = KErrNone; - if( aTargetDevice ) - { - //play in remote - TRAP( error, returnValue = iMusicAdapter->ExecuteMusicInRemoteL( - iCoeEnv->EikAppUi(), - aFiller, - *aTargetDevice ) ); - } - else - { - //play in local - TRAP( error, returnValue = iMusicAdapter->ExecuteMusicInLocalL( - iCoeEnv->EikAppUi(), - aFiller ) ); - } - delete iMusicAdapter; - iMusicAdapter = 0; - - if( error != KErrNone ) - { - returnValue = error; - } - return returnValue; - } - - -// -------------------------------------------------------------------------- -// CUPnPCommonUI::SelectDeviceL -// Displays a UPnP device selection pop-up dialog. -// -------------------------------------------------------------------------- -EXPORT_C TInt CUPnPCommonUI::SelectDeviceL( MUPnPAVController& aAVControl, - CUpnpAVDevice& aDevice, - TUPnPDeviceTypesToSearch aType, - TUPnPDialogTitle aTitle ) - { - __LOG( "CUPnPCommonUI::SelectDeviceL" ); - - - TInt returnValue = KErrGeneral; - - // Create the selection popup - delete iDeviceSelection; iDeviceSelection = NULL; - iDeviceSelection = CUPnPSelectionDialog::NewL( aAVControl ); - - // Read the title string - HBufC* title = NULL; - if( aTitle == EUPnPCopyToTitle ) - { - title = StringLoader::LoadLC( R_UPNPCOMMONUI_COPY_TO_TEXT ); - } - else if( aTitle == EUPnPMoveToTitle ) - { - title = StringLoader::LoadLC( R_UPNPCOMMONUI_MOVE_TO_TEXT ); - } - else - { - if( aType == EUPnPSearchRenderingDevicesWithAudioCapability ) - { - title = StringLoader::LoadLC( R_UPNPCOMMONUI_SELECT_PLAYER_TEXT ); - } - else - { - title = StringLoader::LoadLC( R_UPNPCOMMONUI_SELECT_DEVICE_TEXT ); - } - } - - if( aType == EUPnPSearchAllDevices || - aType == EUPnPSearchAllServerDevices || - aType == EUPnPSearchServerDevicesWithCopyCapability || - aType == EUPnPSearchServerDevicesWithSearchCapability || - aType == EUPnPSearchAllRenderingDevices || - aType == EUPnPSearchRenderingDevicesWithImageCapability || - aType == EUPnPSearchRenderingDevicesWithVideoCapability || - aType == EUPnPSearchRenderingDevicesWithImageAndVideoCapability || - aType == EUPnPSearchRenderingDevicesWithAudioCapability ) - { - iDeviceSelection->CreatePopupL( *title, aType ); - returnValue = iDeviceSelection->StartPopupL( aDevice ); - } - else - { - CleanupStack::PopAndDestroy( title ); - title = NULL; - return KErrNotSupported; - } - - // Clean up - CleanupStack::PopAndDestroy( title ); - title = NULL; - delete iDeviceSelection; iDeviceSelection = NULL; - - __LOG1( "CUPnPCommonUI::SelectDeviceL: %d", returnValue ); - return returnValue; - } - -// -------------------------------------------------------------------------- -// CUPnPCommonUI::DisplayConnectionErrorNote() -// Displays error note R_UPNP_ERROR_CON_TEXT -// -------------------------------------------------------------------------- -// -EXPORT_C void CUPnPCommonUI::DisplayConnectionErrorNoteL() - { - HBufC* errorText = StringLoader::LoadLC( R_UPNPCOMMONUI_ERROR_CON_TEXT ); - CAknErrorNote* errorNote = new ( ELeave ) CAknErrorNote( ETrue ); - errorNote->ExecuteLD( *errorText ); - CleanupStack::PopAndDestroy( errorText ); - } - -// -------------------------------------------------------------------------- -// CUPnPCommonUI::DisplayConnectionLostCopyErrorNoteL() -// Displays error note R_UPNPCOMMONUI_CONN_LOST_COPY_ERROR_TEXT -// -------------------------------------------------------------------------- -// -EXPORT_C void CUPnPCommonUI::DisplayConnectionLostCopyErrorNoteL() - { - __LOG( "CUPnPCommonUI::DisplayConnectionLostCopyErrorNoteL" ); - HBufC* errorText = StringLoader::LoadLC( - R_UPNPCOMMONUI_CONN_LOST_COPY_ERROR_TEXT ); - CAknErrorNote* errorNote = new ( ELeave ) CAknErrorNote( ETrue ); - errorNote->ExecuteLD( *errorText ); - CleanupStack::PopAndDestroy( errorText ); - } - -// -------------------------------------------------------------------------- -// CUPnPCommonUI::ExecuteAdvFindDialogL() -// -------------------------------------------------------------------------- -// -TInt CUPnPCommonUI::ExecuteAdvFindDialogL( - MUPnPAVController& aAVControl, - MUPnPAVBrowsingSession& aBrowsingSession) - - { - __LOG( "CUPnPCommonUI::ExecuteAdvFindDialogL" ); - - - TInt returnValue = KErrArgument; - TInt error = KErrNone; - - iAdvFindDialog = CUPnPAdvancedFindDialog::NewL( - R_UPNPCOMMONUI_ADVANCED_FIND_MAIN_DIALOG, - aAVControl, - aBrowsingSession, - *this ); - - iAdvFindDialog->SetMopParent( iAppUi ); - - TRAP( error, returnValue = iAdvFindDialog->ExecuteLD( - R_UPNPCOMMONUI_ADVANCED_FIND_MAIN_DIALOG ) ); - - iAdvFindDialog = NULL; - - if( KErrNone != error ) - { - returnValue = error; - } - - return returnValue; - } - -// -------------------------------------------------------------------------- -// CUPnPCommonUI::DismissDialogL() -// called only when the media server disconnected or WLAN connection is lost -// to close the dialogs which are running on the top of the mother class -// -------------------------------------------------------------------------- -// -EXPORT_C void CUPnPCommonUI::DismissDialogL( TInt aError ) - { - if( iDeviceSelection && KErrSessionClosed == aError ) - { - iDeviceSelection->DismissItself( aError ); - } - - if( iVideoPlayerDialog ) - { - iVideoPlayerDialog->DismissItselfL( aError ); - iVideoPlayerDialog = NULL; - } - - if( iMusicAdapter ) - { - iMusicAdapter->Dismiss( aError ); - //iMusicAdapter = NULL; - } - } - -// -------------------------------------------------------------------------- -// CUPnPCommonUI::DisplayErrorTextL -// -// -------------------------------------------------------------------------- -void CUPnPCommonUI::DisplayErrorTextL( TInt aResource ) - { - CAknErrorNote* errorNote = new( ELeave )CAknErrorNote(); - errorNote->ExecuteLD( *StringLoader::LoadLC( aResource ) ); - CleanupStack::PopAndDestroy(); - } - -// -------------------------------------------------------------------------- -// CUPnPCommonUI::DisplayErrorTextL -// -------------------------------------------------------------------------- -// -void CUPnPCommonUI::DisplayErrorTextL( TInt aResource, const TDesC& aInfo ) - { - HBufC* errorText = StringLoader::LoadLC( aResource, aInfo ); - CAknErrorNote* errorNote = new ( ELeave ) CAknErrorNote( ETrue ); - errorNote->ExecuteLD( *errorText ); - CleanupStack::PopAndDestroy( errorText ); - } - -// -------------------------------------------------------------------------- -// CUPnPBrowseDialog::DisplayErrorNote -// -------------------------------------------------------------------------- -// -void CUPnPCommonUI::DisplayErrorTextL( TInt aResource, - TInt aMaxNumberOfResultsShown ) - { - HBufC* errorText = StringLoader::LoadLC( aResource, - aMaxNumberOfResultsShown ); - CAknErrorNote* errorNote = new ( ELeave ) CAknErrorNote( ETrue ); - errorNote->ExecuteLD( *errorText ); - CleanupStack::PopAndDestroy( errorText ); - } - -// -------------------------------------------------------------------------- -// CUPnPBrowseDialog::DisplayInfoTextL -// -------------------------------------------------------------------------- -// -void CUPnPCommonUI::DisplayInfoTextL( TInt aResource, - TInt aNumberOfCopy ) - { - CAknInformationNote* errorNote = - new( ELeave )CAknInformationNote( ETrue ); - errorNote->ExecuteLD( *StringLoader::LoadLC( aResource, - aNumberOfCopy ) ); - CleanupStack::PopAndDestroy(); - } - -// -------------------------------------------------------------------------- -// CUPnPBrowseDialog::DisplayInfoTextL -// -------------------------------------------------------------------------- -// -void CUPnPCommonUI::DisplayInfoTextL( TInt aResource ) - { - CAknInformationNote* errorNote = - new( ELeave )CAknInformationNote( ); - errorNote->ExecuteLD( *StringLoader::LoadLC( aResource ) ); - CleanupStack::PopAndDestroy(); - } - -// -------------------------------------------------------------------------- -// CUPnPBrowseDialog::PresenceOfDialog -// -------------------------------------------------------------------------- -// -TBool CUPnPCommonUI::PresenceOfDialog() - { - if( iBrowseSelection || iAdvFindDialog || iDeviceSelection ) - { - return ETrue; - } - return EFalse; - } - -// -------------------------------------------------------------------------- -// CUPnPCommonUI::GetUpnpAction() -// -------------------------------------------------------------------------- -// -void CUPnPCommonUI::GetUpnpAction( TUPnPAction aAction ) - { - iAction = aAction; - } - -// -------------------------------------------------------------------------- -// CUPnPBrowseDialog::HandleCommonErrorL -// -------------------------------------------------------------------------- -// -void CUPnPCommonUI::HandleCommonErrorL( TInt aError, - TInt aCopyIndex ) - { - - //specified errors for every action should be handled first - // common erros last - __LOG1( "CUPnPCommonUI::HandleCommonErrorL: %d", aError ); - - if( KErrNone <= aError && ( iAction == CUPnPCommonUI::EUPnPNone || - iAction != CUPnPCommonUI::EUPnPCopy ) ) - { - iAction = EUPnPNone; - return; - } - switch( aError ) - { - case KErrCancel: - { - break; - } - case KErrServerBusy: - { - DisplayErrorTextL( R_UPNPCOMMONUI_GENERAL_FAILURE_ERROR_TEXT ); - break; - } - case KErrNoMemory: - { - DisplayErrorTextL( R_UPNPCOMMONUI_NOMEMORY_TEXT ); - break; - } - case KErrDiskFull: - { - HBufC* copyLocation = HBufC::NewLC( KMaxFileName ); - TPtr copyLocationPtr( copyLocation->Des() ); - GetCopyLocationL( copyLocationPtr ); - TPtr driveName = copyLocationPtr.LeftTPtr( 2 ); - DisplayErrorTextL( R_UPNPCOMMONUI_DEVICE_MEMORY_LOW, driveName ); - CleanupStack::PopAndDestroy( copyLocation ); - break; - } - case KErrSessionClosed: - case KErrDisconnected: - { - if( iAction == CUPnPCommonUI::EUPnPCopy ) - { - //Connection lost, some files may not be copied - DisplayErrorTextL( R_UPNPCOMMONUI_CONN_LOST_COPY_ERROR_TEXT ); - } - else if( KErrSessionClosed == aError && - iAction != CUPnPCommonUI::EUPnPCopy ) - { - //connection failed - DisplayErrorTextL( R_UPNPCOMMONUI_ERROR_CON_TEXT ); - } - delete iBrowseSelection; - iBrowseSelection = NULL; - break; - } - case KErrNotSupported: - { - //Selected device does not support this operation - DisplayErrorTextL( R_UPNPCOMMONUI_NOT_SUPPORTED_ERROR_TEXT ); - break; - } - default: - { - if( iAction != EUPnPNone ) - { - if( iAction == EUPnPCopy ) - { - if( KErrNone == aError ) - { - if( aCopyIndex == 1) //copying single item OK - { - DisplayInfoTextL( - R_UPNPCOMMONUI_INFO_COPY_ONE_TEXT ); - } - else if( aCopyIndex > 1 ) //copying multi items OK - { - DisplayInfoTextL( - R_UPNPCOMMONUI_INFO_COPY_MANY_TEXT, - aCopyIndex ); - } - else - { - // - } - } - else - { - if( KErrNotFound == aError ) - { - if( aCopyIndex ) //copying a container - { - //"Container does not contain any items." - DisplayErrorTextL( - R_UPNPCOMMONUI_NO_ITEMS_TO_PLAY_TEXT ); - } - else - { - //copy failed - DisplayErrorTextL( - R_UPNPCOMMONUI_GENERAL_FAILURE_ERROR_TEXT ); - } - } - else //if copying, unkown error - { - //copy failed - DisplayErrorTextL( - R_UPNPCOMMONUI_GENERAL_FAILURE_ERROR_TEXT ); - } - } - } - else if( iAction == EUPnPShow ) - { - if( KErrNone != aError ) - { - //Playback failed on the remote device for - //unknown error. Try again - DisplayErrorTextL( - R_UPNPCOMMONUI_RENDERING_FAILED_UNKNOWN_ERROR_TEXT ); - } - } - else - { - if( KErrNone != aError ) - { - //Selected device refused the operation - DisplayErrorTextL( - R_UPNPCOMMONUI_GENERAL_FAILURE_ERROR_TEXT ); - } - } - }//if( iAction != EUPnPNone ) - - break; - }//default: - - } // switch( aError ) - - iAction = EUPnPNone; - } - -// -------------------------------------------------------------------------- -// CUPnPCommonUI::GetCopyLocationL -// -------------------------------------------------------------------------- -// -void CUPnPCommonUI::GetCopyLocationL( TDes& aLocation ) const - { - // Get instance of Server Settings object - CUpnpMediaServerSettings* settings = CUpnpMediaServerSettings::NewL(); - CleanupStack::PushL( settings ); - - // Get the location setting from ServerSettings - settings->Get( UpnpMediaServerSettings::EUploadDirectory, aLocation ); - - CleanupStack::PopAndDestroy( settings ); - } -// End of File