2
* Copyright (C) 2007-2008 Guillaume Desmottes
4
* This library is free software; you can redistribute it and/or
5
* modify it under the terms of the GNU Lesser General Public
6
* License as published by the Free Software Foundation; either
7
* version 2.1 of the License, or (at your option) any later version.
9
* This library is distributed in the hope that it will be useful,
10
* but WITHOUT ANY WARRANTY; without even the implied warranty of
11
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
12
* Lesser General Public License for more details.
14
* You should have received a copy of the GNU Lesser General Public
15
* License along with this library; if not, write to the Free Software
16
* Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
18
* Authors: Guillaume Desmottes <gdesmott@gnome.org>
25
#include <glib/gi18n.h>
27
#include <telepathy-glib/util.h>
29
#include "empathy-marshal.h"
30
#include "empathy-irc-server.h"
32
G_DEFINE_TYPE (EmpathyIrcServer, empathy_irc_server, G_TYPE_OBJECT);
50
static guint signals[LAST_SIGNAL] = {0};
52
typedef struct _EmpathyIrcServerPrivate EmpathyIrcServerPrivate;
54
struct _EmpathyIrcServerPrivate
61
#define EMPATHY_IRC_SERVER_GET_PRIVATE(obj)\
62
((EmpathyIrcServerPrivate *) obj->priv)
65
empathy_irc_server_get_property (GObject *object,
70
EmpathyIrcServer *self = EMPATHY_IRC_SERVER (object);
71
EmpathyIrcServerPrivate *priv = EMPATHY_IRC_SERVER_GET_PRIVATE (self);
76
g_value_set_string (value, priv->address);
79
g_value_set_uint (value, priv->port);
82
g_value_set_boolean (value, priv->ssl);
85
G_OBJECT_WARN_INVALID_PROPERTY_ID (object, property_id, pspec);
91
empathy_irc_server_set_property (GObject *object,
96
EmpathyIrcServer *self = EMPATHY_IRC_SERVER (object);
97
EmpathyIrcServerPrivate *priv = EMPATHY_IRC_SERVER_GET_PRIVATE (self);
102
if (tp_strdiff (priv->address, g_value_get_string (value)))
104
g_free (priv->address);
105
priv->address = g_value_dup_string (value);
106
g_signal_emit (object, signals[MODIFIED], 0);
110
if (priv->port != g_value_get_uint (value))
112
priv->port = g_value_get_uint (value);
113
g_signal_emit (object, signals[MODIFIED], 0);
117
if (priv->ssl != g_value_get_boolean (value))
119
priv->ssl = g_value_get_boolean (value);
120
g_signal_emit (object, signals[MODIFIED], 0);
124
G_OBJECT_WARN_INVALID_PROPERTY_ID (object, property_id, pspec);
130
empathy_irc_server_finalize (GObject *object)
132
EmpathyIrcServer *self = EMPATHY_IRC_SERVER (object);
133
EmpathyIrcServerPrivate *priv = EMPATHY_IRC_SERVER_GET_PRIVATE (self);
135
g_free (priv->address);
137
G_OBJECT_CLASS (empathy_irc_server_parent_class)->finalize (object);
141
empathy_irc_server_init (EmpathyIrcServer *self)
143
EmpathyIrcServerPrivate *priv = G_TYPE_INSTANCE_GET_PRIVATE (self,
144
EMPATHY_TYPE_IRC_SERVER, EmpathyIrcServerPrivate);
150
empathy_irc_server_class_init (EmpathyIrcServerClass *klass)
152
GObjectClass *object_class = G_OBJECT_CLASS (klass);
153
GParamSpec *param_spec;
155
object_class->get_property = empathy_irc_server_get_property;
156
object_class->set_property = empathy_irc_server_set_property;
158
g_type_class_add_private (object_class,
159
sizeof (EmpathyIrcServerPrivate));
161
object_class->finalize = empathy_irc_server_finalize;
163
param_spec = g_param_spec_string (
166
"The address of this server",
169
G_PARAM_STATIC_NAME |
170
G_PARAM_STATIC_NICK |
171
G_PARAM_STATIC_BLURB);
172
g_object_class_install_property (object_class, PROP_ADDRESS, param_spec);
174
param_spec = g_param_spec_uint (
177
"The port to use to connect on this server",
178
1, G_MAXUINT16, 6667,
180
G_PARAM_STATIC_NAME |
181
G_PARAM_STATIC_NICK |
182
G_PARAM_STATIC_BLURB);
183
g_object_class_install_property (object_class, PROP_PORT, param_spec);
185
param_spec = g_param_spec_boolean (
188
"If this server needs SSL connection",
191
G_PARAM_STATIC_NAME |
192
G_PARAM_STATIC_NICK |
193
G_PARAM_STATIC_BLURB);
194
g_object_class_install_property (object_class, PROP_SSL, param_spec);
197
* EmpathyIrcServer::modified:
198
* @server: the object that received the signal
200
* Emitted when a property of the server is modified.
203
signals[MODIFIED] = g_signal_new (
205
G_OBJECT_CLASS_TYPE (object_class),
206
G_SIGNAL_RUN_LAST | G_SIGNAL_DETAILED,
209
g_cclosure_marshal_VOID__VOID,
214
* empathy_irc_server_new:
215
* @address: the address
217
* @ssl: %TRUE if the server needs a SSL connection
219
* Creates a new #EmpathyIrcServer
221
* Returns: a new #EmpathyIrcServer
224
empathy_irc_server_new (const gchar *address,
228
return g_object_new (EMPATHY_TYPE_IRC_SERVER,