From 6cdae3fd4009b4696902101e0b45a4fd59df5a5e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Guido=20G=C3=BCnther?= Date: Wed, 21 Dec 2022 19:13:22 +0100 Subject: [PATCH] origin: Allow to fetch country code This is an optional method as not all origins might support this (e.g. SIP). --- plugins/provider/tests/test-origin.c | 7 ++++--- src/calls-origin.c | 21 +++++++++++++++++++++ src/calls-origin.h | 2 ++ 3 files changed, 27 insertions(+), 3 deletions(-) diff --git a/plugins/provider/tests/test-origin.c b/plugins/provider/tests/test-origin.c index f0698f2..1c1271b 100644 --- a/plugins/provider/tests/test-origin.c +++ b/plugins/provider/tests/test-origin.c @@ -23,8 +23,8 @@ test_dummy_origin_object (OriginFixture *fixture, static void -test_dummy_origin_get_name (OriginFixture *fixture, - gconstpointer user_data) +test_dummy_origin_getters (OriginFixture *fixture, + gconstpointer user_data) { CallsOrigin *origin; g_autofree char *name = NULL; @@ -34,6 +34,7 @@ test_dummy_origin_get_name (OriginFixture *fixture, name = calls_origin_get_name (origin); g_assert_nonnull (name); g_assert_cmpstr (name, ==, TEST_ORIGIN_NAME); + g_assert_null (calls_origin_get_country_code (origin)); } @@ -84,7 +85,7 @@ main (gint argc, #define add_test(name) add_calls_test(Origin, origin, name) add_test(object); - add_test(get_name); + add_test(getters); add_test(calls); #undef add_test diff --git a/src/calls-origin.c b/src/calls-origin.c index c6192a8..6c6180b 100644 --- a/src/calls-origin.c +++ b/src/calls-origin.c @@ -229,3 +229,24 @@ calls_origin_supports_protocol (CallsOrigin *self, return iface->supports_protocol (self, protocol); } + +/** + * calls_origin_get_country_code: + * @self: A #CallsOrigin + * + * Returns: (nullable): The iso country code + */ +const char * +calls_origin_get_country_code (CallsOrigin *self) +{ + CallsOriginInterface *iface; + + g_return_val_if_fail (CALLS_IS_ORIGIN (self), FALSE); + + iface = CALLS_ORIGIN_GET_IFACE (self); + /* country code is optional */ + if (iface->get_country_code == NULL) + return NULL; + + return iface->get_country_code (self); +} diff --git a/src/calls-origin.h b/src/calls-origin.h index af6e106..9bc5636 100644 --- a/src/calls-origin.h +++ b/src/calls-origin.h @@ -43,6 +43,7 @@ struct _CallsOriginInterface { const char *number); gboolean (*supports_protocol) (CallsOrigin *self, const char *protocol); + const char * (*get_country_code) (CallsOrigin *self); }; typedef void (*CallsOriginForeachCallFunc) (gpointer param, CallsCall* call, CallsOrigin* origin); @@ -58,6 +59,7 @@ void calls_origin_dial (CallsOrigin *self, gboolean calls_origin_supports_protocol (CallsOrigin *self, const char *protocol); GStrv calls_origin_get_emergency_numbers (CallsOrigin *self); +const char * calls_origin_get_country_code (CallsOrigin *self); G_END_DECLS