1
0
Fork 0
mirror of https://gitlab.gnome.org/GNOME/calls.git synced 2024-09-28 14:55:26 +00:00
Commit graph

351 commits

Author SHA1 Message Date
Evangelos Ribeiro Tzaras
90b598ed5b record-store: Add default case to switch statements
As caught by compiling with `-Wswitch-default`
2021-06-03 19:46:45 +00:00
Evangelos Ribeiro Tzaras
f097a39e04 call-display: Add default case to switch statement
As caught by compiling with `-Wswitch-default`
2021-06-03 19:46:45 +00:00
Evangelos Ribeiro Tzaras
2847508034 Fix missing-declarations warnings all over the codebase
As caught by compiling with `-Wmissing-declarations`
by either making functions static, or declaring them in the header.
2021-06-03 19:46:45 +00:00
Evangelos Ribeiro Tzaras
96a7d901c1 Fix old-style warnings all over the codebase
As caught by compiling with `-Wold-style-definition` and `-Wstrict-prototypes`.
2021-06-03 19:46:45 +00:00
Evangelos Ribeiro Tzaras
38abbc5b18 record-store: codestyle 2021-06-03 19:46:45 +00:00
Evangelos Ribeiro Tzaras
9877f4469b display: Fix typo 2021-06-03 19:46:45 +00:00
Evangelos Ribeiro Tzaras
588955b59e display: codestyle 2021-06-03 19:46:45 +00:00
Guido Günther
6f93b48ef4 Expose call objects on DBus
This exports call objects on the session bus:

 $ gdbus monitor --session -d sm.puri.Calls
 …
 /sm/puri/Calls: org.freedesktop.DBus.ObjectManager.InterfacesAdded (objectpath '/sm/puri/Calls/Call/1', {'sm.puri.Calls.Call': {'Inbound': <false>, 'State': <uint32 0>, 'Id': <''>, 'Party': <''>}})
 /sm/puri/Calls/Call/1: org.freedesktop.DBus.Properties.PropertiesChanged ('sm.puri.Calls.Call', {'Id': <'0987654321'>, 'Inbound': <true>, 'State': <uint32 5>}, @as [])
 /sm/puri/Calls: org.freedesktop.DBus.ObjectManager.InterfacesRemoved (objectpath '/sm/puri/Calls/Call/1', ['sm.puri.Calls.Call'])
 $ gdbus call --session --dest sm.puri.Calls --object-path /sm/puri/Calls/Call/1 --method sm.puri.Calls.Call.Hangup

Currenty hangup and accept methods are implemented as well as exposing
the current call state.
2021-06-03 14:29:36 +00:00
Evangelos Ribeiro Tzaras
8d937bedf6 Initial DBus API 2021-06-03 14:29:36 +00:00
Evangelos Ribeiro Tzaras
cb533aabb7 manager: Update country code
By connecting to the "notify::country-code" signal of our origins.
2021-06-01 14:52:23 +02:00
Evangelos Ribeiro Tzaras
7d3426598d application: settings: Add country code setting
This helps to unbreak country code lookup (see 5fd39121).
2021-06-01 14:52:23 +02:00
Evangelos Ribeiro Tzaras
4990529c6c tests: manager: Add multiple provider tests
The test suite can be further expanded later. For now this suffices to
have some basic regression testing for multiple provider support in place.
2021-06-01 14:52:23 +02:00
Evangelos Ribeiro Tzaras
44f2002f86 manager: Differentiate the NO_ORIGIN state
This avoids confusion when only the SIP plugin is loaded, but no account
is being used.

For this we introduce two new functions in the abstract CallsProvider class:
`is_modem()` to indicate whether the the provider deals with PTSN telephony and
`is_operational()` which by default simply checks if there any avalaible origins
2021-06-01 14:52:23 +02:00
Evangelos Ribeiro Tzaras
98d66743a1 application: Don't add a provider if one is already present
If we initially invoked `gnome-calls -p sip` and later invoke
`gnome-calls sip:user@host` we don't expect to have the default MM provider
added.
2021-06-01 14:52:23 +02:00
Evangelos Ribeiro Tzaras
3f3b108cea new-call-box: Honour auto-use-default-origins setting 2021-06-01 14:52:23 +02:00
Evangelos Ribeiro Tzaras
fef1531749 application: Add CallsSettings class
This makes it easy to access application wide settings.
2021-06-01 14:52:23 +02:00
Evangelos Ribeiro Tzaras
0b2f146053 manager: support multiple providers
This includes the following changes:
- Introduce a `providers` hash table to keep track of multiple CallProvider's
  and remove the `provider` member
