1
/* -*- Mode: C; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 8 -*-
3
* Copyright (C) 2011 Richard Hughes <richard@hughsie.com>
5
* Licensed under the GNU General Public License Version 2
7
* This program is free software; you can redistribute it and/or modify
8
* it under the terms of the GNU General Public License as published by
9
* the Free Software Foundation; either version 2 of the License, or
10
* (at your option) any later version.
12
* This program is distributed in the hope that it will be useful,
13
* but WITHOUT ANY WARRANTY; without even the implied warranty of
14
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
15
* GNU General Public License for more details.
17
* You should have received a copy of the GNU General Public License
18
* along with this program; if not, write to the Free Software
19
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
24
#include <glib-object.h>
25
#include <glib/gi18n.h>
27
#include "net-object.h"
29
#define NET_OBJECT_GET_PRIVATE(o) (G_TYPE_INSTANCE_GET_PRIVATE ((o), NET_TYPE_OBJECT, NetObjectPrivate))
31
struct _NetObjectPrivate
36
GCancellable *cancellable;
38
NMRemoteSettings *remote_settings;
39
CcNetworkPanel *panel;
60
static guint signals[SIGNAL_LAST] = { 0 };
61
G_DEFINE_TYPE (NetObject, net_object, G_TYPE_OBJECT)
64
net_object_emit_changed (NetObject *object)
66
g_return_if_fail (NET_IS_OBJECT (object));
67
g_debug ("NetObject: %s emit 'changed'", object->priv->id);
68
g_signal_emit (object, signals[SIGNAL_CHANGED], 0);
72
net_object_emit_removed (NetObject *object)
74
g_return_if_fail (NET_IS_OBJECT (object));
75
g_debug ("NetObject: %s emit 'removed'", object->priv->id);
76
g_signal_emit (object, signals[SIGNAL_REMOVED], 0);
80
net_object_get_id (NetObject *object)
82
g_return_val_if_fail (NET_IS_OBJECT (object), NULL);
83
return object->priv->id;
87
net_object_set_id (NetObject *object, const gchar *id)
89
g_return_if_fail (NET_IS_OBJECT (object));
90
object->priv->id = g_strdup (id);
94
net_object_get_removable (NetObject *object)
96
g_return_val_if_fail (NET_IS_OBJECT (object), FALSE);
97
return object->priv->removable;
101
net_object_get_title (NetObject *object)
103
g_return_val_if_fail (NET_IS_OBJECT (object), NULL);
104
return object->priv->title;
108
net_object_set_title (NetObject *object, const gchar *title)
110
g_return_if_fail (NET_IS_OBJECT (object));
111
object->priv->title = g_strdup (title);
115
net_object_get_client (NetObject *object)
117
g_return_val_if_fail (NET_IS_OBJECT (object), NULL);
118
return object->priv->client;
122
net_object_get_remote_settings (NetObject *object)
124
g_return_val_if_fail (NET_IS_OBJECT (object), NULL);
125
return object->priv->remote_settings;
129
net_object_get_cancellable (NetObject *object)
131
g_return_val_if_fail (NET_IS_OBJECT (object), NULL);
132
return object->priv->cancellable;
136
net_object_get_panel (NetObject *object)
138
g_return_val_if_fail (NET_IS_OBJECT (object), NULL);
139
return object->priv->panel;
143
net_object_add_to_notebook (NetObject *object,
144
GtkNotebook *notebook,
145
GtkSizeGroup *heading_size_group)
148
NetObjectClass *klass = NET_OBJECT_GET_CLASS (object);
149
if (klass->add_to_notebook != NULL) {
150
widget = klass->add_to_notebook (object,
153
g_object_set_data_full (G_OBJECT (widget),
155
g_strdup (object->priv->id),
159
g_debug ("no klass->add_to_notebook for %s", object->priv->id);
164
net_object_delete (NetObject *object)
166
NetObjectClass *klass = NET_OBJECT_GET_CLASS (object);
167
if (klass->delete != NULL)
168
klass->delete (object);
172
net_object_refresh (NetObject *object)
174
NetObjectClass *klass = NET_OBJECT_GET_CLASS (object);
175
if (klass->refresh != NULL)
176
klass->refresh (object);
180
net_object_edit (NetObject *object)
182
NetObjectClass *klass = NET_OBJECT_GET_CLASS (object);
183
if (klass->edit != NULL)
184
klass->edit (object);
188
* net_object_get_property:
191
net_object_get_property (GObject *object_,
196
NetObject *object = NET_OBJECT (object_);
197
NetObjectPrivate *priv = object->priv;
201
g_value_set_string (value, priv->id);
204
g_value_set_string (value, priv->title);
207
g_value_set_boolean (value, priv->removable);
210
g_value_set_object (value, priv->client);
212
case PROP_REMOTE_SETTINGS:
213
g_value_set_object (value, priv->remote_settings);
215
case PROP_CANCELLABLE:
216
g_value_set_object (value, priv->cancellable);
219
g_value_set_object (value, priv->panel);
222
G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec);
228
* net_object_set_property:
231
net_object_set_property (GObject *object_,
236
NetObject *object = NET_OBJECT (object_);
237
NetObjectPrivate *priv = object->priv;
242
priv->id = g_strdup (g_value_get_string (value));
245
g_free (priv->title);
246
priv->title = g_strdup (g_value_get_string (value));
249
priv->removable = g_value_get_boolean (value);
252
priv->client = g_value_dup_object (value);
254
case PROP_REMOTE_SETTINGS:
255
priv->remote_settings = g_value_dup_object (value);
257
case PROP_CANCELLABLE:
258
priv->cancellable = g_value_dup_object (value);
261
priv->panel = g_value_dup_object (value);
264
G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec);
270
net_object_finalize (GObject *object)
272
NetObject *nm_object = NET_OBJECT (object);
273
NetObjectPrivate *priv = nm_object->priv;
276
g_free (priv->title);
277
if (priv->client != NULL)
278
g_object_unref (priv->client);
279
if (priv->remote_settings != NULL)
280
g_object_unref (priv->remote_settings);
281
if (priv->cancellable != NULL)
282
g_object_unref (priv->cancellable);
283
if (priv->panel != NULL)
284
g_object_unref (priv->panel);
285
G_OBJECT_CLASS (net_object_parent_class)->finalize (object);
289
net_object_class_init (NetObjectClass *klass)
292
GObjectClass *object_class = G_OBJECT_CLASS (klass);
293
object_class->finalize = net_object_finalize;
294
object_class->get_property = net_object_get_property;
295
object_class->set_property = net_object_set_property;
297
pspec = g_param_spec_string ("id", NULL, NULL,
300
g_object_class_install_property (object_class, PROP_ID, pspec);
302
pspec = g_param_spec_string ("title", NULL, NULL,
305
g_object_class_install_property (object_class, PROP_TITLE, pspec);
307
pspec = g_param_spec_boolean ("removable", NULL, NULL,
309
G_PARAM_READWRITE | G_PARAM_CONSTRUCT);
310
g_object_class_install_property (object_class, PROP_REMOVABLE, pspec);
312
pspec = g_param_spec_object ("client", NULL, NULL,
314
G_PARAM_READWRITE | G_PARAM_CONSTRUCT);
315
g_object_class_install_property (object_class, PROP_CLIENT, pspec);
317
pspec = g_param_spec_object ("remote-settings", NULL, NULL,
318
NM_TYPE_REMOTE_SETTINGS,
319
G_PARAM_READWRITE | G_PARAM_CONSTRUCT);
320
g_object_class_install_property (object_class, PROP_REMOTE_SETTINGS, pspec);
322
pspec = g_param_spec_object ("cancellable", NULL, NULL,
324
G_PARAM_READWRITE | G_PARAM_CONSTRUCT);
325
g_object_class_install_property (object_class, PROP_CANCELLABLE, pspec);
327
pspec = g_param_spec_object ("panel", NULL, NULL,
328
CC_TYPE_NETWORK_PANEL,
329
G_PARAM_READWRITE | G_PARAM_CONSTRUCT);
330
g_object_class_install_property (object_class, PROP_PANEL, pspec);
332
signals[SIGNAL_CHANGED] =
333
g_signal_new ("changed",
334
G_TYPE_FROM_CLASS (object_class), G_SIGNAL_RUN_LAST,
335
G_STRUCT_OFFSET (NetObjectClass, changed),
336
NULL, NULL, g_cclosure_marshal_VOID__VOID,
338
signals[SIGNAL_REMOVED] =
339
g_signal_new ("removed",
340
G_TYPE_FROM_CLASS (object_class), G_SIGNAL_RUN_LAST,
341
G_STRUCT_OFFSET (NetObjectClass, changed),
342
NULL, NULL, g_cclosure_marshal_VOID__VOID,
345
g_type_class_add_private (klass, sizeof (NetObjectPrivate));
349
net_object_init (NetObject *object)
351
object->priv = NET_OBJECT_GET_PRIVATE (object);