2007-06-03 Christian Kellner <ckellner@openismus.com>
[modest] / src / maemo / modest-maemo-utils.c
index 1fca24e..9aae77c 100644 (file)
@@ -35,6 +35,8 @@
 #include <dbus/dbus-glib-lowlevel.h>
 #include <glib.h>
 #include <modest-runtime.h>
+#include <libgnomevfs/gnome-vfs.h>
+#include <tny-fs-stream.h>
 
 #include "modest-maemo-utils.h"
 
                           "',member='" BTNAME_SIG_CHANGED "'"
 
 
+GtkWidget*
+modest_maemo_utils_menubar_to_menu (GtkUIManager *ui_manager)
+{
+       GtkWidget *main_menu;
+       GtkWidget *menubar;
+       GList *iter;
+
+       g_return_val_if_fail (ui_manager, NULL);
+       
+       /* Create new main menu */
+       main_menu = gtk_menu_new();
+
+       /* Get the menubar from the UI manager */
+       menubar = gtk_ui_manager_get_widget (ui_manager, "/MenuBar");
+
+       iter = gtk_container_get_children (GTK_CONTAINER (menubar));
+       while (iter) {
+               GtkWidget *menu;
+
+               menu = GTK_WIDGET (iter->data);
+               gtk_widget_reparent(menu, main_menu);
+
+               iter = g_list_next (iter);
+       }
+       return main_menu;
+}
+
+
 static void
 update_device_name_from_msg (DBusMessage *message)
 {
@@ -63,20 +93,14 @@ update_device_name_from_msg (DBusMessage *message)
        dbus_error_init (&error);
 
        if (dbus_set_error_from_message (&error, message)) {
-               g_printerr ("modest: failed to get bt name: %s\n", error.message);
+               g_printerr ("modest: failed to get bluetooth name: %s\n", error.message);
                dbus_error_free (&error);
-               modest_conf_set_string (modest_runtime_get_conf(),
-                                       MODEST_CONF_DEVICE_NAME,
-                                       MODEST_LOCAL_FOLDERS_DEFAULT_DISPLAY_NAME,
-                                       NULL);
-                                       
        } else {
                const gchar *device_name;
                if (!dbus_message_iter_init (message, &iter)) {
                        g_printerr ("modest: message did not have argument\n");
                        return;
                }
-
                dbus_message_iter_get_basic (&iter, &device_name);
                g_warning ("update device name: %s", device_name);
                modest_conf_set_string (modest_runtime_get_conf(),
@@ -166,5 +190,53 @@ modest_maemo_utils_get_device_name (void)
        get_device_name_from_dbus ();
 }
 
+gboolean 
+modest_maemo_utils_folder_writable (const gchar *filename)
+{
+       if (g_strncasecmp (filename, "obex", 4) != 0) {
+               GnomeVFSFileInfo folder_info;
+               gchar *folder;
+               folder = g_path_get_dirname (filename);
+               gnome_vfs_get_file_info (folder, &folder_info,
+                                        GNOME_VFS_FILE_INFO_GET_ACCESS_RIGHTS);
+               g_free (folder);
+               if (!((folder_info.permissions & GNOME_VFS_PERM_ACCESS_WRITABLE) ||
+                     (folder_info.permissions & GNOME_VFS_PERM_USER_WRITE))) {
+                       return FALSE;
+               }
+       }
+       return TRUE;
+}
 
+gboolean 
+modest_maemo_utils_file_exists (const gchar *filename)
+{
+       GnomeVFSURI *uri = NULL;
+       gboolean result = FALSE;
 
+       uri = gnome_vfs_uri_new (filename);
+       if (uri) {
+               result = gnome_vfs_uri_exists (uri);
+               gnome_vfs_uri_unref (uri);
+       }
+       return result;
+}
+
+TnyFsStream *
+modest_maemo_utils_create_temp_stream (gchar **path)
+{
+       TnyStream *tmp_fs_stream;
+       gint fd;
+       gchar *filepath;
+
+       fd = g_file_open_tmp (NULL, &filepath, NULL);
+       if (path != NULL)
+               *path = filepath;
+       if (fd == -1) {
+               g_message ("TODO BANNER: Error saving stream");
+               return NULL;
+       }
+       tmp_fs_stream = tny_fs_stream_new (fd);
+       
+       return TNY_FS_STREAM (tmp_fs_stream);
+}