From 38e4f668b25cefbdc161f9c17f61a904c67c0c79 Mon Sep 17 00:00:00 2001 From: Jonny Lamb Date: Wed, 22 Sep 2010 00:14:16 +0100 Subject: all: remove butterfly workarounds (bgo#612555) Signed-off-by: Jonny Lamb --- libempathy/empathy-tp-chat.c | 64 ---------- src/Makefile.am | 1 - src/empathy-chat-window.c | 3 +- src/empathy-main-window.c | 29 ----- src/empathy-migrate-butterfly-logs.c | 234 ----------------------------------- src/empathy-migrate-butterfly-logs.h | 32 ----- 6 files changed, 1 insertion(+), 362 deletions(-) delete mode 100644 src/empathy-migrate-butterfly-logs.c delete mode 100644 src/empathy-migrate-butterfly-logs.h diff --git a/libempathy/empathy-tp-chat.c b/libempathy/empathy-tp-chat.c index 9eaff9592..11a6e7de5 100644 --- a/libempathy/empathy-tp-chat.c +++ b/libempathy/empathy-tp-chat.c @@ -889,66 +889,6 @@ check_almost_ready (EmpathyTpChat *self) check_ready (self); } -static void -tp_chat_update_remote_contact (EmpathyTpChat *self) -{ - TpChannel *channel = (TpChannel *) self; - EmpathyContact *contact = NULL; - TpHandle self_handle; - TpHandleType handle_type; - GList *l; - - /* If this is a named chatroom, never pretend it is a private chat */ - tp_channel_get_handle (channel, &handle_type); - if (handle_type == TP_HANDLE_TYPE_ROOM) { - return; - } - - /* This is an MSN chat, but it's the new style where 1-1 chats don't - * have the group interface. If it has the conference interface, then - * it is indeed a MUC. */ - if (tp_proxy_has_interface_by_id (self, - TP_IFACE_QUARK_CHANNEL_INTERFACE_CONFERENCE)) { - return; - } - - /* This is an MSN-like chat where anyone can join the chat at anytime. - * If there is only one non-self contact member, we are in a private - * chat and we set the "remote-contact" property to that contact. If - * there are more, set the "remote-contact" property to NULL and the - * UI will display a contact list. */ - self_handle = tp_channel_group_get_self_handle (channel); - for (l = self->priv->members; l; l = l->next) { - /* Skip self contact if member */ - if (empathy_contact_get_handle (l->data) == self_handle) { - continue; - } - - /* We have more than one remote contact, break */ - if (contact != NULL) { - contact = NULL; - break; - } - - /* If we didn't find yet a remote contact, keep this one */ - contact = l->data; - } - - if (self->priv->remote_contact == contact) { - return; - } - - DEBUG ("Changing remote contact from %p to %p", - self->priv->remote_contact, contact); - - if (self->priv->remote_contact) { - g_object_unref (self->priv->remote_contact); - } - - self->priv->remote_contact = contact ? g_object_ref (contact) : NULL; - g_object_notify (G_OBJECT (self), "remote-contact"); -} - static void tp_chat_got_added_contacts_cb (TpConnection *connection, guint n_contacts, @@ -984,7 +924,6 @@ tp_chat_got_added_contacts_cb (TpConnection *connection, } } - tp_chat_update_remote_contact (EMPATHY_TP_CHAT (chat)); check_almost_ready (EMPATHY_TP_CHAT (chat)); } @@ -1092,7 +1031,6 @@ tp_chat_got_renamed_contacts_cb (TpConnection *connection, self->priv->user = g_object_ref (new); } - tp_chat_update_remote_contact (self); check_almost_ready (self); } @@ -1168,8 +1106,6 @@ tp_chat_group_members_changed_cb (TpChannel *channel, G_OBJECT (self)); } - tp_chat_update_remote_contact (self); - if (actor_contact != NULL) { g_object_unref (actor_contact); } 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 @@ -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 - -#include - -#define DEBUG_FLAG EMPATHY_DEBUG_OTHER -#include -#include - -#include -#include -#include - -#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 - -#include - -#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__ */ -- cgit v1.2.3