mmshplugins/mmshaiwplugin/src/musaiwprovider.cpp
branchRCL_3
changeset 33 bc78a40cd63c
parent 32 73a1feb507fb
equal deleted inserted replaced
32:73a1feb507fb 33:bc78a40cd63c
    25 #include "musmanager.h"
    25 #include "musmanager.h"
    26 #include "musuid.hrh"
    26 #include "musuid.hrh"
    27 #include "musresourcefinderutil.h"
    27 #include "musresourcefinderutil.h"
    28 #include "mussettings.h"
    28 #include "mussettings.h"
    29 #include "mussesseioninformationapi.h"
    29 #include "mussesseioninformationapi.h"
    30 #include "musindicatorapi.h"
       
    31 #include "mussessionproperties.h"
       
    32 
    30 
    33 #include <musresourceproperties.h>
    31 #include <musresourceproperties.h>
    34 
    32 
    35 #include <featmgr.h>
    33 #include <featmgr.h>
    36 #include <e32property.h>
    34 #include <e32property.h>
    48 #include <StringLoader.h>
    46 #include <StringLoader.h>
    49 #include <AknGlobalNote.h>
    47 #include <AknGlobalNote.h>
    50 #include <utf.h>
    48 #include <utf.h>
    51 #include <features.hrh>
    49 #include <features.hrh>
    52 #include <aknenv.h>
    50 #include <aknenv.h>
    53 #include <UikonInternalPSKeys.h>
       
    54 
    51 
    55 ////////  public -- constructor and destructor  ////////
    52 ////////  public -- constructor and destructor  ////////
    56 
    53 
    57 _LIT( KMusAiwProviderResource, "musaiwproviderui.rsc" );
    54 _LIT( KMusAiwProviderResource, "musaiwproviderui.rsc" );
    58 
    55 
    78 //
    75 //
    79 CMusAiwProvider::~CMusAiwProvider()
    76 CMusAiwProvider::~CMusAiwProvider()
    80     {
    77     {
    81     MUS_LOG( "mus: [AIWPRO]  -> CMusAiwProvider::~CMusAiwProvider" )
    78     MUS_LOG( "mus: [AIWPRO]  -> CMusAiwProvider::~CMusAiwProvider" )
    82     delete iResourceFileName ;
    79     delete iResourceFileName ;
    83     iResourceFileName = NULL ;    
    80     iResourceFileName = NULL ;  
    84     delete iIndicator;
    81 
    85     iIndicator = NULL ;    
       
    86     MUS_LOG( "mus: [AIWPRO]  <- CMusAiwProvider::~CMusAiwProvider" )
    82     MUS_LOG( "mus: [AIWPRO]  <- CMusAiwProvider::~CMusAiwProvider" )
    87     }
    83     }
    88 
    84 
    89 
    85 
    90 ////////  private -- constructors  ////////
    86 ////////  private -- constructors  ////////
   145         CAiwMenuPane&               aMenuPane,
   141         CAiwMenuPane&               aMenuPane,
   146         TInt                        aIndex,
   142         TInt                        aIndex,
   147         TInt                        /* aCascadeId */,
   143         TInt                        /* aCascadeId */,
   148         const CAiwGenericParamList& /* aInParamList */ )
   144         const CAiwGenericParamList& /* aInParamList */ )
   149     {
   145     {
   150     MUS_LOG1( "mus: [AIWPRO]  -> CMusAiwProvider::InitializeMenuPaneL( %d )",
   146 	FeatureManager::InitializeLibL();
       
   147     TBool support = FeatureManager::FeatureSupported( KFeatureIdMultimediaSharing );
       
   148 	FeatureManager::UnInitializeLib();
       
   149 	if( support )
       
   150 		{
       
   151 	    DoInitializeMenuPaneL( aMenuPane, aIndex );
       
   152 		}
       
   153 	}
       
   154 	
       
   155 	
       
   156 // -----------------------------------------------------------------------------
       
   157 // Initializes menu pane by adding provider-specific menu items.
       
   158 // -----------------------------------------------------------------------------
       
   159 //
       
   160 void CMusAiwProvider::DoInitializeMenuPaneL(
       
   161         CAiwMenuPane&               aMenuPane,
       
   162         TInt                        aIndex)
       
   163     {
       
   164     MUS_LOG1( "mus: [AIWPRO]  -> CMusAiwProvider::DoInitializeMenuPaneL( %d )",
   151               aIndex )
   165               aIndex )
   152     
   166     
   153     if( iResourceFileName == NULL )
   167     if( iResourceFileName == NULL )
   154         {
   168         {
   155         iResourceFileName = MusResourceFinderUtil::ResourcePathL(
   169         iResourceFileName = MusResourceFinderUtil::ResourcePathL(
   156                                                     KMusAiwProviderResource );
   170                                                     KMusAiwProviderResource );
   157         }   
   171         }   
   158     TFileName filename ( *iResourceFileName );
   172     TFileName filename ( *iResourceFileName );
   159     MUS_LOG_TDESC( "mus: [AIWPRO]     Resource filename: ", filename ) 
   173     MUS_LOG_TDESC( "mus: [AIWPRO]     Resource filename: ", filename ) 
   160     
   174     
   161     // If app running but hidden from fast swap it means that application
   175     if( ApplicationRunningL() )
   162     // is hidden from user and options menu should look same as 
       
   163     // when application is not yet started
       
   164     if( ApplicationRunningL() && !HiddenFromFastSwapL() )
       
   165     	{
   176     	{
   166         MUS_LOG( "mus: [AIWPRO]     Application already running:\
   177         MUS_LOG( "mus: [AIWPRO]     Application already running:\
   167                  giving _continue sharing_ menu command" )
   178                  giving _continue sharing_ menu command" )
   168         // Application is already started.  Add resources to menu items.
   179         // Application is already started.  Add resources to menu items.
   169         aMenuPane.AddMenuItemsL( filename,
   180         aMenuPane.AddMenuItemsL( filename,
   178 	    if ( MultimediaSharingSettings::OperatorVariantSettingL()
   189 	    if ( MultimediaSharingSettings::OperatorVariantSettingL()
   179 	            == MusSettingsKeys::EOperatorSpecific )
   190 	            == MusSettingsKeys::EOperatorSpecific )
   180 	        {
   191 	        {
   181 	       	OperatorVariantStartUpL( filename, aMenuPane, aIndex );
   192 	       	OperatorVariantStartUpL( filename, aMenuPane, aIndex );
   182 	        }
   193 	        }
   183 	    else if ( IsFastStartupModeL() )
       
   184 	        {
       
   185 	        FastModeStartUpL( filename, aMenuPane, aIndex );
       
   186 	        }
       
   187 		else
   194 		else
   188 			{
   195 			{
   189 	        NoVariationStartUpL( filename, aMenuPane, aIndex );
   196 	        NoVariationStartUpL( filename, aMenuPane, aIndex );
   190 	        }	
   197 	        }	
   191 		}   
   198 		}   
   192 
   199 
   193     
   200     
   194     MUS_LOG( "mus: [AIWPRO]  <- CMusAiwProvider::InitializeMenuPaneL" )
   201     MUS_LOG( "mus: [AIWPRO]  <- CMusAiwProvider::DoInitializeMenuPaneL" )
   195     }
   202     }
   196 
   203 
   197 // -----------------------------------------------------------------------------
   204 // -----------------------------------------------------------------------------
   198 // 
   205 // 
   199 // 
   206 // 
   200 // -----------------------------------------------------------------------------
   207 // -----------------------------------------------------------------------------
   201 //
   208 //
   202 void CMusAiwProvider::DoInitialiseL()
   209 void CMusAiwProvider::DoInitialiseL()
   203     {
   210     {
   204     MUS_LOG( "mus: [AIWPRO]  -> CMusAiwProvider::DoInitialiseL")
   211     MUS_LOG( "mus: [AIWPRO]  -> CMusAiwProvider::DoInitialiseL")
   205     
   212 
   206     if ( !iIndicator )
       
   207         {
       
   208         MUS_LOG( "mus: [AIWPRO]  :  creating indicator")
       
   209         iIndicator = CMusIndicatorApi::NewL();
       
   210         }
       
   211     MUS_LOG( "mus: [AIWPRO]  <- CMusAiwProvider::DoInitialiseL")
   213     MUS_LOG( "mus: [AIWPRO]  <- CMusAiwProvider::DoInitialiseL")
   212     }
   214     }
   213 
   215 
   214 
   216 
   215 // -----------------------------------------------------------------------------
   217 // -----------------------------------------------------------------------------
   248        2.Regardless of Options execution ( All options are just informative.
   250        2.Regardless of Options execution ( All options are just informative.
   249          Cant be considered as Error situation.)
   251          Cant be considered as Error situation.)
   250        3.When iAvailability plugin says OK ( Based on call,network,settingui item)
   252        3.When iAvailability plugin says OK ( Based on call,network,settingui item)
   251        4.Also in confrence and hold cases
   253        4.Also in confrence and hold cases
   252     */        
   254     */        
   253     if ( AvailabilityOk( iAvailability ) )           
   255     if ( iAvailability == MultimediaSharing::ESipRegistrationPending || 
   254         {
   256          iAvailability == MultimediaSharing::ESipOptionsSent ||
   255         MUS_LOG1( "mus: [AIWPRO]  Showing AIW Menu -> iAvailability = %d ",
   257          iAvailability == MultimediaSharing::EMultimediaSharingAvailable ||
   256                   iAvailability )
   258          iAvailability == MultimediaSharing::EErrCallOnHold ||
       
   259          iAvailability == MultimediaSharing::EErrConferenceCall ||             
       
   260          iAvailability == MultimediaSharing::ESipOptionsNotCapable ||
       
   261          iAvailability == MultimediaSharing::ESipOptionsNotSent ||
       
   262          iAvailability == MultimediaSharing::EErrNetwork ||
       
   263          iAvailability == MultimediaSharing::EManualActivation ||
       
   264          iAvailability == MultimediaSharing::EErrConnection ||
       
   265          iAvailability == MultimediaSharing::EErrSipRegistration )           
       
   266         {
       
   267         MUS_LOG1( "mus: [AIWPRO]  Showing AIW Menu -> iAvailability = %d ",iAvailability )
   257         TInt resourceID =  R_MUSAIWPROVIDER_BASIC_CASCADED_SUBMENU ;           
   268         TInt resourceID =  R_MUSAIWPROVIDER_BASIC_CASCADED_SUBMENU ;           
   258         if ( !FeatureManager::FeatureSupported( KFeatureIdCamera ) )
   269         if ( !FeatureManager::FeatureSupported( KFeatureIdCamera ) )
   259             {
   270             {
   260              MUS_LOG( "mus: [AIWPRO]  Camera Not Available" )
   271              MUS_LOG( "mus: [AIWPRO]  Camera Not Available" )
   261              resourceID =  R_MUSAIWPROVIDER_NOCAMERA_CASCADED_SUBMENU ;                 
   272              resourceID =  R_MUSAIWPROVIDER_NOCAMERA_CASCADED_SUBMENU ;                 
   265                                  KMusAiwProviderUid,
   276                                  KMusAiwProviderUid,
   266                                  aIndex );
   277                                  aIndex );
   267         }
   278         }
   268     else
   279     else
   269         {
   280         {
   270         MUS_LOG1( "mus: [AIWPRO] Not Showing AIW Menu -> iAvailability = %d ",
   281         MUS_LOG1( "mus: [AIWPRO] Not Showing AIW Menu -> iAvailability = %d ",iAvailability )
   271                   iAvailability )
       
   272         }
   282         }
   273     CleanupStack::PopAndDestroy( manager );	
   283     CleanupStack::PopAndDestroy( manager );	
   274     MUS_LOG( "mus: [AIWPRO]  <- CMusAiwProvider::NoVariationStartUpL" )   
   284     MUS_LOG( "mus: [AIWPRO]  <- CMusAiwProvider::NoVariationStartUpL" )   
   275 	}
   285 	}
   276 // -----------------------------------------------------------------------------
   286 // -----------------------------------------------------------------------------
   288 
   298 
   289     // In operator specific mode Multimediasharing Menu items 
   299     // In operator specific mode Multimediasharing Menu items 
   290     // should be shown in call menu only if iAvailability plugin returns OK 
   300     // should be shown in call menu only if iAvailability plugin returns OK 
   291     if ( iAvailability == MultimediaSharing::EMultimediaSharingAvailable )           
   301     if ( iAvailability == MultimediaSharing::EMultimediaSharingAvailable )           
   292         {
   302         {
   293         MUS_LOG1( "mus: [AIWPRO]  Showing AIW Menu -> iAvailability = %d ", 
   303         MUS_LOG1( "mus: [AIWPRO]  Showing AIW Menu -> iAvailability = %d ", iAvailability )
   294                   iAvailability )
       
   295         TInt resourceID =  R_MUSAIWPROVIDER_BASIC_CASCADED_SUBMENU ;           
   304         TInt resourceID =  R_MUSAIWPROVIDER_BASIC_CASCADED_SUBMENU ;           
   296         if ( !FeatureManager::FeatureSupported( KFeatureIdCamera ) )
   305         if ( !FeatureManager::FeatureSupported( KFeatureIdCamera ) )
   297             {
   306             {
   298             MUS_LOG( "mus: [AIWPRO]  Camera Not Available" )
   307             MUS_LOG( "mus: [AIWPRO]  Camera Not Available" )
   299             resourceID =  R_MUSAIWPROVIDER_NOCAMERA_CASCADED_SUBMENU ;                 
   308             resourceID =  R_MUSAIWPROVIDER_NOCAMERA_CASCADED_SUBMENU ;                 
   303                                      KMusAiwProviderUid,
   312                                      KMusAiwProviderUid,
   304                                      aIndex );
   313                                      aIndex );
   305         }
   314         }
   306     else
   315     else
   307         {
   316         {
   308         MUS_LOG1( "mus: [AIWPRO] Not Showing AIW Menu -> iAvailability = %d ",
   317         MUS_LOG1( "mus: [AIWPRO] Not Showing AIW Menu -> iAvailability = %d ",iAvailability )
   309                   iAvailability )
       
   310         }
   318         }
   311         
   319         
   312     CleanupStack::PopAndDestroy( manager );	
   320     CleanupStack::PopAndDestroy( manager );	
   313 
   321 
   314     MUS_LOG( "mus: [AIWPRO]  <- CMusAiwProvider::OperatorVariantStartUpL" )  
   322     MUS_LOG( "mus: [AIWPRO]  <- CMusAiwProvider::OperatorVariantStartUpL" )  
   315 	}
   323 	}
   316 	
   324 	
   317 // -----------------------------------------------------------------------------
       
   318 // In fast mode, Multimediasharing Menu items 
       
   319 // should not be shown before options queries have completed. Outcome
       
   320 // of queries does not matter.
       
   321 // -----------------------------------------------------------------------------
       
   322 //
       
   323 void CMusAiwProvider::FastModeStartUpL( 
       
   324     TFileName& aFileName, CAiwMenuPane& aMenuPane, TInt aIndex )
       
   325     {
       
   326     MUS_LOG( "mus: [AIWPRO]  -> CMusAiwProvider::FastModeStartUpL" )   
       
   327     
       
   328     if ( MultimediaSharingSettings::CapabilityQuerySettingL() != 
       
   329             MusSettingsKeys::EParallel )
       
   330         {
       
   331         // If parallel capability query is not enabled, use normal startup as
       
   332         // capability query is essential for fast session setup
       
   333         NoVariationStartUpL( aFileName, aMenuPane, aIndex );
       
   334         }
       
   335     else
       
   336         {
       
   337         CMusManager* manager = CMusManager::NewLC();
       
   338         iAvailability = manager->AvailabilityL();
       
   339     
       
   340         if ( iAvailability == MultimediaSharing::ESipRegistrationPending ||
       
   341              iAvailability == MultimediaSharing::ESipOptionsSent ||
       
   342              !AvailabilityOk( iAvailability ) )
       
   343             {
       
   344             // Need to wait for options to complete
       
   345             MUS_LOG1( "mus: [AIWPRO] Not Showing AIW Menu -> iAvailability = %d ",
       
   346                       iAvailability )
       
   347             }
       
   348         else
       
   349             {
       
   350             // It does not matter what was result of query
       
   351             MUS_LOG1( "mus: [AIWPRO]  Showing AIW Menu -> iAvailability = %d ", 
       
   352                       iAvailability )
       
   353             TInt resourceID =  R_MUSAIWPROVIDER_BASIC_CASCADED_SUBMENU ;           
       
   354             if ( !FeatureManager::FeatureSupported( KFeatureIdCamera ) )
       
   355                 {
       
   356                 MUS_LOG( "mus: [AIWPRO]  Camera Not Available" )
       
   357                 resourceID =  R_MUSAIWPROVIDER_NOCAMERA_CASCADED_SUBMENU ;                 
       
   358                 }            
       
   359                 aMenuPane.AddMenuItemsL( aFileName,
       
   360                                          resourceID,
       
   361                                          KMusAiwProviderUid,
       
   362                                          aIndex );
       
   363             }
       
   364             
       
   365         CleanupStack::PopAndDestroy( manager ); 
       
   366         }
       
   367 
       
   368     MUS_LOG( "mus: [AIWPRO]  <- CMusAiwProvider::FastModeStartUpL" )  
       
   369     }
       
   370 
       
   371 // -----------------------------------------------------------------------------
   325 // -----------------------------------------------------------------------------
   372 // 
   326 // 
   373 // -----------------------------------------------------------------------------
   327 // -----------------------------------------------------------------------------
   374 //
   328 //
   375 HBufC* CMusAiwProvider::ErrorNoteTextLC( TInt aError )
   329 HBufC* CMusAiwProvider::ErrorNoteTextLC( TInt aError )
   545         {
   499         {
   546         case EMusCommandLiveShare:
   500         case EMusCommandLiveShare:
   547             {
   501             {
   548             MUS_LOG( "mus: [AIWPRO]     \
   502             MUS_LOG( "mus: [AIWPRO]     \
   549                     EMusCommandLiveShare: Will now attempt to start Mus." )
   503                     EMusCommandLiveShare: Will now attempt to start Mus." )
   550             TRAP( error, StartApplicationL( *manager, MultimediaSharing::EMusLiveVideo ) );
   504             TRAP( error, manager->StartApplicationL( 
       
   505                                         MultimediaSharing::EMusLiveVideo ) );
   551             break;
   506             break;
   552             }
   507             }
   553         case EMusCommandClipShare:
   508         case EMusCommandClipShare:
   554             {
   509             {
   555             MUS_LOG( "mus: [AIWPRO]     \
   510             MUS_LOG( "mus: [AIWPRO]     \
   556                     EMusCommandClipShare: Will now attempt to start Mus." )            
   511                     EMusCommandClipShare: Will now attempt to start Mus." )
   557             TRAP( error, StartApplicationL( *manager, MultimediaSharing::EMusClipVideo ) );
   512             TRAP( error, manager->StartApplicationL(
   558             
   513                                         MultimediaSharing::EMusClipVideo ) );
   559             break;
   514             break;
   560             }
   515             }
   561         case EMusCommandImageShare:
   516         case EMusCommandImageShare:
   562             {
   517             {
   563             MUS_LOG( "mus: [AIWPRO]     \
   518             MUS_LOG( "mus: [AIWPRO]     \
   564                     EMusCommandImageShare: Will now attempt to start Mus." )
   519                     EMusCommandImageShare: Will now attempt to start Mus." )
   565             TRAP( error, StartApplicationL( *manager, MultimediaSharing::EMusStillImage ) );
   520             TRAP( error, manager->StartApplicationL(
       
   521                                         MultimediaSharing::EMusStillImage ) );
   566             break;
   522             break;
   567             }
   523             }
   568         case EMusCommandContinue:
   524         case EMusCommandContinue:
   569             {
   525             {
   570             MUS_LOG( "mus: [AIWPRO]     \
   526             MUS_LOG( "mus: [AIWPRO]     \
   571                     EMusCommandContinue: Will now attempt to start/continue Mus." )
   527                     EMusCommandContinue: Will now attempt to start/continue Mus." )
   572             TRAP( error, StartApplicationL( *manager, MultimediaSharing::EMusContinue ) ); 
   528             TRAP( error, manager->StartApplicationL( 
       
   529                                         MultimediaSharing::EMusContinue ) ); 
   573             break;
   530             break;
   574             }
   531             }
   575         default:
   532         default:
   576             {
   533             {
   577             MUS_LOG( "mus: [AIWPRO]     \
   534             MUS_LOG( "mus: [AIWPRO]     \
   589         }
   546         }
   590 
   547 
   591     MUS_LOG( "mus: [AIWPRO]  <- CMusAiwProvider::HandleMenuCmdL" )
   548     MUS_LOG( "mus: [AIWPRO]  <- CMusAiwProvider::HandleMenuCmdL" )
   592     }
   549     }
   593 
   550 
   594 // -----------------------------------------------------------------------------
       
   595 // 
       
   596 // -----------------------------------------------------------------------------
       
   597 //
       
   598 TBool CMusAiwProvider::AvailabilityOk( 
       
   599     MultimediaSharing::TMusAvailabilityStatus aAvailability ) const
       
   600     {
       
   601     return (
       
   602         aAvailability == MultimediaSharing::ESipRegistrationPending || 
       
   603         aAvailability == MultimediaSharing::ESipOptionsSent ||
       
   604         aAvailability == MultimediaSharing::EMultimediaSharingAvailable ||
       
   605         aAvailability == MultimediaSharing::EErrCallOnHold ||
       
   606         aAvailability == MultimediaSharing::EErrConferenceCall ||             
       
   607         aAvailability == MultimediaSharing::ESipOptionsNotCapable ||
       
   608         aAvailability == MultimediaSharing::ESipOptionsNotSent ||
       
   609         aAvailability == MultimediaSharing::EErrNetwork ||
       
   610         aAvailability == MultimediaSharing::EManualActivation ||
       
   611         aAvailability == MultimediaSharing::EErrConnection ||
       
   612         aAvailability == MultimediaSharing::EErrSipRegistration );
       
   613     }
       
   614 
       
   615 // -----------------------------------------------------------------------------
       
   616 // App's fastswap visibility status is interesting only in fast mode.
       
   617 // -----------------------------------------------------------------------------
       
   618 //
       
   619 TBool CMusAiwProvider::HiddenFromFastSwapL()
       
   620     {
       
   621     MUS_LOG( "mus: [AIWPRO]  -> CMusAiwProvider::HiddenFromFastSwapL" )
       
   622     
       
   623     TBool hidden( EFalse );
       
   624     if ( !IsFastStartupModeL() )
       
   625         {
       
   626         MUS_LOG( "mus: [AIWPRO]  <- CMusAiwProvider::HiddenFromFastSwapL" )
       
   627         return hidden;
       
   628         }
       
   629     
       
   630     const TInt KMusAiwMaxHiddenAppSizeMod = 4;
       
   631     TBuf16 <KMusAiwMaxHiddenAppSizeMod*KMaxHiddenApps> hiddenList;
       
   632     TInt err = RProperty::Get( KPSUidUikon, KUikAppHiddenList, hiddenList );
       
   633     MUS_LOG1( "mus: [AIWPRO] Hidden list read:%d", err )
       
   634     
       
   635     if ( err == KErrNone )
       
   636         {
       
   637         TBool continueFinding( ETrue );
       
   638         MUS_LOG1( "mus: [AIWPRO] Hidden list len:%d", hiddenList.Length() )
       
   639         for ( TInt i = 0; i < KMaxHiddenApps && continueFinding; i++ )
       
   640             {
       
   641             // 32-bit uid values are retrieved in two 16-bit parts
       
   642             __ASSERT_ALWAYS( hiddenList.Length() > i + 1, User::Leave( KErrEof ) );
       
   643             TUint32 listValue = hiddenList[ i ] << 16;
       
   644             listValue += hiddenList[ ++i ];
       
   645             // the value NULL marks the end of array -> leave the loop
       
   646             if ( listValue )
       
   647                 {
       
   648                 MUS_LOG1( "mus: [AIWPRO]     Hidden uid:%d", listValue )
       
   649                 if ( listValue == KMusUiUid )
       
   650                     {
       
   651                     hidden = ETrue;
       
   652                     continueFinding = EFalse;
       
   653                     }
       
   654                 }
       
   655             else
       
   656                 {
       
   657                 // Zero value means ending of list
       
   658                 continueFinding = EFalse;
       
   659                 }
       
   660             }
       
   661         }
       
   662     
       
   663     MUS_LOG1( "mus: [AIWPRO]  <- CMusAiwProvider::HiddenFromFastSwapL:%d", hidden )
       
   664     
       
   665     return hidden;
       
   666     }
       
   667 
       
   668 // -----------------------------------------------------------------------------
       
   669 // Check whether fast mode is enabled, take in count that key
       
   670 // might not be present.
       
   671 // -----------------------------------------------------------------------------
       
   672 //
       
   673 TBool CMusAiwProvider::IsFastStartupModeL()
       
   674     {
       
   675     TBool fastModeEnabled( EFalse );
       
   676     MusSettingsKeys::TFastMode fastMode( MusSettingsKeys::EFastModeOff );
       
   677     TRAPD( err, fastMode = MultimediaSharingSettings::FastStartupModeL() );
       
   678     if ( err == KErrNoMemory )
       
   679         {
       
   680         User::Leave( err );
       
   681         }
       
   682     if ( err == KErrNone )
       
   683         {
       
   684         fastModeEnabled = ( fastMode == MusSettingsKeys::EFastModeOn );
       
   685         }
       
   686     return fastModeEnabled;
       
   687     }
       
   688 
       
   689 // -----------------------------------------------------------------------------
       
   690 // If fast mode is enabled and app is running and hidden, it has been started
       
   691 // with live use-case but user does not know that. If user tries to do
       
   692 // clip usecase in such situation, use case is just updated and engine
       
   693 // takes case of bringing hidden application to foreground.
       
   694 // -----------------------------------------------------------------------------
       
   695 //
       
   696 void CMusAiwProvider::StartApplicationL( 
       
   697     CMusManager& aManager, MultimediaSharing::TMusUseCase aUseCase )
       
   698     {
       
   699     MUS_LOG( "mus: [AIWPRO]  -> CMusAiwProvider::StartApplicationL" )
       
   700     
       
   701     TBool startApp( ETrue );
       
   702     if ( IsFastStartupModeL() && aUseCase == MultimediaSharing::EMusClipVideo && 
       
   703          ApplicationRunningL() && HiddenFromFastSwapL() )
       
   704         {
       
   705         MUS_LOG( "mus: [AIWPRO]     App already running hidden, change only usecase!" )
       
   706         User::LeaveIfError( RProperty::Set( 
       
   707                 NMusSessionApi::KCategoryUid, NMusSessionApi::KUseCase, aUseCase ) );
       
   708         startApp = EFalse;
       
   709         }
       
   710     
       
   711     if ( startApp )
       
   712         {
       
   713         aManager.StartApplicationL( aUseCase );
       
   714         }
       
   715     
       
   716     MUS_LOG( "mus: [AIWPRO]  <- CMusAiwProvider::StartApplicationL" )
       
   717     }
       
   718 
       
   719 // end of file
   551 // end of file