[calls] ui-call-data: Store origin id and adapt to changes
- From: Evangelos Ribeiro Tzaras <devrtz src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [calls] ui-call-data: Store origin id and adapt to changes
- Date: Fri, 4 Mar 2022 17:38:07 +0000 (UTC)
commit 30c4e90499a8ad3b8fd6c21e5b0934738b04f470
Author: Evangelos Ribeiro Tzaras <devrtz fortysixandtwo eu>
Date: Thu Feb 3 18:52:52 2022 +0100
ui-call-data: Store origin id and adapt to changes
src/calls-manager.c | 4 +++-
src/calls-ui-call-data.c | 45 +++++++++++++++++++++++++++++++++++++++++++--
src/calls-ui-call-data.h | 4 +++-
tests/test-ringer.c | 4 ++--
tests/test-ui-call.c | 3 ++-
5 files changed, 53 insertions(+), 7 deletions(-)
---
diff --git a/src/calls-manager.c b/src/calls-manager.c
index f0fc9f87..31ee4856 100644
--- a/src/calls-manager.c
+++ b/src/calls-manager.c
@@ -243,12 +243,14 @@ static void
add_call (CallsManager *self, CallsCall *call, CallsOrigin *origin)
{
CallsUiCallData *call_data;
+ g_autofree char *origin_id = NULL;
g_return_if_fail (CALLS_IS_MANAGER (self));
g_return_if_fail (CALLS_IS_ORIGIN (origin));
g_return_if_fail (CALLS_IS_CALL (call));
- call_data = calls_ui_call_data_new (call);
+ origin_id = calls_origin_get_id (origin);
+ call_data = calls_ui_call_data_new (call, origin_id);
g_hash_table_insert (self->calls, call, call_data);
/* TODO get rid of SIGNAL_CALL_ADD signal */
diff --git a/src/calls-ui-call-data.c b/src/calls-ui-call-data.c
index cc6a2a4d..80432f48 100644
--- a/src/calls-ui-call-data.c
+++ b/src/calls-ui-call-data.c
@@ -32,6 +32,7 @@
enum {
PROP_0,
PROP_CALL,
+ PROP_ORIGIN_ID,
PROP_INBOUND,
PROP_PROTOCOL,
PROP_DISPLAY_NAME,
@@ -66,6 +67,7 @@ struct _CallsUiCallData
guint timer_id;
CuiCallState state;
+ char *origin_id;
gboolean silenced;
gboolean ui_active; /* whether a UI should be shown (or the ringer should ring) */
@@ -420,6 +422,10 @@ calls_ui_call_data_set_property (GObject *object,
set_call_data (self, g_value_dup_object (value));
break;
+ case PROP_ORIGIN_ID:
+ self->origin_id = g_value_dup_string (value);
+ break;
+
default:
G_OBJECT_WARN_INVALID_PROPERTY_ID (object, property_id, pspec);
break;
@@ -441,6 +447,10 @@ calls_ui_call_data_get_property (GObject *object,
g_value_set_object (value, self->call);
break;
+ case PROP_ORIGIN_ID:
+ g_value_set_string (value, calls_ui_call_data_get_origin_id (self));
+ break;
+
case PROP_INBOUND:
g_value_set_boolean (value, calls_ui_call_data_get_inbound (self));
break;
@@ -498,6 +508,8 @@ calls_ui_call_data_dispose (GObject *object)
g_clear_object (&self->call);
g_clear_object (&self->best_match);
+ g_clear_pointer (&self->origin_id, g_free);
+
g_clear_handle_id (&self->timer_id, g_source_remove);
g_clear_pointer (&self->timer, g_timer_destroy);
@@ -529,6 +541,16 @@ calls_ui_call_data_class_init (CallsUiCallDataClass *klass)
g_object_class_install_property (object_class, PROP_CALL, props[PROP_CALL]);
+ props[PROP_ORIGIN_ID] =
+ g_param_spec_string ("origin-id",
+ "Origin ID",
+ "ID of the origin used for the call",
+ NULL,
+ G_PARAM_CONSTRUCT_ONLY | G_PARAM_READWRITE |
+ G_PARAM_STATIC_STRINGS);
+
+ g_object_class_install_property (object_class, PROP_ORIGIN_ID, props[PROP_ORIGIN_ID]);
+
props[PROP_INBOUND] =
g_param_spec_boolean ("inbound",
"Inbound",
@@ -606,9 +628,13 @@ calls_ui_call_data_class_init (CallsUiCallDataClass *klass)
}
CallsUiCallData *
-calls_ui_call_data_new (CallsCall *call)
+calls_ui_call_data_new (CallsCall *call,
+ const char *origin_id)
{
- return g_object_new (CALLS_TYPE_UI_CALL_DATA, "call", call, NULL);
+ return g_object_new (CALLS_TYPE_UI_CALL_DATA,
+ "call", call,
+ "origin-id", origin_id,
+ NULL);
}
/**
@@ -673,6 +699,21 @@ calls_ui_call_data_get_call_type (CallsUiCallData *self)
return calls_call_get_call_type (self->call);
}
+/**
+ * calls_ui_call_data_get_origin_id:
+ * @self: a #CallsUiCallData
+ *
+ * Returns: (transfer none): The id of the origin this call was placed from
+ * or %NULL, if unknown.
+ */
+const char *
+calls_ui_call_data_get_origin_id (CallsUiCallData *self)
+{
+ g_return_val_if_fail (CALLS_IS_UI_CALL_DATA (self), NULL);
+
+ return self->origin_id;
+}
+
/**
* calls_call_state_to_cui_call_state:
* @state: A #CallsCallState
diff --git a/src/calls-ui-call-data.h b/src/calls-ui-call-data.h
index 8ca6be93..018fa841 100644
--- a/src/calls-ui-call-data.h
+++ b/src/calls-ui-call-data.h
@@ -35,11 +35,13 @@ G_BEGIN_DECLS
G_DECLARE_FINAL_TYPE (CallsUiCallData, calls_ui_call_data, CALLS, UI_CALL_DATA, GObject)
-CallsUiCallData *calls_ui_call_data_new (CallsCall *call);
+CallsUiCallData *calls_ui_call_data_new (CallsCall *call,
+ const char *origin_id);
void calls_ui_call_data_silence_ring (CallsUiCallData *self);
gboolean calls_ui_call_data_get_silenced (CallsUiCallData *self);
gboolean calls_ui_call_data_get_ui_active (CallsUiCallData *self);
CallsCallType calls_ui_call_data_get_call_type (CallsUiCallData *self);
+const char *calls_ui_call_data_get_origin_id (CallsUiCallData *self);
CuiCallState calls_call_state_to_cui_call_state (CallsCallState state);
diff --git a/tests/test-ringer.c b/tests/test-ringer.c
index 992fcf5a..b8fe5c33 100644
--- a/tests/test-ringer.c
+++ b/tests/test-ringer.c
@@ -190,9 +190,9 @@ setup_test_data (void **state)
data->manager = calls_manager_get_default ();
data->ringer = calls_ringer_new ();
data->call_one = calls_mock_call_new ();
- data->ui_call_one = calls_ui_call_data_new (CALLS_CALL (data->call_one));
+ data->ui_call_one = calls_ui_call_data_new (CALLS_CALL (data->call_one), NULL);
data->call_two = calls_mock_call_new ();
- data->ui_call_two = calls_ui_call_data_new (CALLS_CALL (data->call_two));
+ data->ui_call_two = calls_ui_call_data_new (CALLS_CALL (data->call_two), NULL);
data->loop = g_main_loop_new (NULL, FALSE);
*state = data;
diff --git a/tests/test-ui-call.c b/tests/test-ui-call.c
index 98048de9..4dd73f1d 100644
--- a/tests/test-ui-call.c
+++ b/tests/test-ui-call.c
@@ -53,11 +53,12 @@ test_cui_call_properties (void)
g_assert_true (CALLS_IS_CALL (mock_call));
call = CALLS_CALL (mock_call);
- ui_call = calls_ui_call_data_new (call);
+ ui_call = calls_ui_call_data_new (call, "test-id");
g_assert_true (CUI_IS_CALL (ui_call));
cui_call = CUI_CALL (ui_call);
+ g_assert_cmpstr (calls_ui_call_data_get_origin_id (ui_call), ==, "test-id");
g_assert_true (calls_call_get_id (call) == cui_call_get_id (cui_call));
g_assert_true (calls_call_get_name (call) == cui_call_get_display_name (cui_call));
g_assert_true (calls_call_state_to_cui_call_state (calls_call_get_state (call)) ==
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]