diff -r 73a1feb507fb -r bc78a40cd63c mmshplugins/mmshaiwplugin/src/musaiwprovider.cpp --- a/mmshplugins/mmshaiwplugin/src/musaiwprovider.cpp Tue Aug 31 15:12:07 2010 +0300 +++ b/mmshplugins/mmshaiwplugin/src/musaiwprovider.cpp Wed Sep 01 12:31:01 2010 +0100 @@ -27,8 +27,6 @@ #include "musresourcefinderutil.h" #include "mussettings.h" #include "mussesseioninformationapi.h" -#include "musindicatorapi.h" -#include "mussessionproperties.h" #include @@ -50,7 +48,6 @@ #include #include #include -#include //////// public -- constructor and destructor //////// @@ -80,9 +77,8 @@ { MUS_LOG( "mus: [AIWPRO] -> CMusAiwProvider::~CMusAiwProvider" ) delete iResourceFileName ; - iResourceFileName = NULL ; - delete iIndicator; - iIndicator = NULL ; + iResourceFileName = NULL ; + MUS_LOG( "mus: [AIWPRO] <- CMusAiwProvider::~CMusAiwProvider" ) } @@ -147,7 +143,25 @@ TInt /* aCascadeId */, const CAiwGenericParamList& /* aInParamList */ ) { - MUS_LOG1( "mus: [AIWPRO] -> CMusAiwProvider::InitializeMenuPaneL( %d )", + FeatureManager::InitializeLibL(); + TBool support = FeatureManager::FeatureSupported( KFeatureIdMultimediaSharing ); + FeatureManager::UnInitializeLib(); + if( support ) + { + DoInitializeMenuPaneL( aMenuPane, aIndex ); + } + } + + +// ----------------------------------------------------------------------------- +// Initializes menu pane by adding provider-specific menu items. +// ----------------------------------------------------------------------------- +// +void CMusAiwProvider::DoInitializeMenuPaneL( + CAiwMenuPane& aMenuPane, + TInt aIndex) + { + MUS_LOG1( "mus: [AIWPRO] -> CMusAiwProvider::DoInitializeMenuPaneL( %d )", aIndex ) if( iResourceFileName == NULL ) @@ -158,10 +172,7 @@ TFileName filename ( *iResourceFileName ); MUS_LOG_TDESC( "mus: [AIWPRO] Resource filename: ", filename ) - // If app running but hidden from fast swap it means that application - // is hidden from user and options menu should look same as - // when application is not yet started - if( ApplicationRunningL() && !HiddenFromFastSwapL() ) + if( ApplicationRunningL() ) { MUS_LOG( "mus: [AIWPRO] Application already running:\ giving _continue sharing_ menu command" ) @@ -180,10 +191,6 @@ { OperatorVariantStartUpL( filename, aMenuPane, aIndex ); } - else if ( IsFastStartupModeL() ) - { - FastModeStartUpL( filename, aMenuPane, aIndex ); - } else { NoVariationStartUpL( filename, aMenuPane, aIndex ); @@ -191,7 +198,7 @@ } - MUS_LOG( "mus: [AIWPRO] <- CMusAiwProvider::InitializeMenuPaneL" ) + MUS_LOG( "mus: [AIWPRO] <- CMusAiwProvider::DoInitializeMenuPaneL" ) } // ----------------------------------------------------------------------------- @@ -202,12 +209,7 @@ void CMusAiwProvider::DoInitialiseL() { MUS_LOG( "mus: [AIWPRO] -> CMusAiwProvider::DoInitialiseL") - - if ( !iIndicator ) - { - MUS_LOG( "mus: [AIWPRO] : creating indicator") - iIndicator = CMusIndicatorApi::NewL(); - } + MUS_LOG( "mus: [AIWPRO] <- CMusAiwProvider::DoInitialiseL") } @@ -250,10 +252,19 @@ 3.When iAvailability plugin says OK ( Based on call,network,settingui item) 4.Also in confrence and hold cases */ - if ( AvailabilityOk( iAvailability ) ) + if ( iAvailability == MultimediaSharing::ESipRegistrationPending || + iAvailability == MultimediaSharing::ESipOptionsSent || + iAvailability == MultimediaSharing::EMultimediaSharingAvailable || + iAvailability == MultimediaSharing::EErrCallOnHold || + iAvailability == MultimediaSharing::EErrConferenceCall || + iAvailability == MultimediaSharing::ESipOptionsNotCapable || + iAvailability == MultimediaSharing::ESipOptionsNotSent || + iAvailability == MultimediaSharing::EErrNetwork || + iAvailability == MultimediaSharing::EManualActivation || + iAvailability == MultimediaSharing::EErrConnection || + iAvailability == MultimediaSharing::EErrSipRegistration ) { - MUS_LOG1( "mus: [AIWPRO] Showing AIW Menu -> iAvailability = %d ", - iAvailability ) + MUS_LOG1( "mus: [AIWPRO] Showing AIW Menu -> iAvailability = %d ",iAvailability ) TInt resourceID = R_MUSAIWPROVIDER_BASIC_CASCADED_SUBMENU ; if ( !FeatureManager::FeatureSupported( KFeatureIdCamera ) ) { @@ -267,8 +278,7 @@ } else { - MUS_LOG1( "mus: [AIWPRO] Not Showing AIW Menu -> iAvailability = %d ", - iAvailability ) + MUS_LOG1( "mus: [AIWPRO] Not Showing AIW Menu -> iAvailability = %d ",iAvailability ) } CleanupStack::PopAndDestroy( manager ); MUS_LOG( "mus: [AIWPRO] <- CMusAiwProvider::NoVariationStartUpL" ) @@ -290,8 +300,7 @@ // should be shown in call menu only if iAvailability plugin returns OK if ( iAvailability == MultimediaSharing::EMultimediaSharingAvailable ) { - MUS_LOG1( "mus: [AIWPRO] Showing AIW Menu -> iAvailability = %d ", - iAvailability ) + MUS_LOG1( "mus: [AIWPRO] Showing AIW Menu -> iAvailability = %d ", iAvailability ) TInt resourceID = R_MUSAIWPROVIDER_BASIC_CASCADED_SUBMENU ; if ( !FeatureManager::FeatureSupported( KFeatureIdCamera ) ) { @@ -305,8 +314,7 @@ } else { - MUS_LOG1( "mus: [AIWPRO] Not Showing AIW Menu -> iAvailability = %d ", - iAvailability ) + MUS_LOG1( "mus: [AIWPRO] Not Showing AIW Menu -> iAvailability = %d ",iAvailability ) } CleanupStack::PopAndDestroy( manager ); @@ -315,60 +323,6 @@ } // ----------------------------------------------------------------------------- -// In fast mode, Multimediasharing Menu items -// should not be shown before options queries have completed. Outcome -// of queries does not matter. -// ----------------------------------------------------------------------------- -// -void CMusAiwProvider::FastModeStartUpL( - TFileName& aFileName, CAiwMenuPane& aMenuPane, TInt aIndex ) - { - MUS_LOG( "mus: [AIWPRO] -> CMusAiwProvider::FastModeStartUpL" ) - - if ( MultimediaSharingSettings::CapabilityQuerySettingL() != - MusSettingsKeys::EParallel ) - { - // If parallel capability query is not enabled, use normal startup as - // capability query is essential for fast session setup - NoVariationStartUpL( aFileName, aMenuPane, aIndex ); - } - else - { - CMusManager* manager = CMusManager::NewLC(); - iAvailability = manager->AvailabilityL(); - - if ( iAvailability == MultimediaSharing::ESipRegistrationPending || - iAvailability == MultimediaSharing::ESipOptionsSent || - !AvailabilityOk( iAvailability ) ) - { - // Need to wait for options to complete - MUS_LOG1( "mus: [AIWPRO] Not Showing AIW Menu -> iAvailability = %d ", - iAvailability ) - } - else - { - // It does not matter what was result of query - MUS_LOG1( "mus: [AIWPRO] Showing AIW Menu -> iAvailability = %d ", - iAvailability ) - TInt resourceID = R_MUSAIWPROVIDER_BASIC_CASCADED_SUBMENU ; - if ( !FeatureManager::FeatureSupported( KFeatureIdCamera ) ) - { - MUS_LOG( "mus: [AIWPRO] Camera Not Available" ) - resourceID = R_MUSAIWPROVIDER_NOCAMERA_CASCADED_SUBMENU ; - } - aMenuPane.AddMenuItemsL( aFileName, - resourceID, - KMusAiwProviderUid, - aIndex ); - } - - CleanupStack::PopAndDestroy( manager ); - } - - MUS_LOG( "mus: [AIWPRO] <- CMusAiwProvider::FastModeStartUpL" ) - } - -// ----------------------------------------------------------------------------- // // ----------------------------------------------------------------------------- // @@ -547,29 +501,32 @@ { MUS_LOG( "mus: [AIWPRO] \ EMusCommandLiveShare: Will now attempt to start Mus." ) - TRAP( error, StartApplicationL( *manager, MultimediaSharing::EMusLiveVideo ) ); + TRAP( error, manager->StartApplicationL( + MultimediaSharing::EMusLiveVideo ) ); break; } case EMusCommandClipShare: { MUS_LOG( "mus: [AIWPRO] \ - EMusCommandClipShare: Will now attempt to start Mus." ) - TRAP( error, StartApplicationL( *manager, MultimediaSharing::EMusClipVideo ) ); - + EMusCommandClipShare: Will now attempt to start Mus." ) + TRAP( error, manager->StartApplicationL( + MultimediaSharing::EMusClipVideo ) ); break; } case EMusCommandImageShare: { MUS_LOG( "mus: [AIWPRO] \ EMusCommandImageShare: Will now attempt to start Mus." ) - TRAP( error, StartApplicationL( *manager, MultimediaSharing::EMusStillImage ) ); + TRAP( error, manager->StartApplicationL( + MultimediaSharing::EMusStillImage ) ); break; } case EMusCommandContinue: { MUS_LOG( "mus: [AIWPRO] \ EMusCommandContinue: Will now attempt to start/continue Mus." ) - TRAP( error, StartApplicationL( *manager, MultimediaSharing::EMusContinue ) ); + TRAP( error, manager->StartApplicationL( + MultimediaSharing::EMusContinue ) ); break; } default: @@ -591,129 +548,4 @@ MUS_LOG( "mus: [AIWPRO] <- CMusAiwProvider::HandleMenuCmdL" ) } -// ----------------------------------------------------------------------------- -// -// ----------------------------------------------------------------------------- -// -TBool CMusAiwProvider::AvailabilityOk( - MultimediaSharing::TMusAvailabilityStatus aAvailability ) const - { - return ( - aAvailability == MultimediaSharing::ESipRegistrationPending || - aAvailability == MultimediaSharing::ESipOptionsSent || - aAvailability == MultimediaSharing::EMultimediaSharingAvailable || - aAvailability == MultimediaSharing::EErrCallOnHold || - aAvailability == MultimediaSharing::EErrConferenceCall || - aAvailability == MultimediaSharing::ESipOptionsNotCapable || - aAvailability == MultimediaSharing::ESipOptionsNotSent || - aAvailability == MultimediaSharing::EErrNetwork || - aAvailability == MultimediaSharing::EManualActivation || - aAvailability == MultimediaSharing::EErrConnection || - aAvailability == MultimediaSharing::EErrSipRegistration ); - } - -// ----------------------------------------------------------------------------- -// App's fastswap visibility status is interesting only in fast mode. -// ----------------------------------------------------------------------------- -// -TBool CMusAiwProvider::HiddenFromFastSwapL() - { - MUS_LOG( "mus: [AIWPRO] -> CMusAiwProvider::HiddenFromFastSwapL" ) - - TBool hidden( EFalse ); - if ( !IsFastStartupModeL() ) - { - MUS_LOG( "mus: [AIWPRO] <- CMusAiwProvider::HiddenFromFastSwapL" ) - return hidden; - } - - const TInt KMusAiwMaxHiddenAppSizeMod = 4; - TBuf16 hiddenList; - TInt err = RProperty::Get( KPSUidUikon, KUikAppHiddenList, hiddenList ); - MUS_LOG1( "mus: [AIWPRO] Hidden list read:%d", err ) - - if ( err == KErrNone ) - { - TBool continueFinding( ETrue ); - MUS_LOG1( "mus: [AIWPRO] Hidden list len:%d", hiddenList.Length() ) - for ( TInt i = 0; i < KMaxHiddenApps && continueFinding; i++ ) - { - // 32-bit uid values are retrieved in two 16-bit parts - __ASSERT_ALWAYS( hiddenList.Length() > i + 1, User::Leave( KErrEof ) ); - TUint32 listValue = hiddenList[ i ] << 16; - listValue += hiddenList[ ++i ]; - // the value NULL marks the end of array -> leave the loop - if ( listValue ) - { - MUS_LOG1( "mus: [AIWPRO] Hidden uid:%d", listValue ) - if ( listValue == KMusUiUid ) - { - hidden = ETrue; - continueFinding = EFalse; - } - } - else - { - // Zero value means ending of list - continueFinding = EFalse; - } - } - } - - MUS_LOG1( "mus: [AIWPRO] <- CMusAiwProvider::HiddenFromFastSwapL:%d", hidden ) - - return hidden; - } - -// ----------------------------------------------------------------------------- -// Check whether fast mode is enabled, take in count that key -// might not be present. -// ----------------------------------------------------------------------------- -// -TBool CMusAiwProvider::IsFastStartupModeL() - { - TBool fastModeEnabled( EFalse ); - MusSettingsKeys::TFastMode fastMode( MusSettingsKeys::EFastModeOff ); - TRAPD( err, fastMode = MultimediaSharingSettings::FastStartupModeL() ); - if ( err == KErrNoMemory ) - { - User::Leave( err ); - } - if ( err == KErrNone ) - { - fastModeEnabled = ( fastMode == MusSettingsKeys::EFastModeOn ); - } - return fastModeEnabled; - } - -// ----------------------------------------------------------------------------- -// If fast mode is enabled and app is running and hidden, it has been started -// with live use-case but user does not know that. If user tries to do -// clip usecase in such situation, use case is just updated and engine -// takes case of bringing hidden application to foreground. -// ----------------------------------------------------------------------------- -// -void CMusAiwProvider::StartApplicationL( - CMusManager& aManager, MultimediaSharing::TMusUseCase aUseCase ) - { - MUS_LOG( "mus: [AIWPRO] -> CMusAiwProvider::StartApplicationL" ) - - TBool startApp( ETrue ); - if ( IsFastStartupModeL() && aUseCase == MultimediaSharing::EMusClipVideo && - ApplicationRunningL() && HiddenFromFastSwapL() ) - { - MUS_LOG( "mus: [AIWPRO] App already running hidden, change only usecase!" ) - User::LeaveIfError( RProperty::Set( - NMusSessionApi::KCategoryUid, NMusSessionApi::KUseCase, aUseCase ) ); - startApp = EFalse; - } - - if ( startApp ) - { - aManager.StartApplicationL( aUseCase ); - } - - MUS_LOG( "mus: [AIWPRO] <- CMusAiwProvider::StartApplicationL" ) - } - // end of file