HdyDialer was deprecated and therefore is replaced with HdyKeypad.
HdyDialer used a `gchr *` to store the entered phone number. On every
button press the entire text of the display entry was replaced with the new
string, which messed up selection and cursor position.
HdyKeypad connects directly to a GtkEntry and inserts each
button press the same way as a keyboard stroke would do.
In the case of the `call display` entry every new digit is appended to the
end of the input and therefore it also moves the cursor to the end of the
entry. Instead of making the Entry not editable, only the events which
would remove text form the entry are blocked, via the `delete-text`
signal. And the signal `insert-text` is used to block unwanted chars
from beeing inserted.
Same as for the `call display` entry also the `new call box` entry is
made editable and the signal `insert-text` is used to block unwanted
chars. All other user action possible on a entry arn't blocked
e.g. repositioning the cursor.
The advantage of making the Entry editable is that we can show
the cursor position.
It also allows the user to select the position where new digits are
inserted in the `new call box`.
On a button press the focus is set to the Entry to give the correct
feedback to the user.
This centers the text on the entry, as required by the design.
This also makes the delete button remove only one char at the time, to
move closer to the desired UX.
Related: https://source.puri.sm/Librem5/calls/issues/58
Fixes: https://source.puri.sm/Librem5/calls/issues/82
We change the code for dealing with contacts quite significantly,
adding a new class, CallsBestMatch, in order to encapsulate a lot of
the functionality that was in CallsCallRecordRow.
At present avatars are not rounded and there are no auto-generated
avatars for contacts with no avatar. This work is awaiting discussion
of Apps_Issues#164.
We call pactl synchronously in order to (1) change the sink/source
port for speakerphone and (2) mute the sink/source for mute. The
sink/source names are hardcoded. This is all ugly and needs to not
exist. This functionality should be in Wys, accessed over D-Bus, or
in some other, as-yet undefined component.
The CallsBestMatchView and CallsPhoneNumberQuery classes are written
in Vala because they may be generally useful and to leave open the
possibility of adding them to libfolks itself, which is written in
Vala.
We can use GtkApplication to register with the GNOME session rather
than doing it ourselves, simplifying things in CallsApplication very
slightly and allowing us to remove session.{c,h}.
Use the "number" property of the dial pad for the dialed number which
takes care of cycling buttons. While we're at it, also make the clear
button external to the number entry box, enlarging it and turning it
into a backspace button.
Closes#12
* Make the Answer button look nice and laid out properly.
* Merge the time and status labels, displaying simply the text
"Calling..." until the call becomes active and then the call time
afterwards.
* Fix info display bar in both the call and main windows so they use a
GtkRevealer and work a lot better.
* Add a "new-call-symbolic" icon for the "Add call" button.
* General tweaks and clean-ups
Closes#55Closes#35
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.
Modems being added or removed were not working. To fix this, we pay
attention to the "object-removed" event and not just
"interface-removed".
Also, to deal with ModemManager appearing and vanishing, we add a
GDBus watch on ModemManager's D-Bus object.
Finally, we provide appropriate UI feedback when it's not possible to
make a call.
Closes#15Closes#16
The return value of this callback, used for the call selector flow
box, should have a reference added to it. The callback's return value
is annotated as "transfer full".
We're only looking for modems with voice capabilities. Warning that
there are no modems available at all might be confusing to the person
trying to track down a problem.
This will be needed by the next commit to display an "About" dialog via
the corresponding entry in the app menu that will be added.
This also adds the PACKAGE_URL, PACKAGE_VERSION and VCS_TAG
configuration data.
This makes sure we end up with the correct xdg app_id in Wayland:
before:
[943832,359] -> xdg_toplevel@27.set_app_id("calls")
after:
[1180814,499] -> xdg_toplevel@27.set_app_id("sm.puri.Calls")
Closes#8
Replace the custom inplementation of a call box by a CallsNewCallBox
which is used to dial new calls and not to send DTMF tones as the call
display can now handle that.
Put the call display in an GtkOverlay and add a dial pad sending DTMF
tones as an overlay. Also make the dial pad overlay be triggered by the
dial pad button.
Add 'mute' and 'dial pad' buttons, drop the 'hold' button, change the
size of the central buttons, make them use icons and drop the now
useless group size.
The oFono DTMF support doesn't match our model; you can only send
tones to the network and not to a particular call. The telephony
standards dictate that only a single call can be active at a time so
we just get the call to emit a "tone" signal if the call is in the
active state and get the origin to listen for the signal.
Some implementations, like oFono, only allow fixed-length tones to be
sent to the network, not started and stopped at will. To account for
this, we make the tone_start member function nullable and add a new
function, calls_call_tone_stoppable, to determine whether there is a
stop function.
* Preliminary documentation of CallsCall and CallsMessageSource
* Documentation and cleaning up of CallsCallData
* Add data files and meson rules to create gtk-doc documentation
* Move some macros from util.h to calls-message-source.h