mmsharing/mmshmanagersrv/src/musavailabilitypluginmanager.cpp
changeset 0 f0cf47e981f9
child 31 33a5d2bbf6fc
equal deleted inserted replaced
-1:000000000000 0:f0cf47e981f9
       
     1 /*
       
     2 * Copyright (c) 2006-2007 Nokia Corporation and/or its subsidiary(-ies).
       
     3 * All rights reserved.
       
     4 * This component and the accompanying materials are made available
       
     5 * under the terms of "Eclipse Public License v1.0"
       
     6 * which accompanies this distribution, and is available
       
     7 * at the URL "http://www.eclipse.org/legal/epl-v10.html".
       
     8 *
       
     9 * Initial Contributors:
       
    10 * Nokia Corporation - initial contribution.
       
    11 *
       
    12 * Contributors:
       
    13 *
       
    14 * Description:  ?Description
       
    15 *
       
    16 */
       
    17 
       
    18 
       
    19 #include "musavailabilitypluginmanager.h"
       
    20 #include "musavasettings.h"
       
    21 #include "musunittesting.h"
       
    22 #include "musavainterface.h"
       
    23 #include "muslogger.h"
       
    24 #include "musavailabilitypluginmanagerobserver.h"
       
    25 #include "musmanagerservercommon.h"
       
    26 #include "musindicatorapi.h"
       
    27 #include "musapplicationmanager.h"
       
    28 
       
    29 #include <badesca.h>
       
    30 #include <bamdesca.h>
       
    31 #include <e32property.h>
       
    32 
       
    33 
       
    34 // CONSTANTS
       
    35 
       
    36 using namespace MultimediaSharing;
       
    37 
       
    38 // -----------------------------------------------------------------------------
       
    39 //
       
    40 // -----------------------------------------------------------------------------
       
    41 //
       
    42 CMusAvailabilityPluginManager* CMusAvailabilityPluginManager::NewL(
       
    43                           MMusAvailabilityPluginManagerObserver& aObserver,
       
    44                           CMusApplicationManager& aApplicationManager )
       
    45     {
       
    46     MUS_LOG( "mus: [MUSSRV]  -> CMusAvailabilityPluginManager::NewL()" )
       
    47 
       
    48     CMusAvailabilityPluginManager* self =
       
    49                           CMusAvailabilityPluginManager::NewLC( aObserver,
       
    50                                                                 aApplicationManager );
       
    51 
       
    52     CleanupStack::Pop( self );
       
    53     MUS_LOG( "mus: [MUSSRV]  <- CMusAvailabilityPluginManager::NewL()" )
       
    54     return self;
       
    55     }
       
    56 
       
    57 
       
    58 // -----------------------------------------------------------------------------
       
    59 //
       
    60 // -----------------------------------------------------------------------------
       
    61 //
       
    62 CMusAvailabilityPluginManager* CMusAvailabilityPluginManager::NewLC(
       
    63                           MMusAvailabilityPluginManagerObserver& aObserver,
       
    64                           CMusApplicationManager& aApplicationManager )
       
    65     {
       
    66     MUS_LOG( "mus: [MUSSRV]  -> CMusAvailabilityPluginManager::NewLC()" )
       
    67 
       
    68     CMusAvailabilityPluginManager* self =
       
    69                    new( ELeave ) CMusAvailabilityPluginManager( aObserver, 
       
    70                                                                 aApplicationManager );
       
    71 
       
    72     CleanupStack::PushL( self );
       
    73     self->ConstructL();
       
    74     MUS_LOG( "mus: [MUSSRV]  <- CMusAvailabilityPluginManager::NewLC()" )
       
    75     return self;
       
    76     }
       
    77 
       
    78 
       
    79 // -----------------------------------------------------------------------------
       
    80 //
       
    81 // -----------------------------------------------------------------------------
       
    82 //
       
    83 CMusAvailabilityPluginManager::~CMusAvailabilityPluginManager()
       
    84     {
       
    85     MUS_LOG( "mus: [MUSSRV]  -> CMusAvailabilityPluginManager::\
       
    86              ~CMusAvailabilityPluginManager()" )
       
    87     delete iPlugin;
       
    88     delete iSessionParameters;
       
    89     delete iIndicator;
       
    90     iIndicator = NULL;
       
    91     MUS_LOG( "mus: [MUSSRV]  <- CMusAvailabilityPluginManager::\
       
    92              ~CMusAvailabilityPluginManager()" )
       
    93     }
       
    94 
       
    95 
       
    96 // -----------------------------------------------------------------------------
       
    97 //
       
    98 // -----------------------------------------------------------------------------
       
    99 //
       
   100 void CMusAvailabilityPluginManager::ConstructL()
       
   101     {
       
   102     MUS_LOG( "mus: [MUSSRV]  -> CMusAvailabilityPluginManager::ConstructL()" )
       
   103     iSessionParameters = new( ELeave ) CDesCArrayFlat( KParameterCount );
       
   104     iPlugin = CMusAvaInterface::NewL();
       
   105     iPlugin->SetObserver( *this );
       
   106    	iPlugin->SetSettingsObserver( *this );
       
   107     MUS_LOG( "mus: [MUSSRV]  <- CMusAvailabilityPluginManager::ConstructL()" )
       
   108     }
       
   109 
       
   110 
       
   111 // -----------------------------------------------------------------------------
       
   112 //
       
   113 // -----------------------------------------------------------------------------
       
   114 //
       
   115 CMusAvailabilityPluginManager::CMusAvailabilityPluginManager(
       
   116                           MMusAvailabilityPluginManagerObserver& aObserver,
       
   117                           CMusApplicationManager& aApplicationManager )
       
   118     : iObserver( aObserver ), 
       
   119       iApplicationManager( aApplicationManager )
       
   120     {
       
   121     iPluginStarted = EFalse;
       
   122     }
       
   123 
       
   124 // -----------------------------------------------------------------------------
       
   125 //
       
   126 // -----------------------------------------------------------------------------
       
   127 //
       
   128 TBool CMusAvailabilityPluginManager::ApplicationAllowed()
       
   129     {
       
   130     MUS_LOG( "mus: [MUSSRV]  -> CMusAvailabilityPluginManager::\
       
   131         ApplicationAllowed()" )
       
   132     MUS_LOG( "mus: [MUSSRV]  <- CMusAvailabilityPluginManager::\
       
   133         ApplicationAllowed()" )
       
   134     return ( iPlugin->MandatoryAvailability()
       
   135         || iPlugin->AvailabilityState( EMusAvaNameRegistration ) == 
       
   136             EMusAvaStatusInProgress
       
   137         || iPlugin->AvailabilityState( EMusAvaNameRegistration ) == 
       
   138             EMusAvaStatusAvailable );
       
   139     }
       
   140 // -----------------------------------------------------------------------------
       
   141 // If minumum availability is available returning mandaroty level status
       
   142 // and if mandatory level status is available returning extension level status
       
   143 // -----------------------------------------------------------------------------
       
   144 //
       
   145 TMusAvailabilityStatus CMusAvailabilityPluginManager::Availability()
       
   146     {
       
   147     MUS_LOG( "mus: [MUSSRV]  -> CMusAvailabilityPluginManager::\
       
   148         Availability()" )
       
   149     MUS_LOG( "mus: [MUSSRV]  <- CMusAvailabilityPluginManager::\
       
   150         	Availability()" )
       
   151     return MapAvailabilities( iPlugin->AvailabilityStatus() );
       
   152     }
       
   153 
       
   154 
       
   155 // -----------------------------------------------------------------------------
       
   156 //
       
   157 // -----------------------------------------------------------------------------
       
   158 //
       
   159 void CMusAvailabilityPluginManager::InvestigateAvailabilityL()
       
   160     {
       
   161     MUS_LOG( "mus: [MUSSRV]  -> CMusAvailabilityPluginManager::\
       
   162              InvestigateAvailabilityL()" )
       
   163     if( !iPluginStarted )
       
   164         {
       
   165         iPlugin->StartL();
       
   166         iPluginStarted = ETrue;
       
   167         }
       
   168 
       
   169 
       
   170     MUS_LOG( "mus: [MUSSRV]  <- CMusAvailabilityPluginManager::\
       
   171              InvestigateAvailabilityL()" )
       
   172     }
       
   173 
       
   174 // -----------------------------------------------------------------------------
       
   175 //
       
   176 // -----------------------------------------------------------------------------
       
   177 //
       
   178 void CMusAvailabilityPluginManager::InvitationReceivedL()
       
   179     {
       
   180     MUS_LOG( "mus: [MUSSRV]  -> CMusAvailabilityPluginManager::\
       
   181         InvitationReceivedL()" )
       
   182 
       
   183     if( !iPluginStarted )
       
   184         {
       
   185         iPlugin->StartL();
       
   186         iPluginStarted = ETrue;
       
   187         }
       
   188 
       
   189     MUS_LOG( "mus: [MUSSRV]  <- CMusAvailabilityPluginManager::\
       
   190         InvitationReceivedL()" )
       
   191     }
       
   192 
       
   193 // -----------------------------------------------------------------------------
       
   194 // CMusAvailabilityPluginManager::OptionsReceived
       
   195 // -----------------------------------------------------------------------------
       
   196 //
       
   197 void CMusAvailabilityPluginManager::OptionsReceivedL()
       
   198     {
       
   199     MUS_LOG( "mus: [MUSSRV]  -> CMusAvailabilityPluginManager::\
       
   200         OptionsReceivedL()" )
       
   201 
       
   202     if( !iPluginStarted )
       
   203         {
       
   204         iPlugin->StartL();
       
   205         iPluginStarted = ETrue;
       
   206         }
       
   207 
       
   208     MUS_LOG( "mus: [MUSSRV]  <- CMusAvailabilityPluginManager::\
       
   209         OptionsReceivedL()" )
       
   210     }
       
   211 
       
   212 // -----------------------------------------------------------------------------
       
   213 // CMusAvailabilityPluginManager::LoadPluginL
       
   214 // -----------------------------------------------------------------------------
       
   215 //
       
   216 void CMusAvailabilityPluginManager::LoadPluginL()
       
   217     {
       
   218     MUS_LOG( "mus: [MUSSRV]  -> CMusAvailabilityPluginManager::\
       
   219         LoadPluginL()" )
       
   220     MUS_LOG( "mus: [MUSSRV]  <- CMusAvailabilityPluginManager::\
       
   221         LoadPluginL()" )
       
   222     }
       
   223 
       
   224 // -----------------------------------------------------------------------------
       
   225 // CMusAvailabilityPluginManager::UnloadPluginL
       
   226 // -----------------------------------------------------------------------------
       
   227 //
       
   228 void CMusAvailabilityPluginManager::StopPluginL()
       
   229     {
       
   230     MUS_LOG( "mus: [MUSSRV]  -> CMusAvailabilityPluginManager::\
       
   231         StopPluginL()" )
       
   232     if( iPluginStarted )
       
   233         {
       
   234         iPlugin->Stop();
       
   235         iPluginStarted = EFalse;
       
   236         }
       
   237     MUS_LOG( "mus: [MUSSRV]  <- CMusAvailabilityPluginManager::\
       
   238         StopPluginL()" )
       
   239     }
       
   240 
       
   241 // -----------------------------------------------------------------------------
       
   242 //
       
   243 // -----------------------------------------------------------------------------
       
   244 //
       
   245 MDesCArray& CMusAvailabilityPluginManager::SessionParametersL()
       
   246     {
       
   247     MUS_LOG( "mus: [MUSSRV]  -> CMusAvailabilityPluginManager::\
       
   248         SessionParametersL()" )
       
   249     // update the values
       
   250     UpdateSessionParametersL();
       
   251 
       
   252     // then pass them
       
   253     MUS_LOG( "mus: [MUSSRV]  <- CMusAvailabilityPluginManager::\
       
   254         SessionParametersL()" )
       
   255     return *iSessionParameters;
       
   256     }
       
   257 
       
   258 
       
   259 // -----------------------------------------------------------------------------
       
   260 //
       
   261 // -----------------------------------------------------------------------------
       
   262 //
       
   263 void CMusAvailabilityPluginManager::ManualQueryL()
       
   264     {
       
   265 
       
   266     MUS_LOG( "mus: [MUSSRV]  -> CMusAvailabilityPluginManager::\
       
   267         ManualQueryL()" )
       
   268   	MMusAvaSettings& settings = iPlugin->Settings();
       
   269   	
       
   270     MUS_LOG( "mus: [MUSSRV]    Status available" )
       
   271     
       
   272     settings.SetManualActivation( MMusAvaSettings::EActivationAllowed );
       
   273     iPlugin->StartL();
       
   274 
       
   275     MUS_LOG( "mus: [MUSSRV]  <- CMusAvailabilityPluginManager::\
       
   276         ManualQueryL()" )  
       
   277     }
       
   278 
       
   279 TBool CMusAvailabilityPluginManager::PossibleToLaunch()
       
   280     {
       
   281     return iPlugin->ExtensionAvailability() && 
       
   282     	iPlugin->AvailabilityStatus() == 
       
   283     		MMusAvaObserver::EMusAvaStatusAvailable;
       
   284     }
       
   285 void CMusAvailabilityPluginManager::AvailabilityChanged( 
       
   286                                             TAvailabilityName /*aName*/, 
       
   287                                             TAvailabilityStatus aStatus )
       
   288     {
       
   289     MUS_LOG( "mus: [MUSSRV]  -> CMusAvailabilityPluginManager::\
       
   290         AvailabilityChanged()" )
       
   291 	TRAPD( err , iObserver.AvailabilityChangedL( MapAvailabilities( aStatus ) ) );
       
   292     if ( err )
       
   293         {
       
   294         // Not sure about what to do. Very rare situation.
       
   295         MUS_LOG1( "mus: [MUSSRV] AvailabilityChangedL() leave code: %d",err )
       
   296         }
       
   297     // Do some indicator things...
       
   298     TRAP( err, IndicateAvailabilityL() );
       
   299     if ( err )
       
   300         {
       
   301         // Not sure about what to do. Very rare situation.
       
   302         MUS_LOG1( "mus: [MUSSRV] IndicateAvailabilityL() leave code: %d",err )
       
   303         }
       
   304 
       
   305     MUS_LOG( "mus: [MUSSRV]  <- CMusAvailabilityPluginManager::\
       
   306         AvailabilityChanged()" )	
       
   307     }
       
   308 
       
   309 // -----------------------------------------------------------------------------
       
   310 //
       
   311 // -----------------------------------------------------------------------------
       
   312 //
       
   313 void CMusAvailabilityPluginManager::AvailabilityError( 
       
   314                                             TAvailabilityName /*aName*/, 
       
   315                                             TAvailabilityStatus aStatus )
       
   316     {
       
   317     MUS_LOG( "mus: [MUSSRV]  -> CMusAvailabilityPluginManager::\
       
   318         AvailabilityError()" )
       
   319     TRAPD( err , iObserver.AvailabilityChangedL( MapAvailabilities( aStatus ) ) );
       
   320     if ( err )
       
   321         {
       
   322         // Not sure about what to do. Very rare situation.
       
   323         MUS_LOG1( "mus: [MUSSRV] AvailabilityChangedL() leave code: %d",err )
       
   324         }
       
   325 
       
   326     // Do some indicator things...
       
   327     TRAP( err, IndicateAvailabilityL() );
       
   328     if ( err )
       
   329         {
       
   330         MUS_LOG1( "mus: [MUSSRV] IndicateAvailabilityL() leave code: %d",err )
       
   331         }
       
   332 
       
   333     MUS_LOG( "mus: [MUSSRV]  <- CMusAvailabilityPluginManager::\
       
   334         AvailabilityError()" )	
       
   335     }
       
   336 
       
   337 // -----------------------------------------------------------------------------
       
   338 //
       
   339 // -----------------------------------------------------------------------------
       
   340 //
       
   341 MMusAvaSettingsObserver::TApplicationState CMusAvailabilityPluginManager::
       
   342     ApplicationState()
       
   343     {
       
   344     MUS_LOG( "mus: [MUSSRV]  -> CMusAvailabilityPluginManager::\
       
   345         ApplicationState()" )
       
   346     MMusAvaSettingsObserver::TApplicationState ret = EApplicationStateNotDefined;   
       
   347     if ( iApplicationManager.ApplicationRunning() )
       
   348         {
       
   349         ret = EApplicationIsRunning;
       
   350         }
       
   351     else
       
   352         {
       
   353         ret = EApplicationNotRunning;
       
   354         }
       
   355     
       
   356     MUS_LOG( "mus: [MUSSRV]  <- CMusAvailabilityPluginManager::\
       
   357         ApplicationState()" )
       
   358     return ret;
       
   359     }
       
   360 
       
   361 // -----------------------------------------------------------------------------
       
   362 //
       
   363 // -----------------------------------------------------------------------------
       
   364 //
       
   365 TBool CMusAvailabilityPluginManager::OptionAllowed()
       
   366     {
       
   367     MUS_LOG( "mus: [MUSSRV]  -> CMusAvailabilityPluginManager::\
       
   368         OptionAllowed()" )
       
   369     MUS_LOG( "mus: [MUSSRV]  <- CMusAvailabilityPluginManager::\
       
   370         OptionAllowed()" )
       
   371     // TBD: Check it out
       
   372     return iPlugin->AvailabilityState( MMusAvaObserver::EMusAvaOptionHandler )
       
   373         >= EMusAvaStatusNotExecuted;
       
   374     }
       
   375 
       
   376 // -----------------------------------------------------------------------------
       
   377 // From MMusIndicatorObserver.
       
   378 // Starts live video sharing.
       
   379 // -----------------------------------------------------------------------------
       
   380 //
       
   381 void CMusAvailabilityPluginManager::StartLiveSharingL()
       
   382     {
       
   383     iObserver.StartLiveSharingL();
       
   384     }
       
   385 
       
   386 // -----------------------------------------------------------------------------
       
   387 // This functions cross-links TAvailabilityStatus and
       
   388 // MultimediaSharing::TMusAvailabilityStatus
       
   389 // -----------------------------------------------------------------------------
       
   390 //
       
   391 MultimediaSharing::TMusAvailabilityStatus
       
   392         CMusAvailabilityPluginManager::MapAvailabilities(
       
   393                             TAvailabilityStatus aStatus )
       
   394     {
       
   395     MultimediaSharing::TMusAvailabilityStatus status;
       
   396     switch( aStatus )
       
   397         {
       
   398         case EMusAvaStatusNotExecuted:
       
   399             {
       
   400             MUS_LOG( "mus: [MUSSRV]     that is \
       
   401                 EMultimediaSharingNotAvailable" )
       
   402             status = EMultimediaSharingNotAvailable;
       
   403             break;
       
   404             }
       
   405         case EMusAvaFailureCode:
       
   406             {
       
   407             MUS_LOG( "mus: [MUSSRV]     that is \
       
   408                 EMusAvaFailureCode" )
       
   409             status = EMultimediaFailureCode;
       
   410             break;
       
   411             }
       
   412         case EMusAvaStatusInProgress: // EMusAvaStatusRegistering:
       
   413             {
       
   414             MUS_LOG( "mus: [MUSSRV]     that is ESipRegistrationPending" )
       
   415             if ( iPlugin->CurrentAvailability() > EMusAvaNameRegistration )
       
   416                 {
       
   417                 // SIP registration already performed, we're available
       
   418                 MUS_LOG( "mus: [MUSSRV]     that is \
       
   419                     EMultimediaSharingAvailable - a" )
       
   420                 status = EMultimediaSharingAvailable;
       
   421                 }
       
   422             else if ( 
       
   423                 iPlugin->CurrentAvailability() == EMusAvaNameRegistration )
       
   424                 {
       
   425                 // SIP register pending
       
   426                 MUS_LOG( "mus: [MUSSRV]     that is \
       
   427                     ESipRegistrationPending - a" )
       
   428                 status = ESipRegistrationPending;
       
   429                 }
       
   430             else
       
   431                 {
       
   432                 MUS_LOG( "mus: [MUSSRV]     that is \
       
   433                     EMultimediaSharingNotAvailable - a" )
       
   434                 status = EMultimediaSharingNotAvailable;
       
   435                 }
       
   436             break;
       
   437             }
       
   438         case EMusAvaStatusAvailable:
       
   439             {
       
   440             MUS_LOG( "mus: [MUSSRV]     that is EMultimediaSharingAvailable" )
       
   441             status = EMultimediaSharingAvailable;
       
   442             break;
       
   443             }
       
   444         case EMusAvaStatusNoSipProfile:
       
   445             {
       
   446             MUS_LOG( "mus: [MUSSRV]     that is EErrNoSipProfile" )
       
   447             status = EErrNoSipProfile;
       
   448             break;
       
   449             }
       
   450         case EMusAvaStatusNotRegistered:
       
   451             {
       
   452             MUS_LOG( "mus: [MUSSRV]     that is EErrSipRegistration" )
       
   453             status = EErrSipRegistration;
       
   454             break;
       
   455             }
       
   456         case EMusAvaStatusNoCall:
       
   457             {
       
   458             MUS_LOG( "mus: [MUSSRV]     that is EErrNoActiveCall" )
       
   459             status = EErrNoActiveCall;
       
   460             break;
       
   461             }
       
   462         case EMusAvaStatusCallOnHold:
       
   463             {
       
   464             MUS_LOG( "mus: [MUSSRV]     that is EErrCallOnHold" )
       
   465             status = EErrCallOnHold;
       
   466             break;
       
   467             }
       
   468         case EMusAvaOptionNotAvailable:
       
   469             {
       
   470             MUS_LOG( "mus: [MUSSRV]     that is EErrOptionAvailable" )
       
   471             status = ESipOptionsNotCapable;
       
   472             break;
       
   473             }
       
   474         case EMusAvaStatusConferenceCall:
       
   475             {
       
   476             MUS_LOG( "mus: [MUSSRV]     that is EErrConferenceCall" )
       
   477             status = EErrConferenceCall;
       
   478             break;
       
   479             }
       
   480         case EMusAvaStatusOptionsSent:
       
   481             {
       
   482             MUS_LOG( "mus: [MUSSRV]     that is ESipOptionsCapable" )
       
   483             status = ESipOptionsSent;
       
   484             break;
       
   485             }
       
   486         case EMusAvaStatusOptionsNotSent:
       
   487             {
       
   488             MUS_LOG( "mus: [MUSSRV]     that is ESipOptionsNotSent" )
       
   489             status = ESipOptionsNotSent;
       
   490             break;
       
   491             }
       
   492         case EMusAvaNetworkType:
       
   493             {
       
   494             MUS_LOG( "mus: [MUSSRV]     that is EErrNetwork" )
       
   495             status = EErrNetwork;
       
   496             break;
       
   497             }
       
   498         case EMusAvaRoamingError:
       
   499             {
       
   500             MUS_LOG( "mus: [MUSSRV]     that is EErrRoaming" )
       
   501             status = EErrRoaming;
       
   502             break;
       
   503             }
       
   504         case EMusAvaConnectionErr:
       
   505             {
       
   506             MUS_LOG( "mus: [MUSSRV]     that is EErrConnection" )
       
   507             status = EErrConnection;
       
   508             break;
       
   509             }
       
   510         case EMusActivationError:
       
   511             {
       
   512             MUS_LOG( "mus: [MUSSRV]     that is EErrActivation" )
       
   513             status = EErrActivation;
       
   514             break;
       
   515             }
       
   516         
       
   517         case EMusAvaManualActivation:
       
   518             {
       
   519             MUS_LOG( "mus: [MUSSRV]     that is Manual Activation" )
       
   520             status = EManualActivation;
       
   521             break;
       
   522             }
       
   523 
       
   524         case EMusAvaEdgeDtmStatusUnknown:
       
   525             {
       
   526             MUS_LOG( "mus: [MUSSRV]     Edge/DTM support" )
       
   527             status = EErrNetwork;
       
   528             break;
       
   529             }
       
   530         default:
       
   531             MUS_LOG( "mus: [MUSSRV]     that is unknown; returning \
       
   532                 KErrUnknown" )
       
   533             status = ( TMusAvailabilityStatus ) KErrUnknown;
       
   534         }
       
   535     return status;
       
   536     }
       
   537 
       
   538 
       
   539 // -----------------------------------------------------------------------------
       
   540 //
       
   541 // -----------------------------------------------------------------------------
       
   542 //
       
   543 void CMusAvailabilityPluginManager::UpdateSessionParametersL()
       
   544     {
       
   545     MUS_LOG( "mus: [MUSSRV]  -> CMusAvailabilityPluginManager::\
       
   546              UpdateSessionParametersL()" )
       
   547     // clear the table
       
   548     iSessionParameters->Delete( 0, iSessionParameters->Count() );
       
   549 
       
   550     HBufC* telNumber = TelNumberLC();
       
   551     iSessionParameters->AppendL( *telNumber );
       
   552     CleanupStack::PopAndDestroy( telNumber );
       
   553 
       
   554     HBufC* sipAddresses = SipAddressesLC();
       
   555     iSessionParameters->AppendL( *sipAddresses );
       
   556     CleanupStack::PopAndDestroy( sipAddresses );
       
   557 
       
   558     MMusAvaSettings& settings = iPlugin->Settings();
       
   559 
       
   560     // append sip address proposal
       
   561     iSessionParameters->AppendL( settings.SipAddressProposal() );
       
   562 
       
   563     // Unsafe Magic number 16 is used but unsigned 32 bit integer (TInt32)
       
   564     // can't go beyond 16 digits .
       
   565     TBuf<16> contactIdBuf;
       
   566     contactIdBuf.Num( settings.ContactId() );
       
   567 
       
   568     // append contact id
       
   569     iSessionParameters->AppendL( contactIdBuf );
       
   570     
       
   571     // append video codec
       
   572     HBufC* videoCodecs = VideoCodecsLC();
       
   573     iSessionParameters->AppendL( *videoCodecs );
       
   574     CleanupStack::PopAndDestroy( videoCodecs );
       
   575 
       
   576     // Unsafe Magic number 16 is used but unsigned 32 bit integer (TInt32)
       
   577     // can't go beyond 16 digits .
       
   578     TBuf<16> sipProfileIdBuf;
       
   579     sipProfileIdBuf.Num( settings.SipProfileId() );
       
   580 
       
   581     MUS_LOG1("iSessionParameters -> SIP Profile ID = %d ",
       
   582         settings.SipProfileId() )
       
   583 
       
   584     // append sip profile id
       
   585     iSessionParameters->AppendL( sipProfileIdBuf );
       
   586 
       
   587     HBufC* contactName = ContactNameLC();
       
   588     iSessionParameters->AppendL( *contactName );
       
   589     CleanupStack::PopAndDestroy( contactName );
       
   590     
       
   591     // append call privacy indication
       
   592     MUS_LOG1("iSessionParameters -> Call Privacy = %d ",
       
   593             settings.CallPrivacy() )
       
   594     TBuf<16> callPrivacy;
       
   595     callPrivacy.Num( settings.CallPrivacy() );
       
   596     iSessionParameters->AppendL( callPrivacy );
       
   597 
       
   598 
       
   599     MUS_LOG( "mus: [MUSSRV]  <- CMusAvailabilityPluginManager::\
       
   600              UpdateSessionParametersL()" )
       
   601     }
       
   602 
       
   603 
       
   604 // -----------------------------------------------------------------------------
       
   605 //
       
   606 // -----------------------------------------------------------------------------
       
   607 //
       
   608 HBufC* CMusAvailabilityPluginManager::SipAddressesLC()
       
   609     {
       
   610     MUS_LOG( "mus: [MUSSRV]  -> CMusAvailabilityPluginManager::\
       
   611         SipAddressesLC()" )
       
   612     HBufC* sipAddresses = NULL;
       
   613 
       
   614     // We have to keep up with KMaxPropertySize since it is advertised through
       
   615     // RProperty to UI process.
       
   616     TBuf<RProperty::KMaxPropertySize> tbuf;
       
   617     _LIT( KComma, "," );
       
   618 
       
   619     MMusAvaSettings& settings = iPlugin->Settings();
       
   620     const MDesCArray& addresses = settings.SipAddresses();
       
   621     MUS_LOG1( "mus: [MUSSRV]    addresses.MdcaCount() %d", 
       
   622         addresses.MdcaCount() )        
       
   623     
       
   624     for( TInt i=0;i<addresses.MdcaCount();i++ )
       
   625         {             
       
   626          // Check enough space available in tbuf
       
   627         if ( tbuf.MaxSize()-tbuf.Size() >
       
   628              addresses.MdcaPoint(i).Size()+KComma().Size())
       
   629             {
       
   630             if( i > 0) tbuf.Append( KComma() );                
       
   631             tbuf.Append( addresses.MdcaPoint( i ) );                
       
   632             }
       
   633         else
       
   634             {
       
   635             // if no space just break and do not continue further.
       
   636             break;
       
   637             }            
       
   638         }
       
   639     sipAddresses = tbuf.AllocLC();
       
   640 
       
   641     MUS_LOG_TDESC( "mus: [MUSSRV]       SIP Address: ", (*sipAddresses) );
       
   642     MUS_LOG( "mus: [MUSSRV]  <- CMusAvailabilityPluginManager::\
       
   643         SipAddressesLC()" )
       
   644 
       
   645     return sipAddresses;
       
   646     }
       
   647 
       
   648 
       
   649 // -----------------------------------------------------------------------------
       
   650 //
       
   651 // -----------------------------------------------------------------------------
       
   652 //
       
   653 HBufC* CMusAvailabilityPluginManager::VideoCodecsLC()
       
   654     {
       
   655     MUS_LOG( "mus: [MUSSRV]  -> CMusAvailabilityPluginManager::\
       
   656         VideoCodecsLC()" )
       
   657     HBufC* videoCodecs = NULL;
       
   658 
       
   659     // We have to keep up with KMaxPropertySize since it is advertised through
       
   660     // RProperty to UI process.
       
   661     TBuf<RProperty::KMaxPropertySize> tbuf;
       
   662     _LIT( KComma, "," );
       
   663 
       
   664     MMusAvaSettings& settings = iPlugin->Settings();
       
   665     const MDesCArray& codecs = settings.VideoCodecs();
       
   666     MUS_LOG1( "mus: [MUSSRV]    addresses.MdcaCount() %d", 
       
   667         codecs.MdcaCount() )        
       
   668     
       
   669     for( TInt i=0;i<codecs.MdcaCount();i++ )
       
   670         {             
       
   671          // Check enough space available in tbuf
       
   672         if ( tbuf.MaxSize()-tbuf.Size() >
       
   673              codecs.MdcaPoint(i).Size()+KComma().Size())
       
   674             {
       
   675             if( i > 0) tbuf.Append( KComma() );                
       
   676             tbuf.Append( codecs.MdcaPoint( i ) );                
       
   677             }
       
   678         else
       
   679             {
       
   680             // if no space just break and do not continue further.
       
   681             break;
       
   682             }            
       
   683         }
       
   684     videoCodecs = tbuf.AllocLC();
       
   685 
       
   686     MUS_LOG_TDESC( "mus: [MUSSRV]       Video codecs: ", (*videoCodecs) );
       
   687     MUS_LOG( "mus: [MUSSRV]  <- CMusAvailabilityPluginManager::\
       
   688         VideoCodecsLC()" )
       
   689 
       
   690     return videoCodecs;
       
   691     }
       
   692 
       
   693 
       
   694 // -----------------------------------------------------------------------------
       
   695 //
       
   696 // -----------------------------------------------------------------------------
       
   697 //
       
   698 HBufC* CMusAvailabilityPluginManager::TelNumberLC()
       
   699     {
       
   700     MUS_LOG( "mus: [MUSSRV]  -> CMusAvailabilityPluginManager::\
       
   701         TelNumberLC()" )
       
   702 
       
   703     MMusAvaSettings& settings = iPlugin->Settings();
       
   704 
       
   705     HBufC* telNumber = settings.TelNumber().AllocLC();
       
   706 
       
   707     MUS_LOG( "mus: [MUSSRV]  <- CMusAvailabilityPluginManager::\
       
   708         TelNumberLC()" )
       
   709 
       
   710     return telNumber;
       
   711     }
       
   712 
       
   713 
       
   714 // -----------------------------------------------------------------------------
       
   715 //
       
   716 // -----------------------------------------------------------------------------
       
   717 //
       
   718 HBufC* CMusAvailabilityPluginManager::ContactNameLC()
       
   719     {
       
   720     MUS_LOG( "mus: [MUSSRV]  -> CMusAvailabilityPluginManager::\
       
   721         ContactNameLC()" )
       
   722 
       
   723     MMusAvaSettings& settings = iPlugin->Settings();
       
   724 
       
   725     HBufC* contactName = settings.ContactName().AllocLC();
       
   726 
       
   727     MUS_LOG( "mus: [MUSSRV]  <- CMusAvailabilityPluginManager::\
       
   728         ContactNameLC()" )
       
   729 
       
   730     return contactName;
       
   731     }
       
   732 
       
   733 // -----------------------------------------------------------------------------
       
   734 //
       
   735 // -----------------------------------------------------------------------------
       
   736 //
       
   737 void CMusAvailabilityPluginManager::IndicateAvailabilityL()
       
   738     {
       
   739 
       
   740     MUS_LOG( "mus: [MUSSRV]  -> CMusAvailabilityPluginManager::\
       
   741         IndicateAvailabilityL()" )
       
   742 
       
   743     if( PossibleToLaunch() )
       
   744         {
       
   745         MUS_LOG( "mus: [MUSSRV]    Status available" )
       
   746         if( !iIndicator )
       
   747             {
       
   748             MUS_LOG( "mus: [MUSSRV]    Create indicator" )
       
   749             iIndicator = CMusIndicatorApi::NewL( *this );
       
   750             iIndicator->IndicateAvailabilityL();
       
   751             }
       
   752         iApplicationManager.SetIndicatorStatusL( ETrue );
       
   753         }
       
   754     else
       
   755         {
       
   756         MUS_LOG( "mus: [MUSSRV]    Not available" )
       
   757         iApplicationManager.SetIndicatorStatusL( EFalse );
       
   758         delete iIndicator;
       
   759         iIndicator = NULL;
       
   760         }
       
   761 
       
   762     MUS_LOG( "mus: [MUSSRV]  <- CMusAvailabilityPluginManager::\
       
   763         IndicateAvailabilityL()" )
       
   764     }
       
   765