--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/mmsharing/mmshavailability/src/musavanetworkavailability.cpp Thu Dec 17 08:44:37 2009 +0200
@@ -0,0 +1,214 @@
+/*
+* 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: Provide interface for the client requestin availability class.
+*
+*/
+
+
+
+#include "musavanetworkavailability.h"
+#include "musavaavailabilityobserver.h"
+#include "musavasettingsimp.h"
+#include "musavanetworkavailability.h"
+#include "mussesseioninformationapi.h"
+#include "musavaobserver.h"
+#include "musavasharedobject.h"
+#include "muslogger.h"
+#include "musavacalleventmonitor.h"
+
+#include <e32base.h>
+
+
+CMusAvaNetworkAvailability* CMusAvaNetworkAvailability::NewL(
+ MMusAvaAvailabilityObserver& aObserver,
+ CMusAvaSettingsImp& aSettings )
+ {
+ CMusAvaNetworkAvailability* self =
+ CMusAvaNetworkAvailability::NewLC(
+ aObserver,
+ aSettings );
+
+ CleanupStack::Pop( self );
+ return self;
+ }
+
+
+CMusAvaNetworkAvailability* CMusAvaNetworkAvailability::NewLC(
+ MMusAvaAvailabilityObserver& aObserver,
+ CMusAvaSettingsImp& aSettings )
+ {
+ CMusAvaNetworkAvailability* self =
+ new( ELeave ) CMusAvaNetworkAvailability(
+ aObserver,
+ aSettings );
+
+ CleanupStack::PushL( self );
+ self->ConstructL();
+ return self;
+ }
+
+
+CMusAvaNetworkAvailability::~CMusAvaNetworkAvailability()
+ {
+ if ( iPhoneStatus )
+ {
+ iPhoneStatus->Cancel();
+ }
+ delete iPhoneStatus;
+ iPhoneStatus = NULL;
+ }
+
+
+CMusAvaNetworkAvailability::CMusAvaNetworkAvailability(
+ MMusAvaAvailabilityObserver& aObserver,
+ CMusAvaSettingsImp& aSettings )
+ :CMusAvaAvailability( aObserver ),
+ iSettings( aSettings )
+ {
+ }
+
+
+void CMusAvaNetworkAvailability::ConstructL()
+ {
+ iPhoneStatus = CMusAvaCallEventMonitor::NewL( *this );
+ }
+
+
+// -------------------------------------------------------------------------
+// Starts the loopy execution.
+// -------------------------------------------------------------------------
+//
+void CMusAvaNetworkAvailability::DoExecuteL()
+ {
+ MUS_LOG( "mus: [MUSAVA] -> CMusAvaNetworkAvailability::\
+ Execute()" )
+
+ // read the current value and subscribe for changes
+ // that's done in RunL
+ switch (iPhoneStatus->CallStatusL())
+ {
+ case NMusSessionInformationApi::ECallConnected:
+ {
+ TBuf<CMusAvaCallEventMonitor::KMusTelNumberMaxLength> telNumber;
+ iPhoneStatus->GetTelNumberL( telNumber );
+ iSettings.SetTelNumberL( telNumber );
+ iSettings.SetCallDirection( iPhoneStatus->CallDirectionL() );
+ iSettings.SetCallPrivacy( iPhoneStatus->CallPrivacyL() );
+
+ SetState( MMusAvaObserver::EMusAvaStatusAvailable );
+ break;
+ }
+ case NMusSessionInformationApi::ECallHold:
+ SetState( MMusAvaObserver::EMusAvaStatusCallOnHold );
+ break;
+ case NMusSessionInformationApi::EConferenceCall:
+ SetState( MMusAvaObserver::EMusAvaStatusConferenceCall );
+ break;
+ case NMusSessionInformationApi::ENoCall:
+ SetState( MMusAvaObserver::EMusAvaStatusNoCall );
+ break;
+ default:
+ SetState( MMusAvaObserver::EMusAvaStatusNoCall );
+ break;
+ }
+
+ // subscribe for the future changes.
+ iPhoneStatus->StartMonitoringL();
+
+ MUS_LOG( "mus: [MUSAVA] <- CMusAvaNetworkAvailability::\
+ ExecutePatternL()" )
+ }
+
+
+void CMusAvaNetworkAvailability::Stop()
+ {
+ iPhoneStatus->Cancel();
+ SetState( MMusAvaObserver::EMusAvaStatusNotExecuted );
+ }
+
+
+MMusAvaObserver::TAvailabilityName CMusAvaNetworkAvailability::Name()
+ {
+ return MMusAvaObserver::EMusAvaNameNetworkStatus;
+ }
+
+// -------------------------------------------------------------------------
+// This function is called when a cs call is connected.
+// -------------------------------------------------------------------------
+//
+void CMusAvaNetworkAvailability::CallConnectedL( const TDesC& aTelNumber )
+ {
+ MUS_LOG( "mus: [MUSAVA] \
+ -> CMusAvaNetworkAvailability::CallConnectedL()" )
+ // try to resolve to contact information of the remote host
+
+ iSettings.SetTelNumberL( aTelNumber );
+ iSettings.SetCallDirection( iPhoneStatus->CallDirectionL() );
+ iSettings.SetCallPrivacy( iPhoneStatus->CallPrivacyL() );
+ SetState( MMusAvaObserver::EMusAvaStatusAvailable );
+
+ MUS_LOG( "mus: [MUSAVA] \
+ <- CMusAvaNetworkAvailability::CallConnectedL()" )
+ }
+
+
+// -------------------------------------------------------------------------
+// This function is called when a cs call goes into a state
+// that is not connected.
+// -------------------------------------------------------------------------
+//
+void CMusAvaNetworkAvailability::ConferenceCallL()
+ {
+ MUS_LOG( "mus: [MUSAVA] \
+ -> CMusAvaNetworkAvailability::ConferenceCallL()" )
+ //Report line status
+ SetState( MMusAvaObserver::EMusAvaStatusConferenceCall );
+ MUS_LOG( "mus: [MUSAVA] \
+ <- CMusAvaNetworkAvailability::ConferenceCallL()" )
+ }
+
+
+// -------------------------------------------------------------------------
+// This function is called when a cs call goes hold
+// -------------------------------------------------------------------------
+//
+void CMusAvaNetworkAvailability::CallHoldL( const TDesC& aTelNumber )
+ {
+ MUS_LOG( "mus: [MUSAVA] -> CMusAvaNetworkAvailability::CallHoldL()" )
+ //Report line status
+ iSettings.SetTelNumberL( aTelNumber );
+ iSettings.SetCallDirection( iPhoneStatus->CallDirectionL() );
+ iSettings.SetCallPrivacy( iPhoneStatus->CallPrivacyL() );
+ SetState( MMusAvaObserver::EMusAvaStatusCallOnHold );
+ MUS_LOG( "mus: [MUSAVA] <- CMusAvaNetworkAvailability::CallHoldL()" )
+ }
+
+
+// -------------------------------------------------------------------------
+// This function is called when a cs call goes into a state
+// that is not connected.
+// -------------------------------------------------------------------------
+//
+void CMusAvaNetworkAvailability::NoActiveCallL()
+ {
+ MUS_LOG( "mus: [MUSAVA] -> CMusAvaNetworkAvailability::NoActiveCallL()" )
+
+ iSettings.SetTelNumberL( KNullDesC() );
+
+ //Report line status
+ //Availability status
+ SetState( MMusAvaObserver::EMusAvaStatusNoCall );
+
+ MUS_LOG( "mus: [MUSAVA] <- CMusAvaNetworkAvailability::NoActiveCallL()" )
+ }