mmsharing/mmshavailability/src/musavadefaultimp.cpp
changeset 15 ccd8e69b5392
parent 2 b31261fd4e04
child 20 e8be2c2e049d
child 22 496ad160a278
--- a/mmsharing/mmshavailability/src/musavadefaultimp.cpp	Tue Feb 02 00:09:07 2010 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,513 +0,0 @@
-/*
-* Copyright (c) 2005-2007 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:   This is default implementation class for CMusAvaInterface
-*
-*/
-
-
-
-#include "musavadefaultimp.h"
-#include "musavaavailabilityobserver.h"
-#include "musavaobserver.h"
-#include "musavasettingsimp.h"
-#include "musavasharedobject.h"
-#include "muslogger.h"
-#include "musavainvitehandler.h"
-#include "musavanetworkavailability.h"
-#include "musavacontactavailability.h"
-#include "musavaconnectionavailability.h"
-#include "musavaregisteravailability.h"
-#include "musavaoptionhandler.h"
-#include "musavadefaultoptionhandler.h"
-#include "musavasipprofileavailability.h"
-#include "musavasettingavailability.h"
-
-#include "mussesseioninformationapi.h"
-
-#include <e32property.h>
-
-
-const MMusAvaObserver::TAvailabilityName KMinimumAvailability
-    = MMusAvaObserver::EMusAvaBearerStatus;
-
-const MMusAvaObserver::TAvailabilityName KMandatoryAvailability
-    = MMusAvaObserver::EMusAvaNameRegistration;
-
-const MMusAvaObserver::TAvailabilityName KExtensionAvailability
-    = MMusAvaObserver::EMusAvaOptionHandler;
-
-
-// -----------------------------------------------------------------------------
-// Two-phased constructor.
-// -----------------------------------------------------------------------------
-//
-CMusAvaDefaultImp* CMusAvaDefaultImp::NewL()
-    {
-    MUS_LOG( "mus: [MUSAVA]  -> CMusAvaDefaultImp::NewL" )
-    CMusAvaDefaultImp* self = new (ELeave) CMusAvaDefaultImp();
-    CleanupStack::PushL (self);
-    self->ConstructL();
-    CleanupStack::Pop( self );
-    MUS_LOG( "mus: [MUSAVA]  <- CMusAvaDefaultImp::NewL" )
-    return self;
-    }
-
-
-// -----------------------------------------------------------------------------
-// C++ destructor.
-// -----------------------------------------------------------------------------
-//
-CMusAvaDefaultImp::~CMusAvaDefaultImp()
-    {
-    MUS_LOG( "mus: [MUSAVA]  -> CMusAvaDefaultImp::~CMusAvaDefaultImp" )
-    this->Stop();
-    iAvailabilities.ResetAndDestroy();
-    delete iSettings;
-    iSettings = NULL;
-    MUS_LOG( "mus: [MUSAVA]  <- CMusAvaDefaultImp::~CMusAvaDefaultImp" )
-    }
-
-
-// -----------------------------------------------------------------------------
-// Symbian second-phase constructor.
-// -----------------------------------------------------------------------------
-//
-void CMusAvaDefaultImp::ConstructL()
-    {
-    MUS_LOG( "mus: [MUSAVA]  -> CMusAvaDefaultImp::ConstructL" )
-    iSettings = CMusAvaSettingsImp::NewL();
-    CreateAvailabilityModulesL();
-    MUS_LOG( "mus: [MUSAVA]  <- CMusAvaDefaultImp::ConstructL" )
-    }
-
-
-// -----------------------------------------------------------------------------
-// C++ Constructor
-// -----------------------------------------------------------------------------
-//
-CMusAvaDefaultImp::CMusAvaDefaultImp()
-    :iObserver( NULL ),
-    iCurrentAvailability( MMusAvaObserver::EMusAvaNameNotDefined ),
-    iAvailabilityStatus ( MMusAvaObserver::EMusAvaStatusNotExecuted ),
-    iStopping( EFalse ),
-    iExecuteStarted( EFalse )
-    {
-    }
-
-
-// -----------------------------------------------------------------------------
-// Creates concrete factory and all availability objects
-// -----------------------------------------------------------------------------
-//
-void CMusAvaDefaultImp::CreateAvailabilityModulesL()
-    {
-    MUS_LOG( "mus: [MUSAVA]  -> CMusAvaDefaultImp::\
-        CreateAvailabilityModulesL" )
-    
-    if ( iAvailabilities.Count() )
-        {
-        Stop();
-        iAvailabilities.ResetAndDestroy();
-        }
-
-    /* We need handlers all the time to respond incoming Invite/Options 
-       So construct this modules first.
-    */
-    ConstuctHandlerAvailabilityModulesL();
-
-    /* We must check the static availability modules like sipprofile 
-       mus activation settings. if this fails then this 
-       will be fatal and no need to go and construct further.
-    */
-    ConstructStaticAvailabilityModulesL();
-
-    /* Check the handler and static availability modules are OK . If it is not
-     * OK then dont need to create further availability modules.
-     */
-    for ( TInt i = 0; i < iAvailabilities.Count(); i++ )
-        {
-        if ( !iAvailabilities[i]->Available())
-            {
-            MUS_LOG1( "mus: [MUSAVA]  <- CMusAvaDefaultImp:: \
-                      CreateAvailabilityModulesL Fails! Module = %d ",i )
-            return ;
-            }
-        }    
-    
-    /* This should construct modules in where availability could change 
-     * dynamically such as network,bearer and call status etc.    
-     */
-    ConstructDynamicAvailabilityModulesL();
-
-    MUS_LOG( "mus: [MUSAVA]  <- CMusAvaDefaultImp::\
-        CreateAvailabilityModulesL" )
-    }
-
-// -----------------------------------------------------------------------------
-// Creates concrete standard availability objects
-// -----------------------------------------------------------------------------
-//
-void CMusAvaDefaultImp::ConstuctHandlerAvailabilityModulesL()
-    {
-    MUS_LOG( "mus: [MUSAVA]  -> CMusAvaDefaultImp::\
-                                        ConstuctHandlerAvailabilityModulesL" )
-
-    CMusAvaInviteHandler* inviteHandler = CMusAvaInviteHandler::NewLC(
-                                                           *this, *iSettings ) ;
-    iAvailabilities.AppendL( inviteHandler );
-    CleanupStack::Pop( inviteHandler );    
-
-    CMusAvaDefaultOptionHandler* defaultOptionHandler =
-                            CMusAvaDefaultOptionHandler::NewLC( *this, *iSettings );
-	iAvailabilities.AppendL( defaultOptionHandler );
-    CleanupStack::Pop( defaultOptionHandler );
-
-    MUS_LOG( "mus: [MUSAVA]  <- CMusAvaDefaultImp::\
-        ConstuctHandlerAvailabilityModulesL" )
-    }
-
-// -----------------------------------------------------------------------------
-// Creates concrete standard availability objects
-// -----------------------------------------------------------------------------
-//
-void CMusAvaDefaultImp::ConstructStaticAvailabilityModulesL()
-    {
-    MUS_LOG( "mus: [MUSAVA]  -> CMusAvaDefaultImp::\
-                                            ConstructStaticAvailabilityModulesL" )
-    
-    /* Mus Activation Settings */
-    CMusAvaSettingAvailability* settingAvailability =
-                            CMusAvaSettingAvailability::NewLC( *this );
-	iAvailabilities.AppendL( settingAvailability );
-    CleanupStack::Pop( settingAvailability );
-
-    /* Existence of Sip profile */
-    CMusAvaSipprofileAvailability* sipprofileExist =
-                            CMusAvaSipprofileAvailability::NewLC( *this ) ;
-    iAvailabilities.AppendL( sipprofileExist );
-    CleanupStack::Pop( sipprofileExist );
-    MUS_LOG( "mus: [MUSAVA]  <- CMusAvaDefaultImp:: \
-                                            ConstructStaticAvailabilityModulesL" )
-    }
-
-// -----------------------------------------------------------------------------
-// Creates concrete standard availability objects
-// -----------------------------------------------------------------------------
-//
-void CMusAvaDefaultImp::ConstructDynamicAvailabilityModulesL()
-    {
-    MUS_LOG( "mus: [MUSAVA]  -> CMusAvaDefaultImp::\
-                                           ConstructDynamicAvailabilityModulesL" )       
-    // Create network availability
-    CMusAvaNetworkAvailability* networkAvailability =
-                            CMusAvaNetworkAvailability::NewLC( *this, *iSettings ) ;
-    iAvailabilities.AppendL( networkAvailability );
-    CleanupStack::Pop( networkAvailability );
-
-    // Contact availability
-    CMusAvaContactAvailability* contactAvailability = 
-                            CMusAvaContactAvailability::NewLC( *this, *iSettings );
-    iAvailabilities.AppendL( contactAvailability );
-    CleanupStack::Pop( contactAvailability );
-
-    //Connection monitor
-    CMusAvaConnectionAvailability* connectionAvailability =
-                          CMusAvaConnectionAvailability::NewLC( *this, *iSettings );
-    iAvailabilities.AppendL( connectionAvailability );
-    CleanupStack::Pop( connectionAvailability );
-
-    // Create register availability
-    CMusAvaRegisterAvailability* registerAvailability = 
-                            CMusAvaRegisterAvailability::NewLC( *this, *iSettings );
-    iAvailabilities.AppendL( registerAvailability );
-    CleanupStack::Pop( registerAvailability );
-
-    // Extension availabilities ->
-
-    // Create SIP options availability
-    CMusAvaOptionHandler* optionHandler = 
-                                  CMusAvaOptionHandler::NewLC( *this, *iSettings );
-    iAvailabilities.AppendL( optionHandler );
-    CleanupStack::Pop( optionHandler );
-
-    MUS_LOG( "mus: [MUSAVA]  <- CMusAvaDefaultImp::ConstructDynamicAvailabilityModulesL" )
-    }
-
-// -----------------------------------------------------------------------------
-// Create work for executing availability report.
-// -----------------------------------------------------------------------------
-//
-void CMusAvaDefaultImp::ExecuteAvailablitityModules()
-    {
-    MUS_LOG( "mus: [MUSAVA]  -> CMusAvaDefaultImp::\
-        ExecuteAvailablitityModules" )
-    iExecuteStarted = ETrue;
-    TBool goOn = ETrue;
-    for ( TInt i = 0; i < iAvailabilities.Count() && goOn; i++ )
-        {
-        if ( !iAvailabilities[i]->Available() &&  
-            !iAvailabilities[i]->Executing())
-            {
-            iAvailabilities[i]->Execute();
-            if ( iAvailabilities[i]->State() < MMusAvaObserver::EMusAvaStatusInProgress )
-                {
-                goOn = EFalse;
-                }
-            }
-        }
-    iExecuteStarted = EFalse;
-    MUS_LOG( "mus: [MUSAVA]  <- CMusAvaDefaultImp::\
-        ExecuteAvailablitityModules" )
-    }
-
-
-// -----------------------------------------------------------------------------
-// Retuns setting interface for the client.
-// -----------------------------------------------------------------------------
-//
-MMusAvaSettings& CMusAvaDefaultImp::Settings()
-    {
-    return *iSettings;
-    }
-
-
-// -----------------------------------------------------------------------------
-// Set Observer interface for the client.
-// -----------------------------------------------------------------------------
-//
-void CMusAvaDefaultImp::SetObserver( MMusAvaObserver& aObserver )
-    {
-    iObserver = &aObserver;
-    }
-
-// -----------------------------------------------------------------------------
-// Set MMusAvaSettingsObserver interface for the client.
-// -----------------------------------------------------------------------------
-//
-void CMusAvaDefaultImp::SetSettingsObserver( MMusAvaSettingsObserver& aObserver )
-    {
-    iSettings->SetObserver( aObserver );
-    }
-// -----------------------------------------------------------------------------
-// Requests the implementation to start to investigate availabilites.
-// -----------------------------------------------------------------------------
-//
-void CMusAvaDefaultImp::StartL()
-    {
-    MUS_LOG( "mus: [MUSAVA]  -> CMusAvaDefaultImp::StartL" )
-    ExecuteAvailablitityModules();
-    MUS_LOG( "mus: [MUSAVA]  <- CMusAvaDefaultImp::StartL" )
-    }
-
-
-// -----------------------------------------------------------------------------
-// Requests the implementation to stop investigating or monitoring availabilites
-// for the client.
-// -----------------------------------------------------------------------------
-//
-void CMusAvaDefaultImp::Stop()
-    {
-    MUS_LOG( "mus: [MUSAVA]  -> CMusAvaDefaultImp::Stop" )
-    iStopping = ETrue;
-    for ( TInt i = iAvailabilities.Count() - 1; i >= 0; i-- )
-        {
-        if ( iAvailabilities[i]->State() > MMusAvaObserver::EMusAvaStatusNotExecuted )
-            {
-            iAvailabilities[i]->Stop();
-            }
-        }
-    CalculateAvailability();
-    iStopping = EFalse;
-    if ( iObserver )
-        {
-        iObserver->AvailabilityChanged(
-            CurrentAvailability(),
-            AvailabilityStatus() );
-        }
-    MUS_LOG( "mus: [MUSAVA]  <- CMusAvaDefaultImp::Stop" )
-    }
-
-
-// -----------------------------------------------------------------------------
-//  Availability report.
-// -----------------------------------------------------------------------------
-//
-void CMusAvaDefaultImp::AvailabilityChanged(
-    MMusAvaObserver::TAvailabilityName aName,
-    MMusAvaObserver::TAvailabilityStatus aStatus )
-    {
-    MUS_LOG2( "mus: [MUSAVA]  -> CMusAvaDefaultImp::AvailabilityChanged(%d,%d)",
-        aName, aStatus )
-
-    CalculateAvailability();
-    if ( iObserver )
-        {
-        iObserver->AvailabilityChanged( aName, aStatus );
-        }
-        
-    if ( !iStopping && aStatus >= MMusAvaObserver::EMusAvaStatusNotExecuted )
-        {
-        if ( !iExecuteStarted )
-            {
-            ExecuteAvailablitityModules();
-            }
-        }
-    
-    MUS_LOG( "mus: [MUSAVA]  <- CMusAvaDefaultImp::AvailabilityChanged()" )
-    }
-
-
-// -----------------------------------------------------------------------------
-//  Availability error.
-// -----------------------------------------------------------------------------
-//
-void CMusAvaDefaultImp::AvailabilityError(
-    MMusAvaObserver::TAvailabilityName aName,
-    MMusAvaObserver::TAvailabilityStatus aStatus )
-    {
-    MUS_LOG2( "mus: [MUSAVA]  -> CMusAvaDefaultImp::AvailabilityError\
-        ( %d, %d)", aName, aStatus )
-
-    CalculateAvailability();
-    if ( iObserver )
-        {
-        iObserver->AvailabilityError( aName, aStatus );
-        }
-    MUS_LOG( "mus: [MUSAVA]  <- CMusAvaDefaultImp::AvailabilityError()" )
-    }
-    
-// -----------------------------------------------------------------------------
-//  Checks if the current availability is at least the same as given as 
-//  parameter
-// -----------------------------------------------------------------------------
-//
-TBool CMusAvaDefaultImp::Available(
-    MMusAvaObserver::TAvailabilityName aAvailability )
-    {
-    return iCurrentAvailability > aAvailability
-      || ( iCurrentAvailability == aAvailability
-       	&& MMusAvaObserver::EMusAvaStatusAvailable == iAvailabilityStatus )
-      || ( iCurrentAvailability == aAvailability
-       	&& ( MMusAvaObserver::EMusAvaStatusOptionsNotSent == iAvailabilityStatus
-      	  ||  MMusAvaObserver::EMusAvaStatusOptionsSent == iAvailabilityStatus) );
-    }
-    
-// -----------------------------------------------------------------------------
-//  Calculates current availability
-// -----------------------------------------------------------------------------
-MMusAvaObserver::TAvailabilityStatus CMusAvaDefaultImp::AvailabilityPluginState()
-	{
-	return iAvailabilityStatus;
-	}
-// -----------------------------------------------------------------------------
-//  Calculates current availability
-// -----------------------------------------------------------------------------
-//
-void CMusAvaDefaultImp::CalculateAvailability()
-    {
-    MUS_LOG( "mus: [MUSAVA]  -> CMusAvaDefaultImp::CalculateAvailability()" )
-    iCurrentAvailability = MMusAvaObserver::EMusAvaFullAvailability;
-    iAvailabilityStatus = MMusAvaObserver::EMusAvaStatusAvailable;    
-    TBool goOn = ETrue;
-    for ( TInt i = 0; i < iAvailabilities.Count() && goOn; i++ )
-        {
-        if ( !iAvailabilities[i]->Available() )
-            {
-            iCurrentAvailability = iAvailabilities[i]->Name();
-            iAvailabilityStatus = iAvailabilities[i]->State();
-            goOn = EFalse;
-            }
-        }            
-    MUS_LOG2( "mus: [MUSAVA]  Avaialability name and status (%d,%d)",
-        iCurrentAvailability, iAvailabilityStatus )
-    MUS_LOG( "mus: [MUSAVA]  <- CMusAvaDefaultImp::CalculateAvailability()" )
-    }
-
-// -----------------------------------------------------------------------------
-//  Current availability
-// -----------------------------------------------------------------------------
-//
-MMusAvaObserver::TAvailabilityName CMusAvaDefaultImp::CurrentAvailability()
-    {
-    return iCurrentAvailability;
-    }
-
-
-// -----------------------------------------------------------------------------
-//  Current availability status
-// -----------------------------------------------------------------------------
-//
-MMusAvaObserver::TAvailabilityStatus CMusAvaDefaultImp::AvailabilityStatus()
-    {
-    return iAvailabilityStatus;
-    }
-
-
-// -----------------------------------------------------------------------------
-//  Checks if current availability is at least minimum availability
-// -----------------------------------------------------------------------------
-//
-TBool CMusAvaDefaultImp::MinimumAvailability()
-    {
-    return iCurrentAvailability > KMinimumAvailability;
-    }
-
-
-// -----------------------------------------------------------------------------
-//  Checks if current availability is at least mandatory availability
-// -----------------------------------------------------------------------------
-//
-TBool CMusAvaDefaultImp::MandatoryAvailability()
-    {
-    return iCurrentAvailability > KMandatoryAvailability;
-    }
-
-
-// -----------------------------------------------------------------------------
-//  Checks if current availability is extension availability
-// -----------------------------------------------------------------------------
-//
-TBool CMusAvaDefaultImp::ExtensionAvailability()
-    {
-    return iCurrentAvailability > KExtensionAvailability;
-    }
-
-// -----------------------------------------------------------------------------
-//  Returns the sate of the given availability
-// -----------------------------------------------------------------------------
-//
-MMusAvaObserver::TAvailabilityStatus CMusAvaDefaultImp::AvailabilityState(
-    MMusAvaObserver::TAvailabilityName aAvailability )
-    {
-    MUS_LOG1( "mus: [MUSAVA]  -> CMusAvaDefaultImp::AvailabilityState(%d)",
-        aAvailability )
-    MMusAvaObserver::TAvailabilityStatus retval = 
-                                MMusAvaObserver::EMusAvaStatusNotExecuted;
-    MMusAvaObserver::TAvailabilityStatus state = 
-                                MMusAvaObserver::EMusAvaStatusAvailable;
-                                
-    for ( TInt i = 0; i < iAvailabilities.Count() 
-        && state > MMusAvaObserver::EMusAvaStatusNotExecuted; i++ )
-        {
-        state = iAvailabilities[i]->State();
-        
-        if ( iAvailabilities[i]->Name() == aAvailability )
-            {
-            retval = iAvailabilities[i]->State();
-            }
-        }
-    MUS_LOG1( "mus: [MUSAVA]  <- CMusAvaDefaultImp::AvailabilityState(%d)",
-        retval )
-    return retval;
-    }