]> git.0d.be Git - empathy.git/blobdiff - src/empathy-import-utils.c
Updated Spanish translation
[empathy.git] / src / empathy-import-utils.c
index f84b20609a1af8caadf02f399484dc5544e6a574..ab7847c3fc1ed28786c97568814b3450bc58248c 100644 (file)
  *          Cosimo Cecchi <cosimo.cecchi@collabora.co.uk>
  */
 
-#include <telepathy-glib/util.h>
+#include "config.h"
+#include "empathy-import-utils.h"
 
-#include <libempathy/empathy-utils.h>
+#include <tp-account-widgets/tpaw-connection-managers.h>
+#include <tp-account-widgets/tpaw-utils.h>
 
-#include "empathy-import-utils.h"
 #include "empathy-import-pidgin.h"
+#include "empathy-utils.h"
 
 EmpathyImportAccountData *
 empathy_import_account_data_new (const gchar *source)
 {
   EmpathyImportAccountData *data;
 
-  g_return_val_if_fail (!EMP_STR_EMPTY (source), NULL);
+  g_return_val_if_fail (!TPAW_STR_EMPTY (source), NULL);
 
   data = g_slice_new0 (EmpathyImportAccountData);
   data->settings = g_hash_table_new_full (g_str_hash, g_str_equal, NULL,
@@ -39,6 +41,7 @@ empathy_import_account_data_new (const gchar *source)
   data->source = g_strdup (source);
   data->protocol = NULL;
   data->connection_manager = NULL;
+  data->enabled = FALSE;
 
   return data;
 }
@@ -53,7 +56,7 @@ empathy_import_account_data_free (EmpathyImportAccountData *data)
   if (data->connection_manager != NULL)
     g_free (data->connection_manager);
   if (data->settings != NULL)
-    g_hash_table_destroy (data->settings);
+    g_hash_table_unref (data->settings);
   if (data->source != NULL)
     g_free (data->source);
 
@@ -74,3 +77,50 @@ empathy_import_accounts_load (EmpathyImportApplication id)
 
   return empathy_import_pidgin_load ();
 }
+
+gboolean
+empathy_import_protocol_is_supported (const gchar *protocol,
+    TpConnectionManager **cm)
+{
+  TpawConnectionManagers *manager;
+  GList *cms;
+  GList *l;
+  gboolean proto_is_supported = FALSE;
+
+  manager = tpaw_connection_managers_dup_singleton ();
+  cms = tpaw_connection_managers_get_cms (manager);
+
+  for (l = cms; l; l = l->next)
+    {
+
+      TpConnectionManager *tp_cm = l->data;
+      if (tp_connection_manager_has_protocol (tp_cm,
+          (const gchar*) protocol))
+        {
+          if (!tp_strdiff (protocol, "irc")
+              && !tp_strdiff (tp_connection_manager_get_name (tp_cm), "haze"))
+              continue;
+
+          if (!proto_is_supported)
+            {
+              *cm = tp_cm;
+              proto_is_supported = TRUE;
+
+              continue;
+            }
+
+          /* we have more than one CM for this protocol,
+           * select the one which is not haze.
+           */
+          if (!tp_strdiff (tp_connection_manager_get_name ((*cm)), "haze"))
+            {
+              *cm = tp_cm;
+              break;
+            }
+        }
+    }
+
+  g_object_unref (manager);
+
+  return proto_is_supported;
+}