aboutsummaryrefslogtreecommitdiffstats
path: root/plugins/groupwise-features/install-shared.c
diff options
context:
space:
mode:
Diffstat (limited to 'plugins/groupwise-features/install-shared.c')
-rw-r--r--plugins/groupwise-features/install-shared.c274
1 files changed, 0 insertions, 274 deletions
diff --git a/plugins/groupwise-features/install-shared.c b/plugins/groupwise-features/install-shared.c
deleted file mode 100644
index 6d290d0993..0000000000
--- a/plugins/groupwise-features/install-shared.c
+++ /dev/null
@@ -1,274 +0,0 @@
-/*
- * This program is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Lesser General Public
- * License as published by the Free Software Foundation; either
- * version 2 of the License, or (at your option) version 3.
- *
- * 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
- * Lesser General Public License for more details.
- *
- * You should have received a copy of the GNU Lesser General Public
- * License along with the program; if not, see <http://www.gnu.org/licenses/>
- *
- *
- * Authors:
- * Vivek Jain <jvivek@novell.com>
- *
- * Copyright (C) 1999-2008 Novell, Inc. (www.novell.com)
- *
- */
-
-#ifdef HAVE_CONFIG_H
-#include <config.h>
-#endif
-
-#include <string.h>
-#include <glib.h>
-#include <gtk/gtk.h>
-#include <glib/gi18n.h>
-#include <gconf/gconf-client.h>
-#include <e-util/e-config.h>
-#include <e-util/e-account-utils.h>
-#include <shell/e-shell.h>
-#include <mail/e-mail-backend.h>
-#include <mail/em-config.h>
-#include <mail/em-event.h>
-#include <mail/em-folder-tree.h>
-#include <mail/em-folder-selector.h>
-#include <e-gw-connection.h>
-#include <share-folder.h>
-
-struct AcceptData {
- CamelMimeMessage *msg;
- EMFolderTreeModel *model;
-};
-
-void org_gnome_popup_wizard (EPlugin *ep, EMEventTargetMessage *target);
-
-static void
-install_folder_response (EMFolderSelector *emfs, gint response, gpointer *data)
-{
- struct AcceptData *accept_data = (struct AcceptData *)data;
- EMFolderTreeModel *model;
- const gchar *uri, *path;
- gint parts = 0;
- gchar **names;
- gchar *folder_name;
- gchar *parent_name;
- gchar *container_id;
- const gchar *item_id;
- CamelService *service = NULL;
- CamelFolder *folder;
- EAccount *account;
- CamelProvider *provider;
- EGwConnection *cnc;
-
- if (response == GTK_RESPONSE_CANCEL) {
- gtk_widget_destroy (GTK_WIDGET (emfs));
- } else {
- CamelSession *session;
- CamelURL *url;
- EShell *shell;
-
- shell = e_shell_get_default ();
- session = e_shell_settings_get_pointer (e_shell_get_shell_settings (shell), "mail-session");
-
- model = accept_data->model;
- item_id = camel_mime_message_get_message_id (accept_data->msg);
- 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;
- }
-
- url = camel_url_new (uri, NULL);
- if (url != NULL) {
- service = camel_session_get_service_by_url (
- session, url, CAMEL_PROVIDER_STORE);
- camel_url_free (url);
- }
-
- if (!CAMEL_IS_STORE (service)) {
- g_strfreev (names);
- return;
- }
-
- cnc = get_cnc (CAMEL_STORE (service));
- 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, (gchar *)item_id, NULL) == E_GW_CONNECTION_STATUS_OK) {
- const gchar *uid;
-
- /* FIXME Not passing a GCancellable or GError here. */
- folder = camel_store_get_folder_sync (
- CAMEL_STORE (service),
- "Mailbox", 0, NULL, NULL);
- /*changes = camel_folder_change_info_new ();
- camel_folder_change_info_remove_uid (changes, (gchar *) item_id);
- camel_folder_summary_remove_uid (folder->summary, item_id);*/
- /* camel_folder_delete_message (folder, item_id); */
- camel_folder_set_message_flags (
- folder, item_id,
- CAMEL_MESSAGE_DELETED,
- CAMEL_MESSAGE_DELETED);
- camel_folder_summary_touch (folder->summary);
- /* camel_object_trigger_event (CAMEL_OBJECT (folder), "folder_changed", changes); */
- uid = camel_service_get_uid (service);
- account = e_get_account_by_uid (uid);
- uri = account->source->url;
- em_folder_tree_model_remove_store (
- model, CAMEL_STORE (service));
- provider = camel_provider_get (uri, NULL);
- if (provider == NULL) {
- g_strfreev (names);
- return;
- }
-
- /* make sure the new store belongs in the tree */
- if (!(provider->flags & CAMEL_PROVIDER_IS_STORAGE)) {
- g_strfreev (names);
- return;
- }
-
- em_folder_tree_model_add_store (
- model, CAMEL_STORE (service),
- account->name);
- }
- }
-
- g_strfreev (names);
- gtk_widget_destroy ((GtkWidget *)emfs);
- }
-
-}
-
-static void
-accept_free (gpointer data)
-{
- struct AcceptData *accept_data = data;
-
- g_object_unref (accept_data->msg);
- g_free (accept_data);
-}
-
-static void
-apply_clicked (GtkAssistant *assistant, CamelMimeMessage *msg)
-{
- EShell *shell;
- EShellBackend *shell_backend;
- EMailSession *session;
- EMFolderTree *folder_tree;
- GtkWidget *dialog;
- struct AcceptData *accept_data;
- gchar *uri;
- gpointer parent;
-
- shell = e_shell_get_default ();
- shell_backend = e_shell_get_backend_by_name (shell, "mail");
- session = e_mail_backend_get_session (E_MAIL_BACKEND (shell_backend));
-
- parent = gtk_widget_get_toplevel (GTK_WIDGET (assistant));
- parent = gtk_widget_is_toplevel (parent) ? parent : NULL;
-
- accept_data = g_new0 (struct AcceptData, 1);
- folder_tree = (EMFolderTree *) em_folder_tree_new (session);
-
- dialog = em_folder_selector_create_new (parent, 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->msg = msg;
- g_object_ref (msg);
- accept_data->model = EM_FOLDER_TREE_MODEL (gtk_tree_view_get_model (GTK_TREE_VIEW (folder_tree)));
- g_object_set_data_full((GObject *)dialog, "accept-data", accept_data, accept_free);
- g_signal_connect (dialog, "response", G_CALLBACK (install_folder_response), accept_data);
- g_object_set_data_full((GObject *)dialog, "assistant", assistant, (GDestroyNotify)gtk_widget_destroy);
- gtk_window_set_title (GTK_WINDOW (dialog), "Install Shared Folder");
- gtk_window_set_modal (GTK_WINDOW (dialog), TRUE);
- gtk_widget_show (dialog);
-}
-
-void
-org_gnome_popup_wizard (EPlugin *ep, EMEventTargetMessage *target)
-{
- CamelInternetAddress *from_addr = NULL;
- const gchar *name;
- const gchar *email;
- CamelMimeMessage *msg = (CamelMimeMessage *) target->message;
- CamelStream *stream;
- CamelDataWrapper *dw;
- GByteArray *byte_array;
- gchar *start_message;
-
- if (!msg)
- return;
-
- if (((gchar *)camel_medium_get_header (CAMEL_MEDIUM(msg),"X-notification")) == NULL
- || (from_addr = camel_mime_message_get_from ((CamelMimeMessage *)target->message)) == NULL
- || !camel_internet_address_get (from_addr, 0, &name, &email)
- || (dw = camel_medium_get_content (CAMEL_MEDIUM (msg))) == NULL) {
- return;
- } else {
- if (CAMEL_IS_MULTIPART (dw)) {
- dw = camel_medium_get_content ((CamelMedium *)camel_multipart_get_part ((CamelMultipart *)dw, 0));
- if (dw == NULL)
- return;
- }
-
- byte_array = g_byte_array_new ();
- stream = camel_stream_mem_new_with_byte_array (byte_array);
- camel_data_wrapper_write_to_stream_sync (dw, stream, NULL, NULL);
- camel_stream_write (stream, "", 1, NULL, NULL);
-
- from_addr = camel_mime_message_get_from ((CamelMimeMessage *)target->message);
- if (from_addr && camel_internet_address_get (from_addr, 0, &name, &email)) {
- GtkWidget *page;
- GtkAssistant *assistant = GTK_ASSISTANT (gtk_assistant_new ());
-
- start_message = g_strdup_printf (_("The user '%s' has shared a folder with you\n\n"
- "Message from '%s'\n\n\n"
- "%s\n\n\n"
- "Click 'Apply' to install the shared folder\n\n"),
- name, name, byte_array->data);
-
- page = gtk_label_new (start_message);
- gtk_label_set_line_wrap (GTK_LABEL (page), TRUE);
- gtk_misc_set_alignment (GTK_MISC (page), 0.0, 0.0);
- gtk_misc_set_padding (GTK_MISC (page), 10, 10);
-
- gtk_assistant_append_page (assistant, page);
- gtk_assistant_set_page_title (assistant, page, _("Install the shared folder"));
- gtk_assistant_set_page_type (assistant, page, GTK_ASSISTANT_PAGE_CONFIRM);
- gtk_assistant_set_page_complete (assistant, page, TRUE);
-
- gtk_window_set_title (GTK_WINDOW (assistant), _("Shared Folder Installation"));
- gtk_window_set_position (GTK_WINDOW (assistant) , GTK_WIN_POS_CENTER_ALWAYS);
-
- g_object_ref (msg);
- g_object_set_data_full((GObject *)page, "msg", msg, g_object_unref);
-
- g_signal_connect (assistant, "apply", G_CALLBACK (apply_clicked), msg);
-
- gtk_widget_show_all (GTK_WIDGET (assistant));
-
- g_free (start_message);
- } else
- g_warning ("Could not get the sender name");
-
- g_object_unref (stream);
- }
-}
-