X-Git-Url: http://git.maemo.org/git/?p=modest;a=blobdiff_plain;f=src%2Fmodest-utils.c;h=9753267bcaa0d40b91d2402fe16d02d7d16ac530;hp=a7f09ab5550cb77065aab459daa18c957deb7e66;hb=882063a897449f5c8a9e26bf771ec9da440bd8dd;hpb=91526797480db76525e1295ec4a65f29f4bdc9cf diff --git a/src/modest-utils.c b/src/modest-utils.c index a7f09ab..9753267 100644 --- a/src/modest-utils.c +++ b/src/modest-utils.c @@ -43,6 +43,7 @@ #include #include "modest-utils.h" #include "modest-platform.h" +#include GQuark modest_utils_get_supported_secure_authentication_error_quark (void) @@ -59,16 +60,18 @@ modest_utils_folder_writable (const gchar *filename) return FALSE; if (g_strncasecmp (filename, "obex", 4) != 0) { - GnomeVFSFileInfo folder_info; + GnomeVFSFileInfo *folder_info; gchar *folder; folder = g_path_get_dirname (filename); - gnome_vfs_get_file_info (folder, &folder_info, + folder_info = gnome_vfs_file_info_new (); + 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))) { + if (!((folder_info->permissions & GNOME_VFS_PERM_ACCESS_WRITABLE) || + (folder_info->permissions & GNOME_VFS_PERM_USER_WRITE))) { return FALSE; } + gnome_vfs_file_info_unref (folder_info); } return TRUE; } @@ -79,6 +82,8 @@ modest_utils_file_exists (const gchar *filename) GnomeVFSURI *uri = NULL; gboolean result = FALSE; + g_return_val_if_fail (filename, FALSE); + uri = gnome_vfs_uri_new (filename); if (uri) { result = gnome_vfs_uri_exists (uri); @@ -187,18 +192,18 @@ on_idle_secure_auth_finished (gpointer user_data) } static void -on_camel_account_get_supported_secure_authentication ( - TnyCamelAccount *self, gboolean cancelled, - TnyList *auth_types, GError *err, - gpointer user_data) +on_camel_account_get_supported_secure_authentication (TnyCamelAccount *self, gboolean cancelled, + TnyList *auth_types, GError *err, gpointer user_data) { + g_return_if_fail (TNY_IS_CAMEL_ACCOUNT(self)); + g_return_if_fail (TNY_IS_LIST(auth_types)); + ModestGetSupportedAuthInfo *info = (ModestGetSupportedAuthInfo*)user_data; g_return_if_fail (info); /* Free everything if the actual action was canceled */ - if (info->cancel) - { + if (info->cancel) { /* The operation was canceled and the ownership of the info given to us * so that we could still check the cancel flag. */ g_slice_free (ModestGetSupportedAuthInfo, info); @@ -206,8 +211,7 @@ on_camel_account_get_supported_secure_authentication ( } else { - if (err) - { + if (err) { if (info->error) { g_error_free (info->error); info->error = NULL; @@ -219,10 +223,9 @@ on_camel_account_get_supported_secure_authentication ( if (!auth_types) { g_warning ("DEBUG: %s: auth_types is NULL.\n", __FUNCTION__); } - else if (tny_list_get_length(auth_types) == 0) { + else if (tny_list_get_length(auth_types) == 0) g_warning ("DEBUG: %s: auth_types is an empty TnyList.\n", __FUNCTION__); - } else - { + else { ModestPairList* pairs = modest_protocol_info_get_auth_protocol_pair_list (); /* Get the enum value for the strings: */ @@ -262,8 +265,9 @@ on_camel_account_get_supported_secure_authentication ( static void on_secure_auth_cancel(GtkWidget* dialog, int response, gpointer user_data) { - if(response == GTK_RESPONSE_REJECT || response == GTK_RESPONSE_DELETE_EVENT) - { + g_return_if_fail (GTK_IS_WIDGET(dialog)); + + if(response == GTK_RESPONSE_REJECT || response == GTK_RESPONSE_DELETE_EVENT) { ModestGetSupportedAuthInfo *info = (ModestGetSupportedAuthInfo*)user_data; g_return_if_fail(info); /* This gives the ownership of the info to the worker thread. */ @@ -271,6 +275,26 @@ on_secure_auth_cancel(GtkWidget* dialog, int response, gpointer user_data) info->cancel = TRUE; } } +typedef struct { + GtkProgressBar *progress; + gboolean not_finished; +} KeepPulsing; + +static gboolean +keep_pulsing (gpointer user_data) +{ + KeepPulsing *info = (KeepPulsing *) user_data; + + gtk_progress_bar_pulse (info->progress); + + if (!info->not_finished) { + g_object_unref (info->progress); + g_slice_free (KeepPulsing, info); + return FALSE; + } + + return TRUE; +} GList* modest_utils_get_supported_secure_authentication_methods (ModestTransportStoreProtocol proto, @@ -337,8 +361,11 @@ modest_utils_get_supported_secure_authentication_methods (ModestTransportStorePr info->cancel = FALSE; info->error = NULL; info->progress = gtk_progress_bar_new(); - /* TODO: Need logical_ID for the title: */ - info->dialog = gtk_dialog_new_with_buttons(_("Authentication"), + + /* FIXME: the title (first arg) here is empty; there should be 'accountwizard_fi_authentication', + * but that does not exist yet; see bug #82487. so, for now, we simply leave it empty + */ + info->dialog = gtk_dialog_new_with_buttons(" ", parent_window, GTK_DIALOG_MODAL, _("mcen_bd_dialog_cancel"), GTK_RESPONSE_REJECT, @@ -348,12 +375,19 @@ modest_utils_get_supported_secure_authentication_methods (ModestTransportStorePr g_signal_connect(G_OBJECT(info->dialog), "response", G_CALLBACK(on_secure_auth_cancel), info); gtk_container_add(GTK_CONTAINER(GTK_DIALOG(info->dialog)->vbox), - gtk_label_new("Checking for supported authentication types...")); + gtk_label_new(_("emev_ni_checking_supported_auth_methods"))); gtk_container_add(GTK_CONTAINER(GTK_DIALOG(info->dialog)->vbox), info->progress); gtk_widget_show_all(info->dialog); - gtk_progress_bar_pulse(GTK_PROGRESS_BAR(info->progress)); + + KeepPulsing *pi = g_slice_new (KeepPulsing); + pi->progress = (GtkProgressBar *) g_object_ref (info->progress); + pi->not_finished = TRUE; + + /* Starts the pulsing of the progressbar */ + g_timeout_add (500, keep_pulsing, pi); printf ("DEBUG: %s: STARTING.\n", __FUNCTION__); + tny_camel_account_get_supported_secure_authentication ( TNY_CAMEL_ACCOUNT (tny_account), on_camel_account_get_supported_secure_authentication, @@ -362,6 +396,9 @@ modest_utils_get_supported_secure_authentication_methods (ModestTransportStorePr gtk_dialog_run (GTK_DIALOG (info->dialog)); + pi->not_finished = FALSE; + /* pi is freed in the timeout itself to avoid a GCond here */ + gtk_widget_destroy(info->dialog); GList *result = info->result; @@ -397,6 +434,9 @@ void modest_utils_show_dialog_and_forget (GtkWindow *parent_window, GtkDialog *dialog) { + g_return_if_fail (GTK_IS_WINDOW(parent_window)); + g_return_if_fail (GTK_IS_DIALOG(dialog)); + gtk_window_set_transient_for (GTK_WINDOW (dialog), parent_window); /* Destroy the dialog when it is closed: */ @@ -438,6 +478,9 @@ modest_list_index (TnyList *list, GObject *object) TnyIterator *iter; gint index = 0; + g_return_val_if_fail (TNY_IS_LIST(list), -1); + g_return_val_if_fail (G_IS_OBJECT(object), -1); + iter = tny_list_create_iterator (list); while (!tny_iterator_is_done (iter)) { GObject *current = tny_iterator_get_current (iter); @@ -455,3 +498,28 @@ modest_list_index (TnyList *list, GObject *object) g_object_unref (iter); return index; } + +guint64 +modest_folder_available_space (const gchar *maildir_path) +{ + gchar *folder; + gchar *uri_string; + GnomeVFSURI *uri; + GnomeVFSFileSize size; + + folder = modest_local_folder_info_get_maildir_path (maildir_path); + uri_string = gnome_vfs_get_uri_from_local_path (folder); + uri = gnome_vfs_uri_new (uri_string); + g_free (folder); + g_free (uri_string); + + if (uri) { + if (gnome_vfs_get_volume_free_space (uri, &size) != GNOME_VFS_OK) + size = -1; + gnome_vfs_uri_unref (uri); + } else { + size = -1; + } + + return (guint64) size; +}