commit: d382ce26a28ad99244db36314d29d618f2c3c177 Author: Gerben Jan Dijkman <gjdijkman <AT> gjdwebserver <DOT> nl> AuthorDate: Sat Jul 24 01:30:35 2021 +0000 Commit: Gerben Jan Dijkman <gjdijkman <AT> gjdwebserver <DOT> nl> CommitDate: Sat Jul 24 01:30:35 2021 +0000 URL: https://gitweb.gentoo.org/repo/proj/guru.git/commit/?id=d382ce26
net-voip/gnome-calls: Added for PinePhone use Package-Manager: Portage-3.0.20, Repoman-3.0.2 Signed-off-by: Gerben jan Dijkman <gjdijkman <AT> gjdwebserver.nl> net-voip/gnome-calls/Manifest | 1 + ...lay-use-PinePhone-s-device-for-ugly-hacks.patch | 61 ++++ .../files/0001-use-at-cmds-to-mute.patch | 36 +++ net-voip/gnome-calls/files/188.patch | 335 +++++++++++++++++++++ net-voip/gnome-calls/files/230.patch | 126 ++++++++ .../gnome-calls/files/add-call-back-button.patch | 37 +++ net-voip/gnome-calls/files/calll-display.patch | 18 ++ .../files/inhibit-suspend-during-call.patch | 63 ++++ net-voip/gnome-calls/gnome-calls-0.3.4.ebuild | 56 ++++ net-voip/gnome-calls/metadata.xml | 15 + 10 files changed, 748 insertions(+) diff --git a/net-voip/gnome-calls/Manifest b/net-voip/gnome-calls/Manifest new file mode 100644 index 000000000..2306bcd27 --- /dev/null +++ b/net-voip/gnome-calls/Manifest @@ -0,0 +1 @@ +DIST calls-v0.3.4.tar.gz 203835 BLAKE2B dddafde2c5c1b247a603947679ed9335331ecfacbcdf73dbacc2f8542de783d8acdd398b0ab589680a24097d723dca731600a1886ed923be3889b00a60391ad5 SHA512 39463fcf493c8aeb428d41111adc957203dbcb57c033b2025c4932e52c8e158d17687df0ec13ffe4bf704b4c3ec75cdf3bfbacc6f839fd7193290d239df0df72 diff --git a/net-voip/gnome-calls/files/0001-call-display-use-PinePhone-s-device-for-ugly-hacks.patch b/net-voip/gnome-calls/files/0001-call-display-use-PinePhone-s-device-for-ugly-hacks.patch new file mode 100644 index 000000000..fb4ef7d0f --- /dev/null +++ b/net-voip/gnome-calls/files/0001-call-display-use-PinePhone-s-device-for-ugly-hacks.patch @@ -0,0 +1,61 @@ +From 6630fea2096118cf0566cfa9a7e07d2b977ffc86 Mon Sep 17 00:00:00 2001 +From: Arnaud Ferraris <arnaud.ferra...@collabora.com> +Date: Thu, 5 Mar 2020 15:06:44 +0100 +Subject: [PATCH 1/1] call-display: use PinePhone's device for ugly hacks + +--- + src/calls-call-display.c | 18 +++++------------- + 1 file changed, 5 insertions(+), 13 deletions(-) + +diff --git a/src/calls-call-display.c b/src/calls-call-display.c +index 1d8f276..a60f24b 100644 +--- a/src/calls-call-display.c ++++ b/src/calls-call-display.c +@@ -334,9 +334,9 @@ set_property (GObject *object, + //#define UGLY_SOURCE "alsa_input.platform-sound.VoiceCall__hw_CARD_sgtl5000__source" + //#define UGLY_SINK "alsa_output.platform-sound.VoiceCall__hw_CARD_sgtl5000__sink" + //#define UGLY_SPEAKER_PORT "Headset" +-#define UGLY_SOURCE "alsa_input.platform-sound.Audio__hw_CARD_wm8962__source" +-#define UGLY_SINK "alsa_output.platform-sound.Audio__hw_CARD_wm8962__sink" +-#define UGLY_SPEAKER_PORT "SpeakerPhone" ++#define UGLY_SOURCE "alsa_input.platform-sound.Voice_Call__hw_PinePhone_0__source" ++#define UGLY_SINK "alsa_output.platform-sound.Voice_Call__hw_PinePhone_0__sink" ++#define UGLY_SPEAKER_PORT "Speaker" + + + static gboolean +@@ -413,21 +413,13 @@ ugly_speaker_pressed_cb (CallsCallDisplay *self, + + if (gtk_toggle_button_get_active (speaker)) + { +- port = "Handset"; ++ port = "Earpiece"; + } + else + { + port = UGLY_SPEAKER_PORT; + } + +- ok = ugly_set_pa_port ("source", UGLY_SOURCE, +- "In", port); +- if (!ok) +- { +- /* Stop other handlers */ +- return TRUE; +- } +- + ok = ugly_set_pa_port ("sink", UGLY_SINK, + "Out", port); + if (!ok) +@@ -599,7 +591,7 @@ calls_call_display_class_init (CallsCallDisplayClass *klass) + "Data for the call this display will be associated with", + CALLS_TYPE_CALL_DATA, + G_PARAM_WRITABLE | G_PARAM_CONSTRUCT_ONLY); +- ++ + g_object_class_install_properties (object_class, PROP_LAST_PROP, props); + + +-- +2.20.1 + diff --git a/net-voip/gnome-calls/files/0001-use-at-cmds-to-mute.patch b/net-voip/gnome-calls/files/0001-use-at-cmds-to-mute.patch new file mode 100644 index 000000000..cb1aa14c2 --- /dev/null +++ b/net-voip/gnome-calls/files/0001-use-at-cmds-to-mute.patch @@ -0,0 +1,36 @@ +diff --git a/src/calls-call-display.c b/src/calls-call-display.c +index bf98958..c8b1bc4 100644 +--- a/src/calls-call-display.c ++++ b/src/calls-call-display.c +@@ -34,6 +34,8 @@ + + #include <libcallaudio.h> + ++#include <stdlib.h> ++ + struct _CallsCallDisplay + { + GtkOverlay parent_instance; +@@ -103,11 +105,17 @@ mute_toggled_cb (GtkToggleButton *togglebutton, + g_autoptr (GError) error = NULL; + + want_mute = gtk_toggle_button_get_active (togglebutton); +- ret = call_audio_mute_mic (want_mute, &error); +- if (!ret && error) +- g_warning ("Failed to %smute microphone: %s", +- want_mute ? "" : "un", +- error->message); ++ ++ gchar* command = g_strdup_printf("/usr/bin/mmcli -m 0 --command=AT+CMUT=%d",want_mute?1:0); ++ ++ int exit_code; ++ ++ ret = g_spawn_command_line_sync(command, NULL,NULL,&exit_code, &error); ++ ++ if(!ret || error || exit_code != 0){ ++ g_warning ("Failed to %smute microphone (mmcli exit code: %d)", ++ want_mute ? "" : "un", exit_code); ++ } + } + + diff --git a/net-voip/gnome-calls/files/188.patch b/net-voip/gnome-calls/files/188.patch new file mode 100644 index 000000000..60717ded5 --- /dev/null +++ b/net-voip/gnome-calls/files/188.patch @@ -0,0 +1,335 @@ +From 5c0a588da7a0ffa57c8893650432804ff2663800 Mon Sep 17 00:00:00 2001 +From: Nazarii Kretovych <nazarii.kretov...@gmail.com> +Date: Sun, 20 Sep 2020 11:53:43 +0300 +Subject: [PATCH 1/3] Remove adding country code to tel number while dialing. + +Fixes #176 + +Signed-off-by: Nazarii Kretovych <nazarii.kretov...@gmail.com> +--- + src/calls-application.c | 23 ++++++++++++++++++----- + 1 file changed, 18 insertions(+), 5 deletions(-) + +diff --git a/src/calls-application.c b/src/calls-application.c +index c9a9251..796c8cd 100644 +--- a/src/calls-application.c ++++ b/src/calls-application.c +@@ -393,7 +393,6 @@ open_tel_uri (CallsApplication *self, + { + EPhoneNumber *number; + GError *error = NULL; +- gchar *dial_str; + + g_debug ("Opening tel URI `%s'", uri); + +@@ -405,14 +404,28 @@ open_tel_uri (CallsApplication *self, + g_error_free (error); + return; + } +- +- dial_str = e_phone_number_to_string +- (number, E_PHONE_NUMBER_FORMAT_E164); + e_phone_number_free (number); + ++ // Get dial string. ++ const size_t uri_len = strlen(uri); ++ gchar dial_str[uri_len + 1]; ++ gchar *p_dial_str = dial_str; ++ for (const gchar *p_uri = uri; *p_uri; p_uri++) { ++ const gchar ch = *p_uri; ++ if ((ch >= '0' && ch <= '9') || ch == '+') { ++ *p_dial_str = ch; ++ p_dial_str++; ++ } ++ } ++ if (p_dial_str == dial_str) { ++ // dial_str is empty, so we return. ++ g_warning("Failed to create dial string for tel URI '%s'", uri); ++ return; ++ } ++ *p_dial_str = '\0'; ++ + calls_main_window_dial (self->main_window, + dial_str); +- g_free (dial_str); + } + + +-- +2.26.2 + + +From dedf8f820753d48575db6ec1774ed19783d66e65 Mon Sep 17 00:00:00 2001 +From: Nazarii Kretovych <nazarii.kretov...@gmail.com> +Date: Sat, 26 Sep 2020 17:21:54 +0300 +Subject: [PATCH 2/3] Fix: make open_tel_uri generate the proper dial string + for tel URIs that have the 'phone-context' param. + +Signed-off-by: Nazarii Kretovych <nazarii.kretov...@gmail.com> +--- + .gitignore | 3 ++- + src/calls-application.c | 15 +++++++++++++++ + 2 files changed, 17 insertions(+), 1 deletion(-) + +diff --git a/.gitignore b/.gitignore +index 826102b..29e7ed5 100644 +--- a/.gitignore ++++ b/.gitignore +@@ -5,4 +5,5 @@ _build + .\#* + build + .buildconfig +-.flatpak-builder +\ No newline at end of file ++.flatpak-builder ++/nbproject/ +\ No newline at end of file +diff --git a/src/calls-application.c b/src/calls-application.c +index 796c8cd..591681a 100644 +--- a/src/calls-application.c ++++ b/src/calls-application.c +@@ -410,11 +410,26 @@ open_tel_uri (CallsApplication *self, + const size_t uri_len = strlen(uri); + gchar dial_str[uri_len + 1]; + gchar *p_dial_str = dial_str; ++ const gchar *p_phone_context = strstr(uri, ";phone-context="); ++ if (p_phone_context) { ++ // uri has the 'phone-context' param. Add its value to dial_str. ++ for (p_phone_context += 15; *p_phone_context; p_phone_context++) { ++ const gchar ch = *p_phone_context; ++ if ((ch >= '0' && ch <= '9') || ch == '+') { ++ *p_dial_str = ch; ++ p_dial_str++; ++ } else if (ch == ';') { ++ break; ++ } ++ } ++ } + for (const gchar *p_uri = uri; *p_uri; p_uri++) { + const gchar ch = *p_uri; + if ((ch >= '0' && ch <= '9') || ch == '+') { + *p_dial_str = ch; + p_dial_str++; ++ } else if (ch == ';') { ++ break; + } + } + if (p_dial_str == dial_str) { +-- +2.26.2 + + +From b29dbc9bc4038b8e0ee2e2f8f0d69e46f757297a Mon Sep 17 00:00:00 2001 +From: Nazarii Kretovych <nazarii.kretov...@gmail.com> +Date: Sat, 26 Sep 2020 20:22:40 +0300 +Subject: [PATCH 3/3] Move code of tel uri parser to separate function and add + unit test. + +Signed-off-by: Nazarii Kretovych <nazarii.kretov...@gmail.com> +--- + src/calls-application.c | 81 ++++++++++++++++++++++++++-------------- + src/calls-application.h | 1 + + tests/meson.build | 14 +++++++ + tests/test-application.c | 51 +++++++++++++++++++++++++ + 4 files changed, 118 insertions(+), 29 deletions(-) + create mode 100644 tests/test-application.c + +diff --git a/src/calls-application.c b/src/calls-application.c +index 591681a..9665a62 100644 +--- a/src/calls-application.c ++++ b/src/calls-application.c +@@ -387,6 +387,53 @@ activate (GApplication *application) + } + + ++gchar * ++parse_tel_uri_and_get_dial_str (const gchar *uri) ++{ ++ // Get dial string. ++ const size_t uri_len = strlen(uri); ++ gchar *dial_str = g_new(gchar, uri_len + 1); ++ gchar *p_dial_str = dial_str; ++ const gchar *p_phone_context = strstr(uri, ";phone-context="); ++ if (p_phone_context) ++ { ++ // uri has the 'phone-context' param. Add its value to dial_str. ++ for (p_phone_context += 15; *p_phone_context; p_phone_context++) ++ { ++ const gchar ch = *p_phone_context; ++ if ((ch >= '0' && ch <= '9') || ch == '+') ++ { ++ *p_dial_str = ch; ++ p_dial_str++; ++ } ++ else if (ch == ';') ++ { ++ break; ++ } ++ } ++ } ++ for (const gchar *p_uri = uri; *p_uri; p_uri++) ++ { ++ const gchar ch = *p_uri; ++ if ((ch >= '0' && ch <= '9') || ch == '+') ++ { ++ *p_dial_str = ch; ++ p_dial_str++; ++ } ++ else if (ch == ';') ++ { ++ break; ++ } ++ } ++ *p_dial_str = '\0'; ++ if (!*dial_str) { ++ g_free(dial_str); ++ dial_str = NULL; ++ } ++ ++ return dial_str; ++} ++ + static void + open_tel_uri (CallsApplication *self, + const gchar *uri) +@@ -407,40 +454,16 @@ open_tel_uri (CallsApplication *self, + e_phone_number_free (number); + + // Get dial string. +- const size_t uri_len = strlen(uri); +- gchar dial_str[uri_len + 1]; +- gchar *p_dial_str = dial_str; +- const gchar *p_phone_context = strstr(uri, ";phone-context="); +- if (p_phone_context) { +- // uri has the 'phone-context' param. Add its value to dial_str. +- for (p_phone_context += 15; *p_phone_context; p_phone_context++) { +- const gchar ch = *p_phone_context; +- if ((ch >= '0' && ch <= '9') || ch == '+') { +- *p_dial_str = ch; +- p_dial_str++; +- } else if (ch == ';') { +- break; +- } +- } +- } +- for (const gchar *p_uri = uri; *p_uri; p_uri++) { +- const gchar ch = *p_uri; +- if ((ch >= '0' && ch <= '9') || ch == '+') { +- *p_dial_str = ch; +- p_dial_str++; +- } else if (ch == ';') { +- break; +- } +- } +- if (p_dial_str == dial_str) { +- // dial_str is empty, so we return. +- g_warning("Failed to create dial string for tel URI '%s'", uri); ++ gchar *dial_str = parse_tel_uri_and_get_dial_str (uri); ++ if (!dial_str) { ++ g_warning ("Failed to create dial string for tel URI '%s'", uri); + return; + } +- *p_dial_str = '\0'; + + calls_main_window_dial (self->main_window, + dial_str); ++ ++ g_free (dial_str); + } + + +diff --git a/src/calls-application.h b/src/calls-application.h +index 08c3c56..26cf6c8 100644 +--- a/src/calls-application.h ++++ b/src/calls-application.h +@@ -34,5 +34,6 @@ G_BEGIN_DECLS + G_DECLARE_FINAL_TYPE (CallsApplication, calls_application, CALLS, APPLICATION, GtkApplication) + + CallsApplication *calls_application_new (void); ++gchar *parse_tel_uri_and_get_dial_str (const gchar *); + + G_END_DECLS +diff --git a/tests/meson.build b/tests/meson.build +index 618b1c4..5cf581d 100644 +--- a/tests/meson.build ++++ b/tests/meson.build +@@ -71,5 +71,19 @@ t = executable('manager', test_sources, + ) + test('manager', t, env: test_env) + ++test_sources = [ 'test-application.c' ] ++ ++t = executable('application', test_sources, ++ calls_sources, calls_enum_sources, calls_resources, ++ wl_proto_sources, wayland_sources, ++ c_args : test_cflags, ++ link_args: test_link_args, ++ link_with : calls_vala, ++ dependencies: calls_deps, ++ include_directories : [ ++ calls_includes ++ ] ++ ) ++test('application', t, env: test_env) + + endif +diff --git a/tests/test-application.c b/tests/test-application.c +new file mode 100644 +index 0000000..ffd192e +--- /dev/null ++++ b/tests/test-application.c +@@ -0,0 +1,51 @@ ++/* ++ * Copyright (C) 2020 Purism SPC ++ * ++ * SPDX-License-Identifier: GPL-3.0+ ++ */ ++ ++#include "calls-application.h" ++ ++#include <gtk/gtk.h> ++#include <libpeas/peas.h> ++ ++static void ++test_calls_application_parse_tel_uri_and_get_dial_str () ++{ ++ gchar *dial_str; ++ ++ // Test 1. ++ dial_str = parse_tel_uri_and_get_dial_str ("tel:123-456-789;phone-context=+48"); ++ g_assert_true (g_strcmp0 (dial_str, "+48123456789") == 0); ++ g_free(dial_str); ++ ++ // Test 2. ++ dial_str = parse_tel_uri_and_get_dial_str ("tel:+38-096-123-45-67"); ++ g_assert_true (g_strcmp0 (dial_str, "+380961234567") == 0); ++ g_free(dial_str); ++ ++ // Test 3. ++ dial_str = parse_tel_uri_and_get_dial_str ("tel:0-800-123-456"); ++ g_assert_true (g_strcmp0 (dial_str, "0800123456") == 0); ++ g_free(dial_str); ++ ++ // Test 4. ++ dial_str = parse_tel_uri_and_get_dial_str ("tel:447"); ++ g_assert_true (g_strcmp0 (dial_str, "447") == 0); ++ g_free(dial_str); ++} ++ ++gint ++main (gint argc, gchar *argv[]) ++{ ++ gtk_test_init (&argc, &argv, NULL); ++ ++ /* Add builddir as search path */ ++#ifdef PLUGIN_BUILDDIR ++ peas_engine_add_search_path (peas_engine_get_default (), PLUGIN_BUILDDIR, NULL); ++#endif ++ ++ g_test_add_func("/Calls/Application/parse_tel_uri_and_get_dial_str", test_calls_application_parse_tel_uri_and_get_dial_str); ++ ++ return g_test_run(); ++} +-- +2.26.2 + diff --git a/net-voip/gnome-calls/files/230.patch b/net-voip/gnome-calls/files/230.patch new file mode 100644 index 000000000..1ab15515a --- /dev/null +++ b/net-voip/gnome-calls/files/230.patch @@ -0,0 +1,126 @@ +From eaed62151bd533a4021ba937a959464383ddc0cb Mon Sep 17 00:00:00 2001 +From: Arnaud Ferraris <arnaud.ferra...@collabora.com> +Date: Tue, 12 Jan 2021 18:40:12 +0100 +Subject: [PATCH 1/4] call-display: update libcallaudio API calls + +Upstream modified the async API, make sure we use it. +--- + src/calls-call-display.c | 10 +++++++--- + 1 file changed, 7 insertions(+), 3 deletions(-) + +diff --git a/src/calls-call-display.c b/src/calls-call-display.c +index 7d17772..2bfb8fc 100644 +--- a/src/calls-call-display.c ++++ b/src/calls-call-display.c +@@ -211,7 +211,7 @@ stop_timeout (CallsCallDisplay *self) + + + static void +-select_mode_complete (gboolean success, GError *error) ++select_mode_complete (gboolean success, GError *error, gpointer data) + { + if (error) + { +@@ -261,11 +261,15 @@ call_state_changed_cb (CallsCallDisplay *self, + state != CALLS_CALL_STATE_DIALING + && state != CALLS_CALL_STATE_ALERTING); + +- call_audio_select_mode_async (CALL_AUDIO_MODE_CALL, select_mode_complete); ++ call_audio_select_mode_async (CALL_AUDIO_MODE_CALL, ++ select_mode_complete, ++ NULL); + break; + + case CALLS_CALL_STATE_DISCONNECTED: +- call_audio_select_mode_async (CALL_AUDIO_MODE_DEFAULT, select_mode_complete); ++ call_audio_select_mode_async (CALL_AUDIO_MODE_DEFAULT, ++ select_mode_complete, ++ NULL); + break; + } + +-- +2.26.2 + + +From b371ee665c981c3ea9f398da04fdf1536560cae6 Mon Sep 17 00:00:00 2001 +From: Arnaud Ferraris <arnaud.ferra...@collabora.com> +Date: Tue, 12 Jan 2021 18:42:29 +0100 +Subject: [PATCH 2/4] src: meson.build: update libcallaudio dependency + +--- + src/meson.build | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/src/meson.build b/src/meson.build +index 6222432..9be8cd8 100644 +--- a/src/meson.build ++++ b/src/meson.build +@@ -36,7 +36,7 @@ calls_deps = [ dependency('gobject-2.0', version: '>= 2.58'), + dependency('gom-1.0'), + dependency('libebook-contacts-1.2'), + dependency('folks'), +- dependency('libcallaudio-0'), ++ dependency('libcallaudio-0.1'), + ] + + if wl_scanner.found() +-- +2.26.2 + + +From 2f37394f2e4d3947db967abfa7257cb563b5b4cd Mon Sep 17 00:00:00 2001 +From: Arnaud Ferraris <arnaud.ferra...@collabora.com> +Date: Tue, 12 Jan 2021 18:45:22 +0100 +Subject: [PATCH 3/4] d/control: add version requirement on libcallaudio build + dependency + +The new API appeared in version 0.0.5. +--- + debian/control | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/debian/control b/debian/control +index dc26174..1804e63 100644 +--- a/debian/control ++++ b/debian/control +@@ -8,7 +8,7 @@ Build-Depends: + debhelper (>= 11), + desktop-file-utils, + gtk-doc-tools <!nodoc>, +- libcallaudio-dev, ++ libcallaudio-dev (>= 0.0.5), + libfeedback-dev, + libhandy-1-dev (>= 1.0.0), + libgtk-3-dev, +-- +2.26.2 + + +From 5d3ee0acbda6f15c31e9538287ce9323ded19b37 Mon Sep 17 00:00:00 2001 +From: Arnaud Ferraris <arnaud.ferra...@gmail.com> +Date: Tue, 19 Jan 2021 22:13:54 +0100 +Subject: [PATCH 4/4] flatpak: update callaudiod version + +--- + sm.puri.Calls.json | 4 ++-- + 1 file changed, 2 insertions(+), 2 deletions(-) + +diff --git a/sm.puri.Calls.json b/sm.puri.Calls.json +index da08789..10e5a36 100644 +--- a/sm.puri.Calls.json ++++ b/sm.puri.Calls.json +@@ -267,8 +267,8 @@ + "sources" : [ + { + "type" : "archive", +- "url" : "https://gitlab.com/mobian1/callaudiod/-/archive/0.0.4/callaudiod-0.0.4.tar.gz", +- "sha256" : "a9620dee2999fa85a7ca8f0314be3317a99fc225439ac193d5f727ff9397f93d" ++ "url" : "https://gitlab.com/mobian1/callaudiod/-/archive/0.0.5/callaudiod-0.0.5.tar.gz", ++ "sha256" : "0016a5800749d408dbaa14d8a7886bf492068d56508c83a352dee9b1920754b4" + } + ] + }, +-- +2.26.2 + diff --git a/net-voip/gnome-calls/files/add-call-back-button.patch b/net-voip/gnome-calls/files/add-call-back-button.patch new file mode 100644 index 000000000..cbff43aba --- /dev/null +++ b/net-voip/gnome-calls/files/add-call-back-button.patch @@ -0,0 +1,37 @@ +From c43bfe3ebb9c0f98c143b8b3e777058d5c1c11e3 Mon Sep 17 00:00:00 2001 +From: Evangelos Ribeiro Tzaras <dev...@fortysixandtwo.eu> +Date: Tue, 8 Sep 2020 05:10:11 +0200 +Subject: [PATCH] src/calls-notifier.c: Add call-back button + +--- + src/calls-notifier.c | 7 +++++++ + 1 file changed, 7 insertions(+) + +diff --git a/src/calls-notifier.c b/src/calls-notifier.c +index 292c559..076e2c6 100644 +--- a/src/calls-notifier.c ++++ b/src/calls-notifier.c +@@ -46,6 +46,7 @@ notify (CallsNotifier *self, CallsCall *call) + g_autoptr(GNotification) notification; + g_autofree gchar *msg = NULL; + g_autofree gchar *ref = NULL; ++ g_autofree gchar *label_callback = NULL; + const char *name; + + notification = g_notification_new (_("Missed call")); +@@ -57,6 +58,12 @@ notify (CallsNotifier *self, CallsCall *call) + msg = g_strdup_printf (_("Missed call from %s"), calls_call_get_number (call)); + + g_notification_set_body (notification, msg); ++ ++ if (calls_call_get_number (call)) { ++ label_callback = g_strdup_printf ("app.dial::%s", calls_call_get_number (call)); ++ g_notification_add_button (notification, _("Call back"), label_callback); ++ } ++ + ref = g_strdup_printf ("missed-call-%s", calls_call_get_number (call) ?: "unknown"); + g_application_send_notification (app, ref, notification); + } +-- +2.26.2 + diff --git a/net-voip/gnome-calls/files/calll-display.patch b/net-voip/gnome-calls/files/calll-display.patch new file mode 100644 index 000000000..3573a9171 --- /dev/null +++ b/net-voip/gnome-calls/files/calll-display.patch @@ -0,0 +1,18 @@ +diff --git a/src/calls-call-display.c b/src/calls-call-display.c +index 7d17772..f4aa855 100644 +--- a/src/calls-call-display.c ++++ b/src/calls-call-display.c +@@ -261,11 +261,11 @@ call_state_changed_cb (CallsCallDisplay *self, + state != CALLS_CALL_STATE_DIALING + && state != CALLS_CALL_STATE_ALERTING); + +- call_audio_select_mode_async (CALL_AUDIO_MODE_CALL, select_mode_complete); ++ call_audio_select_mode_async (CALL_AUDIO_MODE_CALL, select_mode_complete, NULL); + break; + + case CALLS_CALL_STATE_DISCONNECTED: +- call_audio_select_mode_async (CALL_AUDIO_MODE_DEFAULT, select_mode_complete); ++ call_audio_select_mode_async (CALL_AUDIO_MODE_DEFAULT, select_mode_complete, NULL); + break; + } + diff --git a/net-voip/gnome-calls/files/inhibit-suspend-during-call.patch b/net-voip/gnome-calls/files/inhibit-suspend-during-call.patch new file mode 100644 index 000000000..15836585f --- /dev/null +++ b/net-voip/gnome-calls/files/inhibit-suspend-during-call.patch @@ -0,0 +1,63 @@ +From 9619ebb674771206662f099901c617edb54b870a Mon Sep 17 00:00:00 2001 +From: Evangelos Ribeiro Tzaras <dev...@fortysixandtwo.eu> +Date: Thu, 6 Aug 2020 22:28:37 +0200 +Subject: [PATCH] src/calls-call-window.c: Inhibit suspend during active call + +--- + src/calls-call-window.c | 26 ++++++++++++++++++++++++++ + 1 file changed, 26 insertions(+) + +diff --git a/src/calls-call-window.c b/src/calls-call-window.c +index 312a892..d6c5d8a 100644 +--- a/src/calls-call-window.c ++++ b/src/calls-call-window.c +@@ -60,6 +60,8 @@ struct _CallsCallWindow + GtkStack *call_stack; + GtkFlowBox *call_selector; + ++ guint inhibit_cookie; ++ + #ifdef CALLS_WAYLAND + gboolean screensaver_active; + struct zwlr_layer_shell_v1 *layer_shell_iface; +@@ -164,6 +166,28 @@ update_layer_surface (CallsCallWindow *self, + #endif // CALLS_WAYLAND + + ++static void ++session_inhibit (CallsCallWindow *self, gboolean inhibit) ++{ ++ if (inhibit) ++ { ++ if (self->inhibit_cookie == 0) ++ self->inhibit_cookie = ++ gtk_application_inhibit (gtk_window_get_application (GTK_WINDOW (self)), ++ GTK_WINDOW (self), ++ GTK_APPLICATION_INHIBIT_SUSPEND, ++ "call active"); ++ } ++ else ++ { ++ gtk_application_uninhibit (gtk_window_get_application (GTK_WINDOW (self)), ++ self->inhibit_cookie); ++ self->inhibit_cookie = 0; ++ } ++ ++} ++ ++ + static void + update_visibility (CallsCallWindow *self) + { +@@ -184,6 +208,8 @@ update_visibility (CallsCallWindow *self) + { + gtk_stack_set_visible_child_name (self->main_stack, "active-call"); + } ++ ++ session_inhibit (self, !!calls); + } + + +-- +2.26.2 + diff --git a/net-voip/gnome-calls/gnome-calls-0.3.4.ebuild b/net-voip/gnome-calls/gnome-calls-0.3.4.ebuild new file mode 100644 index 000000000..f3fb4f257 --- /dev/null +++ b/net-voip/gnome-calls/gnome-calls-0.3.4.ebuild @@ -0,0 +1,56 @@ +# Copyright 1999-2021 Gentoo Authors +# Distributed under the terms of the GNU General Public License v2 + +EAPI=7 +VALA_USE_DEPEND="vapigen" + +inherit vala meson gnome2-utils git-r3 xdg + +DESCRIPTION="Phone dialer and call handler" +HOMEPAGE="https://gitlab.gnome.org/GNOME/calls" +SRC_URI="https://gitlab.gnome.org/GNOME/calls/-/archive/v${PV}/calls-v${PV}.tar.gz" +EGIT_REPO_URI="https://gitlab.gnome.org//GNOME/calls.git" + +LICENSE="GPL-3" +SLOT="0" +KEYWORDS="~amd64 ~arm64" +IUSE="+introspection +vala" +REQUIRED_USE="vala? ( introspection )" + +DEPEND=" + dev-libs/feedbackd + >=gui-libs/libhandy-1.0.0 + dev-libs/folks + dev-libs/gom + dev-libs/libpeas + >=net-misc/modemmanager-1.12.0 + >=media-sound/callaudiod-0.0.5 + gnome-extra/evolution-data-server + net-libs/sofia-sip + dev-libs/protobuf + " +RDEPEND="${DEPEND}" +BDEPEND=" + vala? ( $(vala_depend) ) + dev-util/meson + dev-libs/gobject-introspection + dev-util/wayland-scanner +" + +S="${WORKDIR}/$PN-${PV}" + +src_prepare() { + default + eapply_user + use vala && vala_src_prepare +} + +pkg_postinst() { + xdg_pkg_postinst + gnome2_schemas_update +} + +pkg_postrm() { + xdg_pkg_postrm + gnome2_schemas_update +} diff --git a/net-voip/gnome-calls/metadata.xml b/net-voip/gnome-calls/metadata.xml new file mode 100644 index 000000000..ee32d2acf --- /dev/null +++ b/net-voip/gnome-calls/metadata.xml @@ -0,0 +1,15 @@ +<?xml version="1.0" encoding="UTF-8"?> +<!DOCTYPE pkgmetadata SYSTEM "http://www.gentoo.org/dtd/metadata.dtd"> +<pkgmetadata> + <maintainer type="person"> + <email>gjdijk...@gjdwebserver.nl</email> + <name>Gerben Jan Dijkman</name> + </maintainer> + <longdescription lang="en"> + A phone dialer and call handler. + </longdescription> + <upstream> + <doc>https://gitlab.gnome.org/GNOME/calls</doc> + <bugs-to>https://gitlab.gnome.org/GNOME/calls/-/issues</bugs-to> + </upstream> +</pkgmetadata>