- Remove `calls_manager_get_provider()` and `calls_manager_set_provider()`
  in favour of `calls_manager_add_provider()`, `calls_manager_remove_provider()`
  and `calls_manager_has_provider()`
- Introduce a `origins` GListStore to keep track of available origins.
  `origins` is updated in `items_changed_cb()` when the origins of any
  CallsProvider are updated.
- Adapt to changes with respect to `calls_manager_get_origins()`.
- Introduce `origins_by_protocol` hash table to keep track of available origins
  per protocol.
- Adjust tests
- We temporarily break country code lookup which was handled previously
  with the "default-origin" mechanism. We will add it back to the CallsSettings
  class which will provide a better application-wide mechanism.
2021-06-01 14:52:18 +02:00
Evangelos Ribeiro Tzaras
0c966fdf83 origin: Add API to query supported protocols
This will allow selecting a suitable origin when placing outgoing calls.
2021-05-28 17:02:02 +02:00
Evangelos Ribeiro Tzaras
7ad0f4cdd6 provider: Add API to query supported protocols
These are the protocols that the provider plugin may support. The origins
must be queried independently whether or not they support any given protocol.

Example: A SIP origin/account may or may not support the "tel" protocol.
2021-05-28 17:02:02 +02:00
Evangelos Ribeiro Tzaras
6d8c227b24 calls-record: Introduce the protocol property
This is in preparation for supporting multiple providers (which are handling
different protocols/URI schemes).

This commit also changes the underlying database schema.
2021-05-28 17:02:02 +02:00
Evangelos Ribeiro Tzaras
53f69b06dd call: Introduce protocol property 2021-05-28 13:18:24 +02:00
Evangelos Ribeiro Tzaras
1e84812938 util: Add simple API to query protocol 2021-05-28 13:18:24 +02:00
Evangelos Ribeiro Tzaras
80ec7d8a35 account-provider: Add debugging in the public functions 2021-05-28 13:18:24 +02:00
Evangelos Ribeiro Tzaras
fecdc1fff8 cleanup: Fix calls_origin_get_name() related memory leaks
Document calls_origin_get_name() correctly as transfer-full.
Additionaly fix related memory leaks.
2021-05-28 13:18:24 +02:00
Evangelos Ribeiro Tzaras
1543802c88 provider: whitespace and indentation 2021-05-28 13:18:24 +02:00
Evangelos Ribeiro Tzaras
2ac43f391a manager: Set peas search path only once
There is no need to redo it for every added plugin.
2021-05-20 02:52:11 +02:00
Mohammed Sadiq
b1278f6140 build: Avoid building files multiple times
We don't have to build each source for every test, instead we could
create a static library link it with every test, which will be a lot
faster.
2021-05-17 20:00:04 +05:30
Evangelos Ribeiro Tzaras
14ef4f6b17 Add CallsAccountProviderInterface
This interface should by implemented by providers for which the user can add
or remove accounts.
2021-05-04 06:41:43 +02:00
Evangelos Ribeiro Tzaras
781adaddee sip: origin: Use CallsAccountState instead of SipAccountState 2021-05-04 05:57:42 +02:00
Evangelos Ribeiro Tzaras
0e5bd82568 Add CallsAccountInterface
This interface should be implemented by origins which represent an online
account. This means they must have a implement a property representing the
credentials and another representing the account state (online, offline, etc).
2021-05-04 05:57:42 +02:00
Evangelos Ribeiro Tzaras
3f72d34c49 Add CallsCredentials class and use it in CallsSipProvider
CallsCredentials is a dumb container to store account credentials.
This is done in preparation for the account management in the UI.
2021-05-04 05:57:06 +02:00
Evangelos Ribeiro Tzaras
f9a324fc6f manager: add debug messages when adding or removing origins 2021-04-27 11:39:09 +02:00
Evangelos Ribeiro Tzaras
8a4d408f3f manager: remove unused CallsProvider argument from functions
Both add_origin() and remove_origin() don't really need it.
2021-04-27 11:39:09 +02:00
Evangelos Ribeiro Tzaras
b71227aae5 call: doc: Indicate ownership in docstrings 2021-04-27 11:38:58 +02:00
Evangelos Ribeiro Tzaras
5ed24c4ed7 doc: Fix gtk-doc transfer annotations 2021-04-27 11:38:26 +02:00
Evangelos Ribeiro Tzaras
70f1df7e0e build: separate version from the rest of the configuration data
This should make sure that we always have 'config.h' available and
should fix issues with flatpak build as seen in #257:

