mmsharing/mmshmanagersrv/src/musapplicationmanager.cpp
branchRCL_3
changeset 33 bc78a40cd63c
parent 32 73a1feb507fb
--- a/mmsharing/mmshmanagersrv/src/musapplicationmanager.cpp	Tue Aug 31 15:12:07 2010 +0300
+++ b/mmsharing/mmshmanagersrv/src/musapplicationmanager.cpp	Wed Sep 01 12:31:01 2010 +0100
@@ -23,23 +23,15 @@
 #include "musmanagerservercommon.h"
 #include "mussessionproperties.h"
 #include "musuid.hrh"
-#include "mussettings.h"
-/* PS keys related to NMusSessionInformationApi defined here */
-#include "mussesseioninformationapi.h"
-#include "muscleanupresetanddestroy.h"
-#include "lcengine.h"
 
 #include <apacmdln.h>
 #include <apgtask.h>
+//#include <badesca.h>
 #include <e32cmn.h>
 #include <e32property.h>
-#include <utf.h>
-#include <apadef.h>
-
 
 // CONSTANTS
-_LIT8( KDefaultEngineName, "MultimediaSharing" );
-_LIT( KMusUiProcessName, "musui.exe" );
+
 
 // -----------------------------------------------------------------------------
 // CMusApplicationManager::NewL
@@ -87,6 +79,9 @@
     MUS_LOG( "mus: [MUSSRV] -> \
     					CMusApplicationManager::~CMusApplicationManager()" );
 
+    iApaSession.Close();
+    iWsSession.Close();
+
     MUS_LOG( "mus: [MUSSRV] <- \
     					CMusApplicationManager::~CMusApplicationManager()" );
     }
@@ -100,7 +95,8 @@
     {
     MUS_LOG( "mus: [MUSSRV] -> CMusApplicationManager::ConstructL()" );
 
-    SetPropertyL( NMusSessionApi::KFastMode, MusSettingsKeys::EFastModeOff );
+    User::LeaveIfError( iApaSession.Connect() );
+    User::LeaveIfError( iWsSession.Connect() );
 
     MUS_LOG( "mus: [MUSSRV] <- CMusApplicationManager::ConstructL()" );
     }
@@ -122,10 +118,7 @@
 TBool CMusApplicationManager::ApplicationRunning()
     {
     MUS_LOG( "mus: [MUSSRV] <> CMusApplicationManager::ApplicationRunning()" );
-    
-    TFindProcess findProcess( KMusUiProcessName );
-    TFullName name;
-    return ( findProcess.Next( name ) == KErrNone );
+    return GetApaTask().Exists();
     }
 
 
@@ -143,15 +136,13 @@
         }
     else
         {
-        MUS_LOG( "mus: [MUSSRV]     Starting app" );
+        TUid appUid;
+        appUid.iUid = KMusUiUid;
         
-        RProcess process;
-        CleanupClosePushL( process );
-        HBufC* args = CreateCommandLineArgsLC();
-        User::LeaveIfError( process.Create( KMusUiProcessName, *args ) );
-        process.Resume();
-        CleanupStack::PopAndDestroy( args );
-        CleanupStack::PopAndDestroy( &process );
+        TThreadId aThreadId;
+        
+        User::LeaveIfError( 
+                    iApaSession.StartDocument( KNullDesC, appUid, aThreadId) );
         }
 
     MUS_LOG( "mus: [MUSSRV] <- CMusApplicationManager::StartApplicationL()" );
