Commit a6cac3f2 authored by Dan Vrátil's avatar Dan Vrátil
Browse files

Bug #670876 - Missing mnemonics for buttons for vcard attached to email

parent b3c57ed8
......@@ -432,3 +432,43 @@ e_mail_formatter_find_rfc822_end_iter (GSList *iter)
g_free (end);
return iter;
}
gchar *
e_mail_formatter_parse_html_mnemonics (const gchar *label,
gchar **access_key)
{
const gchar *pos = NULL;
gchar ak = 0;
GString *html_label = NULL;
pos = strstr (label, "_");
if (pos != NULL) {
ak = pos[1];
/* Convert to uppercase */
if (ak >= 'a')
ak = ak - 32;
html_label = g_string_new ("");
g_string_append_len (html_label, label, pos - label);
g_string_append_printf (html_label, "<u>%c</u>", pos[1]);
g_string_append (html_label, &pos[2]);
if (access_key) {
if (ak) {
*access_key = g_strdup_printf ("%c", ak);
} else {
*access_key = NULL;
}
}
} else {
html_label = g_string_new (label);
if (access_key) {
*access_key = NULL;
}
}
return g_string_free (html_label, FALSE);
}
......@@ -48,9 +48,13 @@ gchar * e_mail_formatter_format_address (EMailFormatter *formatter,
void e_mail_formatter_canon_header_name
(gchar *name);
GSList * e_mail_formatter_find_rfc822_end_iter
GSList * e_mail_formatter_find_rfc822_end_iter
(GSList *rfc822_start_iter);
gchar * e_mail_formatter_parse_html_mnemonics
(const gchar *label,
gchar **access_key);
G_END_DECLS
#endif /* E_MAIL_FORMATTER_UTILS_H_ */
......@@ -47,6 +47,7 @@
#include <mail/em-config.h>
#include <mail/em-utils.h>
#include <em-format/e-mail-formatter-utils.h>
#include <calendar/gui/itip-utils.h>
......@@ -835,46 +836,6 @@ source_changed_cb (WebKitDOMElement *select,
g_object_unref (source);
}
static gchar *
parse_html_mnemonics (const gchar *label,
gchar **access_key)
{
const gchar *pos = NULL;
gchar ak = 0;
GString *html_label = NULL;
pos = strstr (label, "_");
if (pos != NULL) {
ak = pos[1];
/* Convert to uppercase */
if (ak >= 'a')
ak = ak - 32;
html_label = g_string_new ("");
g_string_append_len (html_label, label, pos - label);
g_string_append_printf (html_label, "<u>%c</u>", pos[1]);
g_string_append (html_label, &pos[2]);
if (access_key) {
if (ak) {
*access_key = g_strdup_printf ("%c", ak);
} else {
*access_key = NULL;
}
}
} else {
html_label = g_string_new (label);
if (access_key) {
*access_key = NULL;
}
}
return g_string_free (html_label, FALSE);
}
static void
append_checkbox_table_row (GString *buffer,
const gchar *name,
......@@ -882,7 +843,7 @@ append_checkbox_table_row (GString *buffer,
{
gchar *access_key, *html_label;
html_label = parse_html_mnemonics (label, &access_key);
html_label = e_mail_formatter_parse_html_mnemonics (label, &access_key);
g_string_append_printf (
buffer,
......@@ -1017,7 +978,7 @@ buttons_table_write_button (GString *buffer,
{
gchar *access_key, *html_label;
html_label = parse_html_mnemonics (label, &access_key);
html_label = e_mail_formatter_parse_html_mnemonics (label, &access_key);
g_string_append_printf (
buffer,
......@@ -1839,7 +1800,7 @@ itip_view_set_item_type (ItipView *view,
return;
}
html_label = parse_html_mnemonics (header, &access_key);
html_label = e_mail_formatter_parse_html_mnemonics (header, &access_key);
webkit_dom_html_element_set_access_key (
WEBKIT_DOM_HTML_ELEMENT (label), access_key);
......
......@@ -29,6 +29,7 @@
#include <em-format/e-mail-formatter-extension.h>
#include <em-format/e-mail-formatter.h>
#include <em-format/e-mail-formatter-utils.h>
#include <em-format/e-mail-part-utils.h>
#include <camel/camel.h>
......@@ -93,6 +94,7 @@ emfe_vcard_inline_format (EMailFormatterExtension *extension,
const gchar *label = NULL;
EABContactDisplayMode mode;
const gchar *info = NULL;
gchar *html_label, *access_key;
length = g_slist_length (vcard_part->contact_list);
if (length < 1)
......@@ -113,33 +115,50 @@ emfe_vcard_inline_format (EMailFormatterExtension *extension,
mode = eab_contact_formatter_get_display_mode (vcard_part->formatter);
if (mode == EAB_CONTACT_DISPLAY_RENDER_COMPACT) {
mode = EAB_CONTACT_DISPLAY_RENDER_NORMAL;
label =_("Show Full vCard");
label = _("Show F_ull vCard");
} else {
mode = EAB_CONTACT_DISPLAY_RENDER_COMPACT;
label = _("Show Compact vCard");
label = _("Show Com_pact vCard");
}
str = g_strdup_printf (
"<div id=\"%s\">"
"<div id=\"%s\">", part->id);
camel_stream_write_string (stream, str, cancellable, NULL);
g_free (str);
html_label = e_mail_formatter_parse_html_mnemonics (
label, &access_key);
str = g_strdup_printf (
"<button type=\"button\" "
"name=\"set-display-mode\" "
"class=\"org-gnome-vcard-inline-display-mode-button\" "
"value=\"%d\">%s</button>"
"value=\"%d\" "
"accesskey=\"%s\">%s</button>",
mode, access_key, html_label);
camel_stream_write_string (stream, str, cancellable, NULL);
g_free (str);
g_free (html_label);
if (access_key)
g_free (access_key);
html_label = e_mail_formatter_parse_html_mnemonics (
_("Save _To Addressbook"), &access_key);
str = g_strdup_printf (
"<button type=\"button\" "
"name=\"save-to-addressbook\" "
"class=\"org-gnome-vcard-inline-save-button\" "
"value=\"%s\">%s</button><br/>"
"value=\"%s\" "
"accesskey=\"%s\">%s</button><br/>"
"<iframe width=\"100%%\" height=\"auto\" frameborder=\"0\""
"src=\"%s\" name=\"%s\"></iframe>"
"</div>",
part->id,
mode, label,
part->id, _("Save To Addressbook"),
part->id, access_key, html_label,
uri, part->id);
camel_stream_write_string (stream, str, cancellable, NULL);
g_free (str);
g_free (html_label);
if (access_key)
g_free (access_key);
if (length == 2) {
......
......@@ -34,7 +34,7 @@
#include <em-format/e-mail-parser-extension.h>
#include <em-format/e-mail-part.h>
#include <em-format/e-mail-part-utils.h>
#include <em-format/e-mail-formatter.h>
#include <em-format/e-mail-formatter-utils.h>
#include <libebook/libebook.h>
#include <libedataserver/libedataserver.h>
......@@ -191,21 +191,44 @@ display_mode_toggle_cb (WebKitDOMEventTarget *button,
{
EABContactDisplayMode mode;
gchar *uri;
gchar *html_label, *access_key;
mode = eab_contact_formatter_get_display_mode (vcard_part->formatter);
if (mode == EAB_CONTACT_DISPLAY_RENDER_NORMAL) {
mode = EAB_CONTACT_DISPLAY_RENDER_COMPACT;
webkit_dom_html_element_set_inner_text (
html_label = e_mail_formatter_parse_html_mnemonics (
_("Show F_ull vCard"), &access_key);
webkit_dom_html_element_set_inner_html (
WEBKIT_DOM_HTML_ELEMENT (button),
_("Show Full vCard"), NULL);
html_label, NULL);
if (access_key) {
webkit_dom_html_element_set_access_key (
WEBKIT_DOM_HTML_ELEMENT (button),
access_key);
g_free (access_key);
}
g_free (html_label);
} else {
mode = EAB_CONTACT_DISPLAY_RENDER_NORMAL;
webkit_dom_html_element_set_inner_text (
html_label = e_mail_formatter_parse_html_mnemonics (
_("Show Com_pact vCard"), &access_key);
webkit_dom_html_element_set_inner_html (
WEBKIT_DOM_HTML_ELEMENT (button),
_("Show Compact vCard"), NULL);
html_label, NULL);
if (access_key) {
webkit_dom_html_element_set_access_key (
WEBKIT_DOM_HTML_ELEMENT (button),
access_key);
g_free (access_key);
}
g_free (html_label);
}
eab_contact_formatter_set_display_mode (vcard_part->formatter, mode);
......
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment