Blame telepathy-account-widgets/tp-account-widgets/tpaw-irc-server.c

Packit 79f644
/*
Packit 79f644
 * Copyright (C) 2007-2008 Guillaume Desmottes
Packit 79f644
 *
Packit 79f644
 * This library is free software; you can redistribute it and/or
Packit 79f644
 * modify it under the terms of the GNU Lesser General Public
Packit 79f644
 * License as published by the Free Software Foundation; either
Packit 79f644
 * version 2.1 of the License, or (at your option) any later version.
Packit 79f644
 *
Packit 79f644
 * This library is distributed in the hope that it will be useful,
Packit 79f644
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
Packit 79f644
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
Packit 79f644
 * Lesser General Public License for more details.
Packit 79f644
 *
Packit 79f644
 * You should have received a copy of the GNU Lesser General Public
Packit 79f644
 * License along with this library; if not, write to the Free Software
Packit 79f644
 * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
Packit 79f644
 *
Packit 79f644
 * Authors: Guillaume Desmottes <gdesmott@gnome.org>
Packit 79f644
 */
Packit 79f644
Packit 79f644
#include "config.h"
Packit 79f644
#include "tpaw-irc-server.h"
Packit 79f644
Packit 79f644
#include "tpaw-utils.h"
Packit 79f644
Packit 79f644
struct _TpawIrcServerPriv
Packit 79f644
{
Packit 79f644
  gchar *address;
Packit 79f644
  guint port;
Packit 79f644
  gboolean ssl;
Packit 79f644
};
Packit 79f644
Packit 79f644
/* properties */
Packit 79f644
enum
Packit 79f644
{
Packit 79f644
  PROP_ADDRESS = 1,
Packit 79f644
  PROP_PORT,
Packit 79f644
  PROP_SSL,
Packit 79f644
  LAST_PROPERTY
Packit 79f644
};
Packit 79f644
Packit 79f644
/* signals */
Packit 79f644
enum
Packit 79f644
{
Packit 79f644
  MODIFIED,
Packit 79f644
  LAST_SIGNAL
Packit 79f644
};
Packit 79f644
Packit 79f644
static guint signals[LAST_SIGNAL] = {0};
Packit 79f644
Packit 79f644
G_DEFINE_TYPE (TpawIrcServer, tpaw_irc_server, G_TYPE_OBJECT);
Packit 79f644
Packit 79f644
static void
Packit 79f644
tpaw_irc_server_get_property (GObject *object,
Packit 79f644
                                 guint property_id,
Packit 79f644
                                 GValue *value,
Packit 79f644
                                 GParamSpec *pspec)
Packit 79f644
{
Packit 79f644
  TpawIrcServer *self = TPAW_IRC_SERVER (object);
Packit 79f644
Packit 79f644
  switch (property_id)
Packit 79f644
    {
Packit 79f644
      case PROP_ADDRESS:
Packit 79f644
        g_value_set_string (value, self->priv->address);
Packit 79f644
        break;
Packit 79f644
      case PROP_PORT:
Packit 79f644
        g_value_set_uint (value, self->priv->port);
Packit 79f644
        break;
Packit 79f644
      case PROP_SSL:
Packit 79f644
        g_value_set_boolean (value, self->priv->ssl);
Packit 79f644
        break;
Packit 79f644
      default:
Packit 79f644
        G_OBJECT_WARN_INVALID_PROPERTY_ID (object, property_id, pspec);
Packit 79f644
        break;
Packit 79f644
    }
Packit 79f644
}
Packit 79f644
Packit 79f644
static void
Packit 79f644
tpaw_irc_server_set_property (GObject *object,
Packit 79f644
                                 guint property_id,
Packit 79f644
                                 const GValue *value,
Packit 79f644
                                 GParamSpec *pspec)
