]> git.0d.be Git - empathy.git/commitdiff
remove empathy-import-mc4-accounts (#622578)
authorGuillaume Desmottes <guillaume.desmottes@collabora.co.uk>
Thu, 24 Jun 2010 09:52:29 +0000 (11:52 +0200)
committerGuillaume Desmottes <guillaume.desmottes@collabora.co.uk>
Thu, 24 Jun 2010 10:11:08 +0000 (12:11 +0200)
po/POTFILES.in
src/Makefile.am
src/empathy-import-mc4-accounts.c [deleted file]
src/empathy-import-mc4-accounts.h [deleted file]

index 45551b6a4850540cf6dfb8670452163e4a800fbc..e65117912ea58c257c80570cb95905728581448e 100644 (file)
@@ -76,7 +76,6 @@ src/empathy-import-dialog.c
 src/empathy-import-widget.c
 [type: gettext/glade]src/empathy-import-dialog.ui
 src/empathy-import-widget.c
-src/empathy-import-mc4-accounts.c
 src/empathy-main-window.c
 [type: gettext/glade]src/empathy-main-window.ui
 src/empathy-new-chatroom-dialog.c
index 6f8017f4583fa94ba280cec3335cae1eec5a1f1b..ac6f20713c8e3cdf2b53804f6b2ea13824b2ed84 100644 (file)
@@ -35,7 +35,6 @@ libempathy_accounts_common_la_SOURCES =                                       \
        empathy-accounts-dialog.c empathy-accounts-dialog.h             \
        empathy-auto-salut-account-helper.c empathy-auto-salut-account-helper.h \
        empathy-import-dialog.c empathy-import-dialog.h                 \
-       empathy-import-mc4-accounts.c empathy-import-mc4-accounts.h     \
        empathy-import-pidgin.c empathy-import-pidgin.h                 \
        empathy-import-widget.c empathy-import-widget.h                 \
        empathy-import-utils.c empathy-import-utils.h                   \
diff --git a/src/empathy-import-mc4-accounts.c b/src/empathy-import-mc4-accounts.c
deleted file mode 100644 (file)
index 24332d2..0000000
+++ /dev/null
@@ -1,532 +0,0 @@
-/*
- * Copyright (C) 2009 Collabora Ltd.
- *
- * This program is free software; you can redistribute it and/or
- * modify it under the terms of the GNU General Public License as
- * published by the Free Software Foundation; either version 2 of the
- * License, or (at your option) any later version.
- *
- * This program 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
- * General Public License for more details.
- *
- * You should have received a copy of the GNU General Public
- * License along with this program; if not, write to the
- * Free Software Foundation, Inc., 51 Franklin St, Fifth Floor,
- * Boston, MA  02110-1301  USA
- *
- * Authors: Arnaud Maillet <arnaud.maillet@collabora.co.uk>
- */
-
-#include <config.h>
-
-#include <stdio.h>
-#include <string.h>
-#include <glib.h>
-#include <glib/gi18n-lib.h>
-#include <gconf/gconf-client.h>
-#include <telepathy-glib/account-manager.h>
-#include <telepathy-glib/util.h>
-#include <telepathy-glib/defs.h>
-#include <dbus/dbus-protocol.h>
-#include <gnome-keyring.h>
-#include <libempathy/empathy-account-settings.h>
-#include <libempathy/empathy-connection-managers.h>
-#include <libempathy/empathy-gsettings.h>
-
-#include "empathy-import-mc4-accounts.h"
-
-#define DEBUG_FLAG EMPATHY_DEBUG_IMPORT_MC4_ACCOUNTS
-#include <libempathy/empathy-debug.h>
-
-#define MC_ACCOUNTS_GCONF_BASE "/apps/telepathy/mc/accounts"
-
-typedef struct
-{
-  gchar *profile;
-  gchar *protocol;
-} ProfileProtocolMapItem;
-
-static ProfileProtocolMapItem profile_protocol_map[] =
-{
-  { "ekiga", "sip" },
-  { "fwd", "sip" },
-  { "gtalk", "jabber" },
-  { "msn-haze", "msn" },
-  { "salut", "local-xmpp" },
-  { "sipphone", "sip" },
-  { "sofiasip", "sip" },
-};
-
-typedef struct {
-  gchar *account_name;
-  gboolean enable;
-} Misc;
-
-static gchar *
-_account_name_from_key (const gchar *key)
-{
-  guint base_len = strlen (MC_ACCOUNTS_GCONF_BASE);
-  const gchar *base, *slash;
-
-  g_assert (g_str_has_prefix (key, MC_ACCOUNTS_GCONF_BASE));
-  g_assert (strlen (key) > base_len + 1);
-
-  base = key + base_len + 1;
-  slash = strchr (base, '/');
-
-  if (slash == NULL)
-    return g_strdup (base);
-  else
-    return g_strndup (base, slash - base);
-}
-
-static gchar *
-_param_name_from_key (const gchar *key)
-{
- const gchar *base, *slash;
- gchar *account_name;
- gchar *ret;
-
- account_name = _account_name_from_key (key);
- base = strstr (key, account_name);
- slash = strchr (base, '/');
-
- ret = g_strdup (slash+1);
- g_free (account_name);
-
- return ret;
-}
-
-static gchar *
-_create_default_display_name (const gchar *protocol)
-{
-  if (!tp_strdiff (protocol, "local-xmpp"))
-    return g_strdup (_("People Nearby"));
-
-  return g_strdup_printf (_("%s account"), protocol);
-}
-
-static const gchar *
-_get_manager_for_protocol (EmpathyConnectionManagers *managers,
-    const gchar *protocol)
-{
-  GList *cms = empathy_connection_managers_get_cms (managers);
-  GList *l;
-  TpConnectionManager *haze = NULL;
-  TpConnectionManager *cm = NULL;
-
-  for (l = cms; l; l = l->next)
-    {
-      TpConnectionManager *tp_cm = l->data;
-
-      /* Only use haze if no other cm provides this protocol */
-      if (!tp_strdiff (tp_connection_manager_get_name (tp_cm), "haze"))
-        {
-          haze = tp_cm;
-          continue;
-        }
-
-      if (tp_connection_manager_has_protocol (tp_cm, protocol))
-        {
-          cm = tp_cm;
-          goto out;
-        }
-    }
-
-  if (haze != NULL && tp_connection_manager_has_protocol (haze, protocol))
-    return tp_connection_manager_get_name (haze);
-
-out:
-  return cm != NULL ? tp_connection_manager_get_name (cm) : NULL;
-}
-
-static void
-_move_contents (const gchar *old, const gchar *new)
-{
-  GDir *source;
-  const gchar *f;
-  int ret;
-
-  ret = g_mkdir_with_parents (new, 0777);
-  if (ret == -1)
-    return;
-
-  source = g_dir_open (old, 0, NULL);
-  if (source == NULL)
-    return;
-
-  while ((f = g_dir_read_name (source)) != NULL)
-    {
-      gchar *old_path;
-      gchar *new_path;
-
-      old_path = g_build_path (G_DIR_SEPARATOR_S, old, f, NULL);
-      new_path = g_build_path (G_DIR_SEPARATOR_S, new, f, NULL);
-
-      if (g_file_test (old_path, G_FILE_TEST_IS_DIR))
-        {
-          _move_contents (old_path, new_path);
-        }
-      else
-        {
-          GFile *f_old, *f_new;
-
-          f_old = g_file_new_for_path (old_path);
-          f_new = g_file_new_for_path (new_path);
-
-          g_file_move (f_old, f_new, G_FILE_COPY_NONE,
-            NULL, NULL, NULL, NULL);
-
-          g_object_unref (f_old);
-          g_object_unref (f_new);
-        }
-
-      g_free (old_path);
-      g_free (new_path);
-    }
-
-  g_dir_close (source);
-}
-
-static void
-_move_logs (TpAccount *account, const gchar *account_name)
-{
-  gchar *old_path, *new_path, *escaped;
-  const gchar *name;
-
-  name = tp_proxy_get_object_path (account);
-  if (g_str_has_prefix (name, TP_ACCOUNT_OBJECT_PATH_BASE))
-    name += strlen (TP_ACCOUNT_OBJECT_PATH_BASE);
-
-  escaped = g_strdelimit (g_strdup (name), "/", '_');
-  new_path = g_build_path (G_DIR_SEPARATOR_S, g_get_user_data_dir (),
-    PACKAGE_NAME, "logs", escaped, NULL);
-  g_free (escaped);
-
-  old_path = g_build_path (G_DIR_SEPARATOR_S,
-    g_get_home_dir (),
-    ".gnome2", PACKAGE_NAME, "logs", account_name, NULL);
-
-  _move_contents (old_path, new_path);
-}
-
-static void
-_create_account_cb (GObject *source,
-  GAsyncResult *result,
-  gpointer user_data)
-{
-  TpAccount *account;
-  GError *error = NULL;
-  Misc *misc = (Misc *) user_data;
-
-  if (!empathy_account_settings_apply_finish (
-      EMPATHY_ACCOUNT_SETTINGS (source), result, &error))
-    {
-      DEBUG ("Failed to create account: %s", error->message);
-      g_error_free (error);
-      goto out;
-    }
-
-  DEBUG ("account created");
-  account = empathy_account_settings_get_account (
-    EMPATHY_ACCOUNT_SETTINGS (source));
-
-  _move_logs (account, misc->account_name);
-
-  tp_account_set_enabled_async (account,
-      misc->enable, NULL, NULL);
-
-  g_free (misc->account_name);
-  g_slice_free (Misc, misc);
-
-out:
-  g_object_unref (source);
-}
-
-static gchar *
-_get_protocol_from_profile (const gchar *profile)
-{
-  guint i;
-
-  DEBUG ("profile: %s", profile);
-
-  for (i = 0; i < G_N_ELEMENTS (profile_protocol_map); i++)
-    if (!tp_strdiff (profile, profile_protocol_map[i].profile))
-      return g_strdup (profile_protocol_map[i].protocol);
-
-  return g_strdup (profile);
-}
-
-static void
-_set_password_from_keyring (EmpathyAccountSettings *settings,
-    const gchar *account_name, const gchar *key)
-{
-  GnomeKeyringResult res;
-  gchar *password;
-  GnomeKeyringPasswordSchema keyring_schema = {
-      GNOME_KEYRING_ITEM_GENERIC_SECRET,
-      {
-        { "account", GNOME_KEYRING_ATTRIBUTE_TYPE_STRING },
-        { "param", GNOME_KEYRING_ATTRIBUTE_TYPE_STRING },
-        { NULL, 0 }
-      }
-   };
-
-  res = gnome_keyring_find_password_sync (&keyring_schema,
-    &password,
-    "account", account_name,
-    "param", key,
-    NULL);
-
-  if (res == GNOME_KEYRING_RESULT_OK)
-    {
-       empathy_account_settings_set_string (settings, key, password);
-       gnome_keyring_free_password (password);
-    }
-}
-
-static void
-_handle_entry (EmpathyAccountSettings *settings, const gchar *account_name,
-    const gchar *key,
-    GConfEntry *entry)
-{
-  const gchar *signature;
-
-  signature = empathy_account_settings_get_dbus_signature (settings, key);
-  if (signature == NULL)
-    {
-      DEBUG ("Parameter %s is unknown", signature);
-      return;
-    }
-
-  switch ((int)*signature)
-    {
-      case DBUS_TYPE_INT16:
-      case DBUS_TYPE_INT32:
-        {
-          gint v = gconf_value_get_int (gconf_entry_get_value (entry));
-          empathy_account_settings_set_int32 (settings, key, v);
-          break;
-        }
-      case DBUS_TYPE_UINT16:
-      case DBUS_TYPE_UINT32:
-        {
-          gint v = gconf_value_get_int (gconf_entry_get_value (entry));
-          empathy_account_settings_set_uint32 (settings, key, v);
-          break;
-        }
-      case DBUS_TYPE_STRING:
-        {
-          const gchar *v = gconf_value_get_string (
-              gconf_entry_get_value (entry));
-
-          /* MC 4 would put password in the keyring and leave the password in
-           * gconf keyring */
-
-          if (!tp_strdiff (key, "password") && !tp_strdiff (v, "keyring"))
-            _set_password_from_keyring (settings, account_name, key);
-          else
-              empathy_account_settings_set_string (settings, key, v);
-          break;
-        }
-      case DBUS_TYPE_BOOLEAN:
-        {
-          gboolean v = gconf_value_get_bool (
-              gconf_entry_get_value (entry));
-
-          empathy_account_settings_set_boolean (settings, key, v);
-          break;
-        }
-     default:
-       DEBUG ("Unsupported type in signature: %s", signature);
-    }
-}
-
-static void
-_recurse_account (GSList *entries, EmpathyAccountSettings *settings,
-  const gchar *account_name)
-{
-  GSList *tmp;
-
-  for (tmp = entries; tmp != NULL; tmp = tmp->next)
-    {
-
-      GConfEntry *entry;
-      gchar *param;
-
-      entry = (GConfEntry *) tmp->data;
-      param = _param_name_from_key (gconf_entry_get_key (entry));
-
-      if (g_str_has_prefix (param, "param-"))
-        {
-          _handle_entry (settings, account_name, param + strlen ("param-"),
-            entry);
-        }
-
-      g_free (param);
-      gconf_entry_unref (entry);
-    }
-}
-
-static gboolean
-import_one_account (const char *path,
-  EmpathyConnectionManagers *managers,
-  GConfClient *client)
-{
-  gchar *account_name = _account_name_from_key (path);
-  EmpathyAccountSettings *settings = NULL;
-  GError *error = NULL;
-  GSList *entries = NULL;
-  gchar *profile = NULL;
-  gchar *protocol = NULL;
-  const gchar *manager;
-  gchar *display_name;
-  gchar *key;
-  gboolean enabled = FALSE;
-  gboolean ret = FALSE;
-  Misc *misc;
-
-  DEBUG ("Starting import of %s (%s)", path, account_name);
-
-  key = g_strdup_printf ("%s/profile", path);
-  profile = gconf_client_get_string (client, key, NULL);
-  g_free (key);
-
-  if (profile == NULL)
-    {
-      DEBUG ("Account is missing a profile entry");
-      goto failed;
-    }
-
-  protocol = _get_protocol_from_profile (profile);
-  manager = _get_manager_for_protocol (managers, protocol);
-  if (manager == NULL)
-    {
-      DEBUG ("No manager available for this protocol %s", protocol);
-      goto failed;
-    }
-
-  key = g_strdup_printf ("%s/display_name", path);
-  display_name = gconf_client_get_string (client, key, NULL);
-  g_free (key);
-
-  if (display_name == NULL)
-    display_name = _create_default_display_name (protocol);
-
-  settings = empathy_account_settings_new (manager, protocol, display_name);
-  g_free (display_name);
-
-  /* Bit of a hack, as we know EmpathyConnectionManagers is ready the
-   * EmpathyAccountSettings should be ready right away as well */
-  g_assert (empathy_account_settings_is_ready (settings));
-
-  entries = gconf_client_all_entries (client, path, &error);
-
-  if (entries == NULL)
-    {
-      DEBUG ("Failed to get all entries: %s", error->message);
-      g_error_free (error);
-      goto failed;
-    }
-
-  _recurse_account (entries, settings, account_name);
-
-  key = g_strdup_printf ("%s/enabled", path);
-  enabled = gconf_client_get_bool (client, key, NULL);
-  g_free (key);
-
-  misc = g_slice_new (Misc);
-  misc->account_name = account_name;
-  misc->enable = enabled;
-
-  empathy_account_settings_apply_async (settings,
-          _create_account_cb, misc);
-  ret = TRUE;
-
-out:
-  g_free (protocol);
-  g_free (profile);
-  g_slist_free (entries);
-
-  return ret;
-
-failed:
-  DEBUG ("Failed to import %s", path);
-  g_free (account_name);
-  if (settings != NULL)
-    g_object_unref (settings);
-  goto out;
-}
-
-gboolean
-empathy_import_mc4_has_imported (void)
-{
-  GSettings *gsettings;
-  gboolean ret;
-
-  gsettings = g_settings_new (EMPATHY_PREFS_ACCOUNTS_SCHEMA);
-
-  ret = g_settings_get_boolean (gsettings,
-      EMPATHY_PREFS_ACCOUNTS_IMPORTED_MC4_ACCOUNTS);
-
-  g_object_unref (gsettings);
-
-  return ret;
-}
-
-gboolean
-empathy_import_mc4_accounts (EmpathyConnectionManagers *managers)
-{
-  GConfClient *client;
-  GSettings *gsettings;
-  GError *error = NULL;
-  GSList *dir, *dirs = NULL;
-  gboolean imported_mc4_accounts;
-  gboolean imported = FALSE;
-
-  g_return_val_if_fail (empathy_connection_managers_is_ready (managers),
-    FALSE);
-
-  gsettings = g_settings_new (EMPATHY_PREFS_ACCOUNTS_SCHEMA);
-  client = gconf_client_get_default ();
-
-  imported_mc4_accounts = empathy_import_mc4_has_imported ();
-
-  if (imported_mc4_accounts)
-    {
-      DEBUG ("Mc4 accounts previously imported");
-      goto out;
-    }
-
-  DEBUG ("MC 4 accounts are going to be imported");
-
-  dirs = gconf_client_all_dirs (client, MC_ACCOUNTS_GCONF_BASE, &error);
-
-  if (error != NULL)
-    {
-      DEBUG ("Failed to get MC4 account dirs: %s",
-          error->message);
-      g_clear_error (&error);
-      g_object_unref (client);
-      goto out;
-    }
-
-  for (dir = dirs; NULL != dir; dir = dir->next)
-    {
-      if (import_one_account ((gchar *) dir->data, managers, client))
-        imported = TRUE;
-      g_free (dir->data);
-    }
-
-out:
-  g_settings_set_boolean (gsettings,
-      EMPATHY_PREFS_ACCOUNTS_IMPORTED_MC4_ACCOUNTS, TRUE);
-
-  g_slist_free (dirs);
-  g_object_unref (client);
-  g_object_unref (gsettings);
-
-  return imported;
-}
diff --git a/src/empathy-import-mc4-accounts.h b/src/empathy-import-mc4-accounts.h
deleted file mode 100644 (file)
index 0a30fdf..0000000
+++ /dev/null
@@ -1,34 +0,0 @@
-/*
- * Copyright (C) 2009 Collabora Ltd.
- *
- * This program is free software; you can redistribute it and/or
- * modify it under the terms of the GNU General Public License as
- * published by the Free Software Foundation; either version 2 of the
- * License, or (at your option) any later version.
- *
- * This program 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
- * General Public License for more details.
- *
- * You should have received a copy of the GNU General Public
- * License along with this program; if not, write to the
- * Free Software Foundation, Inc., 51 Franklin St, Fifth Floor,
- * Boston, MA  02110-1301  USA
- *
- * Authors: Arnaud Maillet <arnaud.maillet@collabora.co.uk>
- */
-
-#ifndef __EMPATHY_IMPORT_MC4_ACCOUNTS_H__
-#define __EMPATHY_IMPORT_MC4_ACCOUNTS_H__
-
-G_BEGIN_DECLS
-
-#include <libempathy/empathy-connection-managers.h>
-
-gboolean empathy_import_mc4_accounts (EmpathyConnectionManagers *managers);
-gboolean empathy_import_mc4_has_imported (void);
-
-G_END_DECLS
-
-#endif /* __EMPATHY_IMPORT_MC4_ACCOUNTS_H__ */