From e980b192d85a467cdb48d2f36ccdae5702e4b16e Mon Sep 17 00:00:00 2001 From: Felipe Borges Date: Tue, 1 Nov 2016 14:25:21 +0100 Subject: [PATCH] printers: Make PpSamba a derivated class of PpHost https://bugzilla.gnome.org/show_bug.cgi?id=760783 --- panels/printers/pp-host.c | 4 +--- panels/printers/pp-samba.c | 43 ++++++++++++-------------------------- panels/printers/pp-samba.h | 5 +++-- 3 files changed, 17 insertions(+), 35 deletions(-) diff --git a/panels/printers/pp-host.c b/panels/printers/pp-host.c index e54ba6dc1..8af77e9a9 100644 --- a/panels/printers/pp-host.c +++ b/panels/printers/pp-host.c @@ -30,7 +30,7 @@ struct _PpHostPrivate gint port; }; -G_DEFINE_TYPE (PpHost, pp_host, G_TYPE_OBJECT); +G_DEFINE_TYPE_WITH_PRIVATE (PpHost, pp_host, G_TYPE_OBJECT); enum { PROP_0 = 0, @@ -113,8 +113,6 @@ pp_host_class_init (PpHostClass *klass) { GObjectClass *gobject_class = G_OBJECT_CLASS (klass); - g_type_class_add_private (klass, sizeof (PpHostPrivate)); - gobject_class->set_property = pp_host_set_property; gobject_class->get_property = pp_host_get_property; gobject_class->finalize = pp_host_finalize; diff --git a/panels/printers/pp-samba.c b/panels/printers/pp-samba.c index 0aa0363bc..eef3bf722 100644 --- a/panels/printers/pp-samba.c +++ b/panels/printers/pp-samba.c @@ -33,16 +33,13 @@ struct _PpSambaPrivate { GtkWindow *parent; - - gchar *hostname; }; -G_DEFINE_TYPE (PpSamba, pp_samba, G_TYPE_OBJECT); +G_DEFINE_TYPE (PpSamba, pp_samba, PP_TYPE_HOST); enum { PROP_0 = 0, - PROP_HOSTNAME, PROP_PARENT, }; @@ -53,7 +50,6 @@ pp_samba_finalize (GObject *object) priv = PP_SAMBA (object)->priv; - g_free (priv->hostname); g_object_unref (priv->parent); G_OBJECT_CLASS (pp_samba_parent_class)->finalize (object); @@ -69,9 +65,6 @@ pp_samba_get_property (GObject *object, switch (prop_id) { - case PROP_HOSTNAME: - g_value_set_string (value, self->priv->hostname); - break; case PROP_PARENT: g_value_set_pointer (value, self->priv->parent); break; @@ -93,10 +86,6 @@ pp_samba_set_property (GObject *object, switch (prop_id) { - case PROP_HOSTNAME: - g_free (self->priv->hostname); - self->priv->hostname = g_value_dup_string (value); - break; case PROP_PARENT: if (self->priv->parent) g_object_unref (self->priv->parent); @@ -121,16 +110,6 @@ pp_samba_class_init (PpSambaClass *klass) gobject_class->get_property = pp_samba_get_property; gobject_class->finalize = pp_samba_finalize; - /* - * Used for searching on specific host. - */ - g_object_class_install_property (gobject_class, PROP_HOSTNAME, - g_param_spec_string ("hostname", - "Hostname", - "The hostname to search", - NULL, - G_PARAM_READWRITE)); - /* * Used for authentication dialog. */ @@ -459,15 +438,12 @@ _pp_samba_get_devices_thread (GSimpleAsyncResult *res, GObject *object, GCancellable *cancellable) { - PpSambaPrivate *priv; static GMutex mutex; - PpSamba *samba = PP_SAMBA (object); SMBData *data; SMBCCTX *smb_context; gchar *dirname; gchar *path; - - priv = samba->priv; + gchar *hostname = NULL; data = g_simple_async_result_get_op_res_gpointer (res); data->devices = g_new0 (PpDevicesList, 1); @@ -482,10 +458,13 @@ _pp_samba_get_devices_thread (GSimpleAsyncResult *res, { smbc_setOptionUserData (smb_context, data); - if (priv->hostname) + g_object_get (object, "hostname", &hostname, NULL); + if (hostname != NULL) { - dirname = g_strdup_printf ("smb://%s", priv->hostname); - path = g_strdup_printf ("//%s", priv->hostname); + dirname = g_strdup_printf ("smb://%s", hostname); + path = g_strdup_printf ("//%s", hostname); + + g_free (hostname); } else { @@ -516,12 +495,15 @@ pp_samba_get_devices_async (PpSamba *samba, GSimpleAsyncResult *res; PpSambaPrivate *priv = samba->priv; SMBData *data; + gchar *hostname = NULL; + + g_object_get (G_OBJECT (samba), "hostname", &hostname, NULL); res = g_simple_async_result_new (G_OBJECT (samba), callback, user_data, pp_samba_get_devices_async); data = g_new0 (SMBData, 1); data->devices = NULL; data->context = g_main_context_default (); - data->hostname_set = priv->hostname != NULL; + data->hostname_set = hostname != NULL; data->parent = g_object_ref (priv->parent); data->auth_if_needed = auth_if_needed; @@ -529,6 +511,7 @@ pp_samba_get_devices_async (PpSamba *samba, g_simple_async_result_set_op_res_gpointer (res, data, (GDestroyNotify) smb_data_free); g_simple_async_result_run_in_thread (res, _pp_samba_get_devices_thread, 0, cancellable); + g_free (hostname); g_object_unref (res); } diff --git a/panels/printers/pp-samba.h b/panels/printers/pp-samba.h index 03852314e..7df00561d 100644 --- a/panels/printers/pp-samba.h +++ b/panels/printers/pp-samba.h @@ -21,6 +21,7 @@ #ifndef __PP_SAMBA_H__ #define __PP_SAMBA_H__ +#include "pp-host.h" #include "pp-utils.h" G_BEGIN_DECLS @@ -38,13 +39,13 @@ typedef struct _PpSambaPrivate PpSambaPrivate; struct _PpSamba { - GObject parent_instance; + PpHost parent_instance; PpSambaPrivate *priv; }; struct _PpSambaClass { - GObjectClass parent_class; + PpHostClass parent_class; }; GType pp_samba_get_type (void) G_GNUC_CONST;