changeset 32554:03dcb0185c82

Display a certificate request field in Pidgin and Finch by just using the display string of the certificate in a label.
author Elliott Sales de Andrade <qulogic@pidgin.im>
date Sun, 26 Feb 2012 03:54:26 +0000
parents c3eaa2a6aa42
children ca8b2ec198d9
files finch/gntrequest.c pidgin/gtkrequest.c
diffstat 2 files changed, 45 insertions(+), 0 deletions(-) [+]
line wrap: on
line diff
--- a/finch/gntrequest.c	Sun Feb 26 03:38:28 2012 +0000
+++ b/finch/gntrequest.c	Sun Feb 26 03:54:26 2012 +0000
@@ -571,6 +571,22 @@
 	return combo;
 }
 
+static GntWidget*
+create_certificate_field(PurpleRequestField *field)
+{
+	GntWidget *w;
+	PurpleCertificate *cert;
+	char *str;
+
+	cert = purple_request_field_certificate_get_value(field);
+	str = purple_certificate_get_display_string(cert);
+	w = gnt_label_new(str);
+
+	g_free(str);
+
+	return w;
+}
+
 static void *
 finch_request_fields(const char *title, const char *primary,
 		const char *secondary, PurpleRequestFields *allfields,
@@ -650,6 +666,10 @@
 				accountlist = create_account_field(field);
 				purple_request_field_set_ui_data(field, accountlist);
 			}
+			else if (type == PURPLE_REQUEST_FIELD_CERTIFICATE)
+			{
+				purple_request_field_set_ui_data(field, create_certificate_field(field));
+			}
 			else
 			{
 				purple_request_field_set_ui_data(field, gnt_label_new_with_format(_("Not implemented yet."),
--- a/pidgin/gtkrequest.c	Sun Feb 26 03:38:28 2012 +0000
+++ b/pidgin/gtkrequest.c	Sun Feb 26 03:54:26 2012 +0000
@@ -1191,6 +1191,29 @@
 	return pidgin_make_scrollable(treeview, GTK_POLICY_AUTOMATIC, GTK_POLICY_AUTOMATIC, GTK_SHADOW_IN, -1, -1);
 }
 
+static GtkWidget *
+create_certificate_field(PurpleRequestField *field)
+{
+	GtkWidget *cert_label;
+	PurpleCertificate *cert;
+	char *str;
+	char *escaped;
+
+	cert = purple_request_field_certificate_get_value(field);
+	str = purple_certificate_get_display_string(cert);
+	escaped = g_markup_escape_text(str, -1);
+
+	cert_label = gtk_label_new(NULL);
+	gtk_label_set_markup(GTK_LABEL(cert_label), escaped);
+	gtk_label_set_line_wrap(GTK_LABEL(cert_label), TRUE);
+	gtk_misc_set_alignment(GTK_MISC(cert_label), 0, 0);
+
+	g_free(str);
+	g_free(escaped);
+
+	return cert_label;
+}
+
 static void *
 pidgin_request_fields(const char *title, const char *primary,
 						const char *secondary, PurpleRequestFields *fields,
@@ -1478,6 +1501,8 @@
 						widget = create_image_field(field);
 					else if (type == PURPLE_REQUEST_FIELD_ACCOUNT)
 						widget = create_account_field(field);
+					else if (type == PURPLE_REQUEST_FIELD_CERTIFICATE)
+						widget = create_certificate_field(field);
 					else
 						continue;
 				}