aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorNicolas Bertrand <nicolas.bertrand@linux.intel.com>2011-04-15 14:29:44 +0200
committerDenis Kenzior <denkenz@gmail.com>2011-04-19 11:57:18 -0500
commitbe1ec489057d82401238a1dd405ef2bdc6d48b9f (patch)
tree906d0ce22ab2ae8012cafe9ac3bfa16b8bba9443
parent6cfa8a955cb8f0344359c53a81d64caa61355e77 (diff)
downloadphonesim-be1ec489057d82401238a1dd405ef2bdc6d48b9f.tar.gz
callmanager: change state of waiting call
becomes incoming when all active and held are released
-rw-r--r--src/callmanager.cpp26
-rw-r--r--src/callmanager.h3
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();