269
262
"entry_find", "activate", log_window_entry_find_activate_cb,
270
263
"button_previous", "clicked", log_window_button_previous_clicked_cb,
271
264
"button_next", "clicked", log_window_button_next_clicked_cb,
265
"button_close", "clicked", log_window_button_close_clicked_cb,
266
"button_close2", "clicked", log_window_button_close_clicked_cb,
272
267
"button_find", "clicked", log_window_button_find_clicked_cb,
273
268
"entry_chats", "changed", log_window_entry_chats_changed_cb,
274
269
"entry_chats", "activate", log_window_entry_chats_activate_cb,
275
"menu_delete", "activate", log_window_delete_menu_clicked_cb,
278
272
g_object_unref (gui);
1425
EmpathyAccountChooserFilterResultCallback callback;
1427
} FilterCallbackData;
1430
got_entities (GObject *manager,
1431
GAsyncResult *result,
1434
FilterCallbackData *data = user_data;
1438
if (!tpl_log_manager_get_entities_finish (TPL_LOG_MANAGER (manager), result, &entities, &error)) {
1439
DEBUG ("Could not get entities: %s", error->message);
1440
g_error_free (error);
1441
data->callback (FALSE, data->user_data);
1443
data->callback (entities != NULL, data->user_data);
1445
g_list_free_full (entities, g_object_unref);
1448
g_slice_free (FilterCallbackData, data);
1452
empathy_account_chooser_filter_has_logs (TpAccount *account,
1453
EmpathyAccountChooserFilterResultCallback callback,
1454
gpointer callback_data,
1457
TplLogManager *manager = tpl_log_manager_dup_singleton ();
1458
FilterCallbackData *cb_data = g_slice_new0 (FilterCallbackData);
1460
cb_data->callback = callback;
1461
cb_data->user_data = callback_data;
1463
tpl_log_manager_get_entities_async (manager, account, got_entities, cb_data);
1465
g_object_unref (manager);
1469
log_window_logger_clear_account_cb (TpProxy *proxy,
1470
const GError *error,
1472
GObject *weak_object)
1474
EmpathyLogWindow *window = user_data;
1477
g_warning ("Error when clearing logs: %s", error->message);
1479
/* Refresh the log viewer so the logs are cleared if the account
1480
* has been deleted */
1481
empathy_chat_view_clear (window->chatview_chats);
1482
log_window_chats_populate (window);
1484
/* Re-filter the account chooser so the accounts without logs get greyed out */
1485
empathy_account_chooser_set_filter (EMPATHY_ACCOUNT_CHOOSER (window->account_chooser_chats),
1486
empathy_account_chooser_filter_has_logs, NULL);
1490
log_window_clear_logs_chooser_select_account (EmpathyAccountChooser *chooser,
1491
EmpathyLogWindow *window)
1493
empathy_account_chooser_set_account (chooser,
1494
empathy_account_chooser_get_account (EMPATHY_ACCOUNT_CHOOSER (window->account_chooser_chats)));
1498
log_window_delete_menu_clicked_cb (GtkMenuItem *menuitem,
1499
EmpathyLogWindow *window)
1501
GtkWidget *dialog, *content_area, *hbox, *label;
1502
EmpathyAccountChooser *account_chooser;
1506
GError *error = NULL;
1508
account_chooser = (EmpathyAccountChooser *) empathy_account_chooser_new ();
1509
empathy_account_chooser_set_has_all_option (account_chooser, TRUE);
1510
empathy_account_chooser_set_filter (account_chooser, empathy_account_chooser_filter_has_logs, NULL);
1512
/* Select the same account as in the history window */
1513
if (empathy_account_chooser_is_ready (account_chooser))
1514
log_window_clear_logs_chooser_select_account (account_chooser, window);
1516
g_signal_connect (account_chooser, "ready",
1517
G_CALLBACK (log_window_clear_logs_chooser_select_account), window);
1519
dialog = gtk_message_dialog_new_with_markup (GTK_WINDOW (window->window),
1520
GTK_DIALOG_MODAL, GTK_MESSAGE_WARNING,
1522
_("Are you sure you want to delete all logs of previous conversations?"));
1524
gtk_dialog_add_buttons (GTK_DIALOG (dialog),
1525
GTK_STOCK_CANCEL, GTK_RESPONSE_CANCEL,
1526
_("Clear All"), GTK_RESPONSE_APPLY,
1529
content_area = gtk_message_dialog_get_message_area (
1530
GTK_MESSAGE_DIALOG (dialog));
1532
hbox = gtk_hbox_new (FALSE, 6);
1533
label = gtk_label_new (_("Delete from:"));
1534
gtk_box_pack_start (GTK_BOX (hbox), label,
1536
gtk_box_pack_start (GTK_BOX (hbox), GTK_WIDGET (account_chooser),
1538
gtk_box_pack_start (GTK_BOX (content_area), hbox,
1541
gtk_widget_show_all (hbox);
1543
response_id = gtk_dialog_run (GTK_DIALOG (dialog));
1545
if (response_id != GTK_RESPONSE_APPLY)
1548
bus = tp_dbus_daemon_dup (&error);
1549
if (error != NULL) {
1550
g_warning ("Could not delete logs: %s", error->message);
1551
g_error_free (error);
1555
logger = g_object_new (TP_TYPE_PROXY,
1556
"bus-name", "org.freedesktop.Telepathy.Logger",
1557
"object-path", "/org/freedesktop/Telepathy/Logger",
1560
g_object_unref (bus);
1562
tp_proxy_add_interface_by_id (logger, EMP_IFACE_QUARK_LOGGER);
1564
if (empathy_account_chooser_has_all_selected (account_chooser)) {
1565
DEBUG ("Deleting logs for all the accounts");
1567
emp_cli_logger_call_clear (logger, -1,
1568
log_window_logger_clear_account_cb,
1569
window, NULL, G_OBJECT (window->window));
1571
TpAccount *account = empathy_account_chooser_get_account (account_chooser);
1573
DEBUG ("Deleting logs for %s", tp_proxy_get_object_path (account));
1575
emp_cli_logger_call_clear_account (logger, -1,
1576
tp_proxy_get_object_path (account),
1577
log_window_logger_clear_account_cb,
1578
window, NULL, G_OBJECT (window->window));
1581
g_object_unref (logger);
1583
gtk_widget_destroy (dialog);