Commit Graph

899 Commits

Author SHA1 Message Date
Martin Prejsa
d7bd51828e ui-call-data: Implement call-type property
Added tests for the newly added property
and tests for the newly created helper functions

Part-of: <https://gitlab.gnome.org/GNOME/calls/-/merge_requests/806>
2025-11-25 17:40:17 +01:00
Evangelos Ribeiro Tzaras
f2083c0d4e build: Drop (direct) libcallaudio dependency
Signed-off-by: Evangelos Ribeiro Tzaras <devrtz@fortysixandtwo.eu>
Part-of: <https://gitlab.gnome.org/GNOME/calls/-/merge_requests/806>
2025-11-25 17:40:17 +01:00
Evangelos Ribeiro Tzaras
3c8e3253ad application: Drop libcallaudio initialization
libcallaudio bits live in libcall-ui for a long time
(and libcallaudio is going away anyway).

Signed-off-by: Evangelos Ribeiro Tzaras <devrtz@fortysixandtwo.eu>
Part-of: <https://gitlab.gnome.org/GNOME/calls/-/merge_requests/806>
2025-11-25 17:40:17 +01:00
Evangelos Ribeiro Tzaras
fec9e953ae treewide: Reformat meson files
Ran `meson format -e -i -r`.

Signed-off-by: Evangelos Ribeiro Tzaras <devrtz@fortysixandtwo.eu>
Part-of: <https://gitlab.gnome.org/GNOME/calls/-/merge_requests/798>
2025-10-28 13:33:28 +00:00
Guido Günther
50b34aec53 log: Make G_MESSAGES_DEBUG=something work out of the box
calls wouldn't match the glib docs as setting `G_MESSAGES_DEBUG`
also required to pass `-vvv` for things to work. Enable debug logs
as soon as that variable is set.

Closes: https://gitlab.gnome.org/GNOME/calls/-/issues/720
Signed-off-by: Guido Günther <agx@sigxcpu.org>
Part-of: <https://gitlab.gnome.org/GNOME/calls/-/merge_requests/800>
2025-10-20 13:13:02 +02:00
Guido Günther
6f44a7c7fd emergency-call-types: Add emergency numbers from service provider db
This scales better than using a built in array.

Closes: https://gitlab.gnome.org/GNOME/calls/-/issues/714
Signed-off-by: Guido Günther <agx@sigxcpu.org>
Part-of: <https://gitlab.gnome.org/GNOME/calls/-/merge_requests/790>
2025-10-16 13:45:49 +00:00
Guido Günther
8de3c90b66 emergency-call-types: Use lower case country codes
The provider info db has it that way.

Signed-off-by: Guido Günther <agx@sigxcpu.org>
Part-of: <https://gitlab.gnome.org/GNOME/calls/-/merge_requests/790>
2025-10-16 13:45:49 +00:00
Guido Günther
07d751f958 service-providers: Add parsing for service provider info
We currently only need the emergency number information

Signed-off-by: Guido Günther <agx@sigxcpu.org>
Part-of: <https://gitlab.gnome.org/GNOME/calls/-/merge_requests/790>
2025-10-16 13:45:49 +00:00
Guido Günther
5d751f3143 emergency-calls-manager: Init emergency type database
We so far did this on first access. Let's rather do it explicitly
so we notice problems early on startup.

Signed-off-by: Guido Günther <agx@sigxcpu.org>
Part-of: <https://gitlab.gnome.org/GNOME/calls/-/merge_requests/790>
2025-10-16 13:45:49 +00:00
Guido Günther
f95370eddc emergency-call-types: Make data structures public
This allows us to use them in tests

Signed-off-by: Guido Günther <agx@sigxcpu.org>
Part-of: <https://gitlab.gnome.org/GNOME/calls/-/merge_requests/790>
2025-10-16 13:45:49 +00:00
Guido Günther
b5e944193e emergency-call-types: Make emergency data hash table dynamic
So far we referenced all compiled in data but we want to add
entries from the provider info database soon so use allocated
memories for all entries.

Signed-off-by: Guido Günther <agx@sigxcpu.org>
Part-of: <https://gitlab.gnome.org/GNOME/calls/-/merge_requests/790>
2025-10-16 13:45:49 +00:00
Guido Günther
ee198d2073 emergency-call-types: Make hash table static
This is only meant to be used from this compilation unit