Packit 79f644
{
Packit 79f644
  TpawIrcServer *self = TPAW_IRC_SERVER (object);
Packit 79f644
Packit 79f644
  switch (property_id)
Packit 79f644
    {
Packit 79f644
      case PROP_ADDRESS:
Packit 79f644
        if (tp_strdiff (self->priv->address, g_value_get_string (value)))
Packit 79f644
          {
Packit 79f644
            g_free (self->priv->address);
Packit 79f644
            self->priv->address = g_value_dup_string (value);
Packit 79f644
            g_signal_emit (object, signals[MODIFIED], 0);
Packit 79f644
          }
Packit 79f644
        break;
Packit 79f644
      case PROP_PORT:
Packit 79f644
        if (self->priv->port != g_value_get_uint (value))
Packit 79f644
          {
Packit 79f644
            self->priv->port = g_value_get_uint (value);
Packit 79f644
            g_signal_emit (object, signals[MODIFIED], 0);
Packit 79f644
          }
Packit 79f644
        break;
Packit 79f644
      case PROP_SSL:
Packit 79f644
        if (self->priv->ssl != g_value_get_boolean (value))
Packit 79f644
          {
Packit 79f644
            self->priv->ssl = g_value_get_boolean (value);
Packit 79f644
            g_signal_emit (object, signals[MODIFIED], 0);
Packit 79f644
          }
Packit 79f644
        break;
Packit 79f644
      default:
Packit 79f644
        G_OBJECT_WARN_INVALID_PROPERTY_ID (object, property_id, pspec);
Packit 79f644
        break;
Packit 79f644
    }
Packit 79f644
}
Packit 79f644
Packit 79f644
static void
Packit 79f644
tpaw_irc_server_finalize (GObject *object)
Packit 79f644
{
Packit 79f644
  TpawIrcServer *self = TPAW_IRC_SERVER (object);
Packit 79f644
Packit 79f644
  g_free (self->priv->address);
Packit 79f644
Packit 79f644
  G_OBJECT_CLASS (tpaw_irc_server_parent_class)->finalize (object);
Packit 79f644
}
Packit 79f644
Packit 79f644
static void
Packit 79f644
tpaw_irc_server_init (TpawIrcServer *self)
Packit 79f644
{
Packit 79f644
  self->priv = G_TYPE_INSTANCE_GET_PRIVATE (self, TPAW_TYPE_IRC_SERVER,
Packit 79f644
      TpawIrcServerPriv);
Packit 79f644
}
Packit 79f644
Packit 79f644
static void
Packit 79f644
tpaw_irc_server_class_init (TpawIrcServerClass *klass)
Packit 79f644
{
Packit 79f644
  GObjectClass *object_class = G_OBJECT_CLASS (klass);
Packit 79f644
  GParamSpec *param_spec;
Packit 79f644
Packit 79f644
  object_class->get_property = tpaw_irc_server_get_property;
Packit 79f644
  object_class->set_property = tpaw_irc_server_set_property;
Packit 79f644
Packit 79f644
  g_type_class_add_private (object_class, sizeof (TpawIrcServerPriv));
Packit 79f644
Packit 79f644
  object_class->finalize = tpaw_irc_server_finalize;
Packit 79f644
Packit 79f644
  param_spec = g_param_spec_string (
Packit 79f644
      "address",
Packit 79f644
      "Server address",
Packit 79f644
      "The address of this server",
Packit 79f644
      NULL,
Packit 79f644
      G_PARAM_READWRITE |
Packit 79f644
      G_PARAM_STATIC_NAME |
Packit 79f644
      G_PARAM_STATIC_NICK |
Packit 79f644
      G_PARAM_STATIC_BLURB);
Packit 79f644
  g_object_class_install_property (object_class, PROP_ADDRESS, param_spec);
Packit 79f644
Packit 79f644
  param_spec = g_param_spec_uint (
Packit 79f644
      "port",
Packit 79f644
      "Server port",
Packit 79f644
      "The port to use to connect on this server",
Packit 79f644
      1, G_MAXUINT16, 6667,
Packit 79f644
      G_PARAM_READWRITE |
Packit 79f644
      G_PARAM_STATIC_NAME |
Packit 79f644
      G_PARAM_STATIC_NICK |
Packit 79f644
      G_PARAM_STATIC_BLURB);
Packit 79f644
  g_object_class_install_property (object_class, PROP_PORT, param_spec);
Packit 79f644
Packit 79f644
  param_spec = g_param_spec_boolean (
Packit 79f644
      "ssl",
Packit 79f644
      "SSL",
Packit 79f644
      "If this server needs SSL connection",
Packit 79f644
      FALSE,
Packit 79f644
      G_PARAM_READWRITE |
Packit 79f644
      G_PARAM_STATIC_NAME |
Packit 79f644
      G_PARAM_STATIC_NICK |
Packit 79f644
      G_PARAM_STATIC_BLURB);
Packit 79f644
  g_object_class_install_property (object_class, PROP_SSL, param_spec);
Packit 79f644
Packit 79f644
  /**
Packit 79f644
   * TpawIrcServer::modified:
Packit 79f644
   * @server: the object that received the signal
Packit 79f644
   *
Packit 79f644
   * Emitted when a property of the server is modified.
Packit 79f644
   *
Packit 79f644
   */
Packit 79f644
  signals[MODIFIED] = g_signal_new (
Packit 79f644
      "modified",
Packit 79f644
      G_OBJECT_CLASS_TYPE (object_class),
Packit 79f644
      G_SIGNAL_RUN_LAST | G_SIGNAL_DETAILED,
Packit 79f644
      0,
Packit 79f644
      NULL, NULL,
Packit 79f644
      g_cclosure_marshal_generic,
Packit 79f644
      G_TYPE_NONE, 0);
Packit 79f644
}
Packit 79f644
Packit 79f644
/**
Packit 79f644
 * tpaw_irc_server_new:
Packit 79f644
 * @address: the address
Packit 79f644
 * @port: the port
Packit 79f644
 * @ssl: %TRUE if the server needs a SSL connection
Packit 79f644
 *
Packit 79f644
 * Creates a new #TpawIrcServer
Packit 79f644
 *
Packit 79f644
 * Returns: a new #TpawIrcServer
Packit 79f644
 */
Packit 79f644
TpawIrcServer *
Packit 79f644
tpaw_irc_server_new (const gchar *address,
Packit 79f644
                        guint port,
Packit 79f644
                        gboolean ssl)
Packit 79f644
{
Packit 79f644
  return g_object_new (TPAW_TYPE_IRC_SERVER,
Packit 79f644
      "address", address,
Packit 79f644
      "port", port,
Packit 79f644
      "ssl", ssl,
Packit 79f644
      NULL);
Packit 79f644
}