diff options
Diffstat (limited to 'src')
-rw-r--r-- | src/Makefile.am | 1 | ||||
-rw-r--r-- | src/empathy-chat-window.c | 3 | ||||
-rw-r--r-- | src/empathy-main-window.c | 29 | ||||
-rw-r--r-- | src/empathy-migrate-butterfly-logs.c | 234 | ||||
-rw-r--r-- | src/empathy-migrate-butterfly-logs.h | 32 |
5 files changed, 1 insertions, 298 deletions
diff --git a/src/Makefile.am b/src/Makefile.am index 40be88c12..ef4e8d964 100644 --- a/src/Makefile.am +++ b/src/Makefile.am @@ -176,7 +176,6 @@ empathy_handwritten_source = \ empathy-ft-manager.c empathy-ft-manager.h \ empathy-invite-participant-dialog.c empathy-invite-participant-dialog.h \ empathy-main-window.c empathy-main-window.h \ - empathy-migrate-butterfly-logs.c empathy-migrate-butterfly-logs.h \ empathy-new-chatroom-dialog.c empathy-new-chatroom-dialog.h \ empathy-notifications-approver.c empathy-notifications-approver.h \ empathy-call-observer.c empathy-call-observer.h \ diff --git a/src/empathy-chat-window.c b/src/empathy-chat-window.c index 97ed1b9de..44f3dcce3 100644 --- a/src/empathy-chat-window.c +++ b/src/empathy-chat-window.c @@ -1482,8 +1482,7 @@ chat_window_new_message_cb (EmpathyChat *chat, * a) the chatroom's always_urgent property is TRUE * b) the message contains our alias */ - if (empathy_chat_is_room (chat) || - empathy_chat_get_remote_contact (chat) == NULL) { + if (empathy_chat_is_room (chat)) { TpAccount *account; const gchar *room; EmpathyChatroom *chatroom; diff --git a/src/empathy-main-window.c b/src/empathy-main-window.c index 3f87c4f7a..cb135c4fc 100644 --- a/src/empathy-main-window.c +++ b/src/empathy-main-window.c @@ -76,7 +76,6 @@ #include "empathy-chatrooms-window.h" #include "empathy-event-manager.h" #include "empathy-ft-manager.h" -#include "empathy-migrate-butterfly-logs.h" #define DEBUG_FLAG EMPATHY_DEBUG_OTHER #include <libempathy/empathy-debug.h> @@ -169,9 +168,6 @@ struct _EmpathyMainWindowPriv { /* Actions that are enabled when there are connected accounts */ GList *actions_connected; - /* The idle event source to migrate butterfly's logs */ - guint butterfly_log_migration_members_changed_id; - gboolean shell_running; }; @@ -2051,27 +2047,6 @@ account_manager_prepared_cb (GObject *source_object, g_list_free (accounts); } -static void -main_window_members_changed_cb (EmpathyContactList *list, - EmpathyContact *contact, - EmpathyContact *actor, - guint reason, - gchar *message, - gboolean is_member, - EmpathyMainWindow *window) -{ - EmpathyMainWindowPriv *priv = GET_PRIV (window); - - if (!is_member) - return; - - if (!empathy_migrate_butterfly_logs (contact)) { - g_signal_handler_disconnect (list, - priv->butterfly_log_migration_members_changed_id); - priv->butterfly_log_migration_members_changed_id = 0; - } -} - void empathy_main_window_set_shell_running (EmpathyMainWindow *window, gboolean shell_running) @@ -2358,10 +2333,6 @@ empathy_main_window_init (EmpathyMainWindow *window) EMPATHY_INDIVIDUAL_VIEW_FEATURE_ALL ^ EMPATHY_INDIVIDUAL_VIEW_FEATURE_PERSONA_DROP, EMPATHY_INDIVIDUAL_FEATURE_ALL); - priv->butterfly_log_migration_members_changed_id = g_signal_connect ( - priv->contact_manager, "members-changed", - G_CALLBACK (main_window_members_changed_cb), window); - gtk_widget_show (GTK_WIDGET (priv->individual_view)); gtk_container_add (GTK_CONTAINER (sw), GTK_WIDGET (priv->individual_view)); diff --git a/src/empathy-migrate-butterfly-logs.c b/src/empathy-migrate-butterfly-logs.c deleted file mode 100644 index c673a2f31..000000000 --- a/src/empathy-migrate-butterfly-logs.c +++ /dev/null @@ -1,234 +0,0 @@ -/* -* Copyright (C) 2010 Collabora Ltd. -* -* 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 <string.h> - -#include <gio/gio.h> - -#define DEBUG_FLAG EMPATHY_DEBUG_OTHER -#include <libempathy/empathy-debug.h> -#include <libempathy/empathy-gsettings.h> - -#include <telepathy-glib/account-manager.h> -#include <telepathy-glib/util.h> -#include <telepathy-glib/defs.h> - -#include "empathy-migrate-butterfly-logs.h" - -static guint butterfly_log_migration_id = 0; - -static void -migrate_log_files_in_dir (const gchar *dirname) -{ - GDir *dir; - const gchar *subdir; - gchar *new_name; - gchar *full_path; - GError *error = NULL; - - dir = g_dir_open (dirname, 0, &error); - - if (dir == NULL) - { - DEBUG ("Failed to open dir: %s", error->message); - g_error_free (error); - return; - } - - while ((subdir = g_dir_read_name (dir)) != NULL) - { - GFile *old_gfile, *new_gfile; - - if (!tp_strdiff (subdir, "chatrooms")) - continue; - - if (g_str_has_suffix (subdir, "#1")) - { - new_name = g_strndup (subdir, (strlen (subdir) - 2)); - } - else if (g_str_has_suffix (subdir, "#32")) - { - gchar *tmp; - tmp = g_strndup (subdir, (strlen (subdir) - 3)); - new_name = g_strdup_printf ("%s#yahoo", tmp); - g_free (tmp); - } - else - { - continue; - } - - full_path = g_build_filename (dirname, subdir, NULL); - old_gfile = g_file_new_for_path (full_path); - g_free (full_path); - - full_path = g_build_filename (dirname, new_name, NULL); - new_gfile = g_file_new_for_path (full_path); - g_free (full_path); - - if (!g_file_move (old_gfile, new_gfile, G_FILE_COPY_NONE, - NULL, NULL, NULL, &error)) - { - DEBUG ("Failed to move file: %s", error->message); - g_clear_error (&error); - } - else - { - DEBUG ("Successfully migrated logs for %s", new_name); - } - - g_free (new_name); - g_object_unref (old_gfile); - g_object_unref (new_gfile); - } - - g_dir_close (dir); -} - -/* This is copied from empathy-log-store-empathy.c (see #613437) */ -static gchar * -log_store_account_to_dirname (TpAccount *account) -{ - 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); - - return g_strdelimit (g_strdup (name), "/", '_'); -} - -static gchar * -get_log_dir_for_account (TpAccount *account) -{ - gchar *basedir; - gchar *escaped; - - escaped = log_store_account_to_dirname (account); - - basedir = g_build_path (G_DIR_SEPARATOR_S, g_get_user_data_dir (), - PACKAGE_NAME, "logs", escaped, NULL); - - g_free (escaped); - - return basedir; -} - - -static void -migration_account_manager_prepared_cb (GObject *source_object, - GAsyncResult *result, - gpointer user_data) -{ - TpAccountManager *am = TP_ACCOUNT_MANAGER (source_object); - GError *error = NULL; - GList *accounts, *l; - GSettings *gsettings; - - if (!tp_proxy_prepare_finish (am, result, &error)) - { - DEBUG ("Failed to prepare the account manager: %s", error->message); - g_error_free (error); - return; - } - - accounts = tp_account_manager_get_valid_accounts (am); - - for (l = accounts; l != NULL; l = l->next) - { - TpAccount *account = TP_ACCOUNT (l->data); - gchar *dir, *cm; - - tp_account_parse_object_path (tp_proxy_get_object_path (account), - &cm, NULL, NULL, NULL); - - if (tp_strdiff (cm, "butterfly")) - { - g_free (cm); - continue; - } - - dir = get_log_dir_for_account (account); - DEBUG ("Migrating all logs from dir: %s", dir); - - migrate_log_files_in_dir (dir); - - g_free (cm); - g_free (dir); - } - - DEBUG ("Finished all migrating"); - - gsettings = g_settings_new (EMPATHY_PREFS_SCHEMA); - g_settings_set_boolean (gsettings, EMPATHY_PREFS_BUTTERFLY_LOGS_MIGRATED, - TRUE); - g_object_unref (gsettings); - - g_list_free (accounts); -} - -static gboolean -migrate_logs (gpointer data) -{ - TpAccountManager *account_manager; - - account_manager = tp_account_manager_dup (); - - tp_proxy_prepare_async (account_manager, NULL, - migration_account_manager_prepared_cb, NULL); - - g_object_unref (account_manager); - - return FALSE; -} - -gboolean -empathy_migrate_butterfly_logs (EmpathyContact *contact) -{ - GSettings *gsettings = g_settings_new (EMPATHY_PREFS_SCHEMA); - gchar *cm; - - /* Already in progress. */ - if (butterfly_log_migration_id != 0) - return FALSE; - - /* Already done. */ - if (g_settings_get_boolean (gsettings, EMPATHY_PREFS_BUTTERFLY_LOGS_MIGRATED)) - return FALSE; - - tp_account_parse_object_path ( - tp_proxy_get_object_path (empathy_contact_get_account (contact)), - &cm, NULL, NULL, NULL); - - if (tp_strdiff (cm, "butterfly")) - { - g_free (cm); - return TRUE; - } - g_free (cm); - - if (g_str_has_suffix (empathy_contact_get_id (contact), "#32") - || g_str_has_suffix (empathy_contact_get_id (contact), "#1")) - return TRUE; - - /* Okay, we know a new butterfly is being used, so we should migrate its logs */ - butterfly_log_migration_id = g_idle_add_full (G_PRIORITY_LOW, - migrate_logs, NULL, NULL); - - return FALSE; -} diff --git a/src/empathy-migrate-butterfly-logs.h b/src/empathy-migrate-butterfly-logs.h deleted file mode 100644 index a06c1b488..000000000 --- a/src/empathy-migrate-butterfly-logs.h +++ /dev/null @@ -1,32 +0,0 @@ -/* -* Copyright (C) 2010 Collabora Ltd. -* -* 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 <glib.h> - -#include <libempathy/empathy-contact.h> - -#ifndef __EMPATHY_MIGRATE_BUTTERFLY_LOGS_H__ -#define __EMPATHY_MIGRATE_BUTTERFLY_LOGS_H__ - -G_BEGIN_DECLS - -gboolean empathy_migrate_butterfly_logs (EmpathyContact *contact); - -G_END_DECLS - -#endif /* __EMPATHY_MIGRATE_BUTTERFLY_LOGS_H__ */ |