static gboolean is_eex_source_selected (EShellView *shell_view, gchar **puri) { gint mode; ExchangeAccount *account = NULL; ESource *source = NULL; gchar *uri = NULL; EShellSidebar *shell_sidebar; ESourceSelector *selector = NULL; shell_sidebar = e_shell_view_get_shell_sidebar (shell_view); g_return_val_if_fail (shell_sidebar != NULL, FALSE); g_object_get (shell_sidebar, "selector", &selector, NULL); g_return_val_if_fail (selector != NULL, FALSE); source = e_source_selector_ref_primary_selection (selector); if (source != NULL) { uri = e_source_get_uri (source); g_object_unref (source); } g_object_unref (selector); if (!uri || !g_strrstr (uri, "exchange://")) { g_free (uri); return FALSE; } account = exchange_operations_get_exchange_account (); if (!account) { g_free (uri); return FALSE; } exchange_account_is_offline (account, &mode); if (mode == OFFLINE_MODE) { g_free (uri); return FALSE; } if (!exchange_account_get_folder (account, uri)) { g_free (uri); return FALSE; } if (puri) *puri = uri; else g_free (uri); return TRUE; }
static void call_folder_permissions (const gchar *uri) { ExchangeAccount *account = NULL; EFolder *folder = NULL; gchar *sanitized_path; g_return_if_fail (uri != NULL); account = exchange_operations_get_exchange_account (); if (!account) return; sanitized_path = exchange_account_get_sanitized_path (uri); folder = exchange_account_get_folder (account, sanitized_path); if (folder) exchange_permissions_dialog_new (account, folder, NULL); g_free (sanitized_path); }
void org_gnome_exchange_folder_inbox_unsubscribe (EPopup *ep, EPopupItem *p, void *data) { ExchangeAccount *account = NULL; EMPopupTargetFolder *target = data; gchar *path = NULL; gchar *stored_path = NULL; const char *inbox_uri = NULL; const char *inbox_physical_uri = NULL; gchar *target_uri = NULL; EFolder *inbox; ExchangeAccountFolderResult result; account = exchange_operations_get_exchange_account (); if (!account) return; target_uri = g_strdup (target->uri); path = target->uri + strlen ("exchange://") + strlen (account->account_filename); /* User will be able to unsubscribe by doing a right click on any one of this two-<other user's>Inbox or the <other user's folder> tree. */ stored_path = strrchr (path + 1, '/'); if (stored_path) path[stored_path - path] = '\0'; result = exchange_account_remove_shared_folder (account, path); switch (result) { case EXCHANGE_ACCOUNT_FOLDER_OK: break; case EXCHANGE_ACCOUNT_FOLDER_ALREADY_EXISTS: e_error_run (NULL, ERROR_DOMAIN ":folder-exists-error", NULL); return; case EXCHANGE_ACCOUNT_FOLDER_DOES_NOT_EXIST: e_error_run (NULL, ERROR_DOMAIN ":folder-doesnt-exist-error", NULL); return; case EXCHANGE_ACCOUNT_FOLDER_UNKNOWN_TYPE: e_error_run (NULL, ERROR_DOMAIN ":folder-unknown-type", NULL); return; case EXCHANGE_ACCOUNT_FOLDER_PERMISSION_DENIED: e_error_run (NULL, ERROR_DOMAIN ":folder-perm-error", NULL); return; case EXCHANGE_ACCOUNT_FOLDER_OFFLINE: e_error_run (NULL, ERROR_DOMAIN ":folder-offline-error", NULL); return; case EXCHANGE_ACCOUNT_FOLDER_UNSUPPORTED_OPERATION: e_error_run (NULL, ERROR_DOMAIN ":folder-unsupported-error", NULL); return; case EXCHANGE_ACCOUNT_FOLDER_GENERIC_ERROR: e_error_run (NULL, ERROR_DOMAIN ":folder-generic-error", NULL); return; case EXCHANGE_ACCOUNT_FOLDER_GC_NOTREACHABLE: e_error_run (NULL, ERROR_DOMAIN ":folder-no-gc-error", NULL); return; case EXCHANGE_ACCOUNT_FOLDER_NO_SUCH_USER: e_error_run (NULL, ERROR_DOMAIN ":no-user-error", NULL); return; } /* We need to get the physical uri for the Inbox */ inbox_uri = exchange_account_get_standard_uri (account, "inbox"); inbox = exchange_account_get_folder (account, inbox_uri); inbox_physical_uri = e_folder_get_physical_uri (inbox); /* To get the CamelStore/Folder */ mail_get_folder (inbox_physical_uri, 0, exchange_get_folder, target_uri, mail_msg_unordered_push); }