aboutsummaryrefslogtreecommitdiffstats
path: root/modules/vcard-inline
diff options
context:
space:
mode:
authorDan Vrátil <dvratil@redhat.com>2012-06-08 17:30:03 +0800
committerDan Vrátil <dvratil@redhat.com>2012-06-08 17:30:44 +0800
commita6cac3f275db19342e57f2d96141ccfbbf13a8ec (patch)
treee2274b05feb669fae22f3ef03a2ee504ffed3d21 /modules/vcard-inline
parentb3c57ed8e5f1bcbda9ec0fa37a252aeb5313f279 (diff)
downloadgsoc2013-evolution-a6cac3f275db19342e57f2d96141ccfbbf13a8ec.tar.gz
gsoc2013-evolution-a6cac3f275db19342e57f2d96141ccfbbf13a8ec.tar.zst
gsoc2013-evolution-a6cac3f275db19342e57f2d96141ccfbbf13a8ec.zip
Bug #670876 - Missing mnemonics for buttons for vcard attached to email
Diffstat (limited to 'modules/vcard-inline')
-rw-r--r--modules/vcard-inline/e-mail-formatter-vcard-inline.c39
-rw-r--r--modules/vcard-inline/e-mail-parser-vcard-inline.c33
2 files changed, 57 insertions, 15 deletions
diff --git a/modules/vcard-inline/e-mail-formatter-vcard-inline.c b/modules/vcard-inline/e-mail-formatter-vcard-inline.c
index 25cdacb116..54d095fc31 100644
--- a/modules/vcard-inline/e-mail-formatter-vcard-inline.c
+++ b/modules/vcard-inline/e-mail-formatter-vcard-inline.c
@@ -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) {
diff --git a/modules/vcard-inline/e-mail-parser-vcard-inline.c b/modules/vcard-inline/e-mail-parser-vcard-inline.c
index 562ca75c72..e4827d0709 100644
--- a/modules/vcard-inline/e-mail-parser-vcard-inline.c
+++ b/modules/vcard-inline/e-mail-parser-vcard-inline.c
@@ -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);