`fatal error: config.h: No such file or directory`
2021-04-27 01:55:13 +02:00
Evangelos Ribeiro Tzaras
d0194fe534 manager: g_assert in static functions 2021-04-25 18:12:59 +02:00
Evangelos Ribeiro Tzaras
c2c3f64102 codestyle: new-call-box 2021-04-25 18:12:59 +02:00
Evangelos Ribeiro Tzaras
d65284acaa codestyle: align function prototypes in calls-origin header
This makes it a easier on the eyes.
2021-04-25 18:12:59 +02:00
Evangelos Ribeiro Tzaras
868d9e36da codestyle: get rid of CALLS_SET_PTR_PROPERTY macro
One more step towards fixing #214
In `calls-ofono-call.c` the changed code also adheres to the newly introduced
coding style.
2021-04-25 18:12:59 +02:00
Evangelos Ribeiro Tzaras
042478a8eb call-record: Get rid of macros
While these macros are not too bad, they will still be removed for the sake
of consistency (no other purism project uses macros this heavily).

Fixes part of #214
2021-04-25 18:12:59 +02:00
Evangelos Ribeiro Tzaras
4d405e6dcb application: add --version flag
Closes #256
2021-04-16 19:57:03 +02:00
Evangelos Ribeiro Tzaras
9a4debe87e codestyle: application 2021-04-16 19:47:01 +02:00
Evangelos Ribeiro Tzaras
21666fc7d4 best-match: Don't set NULL phone numbers when updating country code
Also related to #255
2021-04-12 14:02:26 +02:00
Evangelos Ribeiro Tzaras
a072d8c7e3 best-match: avoid using NULL phone number
Fixes #255
2021-04-12 14:02:19 +02:00
Evangelos Ribeiro Tzaras
9703b1e43e best-match: disconnect old signal handlers 2021-04-06 14:27:26 +00:00
Evangelos Ribeiro Tzaras
0bd6d7f2a5 best-match: Lookup contact if country code changed
Closes #217
2021-04-06 14:27:26 +00:00
Evangelos Ribeiro Tzaras
25d651c834 manager: set default origin
This is a bit of a hack to get the country code property hooked up
and will require a rework when multiple provider support is being added.
As the default origin is not being used anywhere else in the code
it's currently not a problem that we're not tracking if the default
origin is being removed.

Additionally test-manager.c needed some adjustment.
2021-04-06 14:27:26 +00:00
Evangelos Ribeiro Tzaras
622827d293 best-match: Use the country code 2021-04-06 14:27:26 +00:00
Evangelos Ribeiro Tzaras
e5832bbad3 application: Use the country code 2021-04-06 14:27:26 +00:00
Evangelos Ribeiro Tzaras
7d69d78b70 origin: Add country-code property
And add a binding in CallsManager for the default origin
2021-04-06 14:27:26 +00:00
Evangelos Ribeiro Tzaras
69b170ecfe best-match: g_return_if_fail if not GeeCollection
Closes #254
Closes #227
2021-04-06 14:27:26 +00:00
Evangelos Ribeiro Tzaras
f8a57edc6d contacts-provider: fix docstring
The caller takes ownership of the returned `CallsBestMatch`, so
this should be reflected in the docstring
2021-04-06 14:27:26 +00:00
Evangelos Ribeiro Tzaras
f84d3c0adf call: g_return_if_fail: type check calls_call_get_contact () 2021-04-06 14:27:26 +00:00
Evangelos Ribeiro Tzaras
32c89ca9dd contact-provider: remove trailing whitespaces 2021-04-06 14:27:26 +00:00
Guido Günther
e5827adb60 calls: Fix gtk-doc transfer annotation
Broken-by: 501d2914
2021-04-06 13:01:36 +00:00
Guido Günther
01f015a21c provider: Fix gtk-doc transfer annotations
Broken-by: 9e92fb88
2021-04-06 13:01:36 +00:00
Guido Günther
443d23dd56 build: deduplicate sources
Shorten the needed sources from

 calls_sources, calls_enum_sources, calls_resources,
 wl_proto_sources, wayland_sources,