Signed-off-by: Guido Günther <agx@sigxcpu.org>
Part-of: <https://gitlab.gnome.org/GNOME/calls/-/merge_requests/790>
2025-10-16 13:45:49 +00:00
Guido Günther
467111ad14 build: Add gmobile
We'll use it for the provider info parsing

Signed-off-by: Guido Günther <agx@sigxcpu.org>
Part-of: <https://gitlab.gnome.org/GNOME/calls/-/merge_requests/790>
2025-10-16 13:45:49 +00:00
Guido Günther
52555030fb emergency-call-types: Use strv builder
Signed-off-by: Guido Günther <agx@sigxcpu.org>
Part-of: <https://gitlab.gnome.org/GNOME/calls/-/merge_requests/790>
2025-10-16 13:45:49 +00:00
Guido Günther
3e7f5e77ab emergency-call-types: Fix copyright year and holder
The files were created 2022, the header stating 2021 is a copy and paste
error. Fix a typo while at that.

Gbp-Dch: Ignore
Signed-off-by: Guido Günther <agx@sigxcpu.org>
Part-of: <https://gitlab.gnome.org/GNOME/calls/-/merge_requests/790>
2025-10-16 13:45:49 +00:00
Evangelos Ribeiro Tzaras
9fab9ec7a5 plugin-manager: Add API to unload all plugins
And add tests for it.

Signed-off-by: Evangelos Ribeiro Tzaras <devrtz@fortysixandtwo.eu>
Part-of: <https://gitlab.gnome.org/GNOME/calls/-/merge_requests/796>
2025-10-14 11:11:56 +02:00
Guido Günther
7103f18e48 application: Load plugins early
Fixes: 574e1f79 ("application: Drop ignore_activation flag")
Closes: https://gitlab.gnome.org/GNOME/calls/-/issues/718
Signed-off-by: Guido Günther <agx@sigxcpu.org>
Part-of: <https://gitlab.gnome.org/GNOME/calls/-/merge_requests/795>
2025-10-13 21:31:16 +02:00
Guido Günther
e608c83273 app: Use automatic cleanup
Signed-off-by: Guido Günther <agx@sigxcpu.org>
Part-of: <https://gitlab.gnome.org/GNOME/calls/-/merge_requests/795>
2025-10-13 21:31:16 +02:00
Guido Günther
32a88ecd80 application: Wait until all async database operations finished
When shutting down make sure there are no in-flight database operations.
Otherwise the database might not be closed correctly.

Improves fix for https://gitlab.gnome.org/GNOME/calls/-/issues/508

Signed-off-by: Guido Günther <agx@sigxcpu.org>
Part-of: <https://gitlab.gnome.org/GNOME/calls/-/merge_requests/795>
2025-10-13 21:26:23 +02:00
Guido Günther
a56f43b036 record-store: Track async operations
We need to be able to tell when all async operations finished.
Otherwise we might shut down the daemon with in flight operations
leaving a open database around.

Signed-off-by: Guido Günther <agx@sigxcpu.org>
Part-of: <https://gitlab.gnome.org/GNOME/calls/-/merge_requests/795>
2025-10-13 21:26:23 +02:00
Guido Günther
57b99a3a55 main-window: Drop confusing cast
Signed-off-by: Guido Günther <agx@sigxcpu.org>
Part-of: <https://gitlab.gnome.org/GNOME/calls/-/merge_requests/795>
2025-10-13 11:59:02 +02:00
Markus Göllnitz
3d5ff3dbdc contacts-box: adjust search bar's margin inside toolbar
A toolbar view, per its docs, expects its toolbar
children to either be of a set of known widget types that
are supported by default, or otherwise be a Gtk.Box-like
container with the .toolbar CSS style class.

This expectation was not met, but instead similar, but
not identical margins manually applied. These similar yet
different margins made it look off.

While this now adheres to the toolbar child requirements
of libadwaita, and the margins look more familiar, it
still breaks with libadwaita's assumption that toolbars
are not stacked. Its stylesheet allows for stacking
toolbar views only if one is providing the top and the
other the bottom one.

This view, especially, deserves a more thorough design
overhaul, regardless of this. Thus, I will leave it at
this.

Link: https://gnome.pages.gitlab.gnome.org/libadwaita/doc/main/class.ToolbarView.html

