diff -r 941734e74261 -r af20db93f2c2 pidgin/plugins/disco/gtkdisco.c
--- a/pidgin/plugins/disco/gtkdisco.c Mon Jan 23 23:27:47 2023 -0600
+++ b/pidgin/plugins/disco/gtkdisco.c Tue Jan 24 15:40:35 2023 -0600
@@ -103,26 +103,6 @@
}
}
-static char *
-pidgin_disco_get_icon_name(XmppDiscoService *service)
-{
- char *icon_name = NULL;
-
- g_return_val_if_fail(service != NULL, NULL);
-
- if (service->type == XMPP_DISCO_SERVICE_TYPE_GATEWAY && service->gateway_type) {
- icon_name = g_strconcat("im-", service->gateway_type, NULL);
-#if 0
- } else if (service->type == XMPP_DISCO_SERVICE_TYPE_USER) {
- icon_name = g_strdup("person");
-#endif
- } else if (service->type == XMPP_DISCO_SERVICE_TYPE_CHAT) {
- icon_name = g_strdup("chat");
- }
-
- return icon_name;
-}
-
static void
dialog_select_account_cb(GObject *obj, G_GNUC_UNUSED GParamSpec *pspec,
gpointer data)
@@ -146,9 +126,9 @@
PidginDiscoDialog *dialog = data;
XmppDiscoService *service = dialog->selected;
- g_return_if_fail(service != NULL);
+ g_return_if_fail(XMPP_DISCO_IS_SERVICE(service));
- xmpp_disco_service_register(service);
+ xmpp_disco_register_service(service);
}
static void discolist_cancel_cb(PidginDiscoList *pdl, const char *server)
@@ -248,15 +228,17 @@
{
PidginDiscoDialog *dialog = data;
XmppDiscoService *service = dialog->selected;
+ PidginDiscoList *list = NULL;
PurpleAccount *account;
const char *jid;
- g_return_if_fail(service != NULL);
+ g_return_if_fail(XMPP_DISCO_IS_SERVICE(service));
- account = purple_connection_get_account(service->list->pc);
- jid = service->jid;
+ list = xmpp_disco_service_get_list(service);
+ account = purple_connection_get_account(list->pc);
+ jid = xmpp_disco_service_get_jid(service);
- if (service->type == XMPP_DISCO_SERVICE_TYPE_CHAT) {
+ if(xmpp_disco_service_get_service_type(service) == XMPP_DISCO_SERVICE_TYPE_CHAT) {
purple_blist_request_add_chat(account, NULL, NULL, jid);
} else {
purple_blist_request_add_buddy(account, jid, NULL, NULL);
@@ -318,8 +300,9 @@
SERVICE_COLUMN, &val);
dialog->selected = g_value_get_pointer(&val);
if (dialog->selected != NULL) {
- allow_add = (dialog->selected->flags & XMPP_DISCO_ADD);
- allow_register = (dialog->selected->flags & XMPP_DISCO_REGISTER);
+ XmppDiscoServiceFlags flags = xmpp_disco_service_get_flags(dialog->selected);
+ allow_add = (flags & XMPP_DISCO_ADD) != 0;
+ allow_register = (flags & XMPP_DISCO_REGISTER) != 0;
}
}
@@ -351,6 +334,7 @@
PidginDiscoDialog *dialog = user_data;
GtkTreeIter iter;
XmppDiscoService *service;
+ XmppDiscoServiceFlags flags;
GValue val;
if (!gtk_tree_model_get_iter(GTK_TREE_MODEL(dialog->model), &iter, path)) {
@@ -362,15 +346,16 @@
SERVICE_COLUMN, &val);
service = g_value_get_pointer(&val);
- if (service->flags & XMPP_DISCO_BROWSE) {
+ flags = xmpp_disco_service_get_flags(service);
+ if((flags & XMPP_DISCO_BROWSE) != 0) {
if (gtk_tree_view_row_expanded(GTK_TREE_VIEW(dialog->tree), path)) {
gtk_tree_view_collapse_row(GTK_TREE_VIEW(dialog->tree), path);
} else {
gtk_tree_view_expand_row(GTK_TREE_VIEW(dialog->tree), path, FALSE);
}
- } else if (service->flags & XMPP_DISCO_REGISTER) {
+ } else if((flags & XMPP_DISCO_REGISTER) != 0) {
g_action_activate(G_ACTION(dialog->register_action), NULL);
- } else if (service->flags & XMPP_DISCO_ADD) {
+ } else if((flags & XMPP_DISCO_ADD) != 0) {
g_action_activate(G_ACTION(dialog->add_action), NULL);
}
}
@@ -452,7 +437,7 @@
return FALSE;
}
- switch (service->type) {
+ switch(xmpp_disco_service_get_service_type(service)) {
case XMPP_DISCO_SERVICE_TYPE_UNSET:
type = _("Unknown");
break;
@@ -482,16 +467,17 @@
break;
}
- name = g_markup_escape_text(service->name, -1);
- jid = g_markup_escape_text(service->jid, -1);
- if (service->description != NULL) {
- desc = g_markup_escape_text(service->description, -1);
+ name = g_markup_escape_text(xmpp_disco_service_get_name(service), -1);
+ jid = g_markup_escape_text(xmpp_disco_service_get_jid(service), -1);
+ if(xmpp_disco_service_get_description(service) != NULL) {
+ desc = g_markup_escape_text(xmpp_disco_service_get_description(service),
+ -1);
}
markup = g_strdup_printf("%s\n%s: %s%s%s",
name, type, jid,
- service->description ? _("\nDescription: ") : "",
- service->description ? desc : "");
+ desc != NULL ? _("\nDescription: ") : "",
+ desc != NULL ? desc : "");
gtk_tooltip_set_markup(tooltip, markup);
gtk_tree_view_set_tooltip_row(GTK_TREE_VIEW(widget), tooltip, path);
@@ -663,10 +649,11 @@
g_return_if_fail(dialog != NULL);
if (service != NULL) {
- purple_debug_info("xmppdisco", "Adding service \"%s\"", service->name);
+ purple_debug_info("xmppdisco", "Adding service \"%s\"",
+ xmpp_disco_service_get_name(service));
} else {
purple_debug_info("xmppdisco", "Service \"%s\" has no children",
- parent->name);
+ xmpp_disco_service_get_name(parent));
}
gtk_progress_bar_pulse(GTK_PROGRESS_BAR(dialog->progress));
@@ -710,7 +697,7 @@
iter = child;
}
- if (service->flags & XMPP_DISCO_BROWSE) {
+ if((xmpp_disco_service_get_flags(service) & XMPP_DISCO_BROWSE) != 0) {
GtkTreeRowReference *rr;
GtkTreePath *path;
@@ -724,11 +711,12 @@
gtk_tree_path_free(path);
}
- icon_name = pidgin_disco_get_icon_name(service);
+ icon_name = xmpp_disco_service_get_icon_name(service);
gtk_tree_store_set(dialog->model, &iter, ICON_NAME_COLUMN, icon_name,
- NAME_COLUMN, service->name, DESCRIPTION_COLUMN,
- service->description, SERVICE_COLUMN, service, -1);
+ NAME_COLUMN, xmpp_disco_service_get_name(service),
+ DESCRIPTION_COLUMN, xmpp_disco_service_get_description(service),
+ SERVICE_COLUMN, service, -1);
g_free(icon_name);
}