to

  calls_sources

so adding new things such as generated dbus sources doesn't have to
happen in four locations but just one.
2021-04-06 14:18:06 +02:00
Guido Günther
5933a4005d build: Move generated souces before source file list
This will be needed in the next commit
2021-04-06 12:50:31 +02:00
Evangelos Ribeiro Tzaras
9e92fb88af provider: Add API for loading and unloading provider plugins
This is also used for our tests. In order to avoid code duplication
this is being moved to calls-provider.{c,h}.
2021-04-05 06:13:44 +00:00
Mohammed Sadiq
c30a41ffa9 Let calls-call be an abstract class
And adapt to changes.

A calls-mm-call IS-A calls-call (and so on)
2021-04-05 09:38:03 +05:30
Mohammed Sadiq
a30e1eaa8f provider: Implement default methods
Simply return NULL when these methods are called.

If not implemented, calling these methods may result
in crash when the subclasses haven't implemented them.
2021-04-04 18:16:48 +05:30
Mohammed Sadiq
faa35e90dc provider: Rename a variable
Provider is no longer an interface
2021-04-04 18:12:46 +05:30
Evangelos Ribeiro Tzaras
d67e690f33 new-call-box: Connect signals only if origins non-NULL
Fixes #252
2021-04-03 06:41:54 +00:00
Mohammed Sadiq
dc7c676df8 provider: Avoid private data
We only have a dummy variable here
2021-04-03 07:22:27 +05:30
Evangelos Ribeiro Tzaras
685aa1950e application: open sip uri 2021-04-03 00:08:31 +02:00
Evangelos Ribeiro Tzaras
de44a17fe5 sip: use ipv4 exclusively for now
IPv6 should work, but sofia's outbound engine keep printing
errors involving the outbound engine. Working theory:
Failing ICMPv6 (pings) can make sofia think we don't have connectivity.
Note that we also don't get any answers from the SIP servers we tried so far.
2021-04-03 00:08:31 +02:00
Guido Günther
55559d91db window: Don't unhibit with 0 cookie
The upper layers do not bother whether there's an inhibitor when
calling uninhibit (and shouldn't) so don't put out out warning
when called with 0 cookie.

Closes: #249
2021-04-01 16:50:51 +00:00
Guido Günther
b04d564bcf manager: Allow to add plugin dir via environent
This eases testing of plugins from the source tree:

  CALLS_PLUGIN_DIR=_build/plugins/dummy/ _build/src/gnome-calls -p dummy
2021-04-01 14:07:27 +02:00
Evangelos Ribeiro Tzaras
94345e0916 manager: hang up secondary calls 2021-03-15 09:24:46 +00:00
Evangelos Ribeiro Tzaras
24f53cd927 manager: remove unused function 2021-03-15 09:24:46 +00:00
Evangelos Ribeiro Tzaras
78c0fb1ed7 ringer: use quiet profile for non-primary calls 2021-03-15 09:24:46 +00:00
Evangelos Ribeiro Tzaras
3aebfcc6d1 contact-row: remove deprecated function
Fixes #234
2021-03-09 22:45:01 +01:00
Evangelos Ribeiro Tzaras
35f45d8373 meson: bump required libhandy-1 version >1.1.90 2021-03-09 16:50:13 +01:00
Guido Günther
97c2dde0eb notifier: Fix compile warning
Fixes
  ../src/calls-notifier.c: In function ‘state_changed_cb’:
  /usr/include/glib-2.0/glib/gmacros.h:1132:17: warning: ‘notification’ may be used uninitialized in this function [-Wmaybe-uninitialized]

which wasn't problematic with the current code flow but
can easily become a problem when shuffling stuff around.
2021-03-01 10:04:02 +01:00
Mohammed Sadiq
994853910d application: Open only the first 'tel:' URI
Calls can't handle multiple calls, so there is no
point in handling all URIs.

Handle opening URI in activate(), which will be helpful
when we use local_command_line()

Also, this commit fixes presenting window on initial
launch of Calls with a “tel:” URI
2021-02-27 09:14:44 +00:00
Evangelos Ribeiro Tzaras
5b34342134 new-call-box: make sure to call origin_count_changed_cb
Otherwise the model changes happening before hooking up will be missed
(which results in the model not being bound to HdyComboRow).
2021-02-27 09:45:06 +01:00
Mohammed Sadiq
eda460ac15 provider: Use GListModel to track origins
And adapt to changes

It's easier to track changes if we are using GListModel than
a GList.  Also, eventually we shall have multiple providers,
and we can use GtkFlattenListModel to merge multiple origins
without manually managing pointers ourself.

Since several widgets has APIs to handle GListModels, it will
also help us create widgets from GListModels easily.
2021-02-25 08:44:56 +05:30
Evangelos Ribeiro Tzaras
d75a08b9b7 application: Fix double free
The double free was introduced in 46e4422.
This fixes #225
2021-02-16 02:59:24 +01:00
Evangelos Ribeiro Tzaras
46e4422026 application: use g_autoptr 2021-02-11 00:44:07 +01:00
Evangelos Ribeiro Tzaras
5d4b84470c code style: consistent whitespaces for g_autoptr 2021-02-11 00:43:18 +01:00
Arnaud Ferraris
5375ebbc72 call-display: switch to default audio profile only if no other call
Currently, when any call is terminated, audio profile/routing is 
switched to the default one.

This is a problem when already into a call and getting a second one: 
rejecting the new call will keep the first one going, but with the wrong 
audio profile, making it difficult (or, on the PinePhone, impossible) to 
keep talking.

This patch makes sure there is no other ongoing call before switching 
the audio mode, so that it's possible to keep the first call going even 
after rejecting the second one.
2021-02-09 09:09:57 +01:00
Evangelos Ribeiro Tzaras
71f9e636b3 display: fix null pointer dereference
removing unused GError
2021-02-08 17:39:42 +00:00
Evangelos Ribeiro Tzaras
f8cd126d6f record-store: Handle old and new database locations gracefully
Because we rename the project and binaries to 'gnome-calls' we want
to make sure that the call history is preserved by doing the following:
If there is an old directory '~/.local/share/calls' try to rename it to
'gnome-calls'. Use new location if it succeeds and fall back to old location if it failed.
2021-02-04 01:19:26 +00:00
Evangelos Ribeiro Tzaras
c732c74703 project: rename to gnome-calls 2021-02-04 01:19:26 +00:00
Julian Sparber
e09f2e10f8 CallsCallDisplay: use HdyAvatar 2021-02-03 23:58:31 +00:00
Julian Sparber
293227ff3c CallsCallRecordRow: Cleanup contact setup 2021-02-03 23:58:31 +00:00
Julian Sparber
844d04f2d9 Remove unused CallsParty 2021-02-03 23:58:31 +00:00
Julian Sparber
889d5a0981 CallManager: drop calls_manager_get_contact_name ()
This function is replaced with calls_call_get_contact ()
2021-02-03 23:58:31 +00:00
Julian Sparber
60e2b39367 CallsCallSelectorItem: Make sure that the contact infomation is updated
This is done by binding the contact information to the UI.
2021-02-03 23:58:31 +00:00
Julian Sparber
2206c3733c CallsCallDisplay: Make sure that the contact infomation is updated
This is done by binding the contact information to the UI.
2021-02-03 23:58:31 +00:00
Julian Sparber
501d29145f CallsCall: Add method to optain matching contact 2021-02-03 23:58:31 +00:00
Julian Sparber
6d3b75262d BestMatch: add has-individual property 2021-02-03 23:58:31 +00:00
Julian Sparber
f1946aff79 BestMatch: remove BestMatchView to reduce vala code 2021-02-03 23:58:31 +00:00
Julian Sparber
2a85b60f7c BestMatch: Simplify code for updating new best matching individual 2021-02-03 23:58:31 +00:00
Julian Sparber
339b71a233 BestMatch: Allways return a name
If no matching contact is found the phone number is used, and when no
phone number was given "Anonymous caller" is returned.
2021-02-03 23:58:31 +00:00
Julian Sparber
d75d39dc66 BestMatch: Move SearchView creation inside the class 2021-02-03 23:58:31 +00:00
Julian Sparber
99e427a529 BestMatch: Turn avatar into a property 2021-02-03 23:58:31 +00:00
Evangelos Ribeiro Tzaras
d8f2534795 call-display: fix whitespace 2021-02-03 23:58:31 +00:00
Julian Sparber
19c9893ecf Contacts: Add contacts list 2021-02-03 23:28:57 +01:00