From ffa3e724dd87c92da0e5bef264f36b71fd9ce90c Mon Sep 17 00:00:00 2001 From: Julian Sparber Date: Wed, 18 Mar 2020 11:29:41 +0100 Subject: [PATCH] Use CallsManager in MainWindow and NewCallBox This removes the status message at the end of the NewCallBox, since it will be replaced by a permanent InfoBar. As a side effect this removes also the disconnect message when a call ends. Fixes: https://source.puri.sm/Librem5/calls/issues/119 --- src/calls-application.c | 1 - src/calls-main-window.c | 74 +++----------------------- src/calls-main-window.h | 2 - src/calls-new-call-box.c | 109 ++++++++------------------------------- src/calls-new-call-box.h | 4 +- src/ui/new-call-box.ui | 12 ----- 6 files changed, 29 insertions(+), 173 deletions(-) diff --git a/src/calls-application.c b/src/calls-application.c index 6cef3a5..77fd6b4 100644 --- a/src/calls-application.c +++ b/src/calls-application.c @@ -346,7 +346,6 @@ start_proper (CallsApplication *self) self->main_window = calls_main_window_new (gtk_app, - provider, G_LIST_MODEL (self->record_store), self->contacts); g_assert (self->main_window != NULL); diff --git a/src/calls-main-window.c b/src/calls-main-window.c index 7e92865..5297065 100644 --- a/src/calls-main-window.c +++ b/src/calls-main-window.c @@ -29,7 +29,7 @@ #include "calls-new-call-box.h" #include "calls-history-box.h" #include "calls-in-app-notification.h" -#include "calls-enumerate.h" +#include "calls-manager.h" #include "config.h" #include "util.h" @@ -44,7 +44,6 @@ struct _CallsMainWindow { GtkApplicationWindow parent_instance; - CallsProvider *provider; GListModel *record_store; CallsContacts *contacts; @@ -64,7 +63,6 @@ G_DEFINE_TYPE (CallsMainWindow, calls_main_window, GTK_TYPE_APPLICATION_WINDOW); enum { PROP_0, - PROP_PROVIDER, PROP_RECORD_STORE, PROP_CONTACTS, PROP_LAST_PROP, @@ -122,23 +120,6 @@ static const GActionEntry window_entries [] = }; -static void -call_message_cb (CallsMainWindow *self, const gchar *reason) -{ - g_return_if_fail (CALLS_IS_MAIN_WINDOW (self)); - - calls_in_app_notification_show (self->in_app_notification, reason); -} - -static void -call_removed_cb (CallsMainWindow *self, CallsCall *call, const gchar *reason) -{ - g_return_if_fail (CALLS_IS_MAIN_WINDOW (self)); - - calls_in_app_notification_show (self->in_app_notification, reason); -} - - static gboolean set_switcher_bar_reveal (GBinding *binding, const GValue *from_value, @@ -160,11 +141,6 @@ set_property (GObject *object, CallsMainWindow *self = CALLS_MAIN_WINDOW (object); switch (property_id) { - case PROP_PROVIDER: - g_set_object (&self->provider, - CALLS_PROVIDER (g_value_get_object (value))); - break; - case PROP_RECORD_STORE: g_set_object (&self->record_store, G_LIST_MODEL (g_value_get_object (value))); @@ -182,35 +158,6 @@ set_property (GObject *object, } -static void -set_up_provider (CallsMainWindow *self) -{ - const GType msg_obj_types[3] = - { - CALLS_TYPE_PROVIDER, - CALLS_TYPE_ORIGIN, - CALLS_TYPE_CALL - }; - CallsEnumerateParams *params; - unsigned i; - - params = calls_enumerate_params_new (self); - - for (i = 0; i < 3; ++i) - { - calls_enumerate_params_add - (params, msg_obj_types[i], "message", G_CALLBACK (call_message_cb)); - } - - calls_enumerate_params_add - (params, CALLS_TYPE_ORIGIN, "call-removed", G_CALLBACK (call_removed_cb)); - - calls_enumerate (self->provider, params); - - g_object_unref (params); -} - - static void constructed (GObject *object) { @@ -220,10 +167,14 @@ constructed (GObject *object) GtkWidget *widget; CallsHistoryBox *history; - set_up_provider (self); + // Show errors in in-app-notification + g_signal_connect_swapped (calls_manager_get_default (), + "error", + G_CALLBACK (calls_in_app_notification_show), + self->in_app_notification); // Add new call box - self->new_call = calls_new_call_box_new (self->provider); + self->new_call = calls_new_call_box_new (); widget = GTK_WIDGET (self->new_call); gtk_stack_add_titled (self->main_stack, widget, "dial-pad", _("Dial Pad")); @@ -279,7 +230,6 @@ dispose (GObject *object) g_clear_object (&self->contacts); g_clear_object (&self->record_store); - g_clear_object (&self->provider); G_OBJECT_CLASS (calls_main_window_parent_class)->dispose (object); } @@ -312,13 +262,6 @@ calls_main_window_class_init (CallsMainWindowClass *klass) object_class->constructed = constructed; object_class->dispose = dispose; - props[PROP_PROVIDER] = - g_param_spec_object ("provider", - _("Provider"), - _("An object implementing low-level call-making functionality"), - CALLS_TYPE_PROVIDER, - G_PARAM_WRITABLE | G_PARAM_CONSTRUCT_ONLY); - props[PROP_RECORD_STORE] = g_param_spec_object ("record-store", _("Record store"), @@ -358,18 +301,15 @@ calls_main_window_init (CallsMainWindow *self) CallsMainWindow * calls_main_window_new (GtkApplication *application, - CallsProvider *provider, GListModel *record_store, CallsContacts *contacts) { g_return_val_if_fail (GTK_IS_APPLICATION (application), NULL); - g_return_val_if_fail (CALLS_IS_PROVIDER (provider), NULL); g_return_val_if_fail (G_IS_LIST_MODEL (record_store), NULL); g_return_val_if_fail (CALLS_IS_CONTACTS (contacts), NULL); return g_object_new (CALLS_TYPE_MAIN_WINDOW, "application", application, - "provider", provider, "record-store", record_store, "contacts", contacts, NULL); diff --git a/src/calls-main-window.h b/src/calls-main-window.h index aa8f55a..aa0d63e 100644 --- a/src/calls-main-window.h +++ b/src/calls-main-window.h @@ -27,7 +27,6 @@ #include -#include "calls-provider.h" #include "calls-contacts.h" G_BEGIN_DECLS @@ -37,7 +36,6 @@ G_BEGIN_DECLS G_DECLARE_FINAL_TYPE (CallsMainWindow, calls_main_window, CALLS, MAIN_WINDOW, GtkApplicationWindow); CallsMainWindow *calls_main_window_new (GtkApplication *application, - CallsProvider *provider, GListModel *record_store, CallsContacts *contacts); void calls_main_window_dial (CallsMainWindow *self, diff --git a/src/calls-new-call-box.c b/src/calls-new-call-box.c index 5d3e942..6285e86 100644 --- a/src/calls-new-call-box.c +++ b/src/calls-new-call-box.c @@ -23,7 +23,7 @@ */ #include "calls-new-call-box.h" -#include "calls-enumerate.h" +#include "calls-manager.h" #include #define HANDY_USE_UNSTABLE_API @@ -39,7 +39,6 @@ struct _CallsNewCallBox GtkButton *backspace; HdyKeypad *keypad; GtkButton *dial; - GtkLabel *status; GList *dial_queue; }; @@ -47,14 +46,6 @@ struct _CallsNewCallBox G_DEFINE_TYPE (CallsNewCallBox, calls_new_call_box, GTK_TYPE_BOX); -enum { - PROP_0, - PROP_PROVIDER, - PROP_LAST_PROP, -}; -static GParamSpec *props[PROP_LAST_PROP]; - - enum { ORIGIN_STORE_COLUMN_NAME, ORIGIN_STORE_COLUMN_ORIGIN @@ -102,21 +93,6 @@ dial_clicked_cb (CallsNewCallBox *self) } -void -notify_status_cb (CallsNewCallBox *self, - GParamSpec *pspec, - CallsProvider *provider) -{ - gchar *status; - - g_assert (CALLS_IS_PROVIDER (provider)); - - status = calls_provider_get_status (provider); - gtk_label_set_text (self->status, status); - g_free (status); -} - - static void dial_queued_cb (gchar *target, CallsOrigin *origin) @@ -169,14 +145,12 @@ update_origin_box (CallsNewCallBox *self) { gtk_widget_hide (GTK_WIDGET (self->origin_box)); gtk_widget_set_sensitive (GTK_WIDGET (self->dial), FALSE); - gtk_widget_set_visible (GTK_WIDGET (self->status), TRUE); return; } /* We know there is at least one origin. */ gtk_widget_set_sensitive (GTK_WIDGET (self->dial), TRUE); - gtk_widget_set_visible (GTK_WIDGET (self->status), FALSE); if (!gtk_tree_model_iter_next (origin_store, &iter)) { @@ -245,55 +219,29 @@ remove_origins (CallsNewCallBox *self) } -static void -set_provider (CallsNewCallBox *self, CallsProvider *provider) -{ - CallsEnumerateParams *params; - - params = calls_enumerate_params_new (self); - -#define add(detail,cb) \ - calls_enumerate_params_add \ - (params, CALLS_TYPE_PROVIDER, detail, \ - G_CALLBACK (cb)); - - add ("notify::status", notify_status_cb); - add ("origin-added", add_origin); - add ("origin-removed", remove_origin); - -#undef add - - calls_enumerate (provider, params); - - g_object_unref (params); -} - -static void -set_property (GObject *object, - guint property_id, - const GValue *value, - GParamSpec *pspec) -{ - CallsNewCallBox *self = CALLS_NEW_CALL_BOX (object); - - switch (property_id) - { - case PROP_PROVIDER: - set_provider (self, CALLS_PROVIDER (g_value_get_object (value))); - break; - - default: - G_OBJECT_WARN_INVALID_PROPERTY_ID (object, property_id, pspec); - break; - } -} - - static void calls_new_call_box_init (CallsNewCallBox *self) { + g_autoptr (GList) origins = NULL; + GList *o; + gtk_widget_init_template (GTK_WIDGET (self)); + g_signal_connect_swapped (calls_manager_get_default (), + "origin-add", + G_CALLBACK (add_origin), + self); + + g_signal_connect_swapped (calls_manager_get_default (), + "origin-remove", + G_CALLBACK (remove_origin), + self); + + origins = calls_manager_get_origins (calls_manager_get_default ()); + for (o = origins; o != NULL; o = o->next) { + add_origin (self, o->data); + } + update_origin_box (self); } @@ -320,38 +268,23 @@ calls_new_call_box_class_init (CallsNewCallBoxClass *klass) GObjectClass *object_class = G_OBJECT_CLASS (klass); GtkWidgetClass *widget_class = GTK_WIDGET_CLASS (klass); - object_class->set_property = set_property; object_class->dispose = dispose; - - props[PROP_PROVIDER] = - g_param_spec_object ("provider", - _("Provider"), - _("An object implementing low-level call-making functionality"), - CALLS_TYPE_PROVIDER, - G_PARAM_WRITABLE | G_PARAM_CONSTRUCT_ONLY); - - g_object_class_install_properties (object_class, PROP_LAST_PROP, props); - - gtk_widget_class_set_template_from_resource (widget_class, "/sm/puri/calls/ui/new-call-box.ui"); gtk_widget_class_bind_template_child (widget_class, CallsNewCallBox, origin_store); gtk_widget_class_bind_template_child (widget_class, CallsNewCallBox, origin_box); gtk_widget_class_bind_template_child (widget_class, CallsNewCallBox, backspace); 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, status); gtk_widget_class_bind_template_callback (widget_class, dial_clicked_cb); gtk_widget_class_bind_template_callback (widget_class, backspace_clicked_cb); } CallsNewCallBox * -calls_new_call_box_new (CallsProvider *provider) +calls_new_call_box_new (void) { - return g_object_new (CALLS_TYPE_NEW_CALL_BOX, - "provider", provider, - NULL); + return g_object_new (CALLS_TYPE_NEW_CALL_BOX, NULL); } diff --git a/src/calls-new-call-box.h b/src/calls-new-call-box.h index 3ee483a..6b0f069 100644 --- a/src/calls-new-call-box.h +++ b/src/calls-new-call-box.h @@ -25,8 +25,6 @@ #ifndef CALLS_NEW_CALL_BOX_H__ #define CALLS_NEW_CALL_BOX_H__ -#include "calls-provider.h" - #include G_BEGIN_DECLS @@ -35,7 +33,7 @@ G_BEGIN_DECLS G_DECLARE_FINAL_TYPE (CallsNewCallBox, calls_new_call_box, CALLS, NEW_CALL_BOX, GtkBox); -CallsNewCallBox * calls_new_call_box_new (CallsProvider *provider); +CallsNewCallBox * calls_new_call_box_new (void); void calls_new_call_box_dial (CallsNewCallBox *self, const gchar *target); diff --git a/src/ui/new-call-box.ui b/src/ui/new-call-box.ui index 21db7d1..983f43d 100644 --- a/src/ui/new-call-box.ui +++ b/src/ui/new-call-box.ui @@ -145,17 +145,5 @@ - - - True - False - True - - - False - True - 16 - -