Signed-off-by: Markus Göllnitz <camelcasenick@bewares.it>
Part-of: <https://gitlab.gnome.org/GNOME/calls/-/merge_requests/791>
2025-10-10 18:37:07 +00:00
Markus Göllnitz
cab52d464c new-call-box: wrap dialer in scrolled window
It was possible to increase the window's size below the
minimum size of the dialer view. As such it is important
to wrap it in a scrolled window in order not to lose
access to otherwise hidden interface components.

This is, of course, not a replacement for a better
adapting dialer.

Signed-off-by: Markus Göllnitz <camelcasenick@bewares.it>
Part-of: <https://gitlab.gnome.org/GNOME/calls/-/merge_requests/791>
2025-10-10 18:37:07 +00:00
Markus Göllnitz
f7da8ecfbb main-window: move bottom switcher to toolbar
The toolbar view is meant for these. This allows
libadwaita's style to apply the way it can be seen in
basically every other GNOME app.

The differences are with the scroll dependent undershoot
instead of an unconditional border.

Signed-off-by: Markus Göllnitz <camelcasenick@bewares.it>
Part-of: <https://gitlab.gnome.org/GNOME/calls/-/merge_requests/791>
2025-10-10 18:37:07 +00:00
Markus Göllnitz
ba3e0b47ed main-window: increase width of switcher breakpoint
The current breakpoint is more or less perfect for
English. However, there are other languages with longer
strings there, such as German. Increasing the width at
which the breakpoint sits to switch the switcher location
enables most languages to have no or minimal ellipses
while not looking too spacious with English.

Signed-off-by: Markus Göllnitz <camelcasenick@bewares.it>
Part-of: <https://gitlab.gnome.org/GNOME/calls/-/merge_requests/791>
2025-10-10 18:37:07 +00:00
Guido Günther
574e1f79a3 application: Drop ignore_activation flag
Rather use gapplication service. This makes the flow similar to what
Chatty does and makes us hold/release rather than having an application
window.

It also allows us to drop the --daemon.

Part-of: <https://gitlab.gnome.org/GNOME/calls/-/merge_requests/760>
2025-08-30 10:52:20 +00:00
Guido Günther
fbfe680f6a application: Validate daemon flag only on first startup
The activate method is used when the application is activated via
various means - e.g. via the `Activate` DBus method. We don't want to
ignore that activation just because calls was started with the
`--daemon` option. Rename the variable to better match what it means.

Part-of: <https://gitlab.gnome.org/GNOME/calls/-/merge_requests/760>
2025-08-30 10:52:20 +00:00
Guido Günther
24542d3bc2 application: Don't try to remove inexistent window
If the app never showed a window (e.g. in daemon mode) this
would otherwise raise a critical.

Part-of: <https://gitlab.gnome.org/GNOME/calls/-/merge_requests/760>
2025-08-30 10:52:20 +00:00
Boris Shtrasman
b640733424 emergency-call-types: add Israeli emergency numbers
Signed-off-by: Boris Shtrasman <41102-borissh@users.noreply.gitlab.gnome.org>
Part-of: <https://gitlab.gnome.org/GNOME/calls/-/merge_requests/785>
2025-07-19 00:43:55 +03:00
Vivek wagdare
23b2208c1c contacts-box: Add vertical margins to SearchEntry in contacts view
Add proper vertical margins (12px) to the SearchEntry widget in the
contacts view to improve spacing and visual consistency. This matches
the existing horizontal margins and follows GNOME design guidelines.

This change improves the visual appearance by preventing the search bar
from appearing cramped, especially when using high-contrast themes.

Closes: https://gitlab.gnome.org/GNOME/calls/-/issues/672
Part-of: <https://gitlab.gnome.org/GNOME/calls/-/merge_requests/762>
2025-05-24 18:03:09 +02:00
knoppix
ef9db6ce84 main-window.ui: add a proper callback for Close button
The signal click of Close button is connected to "gtk_widget_hide".
As a result the window is hided, but still active and the whole
program renders unresponsive.

The Close button can appear for example if USSD_STATUS_IDLE comes
before a user press Cancel button in dialog window
(could be for example because of carrier timeout).
The "adw_dialog_close" function should be called instead.

Signed-off-by: knoppix <knoppix@4d2.org>
Part-of: <https://gitlab.gnome.org/GNOME/calls/-/merge_requests/776>
2025-05-24 15:53:43 +00:00
Guido Günther
a7caa59fba account-overview: Ref list models
GTK4's filters models swallow the reference.

Without this calls crashes like this:

```
    #0  g_type_check_instance (type_instance=type_instance@entry=0x555c0f84ce90) at ../../../gobject/gtype.c:4024
    #1  0x00007f0837af6e18 in g_signal_handlers_disconnect_matched
        (instance=0x555c0f84ce90, mask=mask@entry=(G_SIGNAL_MATCH_FUNC | G_SIGNAL_MATCH_DATA), signal_id=signal_id@entry=0, detail=detail@entry=0, closure=closure@entry=0x0, func=func@entry=0x7f0836f828a0 <gtk_filter_list_model_items_changed_cb>, data=0x555c0f84f1b0) at ../../../gobject/gsignal.c:3007
    #2  0x00007f0836f82459 in gtk_filter_list_model_clear_model (self=self@entry=0x555c0f84f1b0 [GtkFilterListModel]) at ../../../gtk/gtkfilterlistmodel.c:497
    #3  0x00007f0836f824f4 in gtk_filter_list_model_clear_model (self=0x555c0f84f1b0 [GtkFilterListModel]) at ../../../gtk/gtkfilterlistmodel.c:493
    #4  gtk_filter_list_model_dispose (object=0x555c0f84f1b0 [GtkFilterListModel]) at ../../../gtk/gtkfilterlistmodel.c:661
    #5  0x00007f0837ae1289 in g_object_unref (_object=0x555c0f84f1b0) at ../../../gobject/gobject.c:4438
    #6  0x00007f08379b47f3 in g_hash_table_remove_all_nodes (hash_table=hash_table@entry=0x555c0f84d2c0, notify=notify@entry=1, destruction=destruction@entry=1)
        at ../../../glib/ghash.c:656
    #7  0x00007f08379b53a3 in g_hash_table_remove_all_nodes (hash_table=0x555c0f84d2c0, notify=1, destruction=1) at ../../../glib/ghash.c:578
    #8  g_hash_table_unref (hash_table=0x555c0f84d2c0) at ../../../glib/ghash.c:1438
    #9  g_hash_table_unref (hash_table=0x555c0f84d2c0) at ../../../glib/ghash.c:1432
    #10 0x0000555bf0b649b2 in calls_manager_finalize (object=0x555c0f84b800 [CallsManager]) at ../src/calls-manager.c:465
    #11 0x00007f0837ae14fe in g_object_unref (_object=0x555c0f84b800) at ../../../gobject/gobject.c:4509
    #12 0x0000555bf0b5b92d in finalize (object=0x555c0f82fcb0 [CallsApplication]) at ../src/calls-application.c:780
    #13 0x00007f0837ae14fe in g_object_unref (_object=0x555c0f82fcb0) at ../../../gobject/gobject.c:4509
    #14 0x0000555bf0b58cd4 in main (argc=1, argv=0x7fffc05d57a8) at ../src/main.c:47
```

Steps to reproduce:

- start calls
- open account dialog
- close account dialog
- hit control-c to end calls daemon
- observe above crash

Signed-off-by: Guido Günther <agx@sigxcpu.org>
Part-of: <https://gitlab.gnome.org/GNOME/calls/-/merge_requests/777>
2025-05-05 12:37:05 +00:00
Guido Günther
7c0fcbc158 call-box: Use correct property
There's no `selected-index` property. This makes sure we properly switch
between keypad and text entry.

Fixes ee3abc0 ("treewide: Replace libhandy with libadwaita")

Signed-off-by: Guido Günther <agx@sigxcpu.org>
Part-of: <https://gitlab.gnome.org/GNOME/calls/-/merge_requests/775>
2025-04-28 16:19:32 +02:00
Guido Günther
d275a1cedc ussd-dialog: Reindent
Done as a separate commit to ease review

Gbp-Dch: Ignore
Signed-off-by: Guido Günther <agx@sigxcpu.org>
Part-of: <https://gitlab.gnome.org/GNOME/calls/-/merge_requests/761>
2024-11-10 16:53:48 +01:00
Guido Günther
4bd12c1102 ussd-dialog: Use AdwSpinner
Make it a bit larger while at that

Signed-off-by: Guido Günther <agx@sigxcpu.org>
Part-of: <https://gitlab.gnome.org/GNOME/calls/-/merge_requests/761>
2024-11-10 16:53:48 +01:00
Guido Günther
d5cc163801 main-window: Use AdwDialog for USSD
We grab the focus hence making the text entry easy to identify and by
following the content size we get a reasonable width.

Closes: https://gitlab.gnome.org/GNOME/calls/-/issues/681

