]> git.0d.be Git - empathy.git/commitdiff
connection-managers: move from Empathy to tp-account-widgets
authorMarco Barisione <marco.barisione@collabora.co.uk>
Wed, 8 May 2013 14:14:35 +0000 (15:14 +0100)
committerMarco Barisione <marco.barisione@collabora.co.uk>
Tue, 20 Aug 2013 10:03:05 +0000 (11:03 +0100)
https://bugzilla.gnome.org/show_bug.cgi?id=699492

14 files changed:
libempathy-gtk/empathy-protocol-chooser.c
libempathy/Makefile.am
libempathy/empathy-connection-managers.c [deleted file]
libempathy/empathy-connection-managers.h [deleted file]
src/empathy-accounts-dialog.c
src/empathy-import-dialog.c
src/empathy-import-dialog.h
src/empathy-import-utils.c
src/empathy-import-widget.c
src/empathy-import-widget.h
tp-account-widgets/Makefile.am
tp-account-widgets/tpaw-account-settings.c
tp-account-widgets/tpaw-connection-managers.c [new file with mode: 0644]
tp-account-widgets/tpaw-connection-managers.h [new file with mode: 0644]

index b2fec5e0f18f276d180e5ac930690df0d8b9d4b6..d2fec30416588eecf968e0307bc70c37846de580 100644 (file)
@@ -24,8 +24,8 @@
 #include "empathy-protocol-chooser.h"
 
 #include <glib/gi18n-lib.h>
+#include <tp-account-widgets/tpaw-connection-managers.h>
 
-#include "empathy-connection-managers.h"
 #include "empathy-ui-utils.h"
 #include "empathy-utils.h"
 
@@ -56,7 +56,7 @@ typedef struct
   GtkListStore *store;
 
   gboolean dispose_run;
-  EmpathyConnectionManagers *cms;
+  TpawConnectionManagers *cms;
 
   EmpathyProtocolChooserFilterFunc filter_func;
   gpointer filter_user_data;
@@ -301,14 +301,14 @@ protocol_chooser_cms_prepare_cb (GObject *source,
     GAsyncResult *result,
     gpointer user_data)
 {
-  EmpathyConnectionManagers *cms = EMPATHY_CONNECTION_MANAGERS (source);
+  TpawConnectionManagers *cms = TPAW_CONNECTION_MANAGERS (source);
   EmpathyProtocolChooser *protocol_chooser = user_data;
 
-  if (!empathy_connection_managers_prepare_finish (cms, result, NULL))
+  if (!tpaw_connection_managers_prepare_finish (cms, result, NULL))
     return;
 
   protocol_chooser_add_cms_list (protocol_chooser,
-      empathy_connection_managers_get_cms (cms));
+      tpaw_connection_managers_get_cms (cms));
 }
 
 static void
@@ -353,7 +353,7 @@ protocol_chooser_constructed (GObject *object)
       "text", COL_LABEL,
       NULL);
 
-  empathy_connection_managers_prepare_async (priv->cms,
+  tpaw_connection_managers_prepare_async (priv->cms,
       protocol_chooser_cms_prepare_cb, protocol_chooser);
 
   if (G_OBJECT_CLASS (empathy_protocol_chooser_parent_class)->constructed)
@@ -369,7 +369,7 @@ empathy_protocol_chooser_init (EmpathyProtocolChooser *protocol_chooser)
         EMPATHY_TYPE_PROTOCOL_CHOOSER, EmpathyProtocolChooserPriv);
 
   priv->dispose_run = FALSE;
-  priv->cms = empathy_connection_managers_dup_singleton ();
+  priv->cms = tpaw_connection_managers_dup_singleton ();
   priv->protocols = g_hash_table_new_full (g_str_hash, g_str_equal,
       g_free, g_free);
 
index d7a638859fd9399ed472a864b7387eb0d4247a97..13678a2525e6d8d09ca3e2291266a538b626d8d9 100644 (file)
@@ -32,7 +32,6 @@ libempathy_headers =                          \
        empathy-chatroom-manager.h              \
        empathy-chatroom.h                      \
        empathy-client-factory.h \
-       empathy-connection-managers.h           \
        empathy-connection-aggregator.h         \
        empathy-contact-groups.h                \
        empathy-contact.h                       \
@@ -65,7 +64,6 @@ libempathy_handwritten_source =                               \
        empathy-chatroom-manager.c                      \
        empathy-chatroom.c                              \
        empathy-client-factory.c \
-       empathy-connection-managers.c                   \
        empathy-connection-aggregator.c         \
        empathy-contact-groups.c                        \
        empathy-contact.c                               \
diff --git a/libempathy/empathy-connection-managers.c b/libempathy/empathy-connection-managers.c
deleted file mode 100644 (file)
index b94ac12..0000000
+++ /dev/null
@@ -1,349 +0,0 @@
-/*
- * empathy-connection-managers.c - Source for EmpathyConnectionManagers
- * Copyright (C) 2009 Collabora Ltd.
- * @author Sjoerd Simons <sjoerd.simons@collabora.co.uk>
- *
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Lesser General Public
- * License as published by the Free Software Foundation; either
- * version 2.1 of the License, or (at your option) any later version.
- *
- * This library is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
- * Lesser General Public License for more details.
- *
- * You should have received a copy of the GNU Lesser General Public
- * License along with this library; if not, write to the Free Software
- * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
- */
-
-#include "config.h"
-#include "empathy-connection-managers.h"
-
-#include "empathy-utils.h"
-
-#define DEBUG_FLAG EMPATHY_DEBUG_OTHER
-#include "empathy-debug.h"
-
-static GObject *managers = NULL;
-
-G_DEFINE_TYPE(EmpathyConnectionManagers, empathy_connection_managers,
-    G_TYPE_OBJECT)
-
-/* signal enum */
-enum
-{
-    UPDATED,
-    LAST_SIGNAL
-};
-
-static guint signals[LAST_SIGNAL] = {0};
-
-/* properties */
-enum {
-  PROP_READY = 1
-};
-
-#define GET_PRIV(obj) EMPATHY_GET_PRIV (obj, EmpathyConnectionManagers)
-
-
-/* private structure */
-typedef struct _EmpathyConnectionManagersPriv
-  EmpathyConnectionManagersPriv;
-
-struct _EmpathyConnectionManagersPriv
-{
-  gboolean dispose_has_run;
-  gboolean ready;
-
-  GList *cms;
-
-  TpDBusDaemon *dbus;
-};
-
-static void
-empathy_connection_managers_init (EmpathyConnectionManagers *obj)
-{
-  EmpathyConnectionManagersPriv *priv =
-    G_TYPE_INSTANCE_GET_PRIVATE ((obj), \
-      EMPATHY_TYPE_CONNECTION_MANAGERS, EmpathyConnectionManagersPriv);
-
-  obj->priv = priv;
-
-  priv->dbus = tp_dbus_daemon_dup (NULL);
-  g_assert (priv->dbus != NULL);
-
-  empathy_connection_managers_update (obj);
-
-  /* allocate any data required by the object here */
-}
-
-static void empathy_connection_managers_dispose (GObject *object);
-
-static GObject *
-empathy_connection_managers_constructor (GType type,
-                        guint n_construct_params,
-                        GObjectConstructParam *construct_params)
-{
-  if (managers != NULL)
-    return g_object_ref (managers);
-
-  managers =
-      G_OBJECT_CLASS (empathy_connection_managers_parent_class)->constructor
-          (type, n_construct_params, construct_params);
-
-  g_object_add_weak_pointer (managers, (gpointer) &managers);
-
-  return managers;
-}
-
-
-
-static void
-empathy_connection_managers_get_property (GObject *object,
-    guint prop_id,
-    GValue *value,
-    GParamSpec *pspec)
-{
-  EmpathyConnectionManagers *self = EMPATHY_CONNECTION_MANAGERS (object);
-  EmpathyConnectionManagersPriv *priv = GET_PRIV (self);
-
-  switch (prop_id)
-    {
-      case PROP_READY:
-        g_value_set_boolean (value, priv->ready);
-        break;
-      default:
-        G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec);
-        break;
-    }
-}
-
-static void
-empathy_connection_managers_class_init (
-    EmpathyConnectionManagersClass *empathy_connection_managers_class)
-{
-  GObjectClass *object_class =
-      G_OBJECT_CLASS (empathy_connection_managers_class);
-
-  g_type_class_add_private (empathy_connection_managers_class, sizeof
-      (EmpathyConnectionManagersPriv));
-
-  object_class->constructor = empathy_connection_managers_constructor;
-  object_class->dispose = empathy_connection_managers_dispose;
-  object_class->get_property = empathy_connection_managers_get_property;
-
-  g_object_class_install_property (object_class, PROP_READY,
-    g_param_spec_boolean ("ready",
-      "Ready",
-      "Whether the connection manager information is ready to be used",
-      FALSE,
-      G_PARAM_STATIC_STRINGS | G_PARAM_READABLE));
-
-  signals[UPDATED] = g_signal_new ("updated",
-    G_TYPE_FROM_CLASS (object_class),
-    G_SIGNAL_RUN_LAST,
-    0, NULL, NULL,
-    g_cclosure_marshal_generic,
-    G_TYPE_NONE, 0);
-}
-
-static void
-empathy_connection_managers_free_cm_list (EmpathyConnectionManagers *self)
-{
-  EmpathyConnectionManagersPriv *priv = GET_PRIV (self);
-  GList *l;
-
-  for (l = priv->cms ; l != NULL ; l = g_list_next (l))
-    {
-      g_object_unref (l->data);
-    }
-  g_list_free (priv->cms);
-
-  priv->cms = NULL;
-}
-
-static void
-empathy_connection_managers_dispose (GObject *object)
-{
-  EmpathyConnectionManagers *self = EMPATHY_CONNECTION_MANAGERS (object);
-  EmpathyConnectionManagersPriv *priv = GET_PRIV (self);
-
-  if (priv->dispose_has_run)
-    return;
-
-  priv->dispose_has_run = TRUE;
-
-  if (priv->dbus != NULL)
-    g_object_unref (priv->dbus);
-  priv->dbus = NULL;
-
-  empathy_connection_managers_free_cm_list (self);
-
-  /* release any references held by the object here */
-
-  if (G_OBJECT_CLASS (empathy_connection_managers_parent_class)->dispose)
-    G_OBJECT_CLASS (empathy_connection_managers_parent_class)->dispose (object);
-}
-
-EmpathyConnectionManagers *
-empathy_connection_managers_dup_singleton (void)
-{
-  return EMPATHY_CONNECTION_MANAGERS (
-      g_object_new (EMPATHY_TYPE_CONNECTION_MANAGERS, NULL));
-}
-
-gboolean
-empathy_connection_managers_is_ready (EmpathyConnectionManagers *self)
-{
-  EmpathyConnectionManagersPriv *priv = GET_PRIV (self);
-  return priv->ready;
-}
-
-static void
-empathy_connection_managers_listed_cb (GObject *source,
-    GAsyncResult *result,
-    gpointer user_data)
-{
-  TpWeakRef *wr = user_data;
-  GError *error = NULL;
-  EmpathyConnectionManagers *self = tp_weak_ref_dup_object (wr);
-  GList *cms, *l;
-  EmpathyConnectionManagersPriv *priv;
-
-  if (self == NULL)
-    {
-      tp_weak_ref_destroy (wr);
-      return;
-    }
-
-  priv = GET_PRIV (self);
-
-  empathy_connection_managers_free_cm_list (self);
-
-  cms = tp_list_connection_managers_finish (result, &error);
-  if (error != NULL)
-    {
-      DEBUG ("Failed to get connection managers: %s", error->message);
-      g_error_free (error);
-      goto out;
-    }
-
-  for (l = cms ; l != NULL; l = g_list_next (l))
-    {
-      TpConnectionManager *cm = l->data;
-
-      /* only list cms that didn't hit errors */
-      if (tp_proxy_is_prepared (cm, TP_CONNECTION_MANAGER_FEATURE_CORE))
-        priv->cms = g_list_prepend (priv->cms, g_object_ref (cm));
-    }
-
-out:
-  if (!priv->ready)
-    {
-      priv->ready = TRUE;
-      g_object_notify (G_OBJECT (self), "ready");
-    }
-
-  g_signal_emit (self, signals[UPDATED], 0);
-  g_object_unref (self);
-  tp_weak_ref_destroy (wr);
-}
-
-void
-empathy_connection_managers_update (EmpathyConnectionManagers *self)
-{
-  EmpathyConnectionManagersPriv *priv = GET_PRIV (self);
-
-  tp_list_connection_managers_async (priv->dbus,
-    empathy_connection_managers_listed_cb,
-    tp_weak_ref_new (self, NULL, NULL));
-}
-
-GList *
-empathy_connection_managers_get_cms (EmpathyConnectionManagers *self)
-{
-  EmpathyConnectionManagersPriv *priv = GET_PRIV (self);
-
-  return priv->cms;
-}
-
-TpConnectionManager *
-empathy_connection_managers_get_cm (EmpathyConnectionManagers *self,
-  const gchar *cm)
-{
-  EmpathyConnectionManagersPriv *priv = GET_PRIV (self);
-  GList *l;
-
-  for (l = priv->cms ; l != NULL; l = g_list_next (l))
-    {
-      TpConnectionManager *c = TP_CONNECTION_MANAGER (l->data);
-
-      if (!tp_strdiff (tp_connection_manager_get_name (c), cm))
-        return c;
-    }
-
-  return NULL;
-}
-
-guint
-empathy_connection_managers_get_cms_num (EmpathyConnectionManagers *self)
-{
-  EmpathyConnectionManagersPriv *priv;
-
-  g_return_val_if_fail (EMPATHY_IS_CONNECTION_MANAGERS (self), 0);
-
-  priv = GET_PRIV (self);
-
-  return g_list_length (priv->cms);
-}
-
-static void
-notify_ready_cb (EmpathyConnectionManagers *self,
-    GParamSpec *spec,
-    GSimpleAsyncResult *result)
-{
-  g_simple_async_result_complete (result);
-  g_object_unref (result);
-}
-
-void
-empathy_connection_managers_prepare_async (
-    EmpathyConnectionManagers *self,
-    GAsyncReadyCallback callback,
-    gpointer user_data)
-{
-  EmpathyConnectionManagersPriv *priv = GET_PRIV (self);
-  GSimpleAsyncResult *result;
-
-  result = g_simple_async_result_new (G_OBJECT (managers),
-      callback, user_data, empathy_connection_managers_prepare_finish);
-
-  if (priv->ready)
-    {
-      g_simple_async_result_complete_in_idle (result);
-      g_object_unref (result);
-      return;
-    }
-
-  g_signal_connect (self, "notify::ready", G_CALLBACK (notify_ready_cb),
-      result);
-}
-
-gboolean
-empathy_connection_managers_prepare_finish (
-    EmpathyConnectionManagers *self,
-    GAsyncResult *result,
-    GError **error)
-{
-  GSimpleAsyncResult *simple = G_SIMPLE_ASYNC_RESULT (result);
-
-  g_return_val_if_fail (g_simple_async_result_is_valid (result,
-          G_OBJECT (self), empathy_connection_managers_prepare_finish), FALSE);
-
-  if (g_simple_async_result_propagate_error (simple, error))
-    return FALSE;
-
-  return TRUE;
-}
diff --git a/libempathy/empathy-connection-managers.h b/libempathy/empathy-connection-managers.h
deleted file mode 100644 (file)
index 0ed20c9..0000000
+++ /dev/null
@@ -1,87 +0,0 @@
-/*
- * empathy-connection-managers.h - Header for EmpathyConnectionManagers
- * Copyright (C) 2009 Collabora Ltd.
- * @author Sjoerd Simons <sjoerd.simons@collabora.co.uk>
- *
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Lesser General Public
- * License as published by the Free Software Foundation; either
- * version 2.1 of the License, or (at your option) any later version.
- *
- * This library is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
- * Lesser General Public License for more details.
- *
- * You should have received a copy of the GNU Lesser General Public
- * License along with this library; if not, write to the Free Software
- * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
- */
-
-#ifndef __EMPATHY_CONNECTION_MANAGERS_H__
-#define __EMPATHY_CONNECTION_MANAGERS_H__
-
-#include <glib-object.h>
-#include <gio/gio.h>
-#include <telepathy-glib/telepathy-glib.h>
-
-G_BEGIN_DECLS
-
-typedef struct _EmpathyConnectionManagers EmpathyConnectionManagers;
-typedef struct _EmpathyConnectionManagersClass EmpathyConnectionManagersClass;
-
-struct _EmpathyConnectionManagersClass {
-    GObjectClass parent_class;
-};
-
-struct _EmpathyConnectionManagers {
-    GObject parent;
-    gpointer priv;
-};
-
-GType empathy_connection_managers_get_type (void);
-
-/* TYPE MACROS */
-#define EMPATHY_TYPE_CONNECTION_MANAGERS \
-  (empathy_connection_managers_get_type ())
-#define EMPATHY_CONNECTION_MANAGERS(obj) \
-  (G_TYPE_CHECK_INSTANCE_CAST((obj), EMPATHY_TYPE_CONNECTION_MANAGERS, \
-    EmpathyConnectionManagers))
-#define EMPATHY_CONNECTION_MANAGERS_CLASS(klass) \
-  (G_TYPE_CHECK_CLASS_CAST((klass), EMPATHY_TYPE_CONNECTION_MANAGERS, \
-    EmpathyConnectionManagersClass))
-#define EMPATHY_IS_CONNECTION_MANAGERS(obj) \
-  (G_TYPE_CHECK_INSTANCE_TYPE((obj), EMPATHY_TYPE_CONNECTION_MANAGERS))
-#define EMPATHY_IS_CONNECTION_MANAGERS_CLASS(klass) \
-  (G_TYPE_CHECK_CLASS_TYPE((klass), EMPATHY_TYPE_CONNECTION_MANAGERS))
-#define EMPATHY_CONNECTION_MANAGERS_GET_CLASS(obj) \
-  (G_TYPE_INSTANCE_GET_CLASS ((obj), EMPATHY_TYPE_CONNECTION_MANAGERS, \
-    EmpathyConnectionManagersClass))
-
-EmpathyConnectionManagers *empathy_connection_managers_dup_singleton (void);
-gboolean empathy_connection_managers_is_ready (
-    EmpathyConnectionManagers *managers);
-
-void empathy_connection_managers_update (EmpathyConnectionManagers *managers);
-
-GList * empathy_connection_managers_get_cms (
-    EmpathyConnectionManagers *managers);
-guint empathy_connection_managers_get_cms_num
-    (EmpathyConnectionManagers *managers);
-
-TpConnectionManager *empathy_connection_managers_get_cm (
-  EmpathyConnectionManagers *managers, const gchar *cm);
-
-void empathy_connection_managers_prepare_async (
-    EmpathyConnectionManagers *managers,
-    GAsyncReadyCallback callback,
-    gpointer user_data);
-
-gboolean empathy_connection_managers_prepare_finish (
-    EmpathyConnectionManagers *managers,
-    GAsyncResult *result,
-    GError **error);
-
-G_END_DECLS
-
-#endif /* #ifndef __EMPATHY_CONNECTION_MANAGERS_H__*/
index 73d67485d79434187ca8e9cac9e82b6d656c615c..409a9ce38efee82690de0652fa3ebd094495daf1 100644 (file)
@@ -114,7 +114,7 @@ typedef struct {
   TpawAccountSettings *settings_ready;
 
   TpAccountManager *account_manager;
-  EmpathyConnectionManagers *cms;
+  TpawConnectionManagers *cms;
   GNetworkMonitor *connectivity;
 
   GtkWindow *parent_window;
@@ -2150,11 +2150,11 @@ accounts_dialog_cms_prepare_cb (GObject *source,
     GAsyncResult *result,
     gpointer user_data)
 {
-  EmpathyConnectionManagers *cms = EMPATHY_CONNECTION_MANAGERS (source);
+  TpawConnectionManagers *cms = TPAW_CONNECTION_MANAGERS (source);
   EmpathyAccountsDialog *dialog = user_data;
   EmpathyAccountsDialogPriv *priv = GET_PRIV (dialog);
 
-  if (!empathy_connection_managers_prepare_finish (cms, result, NULL))
+  if (!tpaw_connection_managers_prepare_finish (cms, result, NULL))
     goto out;
 
   /* No need to update the settings if we are already preparing one */
@@ -2199,9 +2199,9 @@ accounts_dialog_accounts_setup (EmpathyAccountsDialog *dialog)
     }
   g_list_free_full (accounts, g_object_unref);
 
-  priv->cms = empathy_connection_managers_dup_singleton ();
+  priv->cms = tpaw_connection_managers_dup_singleton ();
 
-  empathy_connection_managers_prepare_async (priv->cms,
+  tpaw_connection_managers_prepare_async (priv->cms,
       accounts_dialog_cms_prepare_cb, dialog);
 
   accounts_dialog_model_select_first (dialog);
@@ -2581,7 +2581,7 @@ empathy_accounts_dialog_show (GtkWindow *parent,
 
   if (selected_account)
     {
-      if (priv->cms != NULL && empathy_connection_managers_is_ready (priv->cms))
+      if (priv->cms != NULL && tpaw_connection_managers_is_ready (priv->cms))
         accounts_dialog_set_selected_account (dialog, selected_account);
       else
         /* save the selection to set it later when the cms
index 5e6fa8d55d35499d22215f79fc032782f63dbf42..9d86dd1dec4a69044220c6b23f21abaa10f706e4 100644 (file)
@@ -43,7 +43,7 @@ typedef struct {
   EmpathyImportWidget *iw;
 
   gboolean show_warning;
-  EmpathyConnectionManagers *cms;
+  TpawConnectionManagers *cms;
 } EmpathyImportDialogPriv;
 
 G_DEFINE_TYPE (EmpathyImportDialog, empathy_import_dialog, GTK_TYPE_DIALOG)
@@ -241,8 +241,8 @@ empathy_import_dialog_class_init (EmpathyImportDialogClass *klass)
   g_object_class_install_property (oclass, PROP_SHOW_WARNING, param_spec);
 
   param_spec = g_param_spec_object ("cms",
-      "EmpathyConnectionManagers", "EmpathyConnectionManager",
-      EMPATHY_TYPE_CONNECTION_MANAGERS,
+      "TpawConnectionManagers", "EmpathyConnectionManager",
+      TPAW_TYPE_CONNECTION_MANAGERS,
       G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS | G_PARAM_CONSTRUCT_ONLY);
   g_object_class_install_property (oclass, PROP_CMS, param_spec);
 
@@ -252,9 +252,9 @@ empathy_import_dialog_class_init (EmpathyImportDialogClass *klass)
 GtkWidget *
 empathy_import_dialog_new (GtkWindow *parent,
     gboolean warning,
-    EmpathyConnectionManagers *cms)
+    TpawConnectionManagers *cms)
 {
-  g_return_val_if_fail (EMPATHY_IS_CONNECTION_MANAGERS (cms), NULL);
+  g_return_val_if_fail (TPAW_IS_CONNECTION_MANAGERS (cms), NULL);
 
   return g_object_new (EMPATHY_TYPE_IMPORT_DIALOG,
       "parent-window", parent,
index 87f1198f1b8e9f4ee08f753b8fb40d097fb28305..8fce49fcdc0ba2caa26850b426644c595a4ec933 100644 (file)
@@ -25,7 +25,7 @@
 #ifndef __EMPATHY_IMPORT_DIALOG_H__
 #define __EMPATHY_IMPORT_DIALOG_H__
 
-#include "empathy-connection-managers.h"
+#include <tp-account-widgets/tpaw-connection-managers.h>
 
 G_BEGIN_DECLS
 
@@ -59,7 +59,7 @@ GType empathy_import_dialog_get_type (void);
 
 GtkWidget* empathy_import_dialog_new (GtkWindow *parent_window,
     gboolean show_warning,
-    EmpathyConnectionManagers *cms);
+    TpawConnectionManagers *cms);
 
 G_END_DECLS
 
index c382336474e5f9eddf418112135f8d8ca50a7c4f..d95326bc2302a6944ff301b51eb719b9eb2a20b7 100644 (file)
@@ -22,7 +22,8 @@
 #include "config.h"
 #include "empathy-import-utils.h"
 
-#include "empathy-connection-managers.h"
+#include <tp-account-widgets/tpaw-connection-managers.h>
+
 #include "empathy-import-pidgin.h"
 #include "empathy-utils.h"
 
@@ -80,13 +81,13 @@ gboolean
 empathy_import_protocol_is_supported (const gchar *protocol,
     TpConnectionManager **cm)
 {
-  EmpathyConnectionManagers *manager;
+  TpawConnectionManagers *manager;
   GList *cms;
   GList *l;
   gboolean proto_is_supported = FALSE;
 
-  manager = empathy_connection_managers_dup_singleton ();
-  cms = empathy_connection_managers_get_cms (manager);
+  manager = tpaw_connection_managers_dup_singleton ();
+  cms = tpaw_connection_managers_get_cms (manager);
 
   for (l = cms; l; l = l->next)
     {
index 86dc9515058d896453f7e17b9008aa5fafb07978..0103b6a8f5200b4f36cb49de001ea9ca86418640 100644 (file)
@@ -60,7 +60,7 @@ typedef struct {
   GList *accounts;
   EmpathyImportApplication app_id;
 
-  EmpathyConnectionManagers *cms;
+  TpawConnectionManagers *cms;
 
   gboolean dispose_run;
 } EmpathyImportWidgetPriv;
@@ -464,8 +464,8 @@ empathy_import_widget_class_init (EmpathyImportWidgetClass *klass)
   g_object_class_install_property (oclass, PROP_APPLICATION_ID, param_spec);
 
   param_spec = g_param_spec_object ("cms",
-      "EmpathyConnectionManagers", "EmpathyConnectionManager",
-      EMPATHY_TYPE_CONNECTION_MANAGERS,
+      "TpawConnectionManagers", "TpawConnectionManagers",
+      TPAW_TYPE_CONNECTION_MANAGERS,
       G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS | G_PARAM_CONSTRUCT_ONLY);
   g_object_class_install_property (oclass, PROP_CMS, param_spec);
 
@@ -484,9 +484,9 @@ empathy_import_widget_init (EmpathyImportWidget *self)
 
 EmpathyImportWidget *
 empathy_import_widget_new (EmpathyImportApplication id,
-    EmpathyConnectionManagers *cms)
+    TpawConnectionManagers *cms)
 {
-  g_return_val_if_fail (EMPATHY_IS_CONNECTION_MANAGERS (cms), NULL);
+  g_return_val_if_fail (TPAW_IS_CONNECTION_MANAGERS (cms), NULL);
 
   return g_object_new (EMPATHY_TYPE_IMPORT_WIDGET,
       "application-id", id,
index 8e9f32f5a2b8a0c7262b53044f4b33f8093950d0..221fa14393b05e1d2957a357389bfd31db49853d 100644 (file)
@@ -26,8 +26,8 @@
 #define __EMPATHY_IMPORT_WIDGET_H__
 
 #include <gtk/gtk.h>
+#include <tp-account-widgets/tpaw-connection-managers.h>
 
-#include "empathy-connection-managers.h"
 #include "empathy-import-utils.h"
 
 G_BEGIN_DECLS
@@ -61,7 +61,7 @@ typedef struct {
 GType empathy_import_widget_get_type (void);
 
 EmpathyImportWidget* empathy_import_widget_new (EmpathyImportApplication id,
-    EmpathyConnectionManagers *cms);
+    TpawConnectionManagers *cms);
 
 GtkWidget * empathy_import_widget_get_widget (EmpathyImportWidget *self);
 
index 554c1a639e8998e09e52569fb442329599774fd5..7c615e4b0032ca973c0fbf229788d9aed7498d24 100644 (file)
@@ -21,6 +21,7 @@ libtp_account_widgets_sources =               \
        tpaw-account-widget-irc.c               \
        tpaw-account-widget-private.h           \
        tpaw-account-widget-sip.c               \
+       tpaw-connection-managers.c              \
        tpaw-irc-network-chooser.c              \
        tpaw-irc-network-chooser-dialog.c       \
        tpaw-irc-network-dialog.c               \
@@ -35,6 +36,7 @@ libtp_account_widgets_headers =                       \
        tpaw-account-widget.h                   \
        tpaw-account-widget-irc.h               \
        tpaw-account-widget-sip.h               \
+       tpaw-connection-managers.h              \
        tpaw-irc-network-chooser-dialog.h       \
        tpaw-irc-network-chooser.h              \
        tpaw-irc-network-dialog.h               \
index 1559da4bfcfef57c536f93f95d54e39a449cfa68..a837a251e691d565af5587f8db82422235b48211 100644 (file)
@@ -21,7 +21,7 @@
 #include "config.h"
 #include "tpaw-account-settings.h"
 
-#include "empathy-connection-managers.h"
+#include "tpaw-connection-managers.h"
 #include "empathy-keyring.h"
 #include "empathy-presence-manager.h"
 #include "empathy-utils.h"
@@ -56,7 +56,7 @@ typedef struct _TpawAccountSettingsPriv TpawAccountSettingsPriv;
 struct _TpawAccountSettingsPriv
 {
   gboolean dispose_has_run;
-  EmpathyConnectionManagers *managers;
+  TpawConnectionManagers *managers;
   TpAccountManager *account_manager;
 
   TpConnectionManager *manager;
@@ -112,7 +112,7 @@ tpaw_account_settings_init (TpawAccountSettings *obj)
   obj->priv = priv;
 
   /* allocate any data required by the object here */
-  priv->managers = empathy_connection_managers_dup_singleton ();
+  priv->managers = tpaw_connection_managers_dup_singleton ();
   priv->account_manager = tp_account_manager_dup ();
 
   priv->parameters = g_hash_table_new_full (g_str_hash, g_str_equal,
@@ -474,12 +474,12 @@ tpaw_account_settings_check_readyness (TpawAccountSettings *self)
       && !tp_account_is_prepared (priv->account, TP_ACCOUNT_FEATURE_CORE))
       return;
 
-  if (!empathy_connection_managers_is_ready (priv->managers))
+  if (!tpaw_connection_managers_is_ready (priv->managers))
     return;
 
   if (priv->manager == NULL)
     {
-      priv->manager = empathy_connection_managers_get_cm (
+      priv->manager = tpaw_connection_managers_get_cm (
           priv->managers, priv->cm_name);
     }
 
diff --git a/tp-account-widgets/tpaw-connection-managers.c b/tp-account-widgets/tpaw-connection-managers.c
new file mode 100644 (file)
index 0000000..f648340
--- /dev/null
@@ -0,0 +1,349 @@
+/*
+ * tpaw-connection-managers.c - Source for TpawConnectionManagers
+ * Copyright (C) 2009 Collabora Ltd.
+ * @author Sjoerd Simons <sjoerd.simons@collabora.co.uk>
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2.1 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
+ */
+
+#include "config.h"
+#include "tpaw-connection-managers.h"
+
+#include "empathy-utils.h"
+
+#define DEBUG_FLAG EMPATHY_DEBUG_OTHER
+#include "empathy-debug.h"
+
+static GObject *managers = NULL;
+
+G_DEFINE_TYPE(TpawConnectionManagers, tpaw_connection_managers,
+    G_TYPE_OBJECT)
+
+/* signal enum */
+enum
+{
+    UPDATED,
+    LAST_SIGNAL
+};
+
+static guint signals[LAST_SIGNAL] = {0};
+
+/* properties */
+enum {
+  PROP_READY = 1
+};
+
+#define GET_PRIV(obj) EMPATHY_GET_PRIV (obj, TpawConnectionManagers)
+
+
+/* private structure */
+typedef struct _TpawConnectionManagersPriv
+  TpawConnectionManagersPriv;
+
+struct _TpawConnectionManagersPriv
+{
+  gboolean dispose_has_run;
+  gboolean ready;
+
+  GList *cms;
+
+  TpDBusDaemon *dbus;
+};
+
+static void
+tpaw_connection_managers_init (TpawConnectionManagers *obj)
+{
+  TpawConnectionManagersPriv *priv =
+    G_TYPE_INSTANCE_GET_PRIVATE ((obj), \
+      TPAW_TYPE_CONNECTION_MANAGERS, TpawConnectionManagersPriv);
+
+  obj->priv = priv;
+
+  priv->dbus = tp_dbus_daemon_dup (NULL);
+  g_assert (priv->dbus != NULL);
+
+  tpaw_connection_managers_update (obj);
+
+  /* allocate any data required by the object here */
+}
+
+static void tpaw_connection_managers_dispose (GObject *object);
+
+static GObject *
+tpaw_connection_managers_constructor (GType type,
+                        guint n_construct_params,
+                        GObjectConstructParam *construct_params)
+{
+  if (managers != NULL)
+    return g_object_ref (managers);
+
+  managers =
+      G_OBJECT_CLASS (tpaw_connection_managers_parent_class)->constructor
+          (type, n_construct_params, construct_params);
+
+  g_object_add_weak_pointer (managers, (gpointer) &managers);
+
+  return managers;
+}
+
+
+
+static void
+tpaw_connection_managers_get_property (GObject *object,
+    guint prop_id,
+    GValue *value,
+    GParamSpec *pspec)
+{
+  TpawConnectionManagers *self = TPAW_CONNECTION_MANAGERS (object);
+  TpawConnectionManagersPriv *priv = GET_PRIV (self);
+
+  switch (prop_id)
+    {
+      case PROP_READY:
+        g_value_set_boolean (value, priv->ready);
+        break;
+      default:
+        G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec);
+        break;
+    }
+}
+
+static void
+tpaw_connection_managers_class_init (
+    TpawConnectionManagersClass *tpaw_connection_managers_class)
+{
+  GObjectClass *object_class =
+      G_OBJECT_CLASS (tpaw_connection_managers_class);
+
+  g_type_class_add_private (tpaw_connection_managers_class, sizeof
+      (TpawConnectionManagersPriv));
+
+  object_class->constructor = tpaw_connection_managers_constructor;
+  object_class->dispose = tpaw_connection_managers_dispose;
+  object_class->get_property = tpaw_connection_managers_get_property;
+
+  g_object_class_install_property (object_class, PROP_READY,
+    g_param_spec_boolean ("ready",
+      "Ready",
+      "Whether the connection manager information is ready to be used",
+      FALSE,
+      G_PARAM_STATIC_STRINGS | G_PARAM_READABLE));
+
+  signals[UPDATED] = g_signal_new ("updated",
+    G_TYPE_FROM_CLASS (object_class),
+    G_SIGNAL_RUN_LAST,
+    0, NULL, NULL,
+    g_cclosure_marshal_generic,
+    G_TYPE_NONE, 0);
+}
+
+static void
+tpaw_connection_managers_free_cm_list (TpawConnectionManagers *self)
+{
+  TpawConnectionManagersPriv *priv = GET_PRIV (self);
+  GList *l;
+
+  for (l = priv->cms ; l != NULL ; l = g_list_next (l))
+    {
+      g_object_unref (l->data);
+    }
+  g_list_free (priv->cms);
+
+  priv->cms = NULL;
+}
+
+static void
+tpaw_connection_managers_dispose (GObject *object)
+{
+  TpawConnectionManagers *self = TPAW_CONNECTION_MANAGERS (object);
+  TpawConnectionManagersPriv *priv = GET_PRIV (self);
+
+  if (priv->dispose_has_run)
+    return;
+
+  priv->dispose_has_run = TRUE;
+
+  if (priv->dbus != NULL)
+    g_object_unref (priv->dbus);
+  priv->dbus = NULL;
+
+  tpaw_connection_managers_free_cm_list (self);
+
+  /* release any references held by the object here */
+
+  if (G_OBJECT_CLASS (tpaw_connection_managers_parent_class)->dispose)
+    G_OBJECT_CLASS (tpaw_connection_managers_parent_class)->dispose (object);
+}
+
+TpawConnectionManagers *
+tpaw_connection_managers_dup_singleton (void)
+{
+  return TPAW_CONNECTION_MANAGERS (
+      g_object_new (TPAW_TYPE_CONNECTION_MANAGERS, NULL));
+}
+
+gboolean
+tpaw_connection_managers_is_ready (TpawConnectionManagers *self)
+{
+  TpawConnectionManagersPriv *priv = GET_PRIV (self);
+  return priv->ready;
+}
+
+static void
+tpaw_connection_managers_listed_cb (GObject *source,
+    GAsyncResult *result,
+    gpointer user_data)
+{
+  TpWeakRef *wr = user_data;
+  GError *error = NULL;
+  TpawConnectionManagers *self = tp_weak_ref_dup_object (wr);
+  GList *cms, *l;
+  TpawConnectionManagersPriv *priv;
+
+  if (self == NULL)
+    {
+      tp_weak_ref_destroy (wr);
+      return;
+    }
+
+  priv = GET_PRIV (self);
+
+  tpaw_connection_managers_free_cm_list (self);
+
+  cms = tp_list_connection_managers_finish (result, &error);
+  if (error != NULL)
+    {
+      DEBUG ("Failed to get connection managers: %s", error->message);
+      g_error_free (error);
+      goto out;
+    }
+
+  for (l = cms ; l != NULL; l = g_list_next (l))
+    {
+      TpConnectionManager *cm = l->data;
+
+      /* only list cms that didn't hit errors */
+      if (tp_proxy_is_prepared (cm, TP_CONNECTION_MANAGER_FEATURE_CORE))
+        priv->cms = g_list_prepend (priv->cms, g_object_ref (cm));
+    }
+
+out:
+  if (!priv->ready)
+    {
+      priv->ready = TRUE;
+      g_object_notify (G_OBJECT (self), "ready");
+    }
+
+  g_signal_emit (self, signals[UPDATED], 0);
+  g_object_unref (self);
+  tp_weak_ref_destroy (wr);
+}
+
+void
+tpaw_connection_managers_update (TpawConnectionManagers *self)
+{
+  TpawConnectionManagersPriv *priv = GET_PRIV (self);
+
+  tp_list_connection_managers_async (priv->dbus,
+    tpaw_connection_managers_listed_cb,
+    tp_weak_ref_new (self, NULL, NULL));
+}
+
+GList *
+tpaw_connection_managers_get_cms (TpawConnectionManagers *self)
+{
+  TpawConnectionManagersPriv *priv = GET_PRIV (self);
+
+  return priv->cms;
+}
+
+TpConnectionManager *
+tpaw_connection_managers_get_cm (TpawConnectionManagers *self,
+  const gchar *cm)
+{
+  TpawConnectionManagersPriv *priv = GET_PRIV (self);
+  GList *l;
+
+  for (l = priv->cms ; l != NULL; l = g_list_next (l))
+    {
+      TpConnectionManager *c = TP_CONNECTION_MANAGER (l->data);
+
+      if (!tp_strdiff (tp_connection_manager_get_name (c), cm))
+        return c;
+    }
+
+  return NULL;
+}
+
+guint
+tpaw_connection_managers_get_cms_num (TpawConnectionManagers *self)
+{
+  TpawConnectionManagersPriv *priv;
+
+  g_return_val_if_fail (TPAW_IS_CONNECTION_MANAGERS (self), 0);
+
+  priv = GET_PRIV (self);
+
+  return g_list_length (priv->cms);
+}
+
+static void
+notify_ready_cb (TpawConnectionManagers *self,
+    GParamSpec *spec,
+    GSimpleAsyncResult *result)
+{
+  g_simple_async_result_complete (result);
+  g_object_unref (result);
+}
+
+void
+tpaw_connection_managers_prepare_async (
+    TpawConnectionManagers *self,
+    GAsyncReadyCallback callback,
+    gpointer user_data)
+{
+  TpawConnectionManagersPriv *priv = GET_PRIV (self);
+  GSimpleAsyncResult *result;
+
+  result = g_simple_async_result_new (G_OBJECT (managers),
+      callback, user_data, tpaw_connection_managers_prepare_finish);
+
+  if (priv->ready)
+    {
+      g_simple_async_result_complete_in_idle (result);
+      g_object_unref (result);
+      return;
+    }
+
+  g_signal_connect (self, "notify::ready", G_CALLBACK (notify_ready_cb),
+      result);
+}
+
+gboolean
+tpaw_connection_managers_prepare_finish (
+    TpawConnectionManagers *self,
+    GAsyncResult *result,
+    GError **error)
+{
+  GSimpleAsyncResult *simple = G_SIMPLE_ASYNC_RESULT (result);
+
+  g_return_val_if_fail (g_simple_async_result_is_valid (result,
+          G_OBJECT (self), tpaw_connection_managers_prepare_finish), FALSE);
+
+  if (g_simple_async_result_propagate_error (simple, error))
+    return FALSE;
+
+  return TRUE;
+}
diff --git a/tp-account-widgets/tpaw-connection-managers.h b/tp-account-widgets/tpaw-connection-managers.h
new file mode 100644 (file)
index 0000000..33e5aa0
--- /dev/null
@@ -0,0 +1,87 @@
+/*
+ * tpaw-connection-managers.h - Header for TpawConnectionManagers
+ * Copyright (C) 2009 Collabora Ltd.
+ * @author Sjoerd Simons <sjoerd.simons@collabora.co.uk>
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2.1 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
+ */
+
+#ifndef __TPAW_CONNECTION_MANAGERS_H__
+#define __TPAW_CONNECTION_MANAGERS_H__
+
+#include <glib-object.h>
+#include <gio/gio.h>
+#include <telepathy-glib/telepathy-glib.h>
+
+G_BEGIN_DECLS
+
+typedef struct _TpawConnectionManagers TpawConnectionManagers;
+typedef struct _TpawConnectionManagersClass TpawConnectionManagersClass;
+
+struct _TpawConnectionManagersClass {
+    GObjectClass parent_class;
+};
+
+struct _TpawConnectionManagers {
+    GObject parent;
+    gpointer priv;
+};
+
+GType tpaw_connection_managers_get_type (void);
+
+/* TYPE MACROS */
+#define TPAW_TYPE_CONNECTION_MANAGERS \
+  (tpaw_connection_managers_get_type ())
+#define TPAW_CONNECTION_MANAGERS(obj) \
+  (G_TYPE_CHECK_INSTANCE_CAST((obj), TPAW_TYPE_CONNECTION_MANAGERS, \
+    TpawConnectionManagers))
+#define TPAW_CONNECTION_MANAGERS_CLASS(klass) \
+  (G_TYPE_CHECK_CLASS_CAST((klass), TPAW_TYPE_CONNECTION_MANAGERS, \
+    TpawConnectionManagersClass))
+#define TPAW_IS_CONNECTION_MANAGERS(obj) \
+  (G_TYPE_CHECK_INSTANCE_TYPE((obj), TPAW_TYPE_CONNECTION_MANAGERS))
+#define TPAW_IS_CONNECTION_MANAGERS_CLASS(klass) \
+  (G_TYPE_CHECK_CLASS_TYPE((klass), TPAW_TYPE_CONNECTION_MANAGERS))
+#define TPAW_CONNECTION_MANAGERS_GET_CLASS(obj) \
+  (G_TYPE_INSTANCE_GET_CLASS ((obj), TPAW_TYPE_CONNECTION_MANAGERS, \
+    TpawConnectionManagersClass))
+
+TpawConnectionManagers *tpaw_connection_managers_dup_singleton (void);
+gboolean tpaw_connection_managers_is_ready (
+    TpawConnectionManagers *managers);
+
+void tpaw_connection_managers_update (TpawConnectionManagers *managers);
+
+GList * tpaw_connection_managers_get_cms (
+    TpawConnectionManagers *managers);
+guint tpaw_connection_managers_get_cms_num
+    (TpawConnectionManagers *managers);
+
+TpConnectionManager *tpaw_connection_managers_get_cm (
+  TpawConnectionManagers *managers, const gchar *cm);
+
+void tpaw_connection_managers_prepare_async (
+    TpawConnectionManagers *managers,
+    GAsyncReadyCallback callback,
+    gpointer user_data);
+
+gboolean tpaw_connection_managers_prepare_finish (
+    TpawConnectionManagers *managers,
+    GAsyncResult *result,
+    GError **error);
+
+G_END_DECLS
+
+#endif /* #ifndef __TPAW_CONNECTION_MANAGERS_H__*/