printers: Make PpSamba a derivated class of PpHost
https://bugzilla.gnome.org/show_bug.cgi?id=760783
This commit is contained in:
parent
d49182ea9f
commit
e980b192d8
3 changed files with 17 additions and 35 deletions
|
@ -30,7 +30,7 @@ struct _PpHostPrivate
|
||||||
gint port;
|
gint port;
|
||||||
};
|
};
|
||||||
|
|
||||||
G_DEFINE_TYPE (PpHost, pp_host, G_TYPE_OBJECT);
|
G_DEFINE_TYPE_WITH_PRIVATE (PpHost, pp_host, G_TYPE_OBJECT);
|
||||||
|
|
||||||
enum {
|
enum {
|
||||||
PROP_0 = 0,
|
PROP_0 = 0,
|
||||||
|
@ -113,8 +113,6 @@ pp_host_class_init (PpHostClass *klass)
|
||||||
{
|
{
|
||||||
GObjectClass *gobject_class = G_OBJECT_CLASS (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->set_property = pp_host_set_property;
|
||||||
gobject_class->get_property = pp_host_get_property;
|
gobject_class->get_property = pp_host_get_property;
|
||||||
gobject_class->finalize = pp_host_finalize;
|
gobject_class->finalize = pp_host_finalize;
|
||||||
|
|
|
@ -33,16 +33,13 @@
|
||||||
struct _PpSambaPrivate
|
struct _PpSambaPrivate
|
||||||
{
|
{
|
||||||
GtkWindow *parent;
|
GtkWindow *parent;
|
||||||
|
|
||||||
gchar *hostname;
|
|
||||||
};
|
};
|
||||||
|
|
||||||
G_DEFINE_TYPE (PpSamba, pp_samba, G_TYPE_OBJECT);
|
G_DEFINE_TYPE (PpSamba, pp_samba, PP_TYPE_HOST);
|
||||||
|
|
||||||
enum
|
enum
|
||||||
{
|
{
|
||||||
PROP_0 = 0,
|
PROP_0 = 0,
|
||||||
PROP_HOSTNAME,
|
|
||||||
PROP_PARENT,
|
PROP_PARENT,
|
||||||
};
|
};
|
||||||
|
|
||||||
|
@ -53,7 +50,6 @@ pp_samba_finalize (GObject *object)
|
||||||
|
|
||||||
priv = PP_SAMBA (object)->priv;
|
priv = PP_SAMBA (object)->priv;
|
||||||
|
|
||||||
g_free (priv->hostname);
|
|
||||||
g_object_unref (priv->parent);
|
g_object_unref (priv->parent);
|
||||||
|
|
||||||
G_OBJECT_CLASS (pp_samba_parent_class)->finalize (object);
|
G_OBJECT_CLASS (pp_samba_parent_class)->finalize (object);
|
||||||
|
@ -69,9 +65,6 @@ pp_samba_get_property (GObject *object,
|
||||||
|
|
||||||
switch (prop_id)
|
switch (prop_id)
|
||||||
{
|
{
|
||||||
case PROP_HOSTNAME:
|
|
||||||
g_value_set_string (value, self->priv->hostname);
|
|
||||||
break;
|
|
||||||
case PROP_PARENT:
|
case PROP_PARENT:
|
||||||
g_value_set_pointer (value, self->priv->parent);
|
g_value_set_pointer (value, self->priv->parent);
|
||||||
break;
|
break;
|
||||||
|
@ -93,10 +86,6 @@ pp_samba_set_property (GObject *object,
|
||||||
|
|
||||||
switch (prop_id)
|
switch (prop_id)
|
||||||
{
|
{
|
||||||
case PROP_HOSTNAME:
|
|
||||||
g_free (self->priv->hostname);
|
|
||||||
self->priv->hostname = g_value_dup_string (value);
|
|
||||||
break;
|
|
||||||
case PROP_PARENT:
|
case PROP_PARENT:
|
||||||
if (self->priv->parent)
|
if (self->priv->parent)
|
||||||
g_object_unref (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->get_property = pp_samba_get_property;
|
||||||
gobject_class->finalize = pp_samba_finalize;
|
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.
|
* Used for authentication dialog.
|
||||||
*/
|
*/
|
||||||
|
@ -459,15 +438,12 @@ _pp_samba_get_devices_thread (GSimpleAsyncResult *res,
|
||||||
GObject *object,
|
GObject *object,
|
||||||
GCancellable *cancellable)
|
GCancellable *cancellable)
|
||||||
{
|
{
|
||||||
PpSambaPrivate *priv;
|
|
||||||
static GMutex mutex;
|
static GMutex mutex;
|
||||||
PpSamba *samba = PP_SAMBA (object);
|
|
||||||
SMBData *data;
|
SMBData *data;
|
||||||
SMBCCTX *smb_context;
|
SMBCCTX *smb_context;
|
||||||
gchar *dirname;
|
gchar *dirname;
|
||||||
gchar *path;
|
gchar *path;
|
||||||
|
gchar *hostname = NULL;
|
||||||
priv = samba->priv;
|
|
||||||
|
|
||||||
data = g_simple_async_result_get_op_res_gpointer (res);
|
data = g_simple_async_result_get_op_res_gpointer (res);
|
||||||
data->devices = g_new0 (PpDevicesList, 1);
|
data->devices = g_new0 (PpDevicesList, 1);
|
||||||
|
@ -482,10 +458,13 @@ _pp_samba_get_devices_thread (GSimpleAsyncResult *res,
|
||||||
{
|
{
|
||||||
smbc_setOptionUserData (smb_context, data);
|
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);
|
dirname = g_strdup_printf ("smb://%s", hostname);
|
||||||
path = g_strdup_printf ("//%s", priv->hostname);
|
path = g_strdup_printf ("//%s", hostname);
|
||||||
|
|
||||||
|
g_free (hostname);
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
|
@ -516,12 +495,15 @@ pp_samba_get_devices_async (PpSamba *samba,
|
||||||
GSimpleAsyncResult *res;
|
GSimpleAsyncResult *res;
|
||||||
PpSambaPrivate *priv = samba->priv;
|
PpSambaPrivate *priv = samba->priv;
|
||||||
SMBData *data;
|
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);
|
res = g_simple_async_result_new (G_OBJECT (samba), callback, user_data, pp_samba_get_devices_async);
|
||||||
data = g_new0 (SMBData, 1);
|
data = g_new0 (SMBData, 1);
|
||||||
data->devices = NULL;
|
data->devices = NULL;
|
||||||
data->context = g_main_context_default ();
|
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->parent = g_object_ref (priv->parent);
|
||||||
data->auth_if_needed = auth_if_needed;
|
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_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_simple_async_result_run_in_thread (res, _pp_samba_get_devices_thread, 0, cancellable);
|
||||||
|
|
||||||
|
g_free (hostname);
|
||||||
g_object_unref (res);
|
g_object_unref (res);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -21,6 +21,7 @@
|
||||||
#ifndef __PP_SAMBA_H__
|
#ifndef __PP_SAMBA_H__
|
||||||
#define __PP_SAMBA_H__
|
#define __PP_SAMBA_H__
|
||||||
|
|
||||||
|
#include "pp-host.h"
|
||||||
#include "pp-utils.h"
|
#include "pp-utils.h"
|
||||||
|
|
||||||
G_BEGIN_DECLS
|
G_BEGIN_DECLS
|
||||||
|
@ -38,13 +39,13 @@ typedef struct _PpSambaPrivate PpSambaPrivate;
|
||||||
|
|
||||||
struct _PpSamba
|
struct _PpSamba
|
||||||
{
|
{
|
||||||
GObject parent_instance;
|
PpHost parent_instance;
|
||||||
PpSambaPrivate *priv;
|
PpSambaPrivate *priv;
|
||||||
};
|
};
|
||||||
|
|
||||||
struct _PpSambaClass
|
struct _PpSambaClass
|
||||||
{
|
{
|
||||||
GObjectClass parent_class;
|
PpHostClass parent_class;
|
||||||
};
|
};
|
||||||
|
|
||||||
GType pp_samba_get_type (void) G_GNUC_CONST;
|
GType pp_samba_get_type (void) G_GNUC_CONST;
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue