diff options
author | Nicolas Bertrand <nicolas.bertrand@linux.intel.com> | 2011-04-15 14:29:44 +0200 |
---|---|---|
committer | Denis Kenzior <denkenz@gmail.com> | 2011-04-19 11:57:18 -0500 |
commit | be1ec489057d82401238a1dd405ef2bdc6d48b9f (patch) | |
tree | 906d0ce22ab2ae8012cafe9ac3bfa16b8bba9443 | |
parent | 6cfa8a955cb8f0344359c53a81d64caa61355e77 (diff) | |
download | phonesim-be1ec489057d82401238a1dd405ef2bdc6d48b9f.tar.gz |
callmanager: change state of waiting call
becomes incoming when all active and held are released
-rw-r--r-- | src/callmanager.cpp | 26 | ||||
-rw-r--r-- | src/callmanager.h | 3 |
2 files changed, 25 insertions, 4 deletions
diff --git a/src/callmanager.cpp b/src/callmanager.cpp index be17b83..585a3ac 100644 --- a/src/callmanager.cpp +++ b/src/callmanager.cpp @@ -409,6 +409,9 @@ void CallManager::hangupConnected() } } callList = newCallList; + + if ( !hasCall( CallState_Held ) ) + waitingToIncoming(); } void CallManager::hangupHeld() @@ -423,6 +426,9 @@ void CallManager::hangupHeld() } } callList = newCallList; + + if ( !hasCall( CallState_Active ) ) + waitingToIncoming(); } void CallManager::hangupConnectedAndHeld() @@ -438,6 +444,7 @@ void CallManager::hangupConnectedAndHeld() } } callList = newCallList; + waitingToIncoming(); } void CallManager::hangupCall( int id ) @@ -508,10 +515,6 @@ bool CallManager::chld1() // We only have active calls - hang them up. hangupConnected(); return true; - } else if ( hasCall( CallState_Active ) ) { - // We only have active calls - hang them up. - hangupConnected(); - return true; } else if ( ( id = idForDialing() ) >= 0 ) { // We have a dialing call. hangupCall(id); @@ -544,6 +547,10 @@ bool CallManager::chld1x( int x ) } } callList = newCallList; + + if ( !hasCall( CallState_Active ) && !hasCall( CallState_Held ) ) + waitingToIncoming(); + return found; } @@ -709,6 +716,17 @@ void CallManager::dialingToAlerting() sendState( callList[index] ); } +void CallManager::waitingToIncoming() +{ + int index = indexForId( idForState( CallState_Waiting ) ); + + if ( index < 0 ) + return; + + callList[index].state = CallState_Incoming; + sendState( callList[index] ); +} + void CallManager::dialBack() { startIncomingCall( "1234567", "7654321", "Alice", true ); diff --git a/src/callmanager.h b/src/callmanager.h index 90cb9bd..5876c87 100644 --- a/src/callmanager.h +++ b/src/callmanager.h @@ -121,6 +121,9 @@ private slots: // Transition the active dialing call to alerting. void dialingToAlerting(); + // Transition the waiting call to incoming. + void waitingToIncoming(); + // Handle dial-backs. void dialBack(); void dialBackWithHangup5(); |