aboutsummaryrefslogtreecommitdiffstats
path: root/mail
diff options
context:
space:
mode:
Diffstat (limited to 'mail')
-rw-r--r--mail/ChangeLog8
-rw-r--r--mail/em-folder-view.c15
-rw-r--r--mail/em-popup.c14
-rw-r--r--mail/em-popup.h2
4 files changed, 34 insertions, 5 deletions
diff --git a/mail/ChangeLog b/mail/ChangeLog
index 7d4f844659..07eca6c462 100644
--- a/mail/ChangeLog
+++ b/mail/ChangeLog
@@ -1,5 +1,13 @@
2007-06-18 Srinivasa Ragavan <sragavan@novell.com>
+ ** Fix for bug #445812 from Gilles Dartiguelongue
+
+ * em-folder-view.c: (emfv_on_url_cb):
+ * em-popup.c: (em_popup_target_new_uri):
+ * em-popup.h:
+
+2007-06-18 Srinivasa Ragavan <sragavan@novell.com>
+
** Fix for bug #437935 from Gilles Dartiguelongue
* em-folder-tree-model.c: (em_folder_tree_model_is_type_inbox):
diff --git a/mail/em-folder-view.c b/mail/em-folder-view.c
index 3fe1db0aea..56efc8c345 100644
--- a/mail/em-folder-view.c
+++ b/mail/em-folder-view.c
@@ -2596,7 +2596,8 @@ emp_uri_popup_link_copy(EPopup *ep, EPopupItem *pitem, void *data)
}
static EPopupItem emfv_uri_popups[] = {
- { E_POPUP_ITEM, "00.uri.15", N_("_Copy Link Location"), emp_uri_popup_link_copy, NULL, NULL, EM_POPUP_URI_NOT_MAILTO },
+ { E_POPUP_ITEM, "00.uri.11", N_("C_all To..."), emp_uri_popup_link_copy, NULL, NULL, EM_POPUP_URI_CALLTO },
+ { E_POPUP_ITEM, "00.uri.15", N_("_Copy Link Location"), emp_uri_popup_link_copy, NULL, "gtk-copy", EM_POPUP_URI_NOT_MAILTO },
{ E_POPUP_SUBMENU, "99.uri.00", N_("Create _Search Folder"), NULL, NULL, NULL, EM_POPUP_URI_MAILTO },
{ E_POPUP_ITEM, "99.uri.00/00.10", N_("_From this Address"), emp_uri_popup_vfolder_sender, NULL, NULL, EM_POPUP_URI_MAILTO },
@@ -2979,6 +2980,18 @@ emfv_on_url_cb (GObject *emitter, const char *url, EMFolderView *emfv)
g_free(addr);
camel_url_free(curl);
camel_object_unref(cia);
+ } else if (strncmp (url, "callto:", 7) == 0 || strncmp (url, "h323:", 5) == 0 || strncmp (url, "sip:", 4) == 0) {
+ CamelInternetAddress *cia = camel_internet_address_new();
+ CamelURL *curl;
+ char *addr;
+
+ curl = camel_url_new(url, NULL);
+ camel_address_decode((CamelAddress *)cia, curl->path);
+ addr = camel_address_format((CamelAddress *)cia);
+ nice_url = g_strdup_printf (_("Click to call %s"), addr&&addr[0]?addr:(url + 7));
+ g_free(addr);
+ camel_url_free(curl);
+ camel_object_unref(cia);
} else if (!strncmp (url, "##", 2)) {
nice_url = g_strdup (_("Click to hide/unhide addresses"));
} else
diff --git a/mail/em-popup.c b/mail/em-popup.c
index b059926f94..f6f7372c40 100644
--- a/mail/em-popup.c
+++ b/mail/em-popup.c
@@ -275,10 +275,15 @@ em_popup_target_new_uri(EMPopup *emp, const char *uri)
if (g_ascii_strncasecmp(uri, "http:", 5) == 0
|| g_ascii_strncasecmp(uri, "https:", 6) == 0)
mask &= ~EM_POPUP_URI_HTTP;
+ else if (g_ascii_strncasecmp(uri, "sip:", 3) == 0
+ || g_ascii_strncasecmp(uri, "h323:", 5) == 0
+ || g_ascii_strncasecmp(uri, "callto:", 7) == 0)
+ mask &= ~EM_POPUP_URI_CALLTO;
+
if (g_ascii_strncasecmp(uri, "mailto:", 7) == 0)
mask &= ~EM_POPUP_URI_MAILTO;
else
- mask &= ~EM_POPUP_URI_NOT_MAILTO;
+ mask &= ~(EM_POPUP_URI_NOT_MAILTO|~mask);
t->target.mask = mask;
@@ -622,9 +627,9 @@ emp_uri_popup_address_add(EPopup *ep, EPopupItem *item, void *data)
}
static EPopupItem emp_standard_uri_popups[] = {
- { E_POPUP_ITEM, "00.uri.00", N_("_Open Link in Browser"), emp_uri_popup_link_open, NULL, NULL, EM_POPUP_URI_NOT_MAILTO },
- { E_POPUP_ITEM, "00.uri.10", N_("_Send New Message To..."), emp_uri_popup_address_send, NULL, NULL, EM_POPUP_URI_MAILTO },
- { E_POPUP_ITEM, "00.uri.20", N_("_Add to Address Book"), emp_uri_popup_address_add, NULL, NULL, EM_POPUP_URI_MAILTO },
+ { E_POPUP_ITEM, "00.uri.00", N_("_Open Link in Browser"), emp_uri_popup_link_open, NULL, NULL, EM_POPUP_URI_HTTP },
+ { E_POPUP_ITEM, "00.uri.10", N_("_Send New Message To..."), emp_uri_popup_address_send, NULL, "stock_mail-compose", EM_POPUP_URI_MAILTO },
+ { E_POPUP_ITEM, "00.uri.20", N_("_Add to Address Book"), emp_uri_popup_address_add, NULL, "gtk-add", EM_POPUP_URI_MAILTO },
};
/* ********************************************************************** */
@@ -858,6 +863,7 @@ static const EPopupHookTargetMask emph_uri_masks[] = {
{ "http", EM_POPUP_URI_HTTP },
{ "mailto", EM_POPUP_URI_MAILTO },
{ "notmailto", EM_POPUP_URI_NOT_MAILTO },
+ { "callto", EM_POPUP_URI_CALLTO },
{ 0 }
};
diff --git a/mail/em-popup.h b/mail/em-popup.h
index 0a26e9c523..8acf3831e2 100644
--- a/mail/em-popup.h
+++ b/mail/em-popup.h
@@ -114,12 +114,14 @@ enum _em_popup_target_select_t {
* @EM_POPUP_URI_HTTP: This is a HTTP or HTTPS url.
* @EM_POPUP_URI_MAILTO: This is a MAILTO url.
* @EM_POPUP_URI_NOT_MAILTO: This is not a MAILTO url.
+ * @EM_POPUP_URI_CALLTO: This is a CALLTO url.
*
**/
enum _em_popup_target_uri_t {
EM_POPUP_URI_HTTP = 1<<0,
EM_POPUP_URI_MAILTO = 1<<1,
EM_POPUP_URI_NOT_MAILTO = 1<<2,
+ EM_POPUP_URI_CALLTO = 1<<3,
};
/**