static void log_manager_searched_new_cb (GObject *manager, GAsyncResult *result, gpointer user_data) { GList *hits; GList *l; GtkTreeIter iter; GtkListStore *store = user_data; GError *error = NULL; hits = tpl_log_manager_search_new_async_finish (result, &error); if (error != NULL) { DEBUG ("%s. Aborting", error->message); g_error_free (error); return; } for (l = hits; l; l = l->next) { TplLogSearchHit *hit; const gchar *account_name; const gchar *account_icon; gchar *date_readable; hit = l->data; /* Protect against invalid data (corrupt or old log files. */ if (!hit->account || !hit->chat_id) { continue; } date_readable = tpl_log_manager_get_date_readable (hit->date); account_name = tp_account_get_display_name (hit->account); account_icon = tp_account_get_icon_name (hit->account); gtk_list_store_append (store, &iter); gtk_list_store_set (store, &iter, COL_FIND_ACCOUNT_ICON, account_icon, COL_FIND_ACCOUNT_NAME, account_name, COL_FIND_ACCOUNT, hit->account, COL_FIND_CHAT_NAME, hit->chat_id, /* FIXME */ COL_FIND_CHAT_ID, hit->chat_id, COL_FIND_IS_CHATROOM, hit->is_chatroom, COL_FIND_DATE, hit->date, COL_FIND_DATE_READABLE, date_readable, -1); g_free (date_readable); /* FIXME: Update COL_FIND_CHAT_NAME */ if (hit->is_chatroom) { } else { } } if (hits) { tpl_log_manager_search_free (hits); } }
static void log_manager_got_chats_cb (GObject *manager, GAsyncResult *result, gpointer user_data) { EmpathyLogWindow *window = user_data; GList *chats; GList *l; GtkTreeView *view; GtkTreeModel *model; GtkTreeSelection *selection; GtkListStore *store; GtkTreeIter iter; GError *error = NULL; gboolean select_account = FALSE; if (log_window == NULL) return; if (!tpl_log_manager_get_chats_finish (TPL_LOG_MANAGER (manager), result, &chats, &error)) { DEBUG ("%s. Aborting", error->message); g_error_free (error); return; } view = GTK_TREE_VIEW (window->treeview_chats); model = gtk_tree_view_get_model (view); selection = gtk_tree_view_get_selection (view); store = GTK_LIST_STORE (model); for (l = chats; l; l = l->next) { TplLogSearchHit *hit; hit = l->data; if (hit->account == NULL) continue; gtk_list_store_append (store, &iter); gtk_list_store_set (store, &iter, COL_CHAT_ICON, "empathy-available", /* FIXME */ COL_CHAT_NAME, hit->chat_id, COL_CHAT_ACCOUNT, hit->account, COL_CHAT_ID, hit->chat_id, COL_CHAT_IS_CHATROOM, hit->is_chatroom, -1); if (window->selected_account != NULL && !tp_strdiff (tp_proxy_get_object_path (hit->account), tp_proxy_get_object_path (window->selected_account))) select_account = TRUE; /* FIXME: Update COL_CHAT_ICON/NAME */ if (hit->is_chatroom) { } else { } } tpl_log_manager_search_free (chats); /* Unblock signals */ g_signal_handlers_unblock_by_func (selection, log_window_chats_changed_cb, window); /* We display the selected account if we populate the model with chats from * this account. */ if (select_account) log_window_chats_set_selected (window); }
static void log_manager_searched_new_cb (GObject *manager, GAsyncResult *result, gpointer user_data) { GList *hits; GList *l; GtkTreeIter iter; GtkListStore *store = user_data; GError *error = NULL; if (log_window == NULL) return; if (!tpl_log_manager_search_finish (TPL_LOG_MANAGER (manager), result, &hits, &error)) { DEBUG ("%s. Aborting", error->message); g_error_free (error); return; } for (l = hits; l; l = l->next) { TplLogSearchHit *hit; const gchar *account_name; const gchar *account_icon; gchar date_readable[255]; gchar tmp[255]; hit = l->data; /* Protect against invalid data (corrupt or old log files. */ if (hit->account == NULL || hit->chat_id == NULL) { continue; } g_date_strftime (date_readable, sizeof (date_readable), EMPATHY_DATE_FORMAT_DISPLAY_SHORT, hit->date); g_date_strftime (tmp, sizeof (tmp), "%Y%m%d", hit->date); account_name = tp_account_get_display_name (hit->account); account_icon = tp_account_get_icon_name (hit->account); gtk_list_store_append (store, &iter); gtk_list_store_set (store, &iter, COL_FIND_ACCOUNT_ICON, account_icon, COL_FIND_ACCOUNT_NAME, account_name, COL_FIND_ACCOUNT, hit->account, COL_FIND_CHAT_NAME, hit->chat_id, /* FIXME */ COL_FIND_CHAT_ID, hit->chat_id, COL_FIND_IS_CHATROOM, hit->is_chatroom, COL_FIND_DATE, tmp, COL_FIND_DATE_READABLE, date_readable, -1); /* FIXME: Update COL_FIND_CHAT_NAME */ if (hit->is_chatroom) { } else { } } if (hits != NULL) { tpl_log_manager_search_free (hits); } }
static void log_manager_got_chats_cb (GObject *manager, GAsyncResult *result, gpointer user_data) { EmpathyLogWindow *window = user_data; GList *chats; GList *l; EmpathyAccountChooser *account_chooser; TpAccount *account; GtkTreeView *view; GtkTreeModel *model; GtkTreeSelection *selection; GtkListStore *store; GtkTreeIter iter; GError *error = NULL; chats = tpl_log_manager_get_chats_async_finish (result, &error); if (error != NULL) { DEBUG ("%s. Aborting", error->message); g_error_free (error); return; } account_chooser = EMPATHY_ACCOUNT_CHOOSER (window->account_chooser_chats); account = empathy_account_chooser_dup_account (account_chooser); view = GTK_TREE_VIEW (window->treeview_chats); model = gtk_tree_view_get_model (view); selection = gtk_tree_view_get_selection (view); store = GTK_LIST_STORE (model); for (l = chats; l; l = l->next) { TplLogSearchHit *hit; hit = l->data; gtk_list_store_append (store, &iter); gtk_list_store_set (store, &iter, COL_CHAT_ICON, "empathy-available", /* FIXME */ COL_CHAT_NAME, hit->chat_id, COL_CHAT_ACCOUNT, account, COL_CHAT_ID, hit->chat_id, COL_CHAT_IS_CHATROOM, hit->is_chatroom, -1); /* FIXME: Update COL_CHAT_ICON/NAME */ if (hit->is_chatroom) { } else { } } tpl_log_manager_search_free (chats); /* Unblock signals */ g_signal_handlers_unblock_by_func (selection, log_window_chats_changed_cb, window); g_object_unref (account); }