#include <gtk/gtkmenuitem.h>
#include <gtk/gtkmain.h>
#include <string.h>
-#include <hildon/hildon-notification.h>
#define HILDON_OSSO_URI_ACTION "uri-action"
+#define URI_ACTION_COPY "copy:"
static osso_context_t *osso_context = NULL;
return icon_name;
}
+
+
+
+#ifdef MODEST_HILDON_VERSION_0
+
gboolean
modest_platform_activate_uri (const gchar *uri)
{
- gboolean result;
+ OssoURIAction *action;
+ gboolean result = FALSE;
+ GSList *actions, *iter = NULL;
+ const gchar *scheme;
+
+ g_return_val_if_fail (uri, FALSE);
+ if (!uri)
+ return FALSE;
+
+ /* the default action should be email */
+ scheme = osso_uri_get_scheme_from_uri (uri, NULL);
+ actions = osso_uri_get_actions (scheme, NULL);
+
+ for (iter = actions; iter; iter = g_slist_next (iter)) {
+ action = (OssoURIAction*) iter->data;
+ if (action && strcmp (hildon_uri_action_get_service (action), "com.nokia.modest") == 0) {
+ GError *err = NULL;
+ result = osso_uri_open (uri, action, &err);
+ if (!result && err) {
+ g_printerr ("modest: modest_platform_activate_uri : %s",
+ err->message ? err->message : "unknown error");
+ g_error_free (err);
+ }
+ break;
+ }
+ }
+
+ if (!result)
+ hildon_banner_show_information (NULL, NULL, _("mcen_ib_unsupported_link"));
+ return result;
+}
+
+#else /* MODEST_HILDON_VERSION_0*/
-#ifdef MODEST_HILDON_VERSION_0
- result = osso_uri_open (uri, NULL, NULL);
-#else
- result = hildon_uri_open (uri, NULL, NULL);
-#endif
+gboolean
+modest_platform_activate_uri (const gchar *uri)
+{
+ HildonURIAction *action;
+ gboolean result = FALSE;
+ GSList *actions, *iter = NULL;
+ const gchar *scheme;
+
+ g_return_val_if_fail (uri, FALSE);
+ if (!uri)
+ return FALSE;
+
+ /* the default action should be email */
+ scheme = hildon_uri_get_scheme_from_uri (uri, NULL);
+ actions = hildon_uri_get_actions (scheme, NULL);
+
+ for (iter = actions; iter; iter = g_slist_next (iter)) {
+ action = (HildonURIAction*) iter->data;
+ if (action && strcmp (hildon_uri_action_get_service (action), "com.nokia.modest") == 0) {
+ GError *err = NULL;
+ result = hildon_uri_open (uri, action, &err);
+ if (!result && err) {
+ g_printerr ("modest: modest_platform_activate_uri : %s",
+ err->message ? err->message : "unknown error");
+ g_error_free (err);
+ }
+ break;
+ }
+ }
+
if (!result)
hildon_banner_show_information (NULL, NULL, _("mcen_ib_unsupported_link"));
return result;
}
+
+#endif /* MODEST_HILDON_VERSION_0*/
+
gboolean
modest_platform_activate_file (const gchar *path, const gchar *mime_type)
{
}
typedef struct {
- GSList * actions;
- gchar *uri;
+ GSList *actions;
+ gchar *uri;
} ModestPlatformPopupInfo;
static gboolean
g_printerr ("modest: no action name defined\n");
return;
}
+
+ /* special handling for the copy menu item -- copy the uri to the clipboard */
+ /* if it's a copy thingy, the uri will look like 'copy:http://slashdot.org' */
+ if (g_str_has_prefix (action_name, URI_ACTION_COPY)) {
+ GtkClipboard *clipboard = gtk_clipboard_get (GDK_NONE);
+ action_name += strlen(URI_ACTION_COPY); /* jump past the prefix */
+
+ if (g_str_has_prefix (action_name, "mailto:")) /* ignore mailto: prefixes */
+ action_name += strlen ("mailto:");
+
+ gtk_clipboard_set_text (clipboard, action_name, strlen (action_name));
+ return; /* we're done */
+ }
+ /* now, the real uri-actions... */
for (node = popup_info->actions; node != NULL; node = g_slist_next (node)) {
#ifdef MODEST_HILDON_VERSION_0
OssoURIAction *action = (OssoURIAction *) node->data;
if (uri == NULL)
return FALSE;
+
#ifdef MODEST_HILDON_VERSION_0
scheme = osso_uri_get_scheme_from_uri (uri, NULL);
actions_list = osso_uri_get_actions (scheme, NULL);
#endif
gtk_widget_show (menu_item);
}
+
+ /* always add the copy item */
+ GtkWidget* menu_item = gtk_menu_item_new_with_label (dgettext("osso-uri", "uri_link_copy_link_location"));
+ g_object_set_data_full (G_OBJECT(menu_item), HILDON_OSSO_URI_ACTION,
+ g_strconcat (URI_ACTION_COPY, uri, NULL),
+ g_free);
+ g_signal_connect (G_OBJECT (menu_item), "activate", G_CALLBACK (activate_uri_popup_item),NULL);
+ gtk_menu_shell_append (GTK_MENU_SHELL (menu), menu_item);
+ gtk_widget_show (menu_item);
+
+ /* and what to do when the link is deleted */
g_signal_connect (G_OBJECT (menu), "delete-event", G_CALLBACK (delete_uri_popup), popup_info);
gtk_menu_popup (GTK_MENU(menu), NULL, NULL, NULL, NULL, 1, gtk_get_current_event_time ());
modest_platform_on_new_msg (void)
{
return; /* TODO: Reenable this later. I disabled it to avoid having one notification per email. */
+#ifndef MODEST_HILDON_VERSION_0
HildonNotification *not;
/* Create a new notification. FIXME put the right values, need
g_error ("Failed to send notification");
g_object_unref (not);
+#endif /*MODEST_HILDON_VERSION_0*/
}