1
0
Fork 0
mirror of https://gitlab.gnome.org/GNOME/calls.git synced 2024-12-25 05:47:35 +00:00
Commit graph

113 commits

Author SHA1 Message Date
Julian Sparber
389e772069 DummyPlugin: fix events emits for call-removed, origin-*
This fixes this two issues:
- Emit the events origin-removed, origin-added when required.

- Remove call immediately when disconnected and emit events:
  By using `g_idle_add ()` we can't be sure when the call is actually
  removed and could stay potentionaly for evere, as long the main loop is
  busy. This can lead to unexpected behavior. If the calls shouldn't be
  freed then it's required to increase the ref count. This is similar how
  the `remove` event works in a `GtkContainer`.
2020-03-26 18:49:57 +00:00
Daniel Abrecht
cad79a4834 Reintroduce GParamSpec props arrays & replace g_object_notify with g_object_notify_by_pspec 2020-03-18 09:57:01 +00:00
Daniel Abrecht
4055503336 Notify if number changes in mm plugin 2020-03-18 09:57:01 +00:00
Daniel Abrecht
a7a679c186 Convert calls call getters to readonly properties
This is part of a larger refactoring effort, with the goal to replace
all the get_*() member functions in provider abstraction interfaces with
GObject properties. See also: https://source.puri.sm/Librem5/calls/issues/6
2020-03-18 09:57:01 +00:00
Julian Sparber
e911f391c6
Use correct parent class when chaining up overridden functions
How `g_type_class_peek ()` was used it didn't return the correct parent
class in most cases.
G_DEFINE_TYPE macro creates a pointer we can use to get the parent
class `n_p_parent_class`.
Because we didn't use the correct parent class the object initialisation
wasn't fully completed for some GtkWidgets.
See https://developer.gnome.org/gobject/stable/chapter-gobject.html#gobject-instantiation
for more information.

This commit makes use of the `n_p_parent_class pointer` created for this
specific use case where ever possible.

Fixes: https://source.puri.sm/Librem5/calls/issues/118
2020-02-19 12:49:58 +01:00
Bob Ham
dc9b7102de mm-call: Sanitise disconnect messages
Clean up the disconnect messages so they make sense when presented to
the user.  Also add new state change reasons from ModemManager 1.10
and 1.12.

Fixes #90
2020-01-21 13:29:58 +00:00
Mohammed Sadiq
0634f49fc7 mm-provider: Fix a check to remove device
We want to remove the modem if the currently removed interface is
Voice.  It was previously removing the device if the removed
interface wasn’t Voice.

Fixes https://source.puri.sm/Librem5/calls/issues/94
2020-01-20 10:41:45 +00:00
Bob Ham
ebf579af78 calls-dummy-origin: Fix ordering of state change and call removal callbacks 2019-07-22 14:37:27 +01:00
Bob Ham
b1a743b757 calls-mm-call: Map MM_CALL_STATE_UNKNOWN to CALLS_CALL_STATE_DIALING instead of 0
This actually makes sense in the mapping; the only time an MM call is
in MM_CALL_STATE_UNKNOWN is when it's an outgoing call that hasn't
been started.  It also helps avoid a lot of needless issues dealing
with the Calls call state.
2019-07-22 11:52:31 +01:00
Bob Ham
215877cc60 calls-dummy-provider: Create an inbound call on SIGUSR1
This enables easy testing of inbound calls with just

$ calls -p dummy &
$ killall -USR1 calls
2019-06-28 15:14:45 +01:00
Bob Ham
824395b040 plugins/dummy: Implement inbound property
Also simulating dialing/ringing/active state changes for outbound
calls.
2019-06-28 15:14:41 +01:00
Bob Ham
0dc906c2bb plugins/mm: Implement inbound property 2019-06-28 13:59:51 +01:00
Bob Ham
460c0c6c3d Turn providers into plugins courtesy of libpeas
This is an initial, static implementation of plugins.  The
CallsApplication has a plugin name which can be changed with a new
--provider command line option.  This plugin name is used to
instantiate the appropriate plugin when the application is activated.
From then on, the plugin cannot change.

In future, we can expand this support to include loading multiple
plugins at once, configurable through some UI.  This will have
far-reaching implications though, and complicate things like
enumerating the provider hierarchy.  There is also no practical
benefit right now; the mm and ofono plugins can't be used at the same
time because ModemManager and oFono don't play nice together, and the
whole raison d'être of the dummy plugin is undermined if you can make
use of one of the others.  So for now, we just implement one static
plugin.
2018-11-23 15:51:46 +00:00