[gnome-control-center] network: Replace a callback with a signal



commit 125d971ebeaaab64efbe05d2d115a9cc18e10124
Author: Robert Ancell <robert ancell canonical com>
Date:   Thu Nov 7 13:50:45 2019 +1300

    network: Replace a callback with a signal

 .../connection-editor/ce-page-8021x-security.c     |  6 ++--
 .../network/connection-editor/ce-page-security.c   |  6 ++--
 .../network/wireless-security/wireless-security.c  | 37 +++++++++++-----------
 .../network/wireless-security/wireless-security.h  |  6 ----
 4 files changed, 24 insertions(+), 31 deletions(-)
---
diff --git a/panels/network/connection-editor/ce-page-8021x-security.c 
b/panels/network/connection-editor/ce-page-8021x-security.c
index 19f8ef3c5..2e5f57f11 100644
--- a/panels/network/connection-editor/ce-page-8021x-security.c
+++ b/panels/network/connection-editor/ce-page-8021x-security.c
@@ -59,9 +59,9 @@ enable_toggled (CEPage8021xSecurity *self)
 }
 
 static void
-stuff_changed (WirelessSecurity *sec, gpointer user_data)
+security_item_changed_cb (CEPage8021xSecurity *self)
 {
-        ce_page_changed (CE_PAGE (user_data));
+        ce_page_changed (CE_PAGE (self));
 }
 
 static void
@@ -80,7 +80,7 @@ finish_setup (CEPage8021xSecurity *self, gpointer unused, GError *error, gpointe
                return;
        }
 
-       wireless_security_set_changed_notify (WIRELESS_SECURITY (self->security), stuff_changed, self);
+        g_signal_connect_object (WIRELESS_SECURITY (self->security), "changed", G_CALLBACK 
(security_item_changed_cb), self, G_CONNECT_SWAPPED);
        self->security_widget = wireless_security_get_widget (WIRELESS_SECURITY (self->security));
        parent = gtk_widget_get_parent (self->security_widget);
        if (parent)
diff --git a/panels/network/connection-editor/ce-page-security.c 
b/panels/network/connection-editor/ce-page-security.c
index 23cfd3276..e2532696a 100644
--- a/panels/network/connection-editor/ce-page-security.c
+++ b/panels/network/connection-editor/ce-page-security.c
@@ -174,9 +174,9 @@ security_combo_changed (CEPageSecurity *self)
 }
 
 static void
-stuff_changed_cb (WirelessSecurity *sec, gpointer user_data)
+security_item_changed_cb (CEPageSecurity *self)
 {
-        ce_page_changed (CE_PAGE (user_data));
+        ce_page_changed (CE_PAGE (self));
 }
 
 static void
@@ -187,7 +187,7 @@ add_security_item (CEPageSecurity   *self,
                    const char       *text,
                    gboolean          adhoc_valid)
 {
-        wireless_security_set_changed_notify (sec, stuff_changed_cb, self);
+        g_signal_connect_object (sec, "changed", G_CALLBACK (security_item_changed_cb), self, 
G_CONNECT_SWAPPED);
         gtk_list_store_append (model, iter);
         gtk_list_store_set (model, iter,
                             S_NAME_COLUMN, text,
diff --git a/panels/network/wireless-security/wireless-security.c 
b/panels/network/wireless-security/wireless-security.c
index dbc9d346f..0fff7e218 100644
--- a/panels/network/wireless-security/wireless-security.c
+++ b/panels/network/wireless-security/wireless-security.c
@@ -36,16 +36,20 @@
 #include "utils.h"
 
 typedef struct  {
-       WSChangedFunc changed_notify;
-       gpointer changed_notify_data;
        gboolean adhoc_compatible;
-
        char *username, *password;
        gboolean always_ask, show_password;
 } WirelessSecurityPrivate;
 
 G_DEFINE_TYPE_WITH_PRIVATE (WirelessSecurity, wireless_security, G_TYPE_OBJECT)
 
+enum {
+        CHANGED,
+        LAST_SIGNAL
+};
+
+static guint signals[LAST_SIGNAL] = { 0 };
+
 static void
 wireless_security_dispose (GObject *object)
 {
@@ -77,6 +81,15 @@ wireless_security_class_init (WirelessSecurityClass *klass)
         GObjectClass *object_class = G_OBJECT_CLASS (klass);
 
        object_class->dispose = wireless_security_dispose;
+
+        signals[CHANGED] =
+                g_signal_new ("changed",
+                              G_TYPE_FROM_CLASS (object_class),
+                              G_SIGNAL_RUN_FIRST,
+                              0,
+                              NULL, NULL,
+                              g_cclosure_marshal_VOID__VOID,
+                              G_TYPE_NONE, 0);
 }
 
 GtkWidget *
@@ -87,26 +100,12 @@ wireless_security_get_widget (WirelessSecurity *self)
        return WIRELESS_SECURITY_GET_CLASS (self)->get_widget (self);
 }
 
-void
-wireless_security_set_changed_notify (WirelessSecurity *self,
-                                      WSChangedFunc func,
-                                      gpointer user_data)
-{
-       WirelessSecurityPrivate *priv = wireless_security_get_instance_private (self);
-
-       g_return_if_fail (WIRELESS_IS_SECURITY (self));
-
-       priv->changed_notify = func;
-       priv->changed_notify_data = user_data;
-}
-
 void
 wireless_security_notify_changed (WirelessSecurity *self)
 {
-       WirelessSecurityPrivate *priv = wireless_security_get_instance_private (self);
+        g_return_if_fail (WIRELESS_IS_SECURITY (self));
 
-       if (priv->changed_notify)
-               (*(priv->changed_notify)) (self, priv->changed_notify_data);
+        g_signal_emit (self, signals[CHANGED], 0);
 }
 
 gboolean
diff --git a/panels/network/wireless-security/wireless-security.h 
b/panels/network/wireless-security/wireless-security.h
index 3b82eb6c6..6604954ea 100644
--- a/panels/network/wireless-security/wireless-security.h
+++ b/panels/network/wireless-security/wireless-security.h
@@ -28,8 +28,6 @@ G_BEGIN_DECLS
 
 G_DECLARE_DERIVABLE_TYPE (WirelessSecurity, wireless_security, WIRELESS, SECURITY, GObject)
 
-typedef void (*WSChangedFunc) (WirelessSecurity *sec, gpointer user_data);
-
 struct _WirelessSecurityClass {
        GObjectClass parent_class;
 
@@ -41,10 +39,6 @@ struct _WirelessSecurityClass {
 
 GtkWidget *wireless_security_get_widget (WirelessSecurity *sec);
 
-void wireless_security_set_changed_notify (WirelessSecurity *sec,
-                                           WSChangedFunc func,
-                                           gpointer user_data);
-
 gboolean wireless_security_validate (WirelessSecurity *sec, GError **error);
 
 void wireless_security_add_to_size_group (WirelessSecurity *sec,


[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]