diff options
Diffstat (limited to 'plugins/shared-folder/install-shared.c')
-rw-r--r-- | plugins/shared-folder/install-shared.c | 221 |
1 files changed, 0 insertions, 221 deletions
diff --git a/plugins/shared-folder/install-shared.c b/plugins/shared-folder/install-shared.c deleted file mode 100644 index d92e926764..0000000000 --- a/plugins/shared-folder/install-shared.c +++ /dev/null @@ -1,221 +0,0 @@ -/* -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 8 -*- */ -/* - * Authors: Vivek Jain <jvivek@novell.com> - * - * Copyright 2004 Novell, Inc. - * - * This program is free software; you can redistribute it and/or - * modify it under the terms of version 2 of the GNU General Public - * License as published by the Free Software Foundation. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program; if not, write to the Free Software - * Foundation, Inc., 59 Temple Street #330, Boston, MA 02111-1307, USA. - * - */ - -#ifdef HAVE_CONFIG_H -#include <config.h> -#endif - -#include <string.h> -#include <glib.h> -#include <gnome.h> -#include <gtk/gtk.h> -#include <libgnomeui/libgnomeui.h> -#include <libgnome/gnome-i18n.h> -#include <gconf/gconf-client.h> -#include <e-util/e-config.h> -#include <mail/em-config.h> -#include <mail/em-event.h> -#include <mail/mail-component.h> -#include <camel/camel-mime-message.h> -#include <camel/camel-stream.h> -#include <camel/camel-session.h> -#include <camel/camel-stream-mem.h> -#include <camel/camel-data-wrapper.h> -#include <camel/camel-multipart.h> -#include <mail/em-folder-tree.h> -#include <mail/mail-config.h> -#include <mail/em-folder-selector.h> -#include <camel/camel-medium.h> -#include <e-gw-connection.h> -#include <share-folder.h> - -extern CamelSession *session; -struct AcceptData { - const char *item_id; - EMFolderTreeModel *model; -}; - - -void org_gnome_popup_wizard (EPlugin *ep, EMEventTargetMessage *target); - -static void -install_folder_response (EMFolderSelector *emfs, int response, gpointer *data) -{ - struct AcceptData *accept_data = (struct AcceptData *)data; - EMFolderTreeModel *model; - const char *uri, *path; - int parts = 0; - gchar **names; - gchar *folder_name; - gchar *parent_name; - gchar *container_id,*item_id; - CamelException ex; - CamelStore *store; - EAccount *account; - CamelProvider *provider; - EGwConnection *cnc; - - if (response == GTK_RESPONSE_CANCEL){ - gtk_widget_destroy (GTK_WIDGET (emfs)); - } else { - model = accept_data->model; - item_id = accept_data->item_id; - uri = em_folder_selector_get_selected_uri (emfs); - path = em_folder_selector_get_selected_path (emfs); - names = g_strsplit (path, "/", -1); - if(names == NULL){ - folder_name = (gchar *)path; - parent_name = NULL; - } else { - while (names [parts]) - parts++; - folder_name = names[parts -1]; - if (parts >= 2) - parent_name = names[parts -2]; - else - parent_name = NULL; - } - camel_exception_init (&ex); - if (!(store = (CamelStore *) camel_session_get_service (session, uri, CAMEL_PROVIDER_STORE, &ex))) { - camel_exception_clear (&ex); - return; - } - - cnc = get_cnc (store); - if(E_IS_GW_CONNECTION (cnc)) { - container_id = get_container_id (cnc, parent_name); - - if(e_gw_connection_accept_shared_folder (cnc, folder_name, container_id, item_id, NULL) == E_GW_CONNECTION_STATUS_OK) { - - uri = camel_url_to_string (((CamelService *) store)->url, CAMEL_URL_HIDE_ALL); - account = mail_config_get_account_by_source_url (uri); - uri = account->source->url; - em_folder_tree_model_remove_store (model, store); - camel_exception_init (&ex); - if (!(provider = camel_provider_get(uri, &ex))) { - camel_exception_clear (&ex); - return; - } - - /* make sure the new store belongs in the tree */ - if (!(provider->flags & CAMEL_PROVIDER_IS_STORAGE)) - return; - - em_folder_tree_model_add_store (model, store, account->name); - camel_object_unref (store); - } - } - - g_strfreev(names); - gtk_widget_destroy ((GtkWidget *)emfs); - } - -} - -static void -accept_clicked(GnomeDruidPage *page, GtkWidget *druid, const char *id) -{ - EMFolderTreeModel *model; - EMFolderTree *folder_tree; - GtkWidget *dialog ; - struct AcceptData *accept_data; - char *uri; - accept_data = g_new0(struct AcceptData, 1); - model = mail_component_peek_tree_model (mail_component_peek ()); - folder_tree = (EMFolderTree *) em_folder_tree_new_with_model (model); - dialog = em_folder_selector_create_new (folder_tree, 0, _("Create folder"), _("Specify where to create the folder:")); - uri = em_folder_tree_get_selected_uri(folder_tree); - em_folder_selector_set_selected ((EMFolderSelector *) dialog, uri); - g_free(uri); - accept_data->item_id = id; - accept_data->model = model; - g_signal_connect (dialog, "response", G_CALLBACK (install_folder_response), accept_data); - gtk_window_set_title (GTK_WINDOW (dialog), "Install Shared Folder"); - gtk_widget_destroy (druid); - gtk_widget_show (dialog); - -} - -void -org_gnome_popup_wizard (EPlugin *ep, EMEventTargetMessage *target) -{ - const CamelInternetAddress *from_addr = NULL; - const char *name, *item_id; - const char *email; - GtkWidget *window; - GnomeDruid *wizard; - GnomeDruidPageEdge *title_page; - CamelMimeMessage *msg = (CamelMimeMessage *) target->message ; - CamelStreamMem *content ; - CamelDataWrapper *dw ; - CamelMimePart *mime_part ; - CamelMultipart *mp ; - char *notification; - char *start_message; - char *buffer = NULL; - - if (!msg) - return ; - - mime_part = CAMEL_MIME_PART(msg) ; - notification = (char *)camel_medium_get_header (CAMEL_MEDIUM(msg),"X-notification") ; - if (!notification) { - return ; - - } else { - mp = (CamelMultipart *) camel_medium_get_content_object (CAMEL_MEDIUM (msg)) ; - dw = camel_data_wrapper_new () ; - content = (CamelStreamMem *)camel_stream_mem_new(); - if (!mp) - return ; - - if (CAMEL_IS_MULTIPART (mp)) { - mime_part = camel_multipart_get_part (mp, 0) ; - dw = camel_medium_get_content_object (CAMEL_MEDIUM (mime_part)) ; - camel_data_wrapper_write_to_stream(dw, (CamelStream *)content) ; - buffer = g_malloc0 (content->buffer->len+1) ; - buffer = memcpy (buffer, content->buffer->data, content->buffer->len) ; - - } else { - dw = camel_medium_get_content_object (CAMEL_MEDIUM (msg)) ; - camel_data_wrapper_write_to_stream(dw, (CamelStream *)content) ; - buffer = g_malloc0 (content->buffer->len+1) ; - buffer = memcpy (buffer, content->buffer->data, content->buffer->len) ; - } - - from_addr = camel_mime_message_get_from ((CamelMimeMessage *)target->message); - if (camel_internet_address_get (from_addr,0, &name, &email)) { - start_message = g_strconcat (" The User ", "'", name, "'" ," has shared a folder with you\n\n", " Message from ", "'" , name, "'\n\n\n", buffer, "\n\n\n", "Click 'Forward' to install the shared folder\n\n",NULL); - title_page = GNOME_DRUID_PAGE_EDGE (gnome_druid_page_edge_new_with_vals(GNOME_EDGE_START, TRUE, "Install the shared folder", start_message, NULL, NULL, NULL)); - wizard = GNOME_DRUID (gnome_druid_new_with_window ("Shared Folder Installation", NULL, TRUE, (GtkWidget**)(&window))); - gtk_window_set_position (GTK_WINDOW (window) , GTK_WIN_POS_CENTER_ALWAYS); - gnome_druid_append_page(wizard, GNOME_DRUID_PAGE(title_page)); - gtk_widget_show_all (GTK_WIDGET (title_page)); - item_id = camel_mime_message_get_message_id (msg); - g_signal_connect (title_page, "next", G_CALLBACK(accept_clicked), item_id); - } else - g_warning ("Could not get the sender name"); - - g_free (buffer) ; - g_free (start_message) ; - } -} - |