@@ -166,7 +157,8 @@
     {
     MUS_LOG( "mus: [MUSSRV] -> CMusApplicationManager::StopApplicationL()" );
 
-    if( ApplicationRunning() )
+    TApaTask task = GetApaTask();
+    if( task.Exists() )
         {
         SetPropertyL( NMusSessionApi::KStatus, 
                       MultimediaSharing::EMultimediaSharingNotAvailable );
@@ -184,7 +176,12 @@
     {
     MUS_LOG( "mus: [MUSSRV] -> CMusApplicationManager::ShowApplicationL()" );
     
-    // TODO: How to bring a QT application to foreground?
+    // does a task for multimediasharing exist?
+    TApaTask task = GetApaTask();
+    if( task.Exists() )
+        {
+        task.BringToForeground();
+        }
     
     MUS_LOG( "mus: [MUSSRV] <- CMusApplicationManager::ShowApplicationL()" );
     }
@@ -202,21 +199,10 @@
      MUS_LOG2( "mus: [MUSSRV] -> \
                CMusApplicationManager::WriteSessionPropertiesL( %d, %d )",
                ( TInt ) aUseCase, ( TInt ) aStatus );
-	TRAPD( error,  		   
-    if ( aUseCase == MultimediaSharing::EMusLiveVideo &&
-            MultimediaSharingSettings::VideoDirectionL() == 
-                                            MusSettingsKeys::ETwoWayVideo )
-        {
-		MUS_LOG( "mus: [MUSSRV]  UseCase MultimediaSharing::EMusTwoWayVideo" );
-        aUseCase = MultimediaSharing::EMusTwoWayVideo;
-        }
-		)
-	if ( error == KErrNoMemory )
-		{
-		User::Leave( error );
-		}
+
     // set use case property
-    SetPropertyL( NMusSessionApi::KUseCase, ( TInt ) aUseCase );
+    SetPropertyL( NMusSessionApi::KUseCase,
+                  ( TInt ) aUseCase );
 
     WriteSessionPropertiesL( aStatus, aSessionParameters );
 
@@ -271,24 +257,14 @@
     SetPropertyL( NMusSessionApi::KContactName,
                   aSessionParameters.MdcaPoint( KContactName ) );
 
-    // fast mode  
-    TInt fastMode;
-    User::LeaveIfError( RProperty::Get( NMusSessionApi::KCategoryUid, 
-                                        NMusSessionApi::KFastMode, 
-                                        fastMode ) );  
-    if ( fastMode != MusSettingsKeys::EFastModeDisabled )
-        {
-        lex.Assign( aSessionParameters.MdcaPoint( KFastMode ) );
-        lex.Val( val );
-        SetPropertyL( NMusSessionApi::KFastMode, val );
-        }
-    else
-        {        
-        MUS_LOG( "mus: [MUSSRV]  fast mode disabled, do not update it" );
-        }
+    // set status property
+    SetStatusL( aStatus );
     
-   // set status property
-    SetStatusL( aStatus );
+    // set privacy property
+    lex.Assign( aSessionParameters.MdcaPoint( KPrivacyStatus ) );
+    lex.Val( val );
+
+    SetPropertyL( NMusSessionApi::KPrivacyStatus, val );
 
     MUS_LOG( "mus: [MUSSRV] <- \
              CMusApplicationManager::WriteSessionPropertiesL()" );
@@ -392,97 +368,15 @@
     MUS_LOG( "mus: [MUSSRV] <- CMusApplicationManager::SetPropertyL()" );
     }
 
-// -----------------------------------------------------------------------------
-// Reads the callprovider description from the PS key
-// return aProvider will have the proper callprovider name.
+
 // -----------------------------------------------------------------------------
 //
-void CMusApplicationManager::CallProviderL(TDes8& aProvider)
-    {
-    MUS_LOG( "mus: [MUSSRV] -> CMusApplicationManager::CallProviderL");
-    const TInt KMusMgrMaxPluginNameLen = 256; 
-    TBuf<KMusMgrMaxPluginNameLen> pluginName;
-    
-    User::LeaveIfError(RProperty::Get( 
-                                NMusSessionInformationApi::KCategoryUid,
-                                NMusSessionInformationApi::KMUSCallProvider,
-                                pluginName ));
-    User::LeaveIfError( 
-            CnvUtfConverter::ConvertFromUnicodeToUtf8( aProvider, pluginName ));
-    
-    MUS_LOG( "mus: [MUSSRV] <- CMusApplicationManager::CallProviderL");
-    }
-
-// -----------------------------------------------------------------------------
-// Resolves name of the ecom plugin which implements the livecomms engine api
-// by using the callprovider
 // -----------------------------------------------------------------------------
 //
-void CMusApplicationManager::ResolvePluginNameL(TDes8& aPluginName)
+TApaTask CMusApplicationManager::GetApaTask() 
     {
-    MUS_LOG( "mus: [MUSSRV] -> CMusApplicationManager::ResolvePluginNameL");
-    
-    TBuf8<RProperty::KMaxPropertySize> providerName ;
-
-    // Read the call provider name 
-    CallProviderL( providerName );
-
-    RImplInfoPtrArray pluginArray;
-    MusCleanupResetAndDestroy<RImplInfoPtrArray>::PushL( pluginArray );
-
-    TEComResolverParams resolverParams;
-    
-    resolverParams.SetDataType ( providerName );
-    resolverParams.SetWildcardMatch (ETrue);
-    
-    // Use default plugin even if listing fails
-    TRAPD( err, 
-       REComSession::ListImplementationsL(KLcEngineInterfaceUid, resolverParams, pluginArray) );
-    MUS_LOG1( "mus: [MUSSRV]    List implementations compl:%d", err );
-    if ( err == KErrNoMemory )
-        {
-        User::Leave( err );
-        }
-    
-    if( pluginArray.Count() > 0 )
-        {
-        CImplementationInformation* info = pluginArray[ 0 ];
-        __ASSERT_ALWAYS( aPluginName.MaxLength() >= info->DataType().Length(), 
-                         User::Leave( KErrArgument ) );
-        aPluginName.Copy( info->DataType() );
-        }
-    else
-        {
-        __ASSERT_ALWAYS( aPluginName.MaxLength() >= KDefaultEngineName().Length(), 
-                                 User::Leave( KErrArgument ) );
-        aPluginName.Copy( KDefaultEngineName() );
-        }
-    CleanupStack::PopAndDestroy();//pluginArray
-    MUS_LOG( "mus: [MUSSRV] <- CMusApplicationManager::ResolvePluginNameL");
+    MUS_LOG( "mus: [MUSSRV] <> CMusApplicationManager::GetApaTask()" );
+    TUid appUid;
+    appUid.iUid = KMusUiUid;
+    return TApaTaskList( iWsSession ).FindApp( appUid );
     }
-
-// -----------------------------------------------------------------------------
-// Creates command line used when starting application.
-// -----------------------------------------------------------------------------
-//
-HBufC* CMusApplicationManager::CreateCommandLineArgsLC()
-    {
-    MUS_LOG( "mus: [MUSSRV] -> CMusApplicationManager::CreateCommandLineLC");
-    
-    TBuf8<KMusMgrMaxPluginNameLen> pluginNameUtf8;
-    ResolvePluginNameL( pluginNameUtf8 );
-    
-    MUS_LOG_TDESC8( "mus: [MUSSRV]     Plugin name:", pluginNameUtf8 );
-    
-    HBufC* commandLineArgs = HBufC::NewLC( KMusMgrMaxPluginNameLen );
-    TPtr commandLineArgsPtr( commandLineArgs->Des() );
-    User::LeaveIfError( 
-        CnvUtfConverter::ConvertToUnicodeFromUtf8( 
-            commandLineArgsPtr, pluginNameUtf8 ) );
-    
-    MUS_LOG_TDESC( "mus: [MUSSRV] <- command line args:", commandLineArgsPtr );
-    
-    return commandLineArgs;
-    }
-
-// End of File