From f69c597387cf5eee3c60e0b5947ce511298f0254 Mon Sep 17 00:00:00 2001 From: Evangelos Ribeiro Tzaras Date: Tue, 12 Jan 2021 00:50:28 +0100 Subject: [PATCH] manager: add has_active_call() and hang_up_all_calls() --- src/calls-manager.c | 56 +++++++++++++++++++++++++++++++++++++++++++++ src/calls-manager.h | 2 ++ 2 files changed, 58 insertions(+) diff --git a/src/calls-manager.c b/src/calls-manager.c index 1c4cf93..61a4f69 100644 --- a/src/calls-manager.c +++ b/src/calls-manager.c @@ -564,6 +564,62 @@ calls_manager_get_calls (CallsManager *self) return g_steal_pointer (&calls); } +/** + * calls_manager_hang_up_all_calls: + * @self: a #CallsManager + * + * Hangs up on every call known to @self. + */ +void +calls_manager_hang_up_all_calls (CallsManager *self) +{ + g_autoptr (GList) calls = NULL; + GList *node; + CallsCall *call; + + g_return_if_fail (CALLS_IS_MANAGER (self)); + + calls = calls_manager_get_calls (self); + + for (node = calls; node; node = node->next) + { + call = node->data; + g_debug ("Hanging up on call %s", calls_call_get_name (call)); + calls_call_hang_up (call); + } + + g_debug ("Hanged up on all calls"); +} + +/** + * calls_manager_has_active_call + * @self: a #CallsManager + * + * Checks if @self has any active call + * + * Returns: %TRUE if there are active calls, %FALSE otherwise + */ +gboolean +calls_manager_has_active_call (CallsManager *self) +{ + g_autoptr (GList) calls = NULL; + GList *node; + CallsCall *call; + + g_return_val_if_fail (CALLS_IS_MANAGER (self), FALSE); + + calls = calls_manager_get_calls (self); + + for (node = calls; node; node = node->next) + { + call = node->data; + if (calls_call_get_state (call) != CALLS_CALL_STATE_DISCONNECTED) + return TRUE; + } + + return FALSE; +} + CallsOrigin * calls_manager_get_default_origin (CallsManager *self) { diff --git a/src/calls-manager.h b/src/calls-manager.h index 377aa45..63ad473 100644 --- a/src/calls-manager.h +++ b/src/calls-manager.h @@ -61,5 +61,7 @@ CallsOrigin *calls_manager_get_default_origin (CallsManager *self); void calls_manager_set_default_origin (CallsManager *self, CallsOrigin *origin); const gchar *calls_manager_get_contact_name (CallsCall *call); +gboolean calls_manager_has_active_call (CallsManager *self); +void calls_manager_hang_up_all_calls (CallsManager *self); G_END_DECLS