mirror of
https://gitlab.gnome.org/GNOME/calls.git
synced 2024-12-13 16:07:36 +00:00
new-call-box: Switch to using CuiDialpad
It has been in libcall-ui for some time, so let's use it. This will also easy the transition to Gtk4 as it's one less widget we have to worry about.
This commit is contained in:
parent
8cdd017c2f
commit
8a16439cc8
2 changed files with 17 additions and 138 deletions
|
@ -31,6 +31,7 @@
|
||||||
#include "calls-settings.h"
|
#include "calls-settings.h"
|
||||||
#include "calls-ussd.h"
|
#include "calls-ussd.h"
|
||||||
|
|
||||||
|
#include <call-ui.h>
|
||||||
#include <glib/gi18n.h>
|
#include <glib/gi18n.h>
|
||||||
#include <handy.h>
|
#include <handy.h>
|
||||||
|
|
||||||
|
@ -46,13 +47,10 @@ struct _CallsNewCallBox {
|
||||||
|
|
||||||
GtkListBox *origin_list_box;
|
GtkListBox *origin_list_box;
|
||||||
HdyComboRow *origin_list;
|
HdyComboRow *origin_list;
|
||||||
GtkButton *backspace;
|
CuiDialpad *dialpad;
|
||||||
HdyKeypad *keypad;
|
|
||||||
GtkButton *dial;
|
|
||||||
GtkEntry *address_entry;
|
GtkEntry *address_entry;
|
||||||
HdyActionRow *result;
|
HdyActionRow *result;
|
||||||
GtkButton *dial_result;
|
GtkButton *dial_result;
|
||||||
GtkGestureLongPress *long_press_back_gesture;
|
|
||||||
|
|
||||||
GList *dial_queue;
|
GList *dial_queue;
|
||||||
|
|
||||||
|
@ -170,23 +168,6 @@ notify_selected_index_cb (CallsNewCallBox *self)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
static void
|
|
||||||
long_press_back_cb (CallsNewCallBox *self)
|
|
||||||
{
|
|
||||||
GtkEntry *entry = hdy_keypad_get_entry (self->keypad);
|
|
||||||
|
|
||||||
gtk_editable_delete_text (GTK_EDITABLE (entry), 0, -1);
|
|
||||||
}
|
|
||||||
|
|
||||||
static void
|
|
||||||
backspace_clicked_cb (CallsNewCallBox *self)
|
|
||||||
{
|
|
||||||
GtkEntry *entry = hdy_keypad_get_entry (self->keypad);
|
|
||||||
|
|
||||||
g_signal_emit_by_name (entry, "backspace", NULL);
|
|
||||||
}
|
|
||||||
|
|
||||||
static void
|
static void
|
||||||
ussd_send_cb (GObject *object,
|
ussd_send_cb (GObject *object,
|
||||||
GAsyncResult *result,
|
GAsyncResult *result,
|
||||||
|
@ -215,21 +196,23 @@ ussd_send_cb (GObject *object,
|
||||||
}
|
}
|
||||||
|
|
||||||
static void
|
static void
|
||||||
dial_clicked_cb (CallsNewCallBox *self)
|
dialpad_dialed_cb (CuiDialpad *dialpad,
|
||||||
|
const char *number,
|
||||||
|
CallsNewCallBox *self)
|
||||||
{
|
{
|
||||||
GtkEntry *entry = hdy_keypad_get_entry (self->keypad);
|
|
||||||
GtkWidget *window;
|
GtkWidget *window;
|
||||||
const char *text;
|
|
||||||
|
g_assert (CALLS_IS_NEW_CALL_BOX (self));
|
||||||
|
|
||||||
window = gtk_widget_get_toplevel (GTK_WIDGET (self));
|
window = gtk_widget_get_toplevel (GTK_WIDGET (self));
|
||||||
text = gtk_entry_get_text (entry);
|
|
||||||
|
|
||||||
if (CALLS_IS_MAIN_WINDOW (window))
|
if (CALLS_IS_MAIN_WINDOW (window))
|
||||||
calls_main_window_dial (CALLS_MAIN_WINDOW (window), text);
|
calls_main_window_dial (CALLS_MAIN_WINDOW (window), number);
|
||||||
else
|
else
|
||||||
calls_new_call_box_dial (self, text);
|
calls_new_call_box_dial (self, number);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
static void
|
static void
|
||||||
dial_result_clicked_cb (CallsNewCallBox *self)
|
dial_result_clicked_cb (CallsNewCallBox *self)
|
||||||
{
|
{
|
||||||
|
@ -306,7 +289,7 @@ origin_count_changed_cb (CallsNewCallBox *self)
|
||||||
n_items = g_list_model_get_n_items (origins);
|
n_items = g_list_model_get_n_items (origins);
|
||||||
|
|
||||||
gtk_widget_set_visible (GTK_WIDGET (self->origin_list_box), n_items > 1);
|
gtk_widget_set_visible (GTK_WIDGET (self->origin_list_box), n_items > 1);
|
||||||
gtk_widget_set_sensitive (GTK_WIDGET (self->dial), n_items > 0);
|
gtk_widget_set_sensitive (GTK_WIDGET (self->dialpad), n_items > 0);
|
||||||
|
|
||||||
if (n_items)
|
if (n_items)
|
||||||
dial_queued (self);
|
dial_queued (self);
|
||||||
|
@ -358,9 +341,6 @@ calls_new_call_box_dispose (GObject *object)
|
||||||
|
|
||||||
clear_dial_queue (self);
|
clear_dial_queue (self);
|
||||||
|
|
||||||
if (self->long_press_back_gesture != NULL)
|
|
||||||
g_object_unref (self->long_press_back_gesture);
|
|
||||||
|
|
||||||
G_OBJECT_CLASS (calls_new_call_box_parent_class)->dispose (object);
|
G_OBJECT_CLASS (calls_new_call_box_parent_class)->dispose (object);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -377,18 +357,13 @@ calls_new_call_box_class_init (CallsNewCallBoxClass *klass)
|
||||||
gtk_widget_class_set_template_from_resource (widget_class, "/org/gnome/Calls/ui/new-call-box.ui");
|
gtk_widget_class_set_template_from_resource (widget_class, "/org/gnome/Calls/ui/new-call-box.ui");
|
||||||
gtk_widget_class_bind_template_child (widget_class, CallsNewCallBox, origin_list_box);
|
gtk_widget_class_bind_template_child (widget_class, CallsNewCallBox, origin_list_box);
|
||||||
gtk_widget_class_bind_template_child (widget_class, CallsNewCallBox, origin_list);
|
gtk_widget_class_bind_template_child (widget_class, CallsNewCallBox, origin_list);
|
||||||
gtk_widget_class_bind_template_child (widget_class, CallsNewCallBox, backspace);
|
gtk_widget_class_bind_template_child (widget_class, CallsNewCallBox, dialpad);
|
||||||
gtk_widget_class_bind_template_child (widget_class, CallsNewCallBox, long_press_back_gesture);
|
|
||||||
gtk_widget_class_bind_template_child (widget_class, CallsNewCallBox, keypad);
|
|
||||||
gtk_widget_class_bind_template_child (widget_class, CallsNewCallBox, dial);
|
|
||||||
gtk_widget_class_bind_template_child (widget_class, CallsNewCallBox, address_entry);
|
gtk_widget_class_bind_template_child (widget_class, CallsNewCallBox, address_entry);
|
||||||
gtk_widget_class_bind_template_callback (widget_class, address_activate_cb);
|
gtk_widget_class_bind_template_callback (widget_class, address_activate_cb);
|
||||||
gtk_widget_class_bind_template_callback (widget_class, address_changed_cb);
|
gtk_widget_class_bind_template_callback (widget_class, address_changed_cb);
|
||||||
gtk_widget_class_bind_template_child (widget_class, CallsNewCallBox, result);
|
gtk_widget_class_bind_template_child (widget_class, CallsNewCallBox, result);
|
||||||
gtk_widget_class_bind_template_callback (widget_class, dial_clicked_cb);
|
gtk_widget_class_bind_template_callback (widget_class, dialpad_dialed_cb);
|
||||||
gtk_widget_class_bind_template_callback (widget_class, dial_result_clicked_cb);
|
gtk_widget_class_bind_template_callback (widget_class, dial_result_clicked_cb);
|
||||||
gtk_widget_class_bind_template_callback (widget_class, backspace_clicked_cb);
|
|
||||||
gtk_widget_class_bind_template_callback (widget_class, long_press_back_cb);
|
|
||||||
gtk_widget_class_bind_template_callback (widget_class, notify_selected_index_cb);
|
gtk_widget_class_bind_template_callback (widget_class, notify_selected_index_cb);
|
||||||
|
|
||||||
props[PROP_NUMERIC_INPUT_ONLY] =
|
props[PROP_NUMERIC_INPUT_ONLY] =
|
||||||
|
@ -409,6 +384,7 @@ calls_new_call_box_new (void)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
void
|
void
|
||||||
calls_new_call_box_dial (CallsNewCallBox *self,
|
calls_new_call_box_dial (CallsNewCallBox *self,
|
||||||
const gchar *target)
|
const gchar *target)
|
||||||
|
@ -439,7 +415,6 @@ calls_new_call_box_send_ussd_async (CallsNewCallBox *self,
|
||||||
{
|
{
|
||||||
g_autoptr (CallsOrigin) origin = NULL;
|
g_autoptr (CallsOrigin) origin = NULL;
|
||||||
g_autoptr (GTask) task = NULL;
|
g_autoptr (GTask) task = NULL;
|
||||||
GtkEntry *entry;
|
|
||||||
|
|
||||||
g_return_if_fail (CALLS_IS_NEW_CALL_BOX (self));
|
g_return_if_fail (CALLS_IS_NEW_CALL_BOX (self));
|
||||||
g_return_if_fail (!cancellable || G_IS_CANCELLABLE (cancellable));
|
g_return_if_fail (!cancellable || G_IS_CANCELLABLE (cancellable));
|
||||||
|
@ -463,9 +438,6 @@ calls_new_call_box_send_ussd_async (CallsNewCallBox *self,
|
||||||
|
|
||||||
calls_ussd_initiate_async (CALLS_USSD (origin), target, cancellable,
|
calls_ussd_initiate_async (CALLS_USSD (origin), target, cancellable,
|
||||||
ussd_send_cb, g_steal_pointer (&task));
|
ussd_send_cb, g_steal_pointer (&task));
|
||||||
|
|
||||||
entry = hdy_keypad_get_entry (self->keypad);
|
|
||||||
gtk_editable_delete_text (GTK_EDITABLE (entry), 0, -1);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
char *
|
char *
|
||||||
|
|
|
@ -4,18 +4,12 @@
|
||||||
<requires lib="gtk+" version="3.22"/>
|
<requires lib="gtk+" version="3.22"/>
|
||||||
<requires lib="libhandy" version="1.0"/>
|
<requires lib="libhandy" version="1.0"/>
|
||||||
<template class="CallsNewCallBox" parent="GtkBox">
|
<template class="CallsNewCallBox" parent="GtkBox">
|
||||||
<property name="margin_bottom">16</property>
|
|
||||||
<property name="margin_left">24</property>
|
<property name="margin_left">24</property>
|
||||||
<property name="margin_right">24</property>
|
<property name="margin_right">24</property>
|
||||||
<property name="margin_top">16</property>
|
<property name="margin_top">6</property>
|
||||||
<property name="orientation">vertical</property>
|
<property name="orientation">vertical</property>
|
||||||
<property name="visible">True</property>
|
<property name="visible">True</property>
|
||||||
|
|
||||||
<child>
|
|
||||||
<object class="HdyClamp">
|
|
||||||
<property name="visible">True</property>
|
|
||||||
<property name="vexpand">True</property>
|
|
||||||
<property name="maximum-size">300</property>
|
|
||||||
<child>
|
<child>
|
||||||
<object class="HdyClamp">
|
<object class="HdyClamp">
|
||||||
<property name="visible">True</property>
|
<property name="visible">True</property>
|
||||||
|
@ -28,7 +22,6 @@
|
||||||
<object class="GtkListBox" id="origin_list_box">
|
<object class="GtkListBox" id="origin_list_box">
|
||||||
<property name="visible">True</property>
|
<property name="visible">True</property>
|
||||||
<property name="selection-mode">none</property>
|
<property name="selection-mode">none</property>
|
||||||
<property name="margin-bottom">6</property>
|
|
||||||
<property name="halign">center</property>
|
<property name="halign">center</property>
|
||||||
<child>
|
<child>
|
||||||
<object class="HdyComboRow" id="origin_list">
|
<object class="HdyComboRow" id="origin_list">
|
||||||
|
@ -51,89 +44,9 @@
|
||||||
</object>
|
</object>
|
||||||
</child>
|
</child>
|
||||||
<child>
|
<child>
|
||||||
<object class="GtkEntry" id="keypad_entry">
|
<object class="CuiDialpad" id="dialpad">
|
||||||
<property name="visible" bind-source="CallsNewCallBox" bind-property="numeric-input-only" bind-flags="sync-create"/>
|
<property name="visible" bind-source="CallsNewCallBox" bind-property="numeric-input-only" bind-flags="sync-create"/>
|
||||||
<property name="hexpand">True</property>
|
<signal name="dialed" handler="dialpad_dialed_cb"/>
|
||||||
<property name="xalign">0.5</property>
|
|
||||||
<property name="placeholder-text" translatable="yes">Enter a number</property>
|
|
||||||
<signal name="activate" handler="dial_clicked_cb" swapped="yes"/>
|
|
||||||
<style>
|
|
||||||
<class name="phone-number-entry"/>
|
|
||||||
</style>
|
|
||||||
</object>
|
|
||||||
</child>
|
|
||||||
<child>
|
|
||||||
<object class="HdyKeypad" id="keypad">
|
|
||||||
<property name="visible" bind-source="CallsNewCallBox" bind-property="numeric-input-only" bind-flags="sync-create"/>
|
|
||||||
<property name="column_spacing">16</property>
|
|
||||||
<property name="row_spacing">10</property>
|
|
||||||
<property name="halign">center</property>
|
|
||||||
<property name="margin_top">18</property>
|
|
||||||
<property name="margin_bottom">18</property>
|
|
||||||
<property name="entry">keypad_entry</property>
|
|
||||||
</object>
|
|
||||||
<packing>
|
|
||||||
<property name="expand">False</property>
|
|
||||||
<property name="fill">True</property>
|
|
||||||
</packing>
|
|
||||||
</child>
|
|
||||||
<child>
|
|
||||||
<object class="GtkBox">
|
|
||||||
<property name="visible" bind-source="CallsNewCallBox" bind-property="numeric-input-only" bind-flags="sync-create"/>
|
|
||||||
<property name="orientation">horizontal</property>
|
|
||||||
<child type="center">
|
|
||||||
<object class="GtkButton" id="dial">
|
|
||||||
<property name="always_show_image">True</property>
|
|
||||||
<property name="receives_default">True</property>
|
|
||||||
<property name="visible">True</property>
|
|
||||||
<signal name="clicked" handler="dial_clicked_cb" swapped="yes"/>
|
|
||||||
<style>
|
|
||||||
<class name="suggested-action"/>
|
|
||||||
<class name="image-button"/>
|
|
||||||
<class name="dial-button"/>
|
|
||||||
</style>
|
|
||||||
<child internal-child="accessible">
|
|
||||||
<object class="AtkObject" id="a11y-dial">
|
|
||||||
<property name="accessible-name" translatable="yes">Dial</property>
|
|
||||||
</object>
|
|
||||||
</child>
|
|
||||||
<child>
|
|
||||||
<object class="GtkImage" id="back_image">
|
|
||||||
<property name="visible">True</property>
|
|
||||||
<property name="icon-name">call-start-symbolic</property>
|
|
||||||
<property name="icon-size">5</property>
|
|
||||||
</object>
|
|
||||||
</child>
|
|
||||||
</object>
|
|
||||||
</child>
|
|
||||||
<child>
|
|
||||||
<object class="GtkButton" id="backspace">
|
|
||||||
<property name="always_show_image">True</property>
|
|
||||||
<property name="visible">True</property>
|
|
||||||
<property name="focus-on-click">False</property>
|
|
||||||
<property name="margin_right">15</property>
|
|
||||||
<property name="valign">center</property>
|
|
||||||
<property name="halign">center</property>
|
|
||||||
<signal name="clicked" handler="backspace_clicked_cb" swapped="yes"/>
|
|
||||||
<child internal-child="accessible">
|
|
||||||
<object class="AtkObject" id="a11y-backspace">
|
|
||||||
<property name="accessible-name" translatable="yes">Delete character in front of cursor</property>
|
|
||||||
</object>
|
|
||||||
</child>
|
|
||||||
<style>
|
|
||||||
<class name="delete-button"/>
|
|
||||||
</style>
|
|
||||||
<child>
|
|
||||||
<object class="GtkImage">
|
|
||||||
<property name="visible">True</property>
|
|
||||||
<property name="icon-name">edit-clear-symbolic</property>
|
|
||||||
</object>
|
|
||||||
</child>
|
|
||||||
</object>
|
|
||||||
<packing>
|
|
||||||
<property name="pack_type">end</property>
|
|
||||||
</packing>
|
|
||||||
</child>
|
|
||||||
</object>
|
</object>
|
||||||
</child>
|
</child>
|
||||||
<child>
|
<child>
|
||||||
|
@ -178,11 +91,5 @@
|
||||||
</child>
|
</child>
|
||||||
</object>
|
</object>
|
||||||
</child>
|
</child>
|
||||||
</object>
|
|
||||||
</child>
|
|
||||||
</template>
|
</template>
|
||||||
<object class="GtkGestureLongPress" id="long_press_back_gesture">
|
|
||||||
<property name="widget">backspace</property>
|
|
||||||
<signal name="pressed" handler="long_press_back_cb" object="CallsNewCallBox" swapped="true"/>
|
|
||||||
</object>
|
|
||||||
</interface>
|
</interface>
|
||||||
|
|
Loading…
Reference in a new issue