diff --git a/src/calls-new-call-box.c b/src/calls-new-call-box.c index 811b1f6..a2ae659 100644 --- a/src/calls-new-call-box.c +++ b/src/calls-new-call-box.c @@ -49,6 +49,8 @@ struct _CallsNewCallBox GtkButton *backspace; HdyKeypad *keypad; GtkButton *dial; + GtkEntry *address_entry; + GtkButton *dial_result; GtkGestureLongPress *long_press_back_gesture; GList *dial_queue; @@ -59,6 +61,23 @@ struct _CallsNewCallBox G_DEFINE_TYPE (CallsNewCallBox, calls_new_call_box, GTK_TYPE_BOX); +static CallsOrigin * +get_selected_origin (CallsNewCallBox *self) +{ + g_autoptr (CallsOrigin) origin = NULL; + GListModel *model = hdy_combo_row_get_model (self->origin_list); + gint index = -1; + + if (model) + index = hdy_combo_row_get_selected_index (self->origin_list); + + if (model && index >= 0) + origin = g_list_model_get_item (model, index); + + return origin; +} + + static CallsOrigin * get_origin (CallsNewCallBox *self, const char *target) @@ -66,7 +85,6 @@ get_origin (CallsNewCallBox *self, CallsApplication *app = CALLS_APPLICATION (g_application_get_default ()); g_autoptr (CallsOrigin) origin = NULL; GListModel *model; - int index = -1; gboolean auto_use_def_origin = calls_application_get_use_default_origins_setting (app); @@ -78,17 +96,10 @@ get_origin (CallsNewCallBox *self, origin = g_list_model_get_item (model, 0); return origin; + + } else { + return get_selected_origin (self); } - - model = hdy_combo_row_get_model (self->origin_list); - - if (model) - index = hdy_combo_row_get_selected_index (self->origin_list); - - if (model && index >= 0) - origin = g_list_model_get_item (model, index); - - return origin; } @@ -148,6 +159,18 @@ dial_clicked_cb (CallsNewCallBox *self) calls_new_call_box_dial (self, text); } +static void +dial_result_clicked_cb (CallsNewCallBox *self) +{ + CallsOrigin *origin = get_selected_origin (self); + const char *address = gtk_entry_get_text (self->address_entry); + + if (origin) + calls_origin_dial (origin, address); + else + g_warning ("No suitable origin found. How was this even clicked?"); +} + static void dial_queued_cb (gchar *target, @@ -284,7 +307,9 @@ calls_new_call_box_class_init (CallsNewCallBoxClass *klass) 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_callback (widget_class, dial_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); diff --git a/src/style.css b/src/style.css index 153d778..04d7b03 100644 --- a/src/style.css +++ b/src/style.css @@ -1,4 +1,4 @@ -keypad > grid > button, .dial-button, .delete-button { +keypad > grid > button, .dial-button, .delete-button .rounded-button { border-radius: 9999px; -gtk-outline-radius: 9999px; } @@ -15,6 +15,10 @@ keypad > grid > button, .dial-button, .delete-button { font-size: 24px; } +.address-entry { + font-size: 18px; +} + .error-state-message { background-color: @error_color; border-bottom: 1px solid darker(@error_color); diff --git a/src/ui/new-call-box.ui b/src/ui/new-call-box.ui index de569a3..b8a21f5 100644 --- a/src/ui/new-call-box.ui +++ b/src/ui/new-call-box.ui @@ -18,6 +18,7 @@ True none + 6 True @@ -26,13 +27,22 @@ + + + + 0.5 + + + + - True + True True 0.5 - 6 @@ -40,7 +50,7 @@ - True + 16 10 center @@ -55,7 +65,7 @@ - True + False horizontal @@ -119,6 +129,46 @@ + + + + + 16 + none + + + True + + 300 + SIP Account + + + True + True + 36 + + + + + True + True + + + + + True + call-start-symbolic + + + + + + + + + backspace