* Removed a duplicated save_state call
[modest] / src / maemo / modest-platform.c
index cb07e6c..e921c1c 100644 (file)
@@ -181,31 +181,37 @@ const gchar*
 guess_mime_type_from_name (const gchar* name)
 {
        int i;
-       const gchar* ext;
-       const static gchar* octet_stream= "application/octet-stream";
+       const static gchar* mime_type;
        const static gchar* mime_map[][2] = {
-               { "pdf",  "application/pdf"},
-               { "doc",  "application/msword"},
-               { "xls",  "application/excel"},
-               { "png",  "image/png" },
-               { "gif",  "image/gif" },
-               { "jpg",  "image/jpeg"},
-               { "jpeg", "image/jpeg"},
-               { "mp3",  "audio/mp3" }
+               { ".note.html", "text/note"}, /* for the osso_notes program */
+               { ".deb",       "application/x-deb"},
+               { ".install",   "application/x-install-instructions"},
+               { ".html",      "text/html"}, 
+               { ".htm",       "text/html"}, 
+               { ".pdf",       "application/pdf"},
+               { ".doc",       "application/msword"},
+               { ".xls",       "application/excel"},
+               { ".png",       "image/png" },
+               { ".gif",       "image/gif" },
+               { ".jpg",       "image/jpeg"},
+               { ".jpeg",      "image/jpeg"},
+               { ".mp3",       "audio/mp3" }
        };
 
-       if (!name)
-               return octet_stream;
-       
-       ext = g_strrstr (name, ".");
-       if (!ext)
-               return octet_stream;
-       
-       for (i = 0; i != G_N_ELEMENTS(mime_map); ++i) {
-               if (!g_ascii_strcasecmp (mime_map[i][0], ext + 1)) /* +1: ignore '.'*/
-                       return mime_map[i][1];
+       mime_type = "application/octet-stream";
+
+       if (name) {
+               gchar* lc_name = g_utf8_strdown (name, -1);
+               for (i = 0; i != G_N_ELEMENTS(mime_map); ++i) {
+                       if (g_str_has_suffix (lc_name, mime_map[i][0])) {
+                               mime_type = mime_map[i][1];
+                               break;
+                       }
+               }
+               g_free (lc_name);
        }
-       return octet_stream;
+       
+       return mime_type;
 }
 
 
@@ -224,11 +230,7 @@ modest_platform_get_file_icon_name (const gchar* name, const gchar* mime_type,
                g_string_ascii_down (mime_str);
        }
 
-#ifdef MODEST_HAVE_OSSO_MIME
-       icons = osso_mime_get_icon_names (mime_str->str, NULL);
-#else
        icons = hildon_mime_get_icon_names (mime_str->str, NULL);
-#endif /*MODEST_HAVE_OSSO_MIME*/
        for (cursor = icons; cursor; ++cursor) {
                if (!g_ascii_strcasecmp (*cursor, "gnome-mime-message") ||
                    !g_ascii_strcasecmp (*cursor, "gnome-mime-message-rfc822")) {
@@ -250,51 +252,6 @@ modest_platform_get_file_icon_name (const gchar* name, const gchar* mime_type,
 }
 
 
-
-
-#ifdef MODEST_HAVE_OSSO_MIME
-gboolean 
-modest_platform_activate_uri (const gchar *uri)
-{
-       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 (osso_uri_action_get_name (action), "uri_link_compose_email") == 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 we could open it with email, try something else */
-       if (!result)
-               result = osso_uri_open (uri, NULL, NULL);       
-       
-                       
-       if (!result)
-               hildon_banner_show_information (NULL, NULL, _("mcen_ib_unsupported_link"));
-       return result;
-}
-
-#else /* !MODEST_HAVE_OSSO_MIME*/
-
 gboolean 
 modest_platform_activate_uri (const gchar *uri)
 {
@@ -312,7 +269,8 @@ modest_platform_activate_uri (const gchar *uri)
        
        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) {
+               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) {
@@ -334,36 +292,23 @@ modest_platform_activate_uri (const gchar *uri)
        return result;
 }
 
-
-#endif /* MODEST_HAVE_OSSO_MIME*/
-
 gboolean 
 modest_platform_activate_file (const gchar *path, const gchar *mime_type)
 {
-       gint result;
+       gint result = 0;
        DBusConnection *con;
        gchar *uri_path = NULL;
-       GString *mime_str = NULL;
 
-       if (!mime_type || !g_ascii_strcasecmp (mime_type, "application/octet-stream")) 
-               mime_str = g_string_new (guess_mime_type_from_name(path));
-       else {
-               mime_str = g_string_new (mime_type);
-               g_string_ascii_down (mime_str);
-       }
-
-       uri_path = g_strconcat ("file://", path, NULL);
-       
+       uri_path = g_strconcat ("file://", path, NULL); 
        con = osso_get_dbus_connection (osso_context);
-#ifdef MODEST_HAVE_OSSO_MIME
-       result = osso_mime_open_file_with_mime_type (con, uri_path, mime_str->str);
-#else
-       result = hildon_mime_open_file_with_mime_type (con, uri_path, mime_str->str);
-#endif /*MODEST_HAVE_OSSO_MIME*/
-       g_string_free (mime_str, TRUE);
-
+       
+       if (mime_type)
+               result = hildon_mime_open_file_with_mime_type (con, uri_path, mime_type);
+       if (result != 1)
+               result = hildon_mime_open_file (con, uri_path);
        if (result != 1)
                modest_platform_run_information_dialog (NULL, _("mcen_ni_noregistered_viewer"));
+       
        return result != 1;
 }
 
@@ -380,11 +325,8 @@ delete_uri_popup (GtkWidget *menu,
        ModestPlatformPopupInfo *popup_info = (ModestPlatformPopupInfo *) userdata;
 
        g_free (popup_info->uri);
-#ifdef MODEST_HAVE_OSSO_MIME
-       osso_uri_free_actions (popup_info->actions);
-#else
        hildon_uri_free_actions (popup_info->actions);
-#endif /*MODEST_HAVE_OSSO_MIME*/
+
        return FALSE;
 }
 
@@ -417,19 +359,11 @@ activate_uri_popup_item (GtkMenuItem *menu_item,
        
        /* now, the real uri-actions... */
        for (node = popup_info->actions; node != NULL; node = g_slist_next (node)) {
-#ifdef MODEST_HAVE_OSSO_MIME
-               OssoURIAction *action = (OssoURIAction *) node->data;
-               if (strcmp (action_name, osso_uri_action_get_name (action))==0) {
-                       osso_uri_open (popup_info->uri, action, NULL);
-                       break;
-               }
-#else
                HildonURIAction *action = (HildonURIAction *) node->data;
                if (strcmp (action_name, hildon_uri_action_get_name (action))==0) {
                        hildon_uri_open (popup_info->uri, action, NULL);
                        break;
                }
-#endif /*MODEST_HAVE_OSSO_MIME*/
        }
 }
 
@@ -442,13 +376,8 @@ modest_platform_show_uri_popup (const gchar *uri)
        if (uri == NULL)
                return FALSE;
        
-#ifdef MODEST_HAVE_OSSO_MIME
-       scheme = osso_uri_get_scheme_from_uri (uri, NULL);
-       actions_list = osso_uri_get_actions (scheme, NULL);
-#else
        scheme = hildon_uri_get_scheme_from_uri (uri, NULL);
        actions_list = hildon_uri_get_actions (scheme, NULL);
-#endif /* MODEST_HAVE_OSSO_MIME */
        if (actions_list != NULL) {
                GSList *node;
                GtkWidget *menu = gtk_menu_new ();
@@ -461,22 +390,6 @@ modest_platform_show_uri_popup (const gchar *uri)
                        GtkWidget *menu_item;
                        const gchar *action_name;
                        const gchar *translation_domain;
-#ifdef MODEST_HAVE_OSSO_MIME
-                       OssoURIAction *action = (OssoURIAction *) node->data;
-                       action_name = osso_uri_action_get_name (action);
-                       translation_domain = osso_uri_action_get_translation_domain (action);
-                       menu_item = gtk_menu_item_new_with_label (dgettext(translation_domain,action_name));
-                       g_object_set_data (G_OBJECT(menu_item), HILDON_OSSO_URI_ACTION, (gpointer)action_name);
-                       /* hack, we add it as a gobject property*/
-                       g_signal_connect (G_OBJECT (menu_item), "activate", G_CALLBACK (activate_uri_popup_item),
-                                         popup_info);
-                       
-                       if (osso_uri_is_default_action (action, NULL)) {
-                               gtk_menu_shell_prepend (GTK_MENU_SHELL (menu), menu_item);
-                       } else {
-                               gtk_menu_shell_append (GTK_MENU_SHELL (menu), menu_item);
-                       }
-#else
                        HildonURIAction *action = (HildonURIAction *) node->data;
                        action_name = hildon_uri_action_get_name (action);
                        translation_domain = hildon_uri_action_get_translation_domain (action);
@@ -490,7 +403,6 @@ modest_platform_show_uri_popup (const gchar *uri)
                        } else {
                                gtk_menu_shell_append (GTK_MENU_SHELL (menu), menu_item);
                        }
-#endif /*MODEST_HAVE_OSSO_MIME*/
                        gtk_widget_show (menu_item);
                }
 
@@ -1360,10 +1272,12 @@ modest_platform_on_new_msg (void)
        
        /* Play sound SR-SND-18 */
        hildon_notification_set_sound (not, "/usr/share/sounds/ui-new_email.wav");
+        notify_notification_set_hint_int32 (NOTIFY_NOTIFICATION (not), "dialog-type", 4);
 
        /* Set the led pattern */
-        notify_notification_set_hint_int32 (NOTIFY_NOTIFICATION (not), "dialog-type", 4);
-       notify_notification_set_hint_int32 (NOTIFY_NOTIFICATION (not), "led-pattern", 3);
+       notify_notification_set_hint_string(NOTIFY_NOTIFICATION (not), 
+                                           "led-pattern", 
+                                           "PatternCommunicationEmail");
 
        /* Notify. We need to do this in an idle because this function
           could be called from a thread */
@@ -1557,7 +1471,8 @@ modest_platform_check_and_wait_for_account_is_online(TnyAccount *account)
                return TRUE;            
        }
                
-       printf ("DEBUG: %s: tny_account_get_connection_status()==%d\n", __FUNCTION__, tny_account_get_connection_status (account));
+       printf ("DEBUG: %s: tny_account_get_connection_status()==%d\n",
+               __FUNCTION__, tny_account_get_connection_status (account));
        
        /* The POP & IMAP store accounts seem to be TNY_CONNECTION_STATUS_DISCONNECTED, 
         * and that seems to be an OK time to use them. Maybe it's just TNY_CONNECTION_STATUS_INIT that