Signed-off-by: Guido Günther <agx@sigxcpu.org>
Part-of: <https://gitlab.gnome.org/GNOME/calls/-/merge_requests/761>
2024-11-10 16:53:48 +01:00
Guido Günther
047b5a1495 ussd-dialog: Simplify navigation
Focus the entry by default so we keep the OSK open when there's
additional input required

Helps: https://gitlab.gnome.org/GNOME/calls/-/issues/681

Signed-off-by: Guido Günther <agx@sigxcpu.org>
Part-of: <https://gitlab.gnome.org/GNOME/calls/-/merge_requests/761>
2024-11-10 16:53:48 +01:00
Guido Günther
39d953c011 ussd-dialog: Set phone input purose on entry
USSD menus are usually navigatable with dumb phone keyboards
so this makes a good default.

Signed-off-by: Guido Günther <agx@sigxcpu.org>
Part-of: <https://gitlab.gnome.org/GNOME/calls/-/merge_requests/761>
2024-11-10 16:53:48 +01:00
Guido Günther
52e7f56efd main-window: Set log domain
Signed-off-by: Guido Günther <agx@sigxcpu.org>
Part-of: <https://gitlab.gnome.org/GNOME/calls/-/merge_requests/761>
2024-11-10 16:53:48 +01:00
Guido Günther
8d1a339cf1 build: Bump libadwaita dependency to 1.6
Needed for AdwSpinner

Signed-off-by: Guido Günther <agx@sigxcpu.org>
Part-of: <https://gitlab.gnome.org/GNOME/calls/-/merge_requests/761>
2024-11-10 16:53:48 +01:00
Guido Günther
38ad7dae2a call-record-row: Turn the realized check into a critical
This makes sure we don't ignore it should it happen again.

Part-of: <https://gitlab.gnome.org/GNOME/calls/-/merge_requests/756>
2024-09-21 06:23:20 +00:00
Guido Günther
4baa4f5141 call-record-row: Unparent popover in dispose
Finalize is too late to break reference cycles.

Part-of: <https://gitlab.gnome.org/GNOME/calls/-/merge_requests/756>
2024-09-21 06:23:20 +00:00
Guido Günther
6d9b88546d util: Drop now unused macros
Signed-off-by: Guido Günther <agx@sigxcpu.org>
Part-of: <https://gitlab.gnome.org/GNOME/calls/-/merge_requests/756>
2024-09-21 06:23:20 +00:00
Guido Günther
08a01fb1c5 call-record-row: Use g_clear_signal_handler
glib is recent enough nowadays

Signed-off-by: Guido Günther <agx@sigxcpu.org>
Part-of: <https://gitlab.gnome.org/GNOME/calls/-/merge_requests/756>
2024-09-21 06:23:20 +00:00
Guido Günther
2f8877b107 call-record-row: Drop superfluous cast
Signed-off-by: Guido Günther <agx@sigxcpu.org>
Part-of: <https://gitlab.gnome.org/GNOME/calls/-/merge_requests/756>
2024-09-21 06:23:20 +00:00
Guido Günther
f4e8373eaa history-box: Keep ref on list model
The gtk_*list_model_new() functions are `transfer: full` for the model.

Signed-off-by: Guido Günther <agx@sigxcpu.org>
Part-of: <https://gitlab.gnome.org/GNOME/calls/-/merge_requests/756>
2024-09-21 06:23:20 +00:00
Guido Günther
12812f64c6 history-box: No need to unparent the stack
GTK cleans up for us

Signed-off-by: Guido Günther <agx@sigxcpu.org>
Part-of: <https://gitlab.gnome.org/GNOME/calls/-/merge_requests/756>
2024-09-21 06:23:20 +00:00
Guido Günther
e2f3f5ef53 settings: Don't leak autoload plugins
Use the correct cleanup func

Part-of: <https://gitlab.gnome.org/GNOME/calls/-/merge_requests/756>
2024-09-21 06:23:20 +00:00
Guido Günther
313d18509d settings: Don't leak audio codecs
Use the correct cleanup func

Part-of: <https://gitlab.gnome.org/GNOME/calls/-/merge_requests/756>
2024-09-21 06:23:20 +00:00
Guido Günther
141eb85580 calls-manager: Don't leak hash tables
Signed-off-by: Guido Günther <agx@sigxcpu.org>
Part-of: <https://gitlab.gnome.org/GNOME/calls/-/merge_requests/756>
2024-09-21 06:23:20 +00:00