aboutsummaryrefslogtreecommitdiffstats
path: root/mail
diff options
context:
space:
mode:
authorMatthew Barnes <mbarnes@src.gnome.org>2008-12-27 23:14:29 +0800
committerMatthew Barnes <mbarnes@src.gnome.org>2008-12-27 23:14:29 +0800
commit8e2b445e9dd2ec76be420bfffdf13bbacae14a3e (patch)
tree182a6a6c87b319bef202a14129a96e4afd996d9f /mail
parent780c042e12aa71bfa3498d3976d28a63aafb259e (diff)
downloadgsoc2013-evolution-8e2b445e9dd2ec76be420bfffdf13bbacae14a3e.tar
gsoc2013-evolution-8e2b445e9dd2ec76be420bfffdf13bbacae14a3e.tar.gz
gsoc2013-evolution-8e2b445e9dd2ec76be420bfffdf13bbacae14a3e.tar.bz2
gsoc2013-evolution-8e2b445e9dd2ec76be420bfffdf13bbacae14a3e.tar.lz
gsoc2013-evolution-8e2b445e9dd2ec76be420bfffdf13bbacae14a3e.tar.xz
gsoc2013-evolution-8e2b445e9dd2ec76be420bfffdf13bbacae14a3e.tar.zst
gsoc2013-evolution-8e2b445e9dd2ec76be420bfffdf13bbacae14a3e.zip
Define a new interface called EMailReader, which implements operations
common to both the main shell window and the message browser. Replaces EMFolderView. Also begin to define EMailBrowser (GtkWindow subclass), which implements EMailReader and replaces EMMessageBrowser. svn path=/branches/kill-bonobo/; revision=36933
Diffstat (limited to 'mail')
-rw-r--r--mail/Makefile.am6
-rw-r--r--mail/e-mail-browser.c291
-rw-r--r--mail/e-mail-browser.h69
-rw-r--r--mail/e-mail-reader.c1653
-rw-r--r--mail/e-mail-reader.h85
-rw-r--r--mail/e-mail-shell-content.c120
-rw-r--r--mail/e-mail-shell-module-settings.c12
-rw-r--r--mail/e-mail-shell-module.c106
-rw-r--r--mail/e-mail-shell-module.h2
-rw-r--r--mail/e-mail-shell-view-actions.c1492
-rw-r--r--mail/e-mail-shell-view-private.c3
-rw-r--r--mail/e-mail-shell-view-private.h1
-rw-r--r--mail/em-folder-view.c1109
-rw-r--r--mail/em-message-browser.c2
-rw-r--r--mail/em-utils.c60
-rw-r--r--mail/em-utils.h104
-rw-r--r--mail/mail-component.c195
17 files changed, 2673 insertions, 2637 deletions
diff --git a/mail/Makefile.am b/mail/Makefile.am
index cebc6ee725..e0e1e5982e 100644
--- a/mail/Makefile.am
+++ b/mail/Makefile.am
@@ -35,6 +35,12 @@ module_LTLIBRARIES = \
libevolution-module-mail.la
libevolution_module_mail_la_SOURCES = \
+ e-mail-browser.c \
+ e-mail-browser.h \
+ e-mail-reader.c \
+ e-mail-reader.h \
+ e-mail-reader-utils.c \
+ e-mail-reader-utils.h \
e-mail-shell-module.c \
e-mail-shell-module.h \
e-mail-shell-module-migrate.c \
diff --git a/mail/e-mail-browser.c b/mail/e-mail-browser.c
new file mode 100644
index 0000000000..9334a82aff
--- /dev/null
+++ b/mail/e-mail-browser.c
@@ -0,0 +1,291 @@
+/*
+ * e-mail-browser.c
+ *
+ * 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/>
+ *
+ *
+ * Copyright (C) 1999-2008 Novell, Inc. (www.novell.com)
+ *
+ */
+
+#include "e-mail-browser.h"
+
+#include <glib/gi18n.h>
+#include <camel/camel-folder.h>
+
+#include "mail/e-mail-reader.h"
+#include "mail/e-mail-shell-module.h"
+#include "mail/em-folder-tree-model.h"
+#include "mail/em-format-html-display.h"
+#include "mail/message-list.h"
+
+#define E_MAIL_BROWSER_GET_PRIVATE(obj) \
+ (G_TYPE_INSTANCE_GET_PRIVATE \
+ ((obj), E_TYPE_MAIL_BROWSER, EMailBrowserPrivate))
+
+struct _EMailBrowserPrivate {
+ GtkUIManager *ui_manager;
+ EShellModule *shell_module;
+ GtkActionGroup *action_group;
+};
+
+enum {
+ PROP_0,
+ PROP_SHELL_MODULE,
+ PROP_UI_MANAGER
+};
+
+static gpointer parent_class;
+
+static void
+mail_browser_set_shell_module (EMailBrowser *browser,
+ EShellModule *shell_module)
+{
+ g_return_if_fail (browser->priv->shell_module == NULL);
+
+ browser->priv->shell_module = g_object_ref (shell_module);
+}
+
+static void
+mail_browser_set_property (GObject *object,
+ guint property_id,
+ const GValue *value,
+ GParamSpec *pspec)
+{
+ switch (property_id) {
+ case PROP_SHELL_MODULE:
+ mail_browser_set_shell_module (
+ E_MAIL_BROWSER (object),
+ g_value_get_object (value));
+ return;
+ }
+
+ G_OBJECT_WARN_INVALID_PROPERTY_ID (object, property_id, pspec);
+}
+
+static void
+mail_browser_get_property (GObject *object,
+ guint property_id,
+ GValue *value,
+ GParamSpec *pspec)
+{
+ switch (property_id) {
+ case PROP_SHELL_MODULE:
+ g_value_set_object (
+ value, e_mail_browser_get_shell_module (
+ E_MAIL_BROWSER (object)));
+ return;
+
+ case PROP_UI_MANAGER:
+ g_value_set_object (
+ value, e_mail_browser_get_ui_manager (
+ E_MAIL_BROWSER (object)));
+ return;
+ }
+
+ G_OBJECT_WARN_INVALID_PROPERTY_ID (object, property_id, pspec);
+}
+
+static void
+mail_browser_dispose (GObject *object)
+{
+ EMailBrowserPrivate *priv;
+
+ priv = E_MAIL_BROWSER_GET_PRIVATE (object);
+
+ if (priv->ui_manager != NULL) {
+ g_object_unref (priv->ui_manager);
+ priv->ui_manager = NULL;
+ }
+
+ if (priv->shell_module != NULL) {
+ g_object_unref (priv->shell_module);
+ priv->shell_module = NULL;
+ }
+
+ if (priv->action_group != NULL) {
+ g_object_unref (priv->action_group);
+ priv->action_group = NULL;
+ }
+
+ /* Chain up to parent's dispose() method. */
+ G_OBJECT_CLASS (parent_class)->dispose (object);
+}
+
+static void
+mail_browser_constructed (GObject *object)
+{
+}
+
+static GtkActionGroup *
+mail_browser_get_action_group (EMailReader *reader)
+{
+ EMailBrowserPrivate *priv;
+
+ priv = E_MAIL_BROWSER_GET_PRIVATE (reader);
+
+ return priv->action_group;
+}
+
+static EMFormatHTMLDisplay *
+mail_browser_get_display (EMailReader *reader)
+{
+}
+
+static CamelFolder *
+mail_browser_get_folder (EMailReader *reader)
+{
+}
+
+static const gchar *
+mail_browser_get_folder_uri (EMailReader *reader)
+{
+}
+
+static gboolean
+mail_browser_get_hide_deleted (EMailReader *reader)
+{
+}
+
+static MessageList *
+mail_browser_get_message_list (EMailReader *reader)
+{
+}
+
+static EMFolderTreeModel *
+mail_browser_get_tree_model (EMailReader *reader)
+{
+ EMailBrowserPrivate *priv;
+ EShellModule *shell_module;
+
+ priv = E_MAIL_BROWSER_GET_PRIVATE (reader);
+ shell_module = priv->shell_module;
+
+ return e_mail_shell_module_get_folder_tree_model (shell_module);
+}
+
+static GtkWindow *
+mail_browser_get_window (EMailReader *reader)
+{
+ return GTK_WINDOW (reader);
+}
+
+static void
+mail_browser_class_init (EMailBrowserClass *class)
+{
+ GObjectClass *object_class;
+
+ parent_class = g_type_class_peek_parent (class);
+ g_type_class_add_private (class, sizeof (EMailBrowserPrivate));
+
+ object_class = G_OBJECT_CLASS (class);
+ object_class->set_property = mail_browser_set_property;
+ object_class->get_property = mail_browser_get_property;
+ object_class->dispose = mail_browser_dispose;
+ object_class->constructed = mail_browser_constructed;
+
+ g_object_class_install_property (
+ object_class,
+ PROP_SHELL_MODULE,
+ g_param_spec_object (
+ "shell-module",
+ _("Shell Module"),
+ _("The mail shell module"),
+ E_TYPE_SHELL_MODULE,
+ G_PARAM_READWRITE |
+ G_PARAM_CONSTRUCT_ONLY));
+}
+
+static void
+mail_browser_iface_init (EMailReaderIface *iface)
+{
+ iface->get_action_group = mail_browser_get_action_group;
+ iface->get_display = mail_browser_get_display;
+ iface->get_folder = mail_browser_get_folder;
+ iface->get_folder_uri = mail_browser_get_folder_uri;
+ iface->get_hide_deleted = mail_browser_get_hide_deleted;
+ iface->get_message_list = mail_browser_get_message_list;
+ iface->get_tree_model = mail_browser_get_tree_model;
+ iface->get_window = mail_browser_get_window;
+}
+
+static void
+mail_browser_init (EMailBrowser *browser)
+{
+ browser->priv = E_MAIL_BROWSER_GET_PRIVATE (browser);
+
+ browser->priv->ui_manager = gtk_ui_manager_new ();
+ browser->priv->action_group = gtk_action_group_new ("mail-browser");
+}
+
+GType
+e_mail_browser_get_type (void)
+{
+ static GType type = 0;
+
+ if (G_UNLIKELY (type == 0)) {
+ static const GTypeInfo type_info = {
+ sizeof (EMailBrowserClass),
+ (GBaseInitFunc) NULL,
+ (GBaseFinalizeFunc) NULL,
+ (GClassInitFunc) mail_browser_class_init,
+ (GClassFinalizeFunc) NULL,
+ NULL, /* class_data */
+ sizeof (EMailBrowser),
+ 0, /* n_preallocs */
+ (GInstanceInitFunc) mail_browser_init,
+ NULL /* value_table */
+ };
+
+ static const GInterfaceInfo iface_info = {
+ (GInterfaceInitFunc) mail_browser_iface_init,
+ (GInterfaceFinalizeFunc) NULL,
+ NULL /* interface_data */
+ };
+
+ type = g_type_register_static (
+ GTK_TYPE_WINDOW, "EMailBrowser", &type_info, 0);
+
+ g_type_add_interface_static (
+ type, E_TYPE_MAIL_BROWSER, &iface_info);
+ }
+
+ return type;
+}
+
+GtkWidget *
+e_mail_browser_new (EShellModule *shell_module)
+{
+ g_return_val_if_fail (E_IS_SHELL_MODULE (shell_module), NULL);
+
+ return g_object_new (
+ E_TYPE_MAIL_BROWSER,
+ "shell-module", shell_module, NULL);
+}
+
+EShellModule *
+e_mail_browser_get_shell_module (EMailBrowser *browser)
+{
+ g_return_val_if_fail (E_IS_MAIL_BROWSER (browser), NULL);
+
+ return browser->priv->shell_module;
+}
+
+GtkUIManager *
+e_mail_browser_get_ui_manager (EMailBrowser *browser)
+{
+ g_return_val_if_fail (E_IS_MAIL_BROWSER (browser), NULL);
+
+ return browser->priv->ui_manager;
+}
diff --git a/mail/e-mail-browser.h b/mail/e-mail-browser.h
new file mode 100644
index 0000000000..e5096fbe85
--- /dev/null
+++ b/mail/e-mail-browser.h
@@ -0,0 +1,69 @@
+/*
+ * e-mail-browser.h
+ *
+ * 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/>
+ *
+ *
+ * Copyright (C) 1999-2008 Novell, Inc. (www.novell.com)
+ *
+ */
+
+#ifndef E_MAIL_BROWSER_H
+#define E_MAIL_BROWSER_H
+
+#include <gtk/gtk.h>
+#include <shell/e-shell-module.h>
+
+/* Standard GObject macros */
+#define E_TYPE_MAIL_BROWSER \
+ (e_mail_browser_get_type ())
+#define E_MAIL_BROWSER(obj) \
+ (G_TYPE_CHECK_INSTANCE_CAST \
+ ((obj), E_TYPE_MAIL_BROWSER, EMailBrowser))
+#define E_MAIL_BROWSER_CLASS(cls) \
+ (G_TYPE_CHECK_CLASS_CAST \
+ ((cls), E_TYPE_MAIL_BROWSER, EMailBrowserClass))
+#define E_IS_MAIL_BROWSER(obj) \
+ (G_TYPE_CHECK_INSTANCE_TYPE \
+ ((obj), E_TYPE_MAIL_BROWSER))
+#define E_IS_MAIL_BROWSER_CLASS(cls) \
+ (G_TYPE_CHECK_CLASS_CAST \
+ ((cls), E_TYPE_MAIL_BROWSER))
+#define E_MAIL_BROWSER_GET_CLASS(obj) \
+ (G_TYPE_INSTANCE_GET_CLASS \
+ ((obj), E_TYPE_MAIL_BROWSER, EMailBrowserClass))
+
+G_BEGIN_DECLS
+
+typedef struct _EMailBrowser EMailBrowser;
+typedef struct _EMailBrowserClass EMailBrowserClass;
+typedef struct _EMailBrowserPrivate EMailBrowserPrivate;
+
+struct _EMailBrowser {
+ GtkWindow parent;
+ EMailBrowserPrivate *priv;
+};
+
+struct _EMailBrowserClass {
+ GtkWindowClass parent_class;
+};
+
+GType e_mail_browser_get_type (void);
+GtkWidget * e_mail_browser_new (EShellModule *shell_module);
+EShellModule * e_mail_browser_get_shell_module (EMailBrowser *browser);
+GtkUIManager * e_mail_browser_get_ui_manager (EMailBrowser *browser);
+
+G_END_DECLS
+
+#endif /* E_MAIL_BROWSER_H */
diff --git a/mail/e-mail-reader.c b/mail/e-mail-reader.c
new file mode 100644
index 0000000000..ca23deda78
--- /dev/null
+++ b/mail/e-mail-reader.c
@@ -0,0 +1,1653 @@
+/*
+ * e-mail-reader.c
+ *
+ * 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/>
+ *
+ *
+ * Copyright (C) 1999-2008 Novell, Inc. (www.novell.com)
+ *
+ */
+
+#include "e-mail-reader.h"
+
+#include <glib/gi18n.h>
+#include <gdk/gdkkeysyms.h>
+#include <gtkhtml/gtkhtml.h>
+
+#ifdef HAVE_XFREE
+#include <X11/XF86keysym.h>
+#endif
+
+#include "e-util/gconf-bridge.h"
+
+#include "mail/e-mail-reader-utils.h"
+#include "mail/em-composer-utils.h"
+#include "mail/em-folder-selector.h"
+#include "mail/em-folder-tree.h"
+#include "mail/em-utils.h"
+#include "mail/mail-autofilter.h"
+#include "mail/mail-ops.h"
+
+/* Remembers the previously selected folder when transferring messages. */
+static gchar *default_xfer_messages_uri;
+
+static void
+action_mail_add_sender_cb (GtkAction *action,
+ EMailReader *reader)
+{
+ MessageList *message_list;
+ CamelMessageInfo *info;
+ CamelFolder *folder;
+ GtkWindow *window;
+ GPtrArray *uids;
+ const gchar *address;
+
+ folder = e_mail_reader_get_folder (reader);
+ message_list = e_mail_reader_get_message_list (reader);
+ window = e_mail_reader_get_window (reader);
+
+ uids = message_list_get_selected (message_list);
+
+ if (uids->len != 1)
+ goto exit;
+
+ info = camel_folder_get_message_info (folder, uids->pdata[0]);
+ if (info == NULL)
+ goto exit;
+
+ address = camel_message_info_from (info);
+ if (address == NULL || *address == '\0')
+ goto exit;
+
+ em_utils_add_address (window, address);
+
+exit:
+ em_utils_uids_free (uids);
+}
+
+static void
+action_mail_caret_mode_cb (GtkToggleAction *action,
+ EMailReader *reader)
+{
+ EMFormatHTMLDisplay *display;
+ gboolean active;
+
+ display = e_mail_reader_get_display (reader);
+ active = gtk_toggle_action_get_active (action);
+
+ em_format_html_display_set_caret_mode (display, active);
+}
+
+static void
+action_mail_check_for_junk_cb (GtkAction *action,
+ EMailReader *reader)
+{
+ MessageList *message_list;
+ CamelFolder *folder;
+ GPtrArray *uids;
+
+ folder = e_mail_reader_get_folder (reader);
+ message_list = e_mail_reader_get_message_list (reader);
+
+ uids = message_list_get_selected (message_list);
+
+ mail_filter_junk (folder, uids);
+}
+
+static void
+action_mail_clipboard_copy_cb (GtkAction *action,
+ EMailReader *reader)
+{
+ EMFormatHTMLDisplay *display;
+ GtkHTML *html;
+
+ display = e_mail_reader_get_display (reader);
+ html = ((EMFormatHTML *) display)->html;
+
+ gtk_html_copy (html);
+}
+
+static void
+action_mail_copy_cb (GtkAction *action,
+ EMailReader *reader)
+{
+ MessageList *message_list;
+ EMFolderTreeModel *model;
+ CamelFolder *folder;
+ GtkWidget *folder_tree;
+ GtkWidget *dialog;
+ GPtrArray *selected;
+ const gchar *uri;
+
+ folder = e_mail_reader_get_folder (reader);
+ message_list = e_mail_reader_get_message_list (reader);
+ model = e_mail_reader_get_tree_model (reader);
+
+ folder_tree = em_folder_tree_new_with_model (model);
+ selected = message_list_get_selected (message_list);
+
+ em_folder_tree_set_excluded (
+ EM_FOLDER_TREE (folder_tree),
+ EMFT_EXCLUDE_NOSELECT | EMFT_EXCLUDE_VIRTUAL |
+ EMFT_EXCLUDE_VTRASH);
+
+ dialog = em_folder_selector_new (
+ EM_FOLDER_TREE (folder_tree),
+ EM_FOLDER_SELECTOR_CAN_CREATE,
+ _("Select Folder"), NULL, _("C_opy"));
+
+ if (default_xfer_messages_uri != NULL)
+ em_folder_selector_set_selected (
+ EM_FOLDER_SELECTOR (dialog),
+ default_xfer_messages_uri);
+
+ if (gtk_dialog_run (GTK_DIALOG (dialog)) != GTK_RESPONSE_OK)
+ goto exit;
+
+ uri = em_folder_selector_get_selected_uri (
+ EM_FOLDER_SELECTOR (dialog));
+
+ g_free (default_xfer_messages_uri);
+ default_xfer_messages_uri = g_strdup (uri);
+
+ if (uri != NULL) {
+ mail_transfer_messages (
+ folder, selected, FALSE, uri, 0, NULL, NULL);
+ selected = NULL;
+ }
+
+exit:
+ if (selected != NULL)
+ em_utils_uids_free (selected);
+
+ gtk_widget_destroy (dialog);
+}
+
+static void
+action_mail_delete_cb (GtkAction *action,
+ EMailReader *reader)
+{
+ guint32 mask = CAMEL_MESSAGE_SEEN | CAMEL_MESSAGE_DELETED;
+ guint32 set = CAMEL_MESSAGE_SEEN | CAMEL_MESSAGE_DELETED;
+
+ if (!e_mail_reader_confirm_delete (reader))
+ return;
+
+ /* FIXME Verify all selected messages are deletable.
+ * But handle it by disabling this action. */
+
+ if (e_mail_reader_mark_selected (reader, mask, set) == 1)
+ e_mail_reader_select_next_message (reader, FALSE);
+}
+
+static void
+action_mail_filter_on_mailing_list_cb (GtkAction *action,
+ EMailReader *reader)
+{
+ e_mail_reader_create_filter_from_selected (reader, AUTO_MLIST);
+}
+
+static void
+action_mail_filter_on_recipients_cb (GtkAction *action,
+ EMailReader *reader)
+{
+ e_mail_reader_create_filter_from_selected (reader, AUTO_TO);
+}
+
+static void
+action_mail_filter_on_sender_cb (GtkAction *action,
+ EMailReader *reader)
+{
+ e_mail_reader_create_filter_from_selected (reader, AUTO_FROM);
+}
+
+static void
+action_mail_filter_on_subject_cb (GtkAction *action,
+ EMailReader *reader)
+{
+ e_mail_reader_create_filter_from_selected (reader, AUTO_SUBJECT);
+}
+
+static void
+action_mail_filters_apply_cb (GtkAction *action,
+ EMailReader *reader)
+{
+ MessageList *message_list;
+ CamelFolder *folder;
+ GPtrArray *uids;
+
+ folder = e_mail_reader_get_folder (reader);
+ message_list = e_mail_reader_get_message_list (reader);
+
+ uids = message_list_get_selected (message_list);
+
+ mail_filter_on_demand (folder, uids);
+}
+
+static void
+action_mail_find_cb (GtkAction *action,
+ EMailReader *reader)
+{
+ /* FIXME */
+}
+
+static void
+action_mail_flag_clear_cb (GtkAction *action,
+ EMailReader *reader)
+{
+ EMFormatHTMLDisplay *display;
+ MessageList *message_list;
+ CamelFolder *folder;
+ GtkWindow *window;
+ GPtrArray *uids;
+
+ display = e_mail_reader_get_display (reader);
+ folder = e_mail_reader_get_folder (reader);
+ message_list = e_mail_reader_get_message_list (reader);
+ window = e_mail_reader_get_window (reader);
+
+ uids = message_list_get_selected (message_list);
+
+ em_utils_flag_for_followup_clear (window, folder, uids);
+
+ em_format_redraw ((EMFormat *) display);
+}
+
+static void
+action_mail_flag_completed_cb (GtkAction *action,
+ EMailReader *reader)
+{
+ EMFormatHTMLDisplay *display;
+ MessageList *message_list;
+ CamelFolder *folder;
+ GtkWindow *window;
+ GPtrArray *uids;
+
+ display = e_mail_reader_get_display (reader);
+ folder = e_mail_reader_get_folder (reader);
+ message_list = e_mail_reader_get_message_list (reader);
+ window = e_mail_reader_get_window (reader);
+
+ uids = message_list_get_selected (message_list);
+
+ em_utils_flag_for_followup_completed (window, folder, uids);
+
+ em_format_redraw ((EMFormat *) display);
+}
+
+static void
+action_mail_flag_for_followup_cb (GtkAction *action,
+ EMailReader *reader)
+{
+ MessageList *message_list;
+ CamelFolder *folder;
+ GtkWindow *window;
+ GPtrArray *uids;
+
+ folder = e_mail_reader_get_folder (reader);
+ message_list = e_mail_reader_get_message_list (reader);
+ window = e_mail_reader_get_window (reader);
+
+ uids = message_list_get_selected (message_list);
+
+ em_utils_flag_for_followup (window, folder, uids);
+}
+
+static void
+action_mail_forward_cb (GtkAction *action,
+ EMailReader *reader)
+{
+ MessageList *message_list;
+ CamelFolder *folder;
+ GtkWindow *window;
+ GPtrArray *uids;
+ const gchar *folder_uri;
+
+ folder = e_mail_reader_get_folder (reader);
+ folder_uri = e_mail_reader_get_folder_uri (reader);
+ message_list = e_mail_reader_get_message_list (reader);
+ window = e_mail_reader_get_window (reader);
+
+ if (!em_utils_check_user_can_send_mail (window))
+ return;
+
+ uids = message_list_get_selected (message_list);
+
+ em_utils_forward_messages (folder, uids, folder_uri);
+}
+
+static void
+action_mail_forward_attached_cb (GtkAction *action,
+ EMailReader *reader)
+{
+ MessageList *message_list;
+ CamelFolder *folder;
+ GtkWindow *window;
+ GPtrArray *uids;
+ const gchar *folder_uri;
+
+ folder = e_mail_reader_get_folder (reader);
+ folder_uri = e_mail_reader_get_folder_uri (reader);
+ message_list = e_mail_reader_get_message_list (reader);
+ window = e_mail_reader_get_window (reader);
+
+ if (!em_utils_check_user_can_send_mail (window))
+ return;
+
+ uids = message_list_get_selected (message_list);
+
+ em_utils_forward_attached (folder, uids, folder_uri);
+}
+
+static void
+action_mail_forward_inline_cb (GtkAction *action,
+ EMailReader *reader)
+{
+ MessageList *message_list;
+ CamelFolder *folder;
+ GtkWindow *window;
+ GPtrArray *uids;
+ const gchar *folder_uri;
+
+ folder = e_mail_reader_get_folder (reader);
+ folder_uri = e_mail_reader_get_folder_uri (reader);
+ message_list = e_mail_reader_get_message_list (reader);
+ window = e_mail_reader_get_window (reader);
+
+ if (!em_utils_check_user_can_send_mail (window))
+ return;
+
+ uids = message_list_get_selected (message_list);
+
+ em_utils_forward_inline (folder, uids, folder_uri);
+}
+
+static void
+action_mail_forward_quoted_cb (GtkAction *action,
+ EMailReader *reader)
+{
+ MessageList *message_list;
+ CamelFolder *folder;
+ GtkWindow *window;
+ GPtrArray *uids;
+ const gchar *folder_uri;
+
+ folder = e_mail_reader_get_folder (reader);
+ folder_uri = e_mail_reader_get_folder_uri (reader);
+ message_list = e_mail_reader_get_message_list (reader);
+ window = e_mail_reader_get_window (reader);
+
+ if (!em_utils_check_user_can_send_mail (window))
+ return;
+
+ uids = message_list_get_selected (message_list);
+
+ em_utils_forward_quoted (folder, uids, folder_uri);
+}
+
+static void
+action_mail_load_images_cb (GtkAction *action,
+ EMailReader *reader)
+{
+ EMFormatHTMLDisplay *display;
+
+ display = e_mail_reader_get_display (reader);
+
+ em_format_html_load_http ((EMFormatHTML *) display);
+}
+
+static void
+action_mail_mark_important_cb (GtkAction *action,
+ EMailReader *reader)
+{
+ guint32 mask = CAMEL_MESSAGE_FLAGGED | CAMEL_MESSAGE_DELETED;
+ guint32 set = CAMEL_MESSAGE_FLAGGED;
+
+ e_mail_reader_mark_selected (reader, mask, set);
+}
+
+static void
+action_mail_mark_junk_cb (GtkAction *action,
+ EMailReader *reader)
+{
+ guint32 mask = CAMEL_MESSAGE_SEEN | CAMEL_MESSAGE_JUNK |
+ CAMEL_MESSAGE_NOTJUNK | CAMEL_MESSAGE_JUNK_LEARN;
+ guint32 set = CAMEL_MESSAGE_SEEN | CAMEL_MESSAGE_JUNK |
+ CAMEL_MESSAGE_JUNK_LEARN;
+
+ if (e_mail_reader_mark_selected (reader, mask, set) == 1)
+ e_mail_reader_select_next_message (reader, TRUE);
+}
+
+static void
+action_mail_mark_notjunk_cb (GtkAction *action,
+ EMailReader *reader)
+{
+ guint32 mask = CAMEL_MESSAGE_JUNK | CAMEL_MESSAGE_NOTJUNK |
+ CAMEL_MESSAGE_JUNK_LEARN;
+ guint32 set = CAMEL_MESSAGE_NOTJUNK | CAMEL_MESSAGE_JUNK_LEARN;
+
+ if (e_mail_reader_mark_selected (reader, mask, set) == 1)
+ e_mail_reader_select_next_message (reader, TRUE);
+}
+
+static void
+action_mail_mark_read_cb (GtkAction *action,
+ EMailReader *reader)
+{
+ guint32 mask = CAMEL_MESSAGE_SEEN;
+ guint32 set = CAMEL_MESSAGE_SEEN;
+
+ e_mail_reader_mark_selected (reader, mask, set);
+}
+
+static void
+action_mail_mark_unimportant_cb (GtkAction *action,
+ EMailReader *reader)
+{
+ guint32 mask = CAMEL_MESSAGE_FLAGGED;
+ guint32 set = 0;
+
+ e_mail_reader_mark_selected (reader, mask, set);
+}
+
+static void
+action_mail_mark_unread_cb (GtkAction *action,
+ EMailReader *reader)
+{
+ MessageList *message_list;
+ guint32 mask = CAMEL_MESSAGE_SEEN | CAMEL_MESSAGE_DELETED;
+ guint32 set = 0;
+
+ message_list = e_mail_reader_get_message_list (reader);
+
+ e_mail_reader_mark_selected (reader, mask, set);
+
+ if (message_list->seen_id != 0) {
+ g_source_remove (message_list->seen_id);
+ message_list->seen_id = 0;
+ }
+}
+
+static void
+action_mail_message_edit_cb (GtkAction *action,
+ EMailReader *reader)
+{
+ MessageList *message_list;
+ CamelFolder *folder;
+ GtkWindow *window;
+ GPtrArray *uids;
+
+ folder = e_mail_reader_get_folder (reader);
+ window = e_mail_reader_get_window (reader);
+ message_list = e_mail_reader_get_message_list (reader);
+
+ if (!em_utils_check_user_can_send_mail (window))
+ return;
+
+ uids = message_list_get_selected (message_list);
+
+ em_utils_edit_messages (folder, uids, FALSE);
+}
+
+static void
+action_mail_message_new_cb (GtkAction *action,
+ EMailReader *reader)
+{
+ GtkWindow *window;
+ const gchar *folder_uri;
+
+ folder_uri = e_mail_reader_get_folder_uri (reader);
+ window = e_mail_reader_get_window (reader);
+
+ if (!em_utils_check_user_can_send_mail (window))
+ return;
+
+ em_utils_compose_new_message (folder_uri);
+}
+
+static void
+action_mail_message_open_cb (GtkAction *action,
+ EMailReader *reader)
+{
+ /* FIXME This belongs in EMailShellView */
+ e_mail_reader_open_selected (reader);
+}
+
+static void
+action_mail_message_post_cb (GtkAction *action,
+ EMailReader *reader)
+{
+ CamelFolder *folder;
+
+ folder = e_mail_reader_get_folder (reader);
+
+ em_utils_post_to_folder (folder);
+}
+
+static void
+action_mail_move_cb (GtkAction *action,
+ EMailReader *reader)
+{
+ MessageList *message_list;
+ EMFolderTreeModel *model;
+ CamelFolder *folder;
+ GtkWidget *folder_tree;
+ GtkWidget *dialog;
+ GPtrArray *selected;
+ const gchar *uri;
+
+ folder = e_mail_reader_get_folder (reader);
+ message_list = e_mail_reader_get_message_list (reader);
+ model = e_mail_reader_get_tree_model (reader);
+
+ folder_tree = em_folder_tree_new_with_model (model);
+ selected = message_list_get_selected (message_list);
+
+ em_folder_tree_set_excluded (
+ EM_FOLDER_TREE (folder_tree),
+ EMFT_EXCLUDE_NOSELECT | EMFT_EXCLUDE_VIRTUAL |
+ EMFT_EXCLUDE_VTRASH);
+
+ dialog = em_folder_selector_new (
+ EM_FOLDER_TREE (folder_tree),
+ EM_FOLDER_SELECTOR_CAN_CREATE,
+ _("Select Folder"), NULL, _("C_opy"));
+
+ if (default_xfer_messages_uri != NULL)
+ em_folder_selector_set_selected (
+ EM_FOLDER_SELECTOR (dialog),
+ default_xfer_messages_uri);
+
+ if (gtk_dialog_run (GTK_DIALOG (dialog)) != GTK_RESPONSE_OK)
+ goto exit;
+
+ uri = em_folder_selector_get_selected_uri (
+ EM_FOLDER_SELECTOR (dialog));
+
+ g_free (default_xfer_messages_uri);
+ default_xfer_messages_uri = g_strdup (uri);
+
+ if (uri != NULL) {
+ mail_transfer_messages (
+ folder, selected, TRUE, uri, 0, NULL, NULL);
+ selected = NULL;
+ }
+
+exit:
+ if (selected != NULL)
+ em_utils_uids_free (selected);
+
+ gtk_widget_destroy (dialog);
+}
+
+static void
+action_mail_next_cb (GtkAction *action,
+ EMailReader *reader)
+{
+ MessageList *message_list;
+ MessageListSelectDirection direction;
+ guint32 flags, mask;
+
+ direction = MESSAGE_LIST_SELECT_NEXT;
+ flags = 0;
+ mask = 0;
+
+ message_list = e_mail_reader_get_message_list (reader);
+ message_list_select (message_list, direction, flags, mask);
+}
+
+static void
+action_mail_next_important_cb (GtkAction *action,
+ EMailReader *reader)
+{
+ MessageList *message_list;
+ MessageListSelectDirection direction;
+ guint32 flags, mask;
+
+ direction = MESSAGE_LIST_SELECT_NEXT | MESSAGE_LIST_SELECT_WRAP;
+ flags = CAMEL_MESSAGE_FLAGGED;
+ mask = CAMEL_MESSAGE_FLAGGED;
+
+ message_list = e_mail_reader_get_message_list (reader);
+ message_list_select (message_list, direction, flags, mask);
+}
+
+static void
+action_mail_next_thread_cb (GtkAction *action,
+ EMailReader *reader)
+{
+ MessageList *message_list;
+
+ message_list = e_mail_reader_get_message_list (reader);
+ message_list_select_next_thread (message_list);
+}
+
+static void
+action_mail_next_unread_cb (GtkAction *action,
+ EMailReader *reader)
+{
+ MessageList *message_list;
+ MessageListSelectDirection direction;
+ guint32 flags, mask;
+
+ direction = MESSAGE_LIST_SELECT_NEXT | MESSAGE_LIST_SELECT_WRAP;
+ flags = 0;
+ mask = CAMEL_MESSAGE_SEEN;
+
+ message_list = e_mail_reader_get_message_list (reader);
+ message_list_select (message_list, direction, flags, mask);
+}
+
+static void
+action_mail_previous_cb (GtkAction *action,
+ EMailReader *reader)
+{
+ MessageList *message_list;
+ MessageListSelectDirection direction;
+ guint32 flags, mask;
+
+ direction = MESSAGE_LIST_SELECT_PREVIOUS;
+ flags = 0;
+ mask = 0;
+
+ message_list = e_mail_reader_get_message_list (reader);
+ message_list_select (message_list, direction, flags, mask);
+}
+
+static void
+action_mail_previous_important_cb (GtkAction *action,
+ EMailReader *reader)
+{
+ MessageList *message_list;
+ MessageListSelectDirection direction;
+ guint32 flags, mask;
+
+ direction = MESSAGE_LIST_SELECT_PREVIOUS | MESSAGE_LIST_SELECT_WRAP;
+ flags = CAMEL_MESSAGE_FLAGGED;
+ mask = CAMEL_MESSAGE_FLAGGED;
+
+ message_list = e_mail_reader_get_message_list (reader);
+ message_list_select (message_list, direction, flags, mask);
+}
+
+static void
+action_mail_previous_unread_cb (GtkAction *action,
+ EMailReader *reader)
+{
+ MessageList *message_list;
+ MessageListSelectDirection direction;
+ guint32 flags, mask;
+
+ direction = MESSAGE_LIST_SELECT_PREVIOUS | MESSAGE_LIST_SELECT_WRAP;
+ flags = 0;
+ mask = CAMEL_MESSAGE_SEEN;
+
+ message_list = e_mail_reader_get_message_list (reader);
+ message_list_select (message_list, direction, flags, mask);
+}
+
+static void
+action_mail_print_cb (GtkAction *action,
+ EMailReader *reader)
+{
+ GtkPrintOperationAction print_action;
+
+ print_action = GTK_PRINT_OPERATION_ACTION_PRINT_DIALOG;
+ e_mail_reader_print (reader, print_action);
+}
+
+static void
+action_mail_print_preview_cb (GtkAction *action,
+ EMailReader *reader)
+{
+ GtkPrintOperationAction print_action;
+
+ print_action = GTK_PRINT_OPERATION_ACTION_PREVIEW;
+ e_mail_reader_print (reader, print_action);
+}
+
+static void
+action_mail_redirect_cb (GtkAction *action,
+ EMailReader *reader)
+{
+ MessageList *message_list;
+ CamelFolder *folder;
+ GtkWindow *window;
+ const gchar *uid;
+
+ folder = e_mail_reader_get_folder (reader);
+ message_list = e_mail_reader_get_message_list (reader);
+ window = e_mail_reader_get_window (reader);
+
+ uid = message_list->cursor_uid;
+ g_return_if_fail (uid != NULL);
+
+ if (!em_utils_check_user_can_send_mail (window))
+ return;
+
+ em_utils_redirect_message_by_uid (folder, uid);
+}
+
+static void
+action_mail_reply_all_cb (GtkAction *action,
+ EMailReader *reader)
+{
+ e_mail_reader_reply_to_message (reader, REPLY_MODE_ALL);
+}
+
+static void
+action_mail_reply_list_cb (GtkAction *action,
+ EMailReader *reader)
+{
+ e_mail_reader_reply_to_message (reader, REPLY_MODE_LIST);
+}
+
+static void
+action_mail_reply_post_cb (GtkAction *action,
+ EMailReader *reader)
+{
+ MessageList *message_list;
+ CamelFolder *folder;
+ GtkWindow *window;
+ const gchar *uid;
+
+ folder = e_mail_reader_get_folder (reader);
+ message_list = e_mail_reader_get_message_list (reader);
+ window = e_mail_reader_get_window (reader);
+
+ uid = message_list->cursor_uid;
+ g_return_if_fail (uid != NULL);
+
+ if (!em_utils_check_user_can_send_mail (window))
+ return;
+
+ em_utils_post_reply_to_message_by_uid (folder, uid);
+}
+
+static void
+action_mail_reply_sender_cb (GtkAction *action,
+ EMailReader *reader)
+{
+ e_mail_reader_reply_to_message (reader, REPLY_MODE_SENDER);
+}
+
+static void
+action_mail_save_as_cb (GtkAction *action,
+ EMailReader *reader)
+{
+ MessageList *message_list;
+ CamelFolder *folder;
+ GtkWindow *window;
+ GPtrArray *uids;
+
+ folder = e_mail_reader_get_folder (reader);
+ message_list = e_mail_reader_get_message_list (reader);
+ window = e_mail_reader_get_window (reader);
+
+ uids = message_list_get_selected (message_list);
+
+ em_utils_save_messages (window, folder, uids);
+}
+
+static void
+action_mail_search_folder_from_mailing_list_cb (GtkAction *action,
+ EMailReader *reader)
+{
+ e_mail_reader_create_vfolder_from_selected (reader, AUTO_MLIST);
+}
+
+static void
+action_mail_search_folder_from_recipients_cb (GtkAction *action,
+ EMailReader *reader)
+{
+ e_mail_reader_create_vfolder_from_selected (reader, AUTO_TO);
+}
+
+static void
+action_mail_search_folder_from_sender_cb (GtkAction *action,
+ EMailReader *reader)
+{
+ e_mail_reader_create_vfolder_from_selected (reader, AUTO_FROM);
+}
+
+static void
+action_mail_search_folder_from_subject_cb (GtkAction *action,
+ EMailReader *reader)
+{
+ e_mail_reader_create_vfolder_from_selected (reader, AUTO_SUBJECT);
+}
+
+static void
+action_mail_select_all_cb (GtkAction *action,
+ EMailReader *reader)
+{
+ /* FIXME */
+}
+
+static void
+action_mail_show_all_headers_cb (GtkToggleAction *action,
+ EMailReader *reader)
+{
+ /* FIXME */
+}
+
+static void
+action_mail_show_source_cb (GtkAction *action,
+ EMailReader *reader)
+{
+ /* FIXME */
+}
+
+static void
+action_mail_toggle_important_cb (GtkAction *action,
+ EMailReader *reader)
+{
+ MessageList *message_list;
+ CamelFolder *folder;
+ GPtrArray *uids;
+ guint ii;
+
+ folder = e_mail_reader_get_folder (reader);
+ message_list = e_mail_reader_get_message_list (reader);
+
+ uids = message_list_get_selected (message_list);
+
+ camel_folder_freeze (folder);
+
+ for (ii = 0; ii < uids->len; ii++) {
+ guint32 flags;
+
+ flags = camel_folder_get_message_flags (
+ folder, uids->pdata[ii]);
+ flags ^= CAMEL_MESSAGE_FLAGGED;
+ if (flags & CAMEL_MESSAGE_FLAGGED)
+ flags &= ~CAMEL_MESSAGE_DELETED;
+ camel_folder_set_message_flags (
+ folder, uids->pdata[ii], CAMEL_MESSAGE_FLAGGED |
+ CAMEL_MESSAGE_DELETED, flags);
+ }
+
+ camel_folder_thaw (folder);
+
+ message_list_free_uids (message_list, uids);
+}
+
+static void
+action_mail_undelete_cb (GtkAction *action,
+ EMailReader *reader)
+{
+ guint32 mask = CAMEL_MESSAGE_DELETED;
+ guint32 set = 0;
+
+ e_mail_reader_mark_selected (reader, mask, set);
+}
+
+static void
+action_mail_zoom_100_cb (GtkAction *action,
+ EMailReader *reader)
+{
+ EMFormatHTMLDisplay *display;
+
+ display = e_mail_reader_get_display (reader);
+
+ em_format_html_display_zoom_reset (display);
+}
+
+static void
+action_mail_zoom_in_cb (GtkAction *action,
+ EMailReader *reader)
+{
+ EMFormatHTMLDisplay *display;
+
+ display = e_mail_reader_get_display (reader);
+
+ em_format_html_display_zoom_in (display);
+}
+
+static void
+action_mail_zoom_out_cb (GtkAction *action,
+ EMailReader *reader)
+{
+ EMFormatHTMLDisplay *display;
+
+ display = e_mail_reader_get_display (reader);
+
+ em_format_html_display_zoom_out (display);
+}
+
+static GtkActionEntry mail_reader_entries[] = {
+
+ { "mail-add-sender",
+ NULL,
+ N_("A_dd Sender to Address Book"),
+ NULL,
+ N_("Add sender to address book"),
+ G_CALLBACK (action_mail_add_sender_cb) },
+
+ { "mail-check-for-junk",
+ "mail-mark-junk",
+ N_("Check for _Junk"),
+ NULL,
+ N_("Filter the selected messages for junk status"),
+ G_CALLBACK (action_mail_check_for_junk_cb) },
+
+ { "mail-clipboard-copy",
+ GTK_STOCK_COPY,
+ NULL,
+ NULL,
+ N_("Copy selected messages to the clipboard"),
+ G_CALLBACK (action_mail_clipboard_copy_cb) },
+
+ { "mail-copy",
+ "mail-copy",
+ N_("_Copy to Folder"),
+ "<Shift><Control>y",
+ N_("Copy selected messages to another folder"),
+ G_CALLBACK (action_mail_copy_cb) },
+
+ { "mail-delete",
+ "user-trash",
+ N_("_Delete Message"),
+ "<Control>d",
+ N_("Mark the selected messages for deletion"),
+ G_CALLBACK (action_mail_delete_cb) },
+
+ { "mail-filter-on-mailing-list",
+ NULL,
+ N_("Filter on Mailing _List..."),
+ NULL,
+ N_("Create a rule to filter messages to this mailing list"),
+ G_CALLBACK (action_mail_filter_on_mailing_list_cb) },
+
+ { "mail-filter-on-recipients",
+ NULL,
+ N_("Filter on _Recipients..."),
+ NULL,
+ N_("Create a rule to filter messages to these recipients"),
+ G_CALLBACK (action_mail_filter_on_recipients_cb) },
+
+ { "mail-filter-on-sender",
+ NULL,
+ N_("Filter on Se_nder..."),
+ NULL,
+ N_("Create a rule to filter messages from this sender"),
+ G_CALLBACK (action_mail_filter_on_sender_cb) },
+
+ { "mail-filter-on-subject",
+ NULL,
+ N_("Filter on _Subject..."),
+ NULL,
+ N_("Create a rule to filter messages with this subject"),
+ G_CALLBACK (action_mail_filter_on_subject_cb) },
+
+ { "mail-filters-apply",
+ "stock_mail-filters-apply",
+ N_("A_pply Filters"),
+ "<Control>y",
+ N_("Apply filter rules to the selected messages"),
+ G_CALLBACK (action_mail_filters_apply_cb) },
+
+ { "mail-find",
+ GTK_STOCK_FIND,
+ N_("_Find in Message..."),
+ "<Shift><Control>f",
+ N_("Search for text in the body of the displayed message"),
+ G_CALLBACK (action_mail_find_cb) },
+
+ { "mail-flag-clear",
+ NULL,
+ N_("_Clear Flag"),
+ NULL,
+ N_("Remove the follow-up flag from the selected messages"),
+ G_CALLBACK (action_mail_flag_clear_cb) },
+
+ { "mail-flag-completed",
+ NULL,
+ N_("_Flag Completed"),
+ NULL,
+ N_("Set the follow-up flag to completed on the selected messages"),
+ G_CALLBACK (action_mail_flag_completed_cb) },
+
+ { "mail-flag-for-followup",
+ "stock_mail-flag-for-followup",
+ N_("Follow _Up..."),
+ "<Shift><Control>g",
+ N_("Flag the selected messages for follow-up"),
+ G_CALLBACK (action_mail_flag_for_followup_cb) },
+
+ { "mail-forward",
+ "mail-forward",
+ N_("_Forward"),
+ "<Control>f",
+ N_("Forward the selected message to someone"),
+ G_CALLBACK (action_mail_forward_cb) },
+
+ { "mail-forward-attached",
+ NULL,
+ N_("_Attached"),
+ NULL,
+ N_("Forward the selected message to someone as an attachment"),
+ G_CALLBACK (action_mail_forward_attached_cb) },
+
+ { "mail-forward-inline",
+ NULL,
+ N_("_Inline"),
+ NULL,
+ N_("Forward the selected message in the body of a new message"),
+ G_CALLBACK (action_mail_forward_inline_cb) },
+
+ { "mail-forward-quoted",
+ NULL,
+ N_("_Quoted"),
+ NULL,
+ N_("Forward the selected message quoted like a reply"),
+ G_CALLBACK (action_mail_forward_quoted_cb) },
+
+ { "mail-load-images",
+ "image-x-generic",
+ N_("_Load Images"),
+ "<Control>i",
+ N_("Force images in HTML mail to be loaded"),
+ G_CALLBACK (action_mail_load_images_cb) },
+
+ { "mail-mark-important",
+ "mail-mark-important",
+ N_("_Important"),
+ NULL,
+ N_("Mark the selected messages as important"),
+ G_CALLBACK (action_mail_mark_important_cb) },
+
+ { "mail-mark-junk",
+ "mail-mark-junk",
+ N_("_Junk"),
+ "<Control>j",
+ N_("Mark the selected messages as junk"),
+ G_CALLBACK (action_mail_mark_junk_cb) },
+
+ { "mail-mark-notjunk",
+ "mail-mark-notjunk",
+ N_("_Not Junk"),
+ "<Shift><Control>j",
+ N_("Mark the selected messasges as not being junk"),
+ G_CALLBACK (action_mail_mark_notjunk_cb) },
+
+ { "mail-mark-read",
+ "mail-mark-read",
+ N_("_Read"),
+ "<Control>k",
+ N_("Mark the selected messages as having been read"),
+ G_CALLBACK (action_mail_mark_read_cb) },
+
+ { "mail-mark-unimportant",
+ NULL,
+ N_("Uni_mportant"),
+ NULL,
+ N_("Mark the selected messages as unimportant"),
+ G_CALLBACK (action_mail_mark_unimportant_cb) },
+
+ { "mail-mark-unread",
+ "mail-mark-unread",
+ N_("_Unread"),
+ "<Shift><Control>k",
+ N_("Mark the selected messages as not having been read"),
+ G_CALLBACK (action_mail_mark_unread_cb) },
+
+ { "mail-message-edit",
+ NULL,
+ N_("_Edit as New Message..."),
+ NULL,
+ N_("Open the selected messages in the composer for editing"),
+ G_CALLBACK (action_mail_message_edit_cb) },
+
+ { "mail-message-new",
+ "mail-message-new",
+ N_("Compose _New Message"),
+ "<Shift><Control>m",
+ N_("Open a window for composing a mail message"),
+ G_CALLBACK (action_mail_message_new_cb) },
+
+ { "mail-message-open",
+ NULL,
+ N_("_Open in New Window"),
+ "<Control>o",
+ N_("Open the selected messages in a new window"),
+ G_CALLBACK (action_mail_message_open_cb) },
+
+ { "mail-message-post",
+ NULL,
+ N_("Pos_t New Message to Folder"),
+ NULL,
+ N_("Post a message to a public folder"),
+ G_CALLBACK (action_mail_message_post_cb) },
+
+ { "mail-move",
+ "mail-move",
+ N_("_Move to Folder"),
+ "<Shift><Control>v",
+ N_("Move selected messages to another folder"),
+ G_CALLBACK (action_mail_move_cb) },
+
+ { "mail-next",
+ GTK_STOCK_GO_FORWARD,
+ N_("_Next Message"),
+ "<Control>Page_Down",
+ N_("Display the next message"),
+ G_CALLBACK (action_mail_next_cb) },
+
+ { "mail-next-important",
+ NULL,
+ N_("Next _Important Message"),
+ NULL,
+ N_("Display the next important message"),
+ G_CALLBACK (action_mail_next_important_cb) },
+
+ { "mail-next-thread",
+ NULL,
+ N_("Next _Thread"),
+ NULL,
+ N_("Display the next thread"),
+ G_CALLBACK (action_mail_next_thread_cb) },
+
+ { "mail-next-unread",
+ NULL,
+ N_("Next _Unread Message"),
+ "<Control>bracketright",
+ N_("Display the next unread message"),
+ G_CALLBACK (action_mail_next_unread_cb) },
+
+ { "mail-previous",
+ GTK_STOCK_GO_BACK,
+ N_("_Previous Message"),
+ "<Control>Page_Up",
+ N_("Display the previous message"),
+ G_CALLBACK (action_mail_previous_cb) },
+
+ { "mail-previous-important",
+ NULL,
+ N_("Pr_evious Important Message"),
+ NULL,
+ N_("Display the previous important message"),
+ G_CALLBACK (action_mail_previous_important_cb) },
+
+ { "mail-previous-unread",
+ NULL,
+ N_("P_revious Unread Message"),
+ "<Control>bracketleft",
+ N_("Display the previous unread message"),
+ G_CALLBACK (action_mail_previous_unread_cb) },
+
+ { "mail-print",
+ GTK_STOCK_PRINT,
+ NULL,
+ NULL,
+ N_("Print this message"),
+ G_CALLBACK (action_mail_print_cb) },
+
+ { "mail-print-preview",
+ GTK_STOCK_PRINT_PREVIEW,
+ NULL,
+ NULL,
+ N_("Preview the message to be printed"),
+ G_CALLBACK (action_mail_print_preview_cb) },
+
+ { "mail-redirect",
+ NULL,
+ N_("Re_direct"),
+ NULL,
+ N_("Redirect (bounce) the selected message to someone"),
+ G_CALLBACK (action_mail_redirect_cb) },
+
+ { "mail-reply-all",
+ "mail-reply-all",
+ N_("Reply to _All"),
+ "<Shift><Control>r",
+ N_("Compose a reply to all the recipients of the selected message"),
+ G_CALLBACK (action_mail_reply_all_cb) },
+
+ { "mail-reply-list",
+ NULL,
+ N_("Reply to _List"),
+ "<Control>l",
+ N_("Compose a reply to the mailing list of the selected message"),
+ G_CALLBACK (action_mail_reply_list_cb) },
+
+ { "mail-reply-post",
+ NULL,
+ N_("Post a Repl_y"),
+ NULL,
+ N_("Post a reply to a message in a public folder"),
+ G_CALLBACK (action_mail_reply_post_cb) },
+
+ { "mail-reply-sender",
+ "mail-reply-sender",
+ N_("_Reply to Sender"),
+ "<Control>r",
+ N_("Compose a reply to the sender of the selected message"),
+ G_CALLBACK (action_mail_reply_sender_cb) },
+
+ { "mail-save-as",
+ GTK_STOCK_SAVE_AS,
+ N_("_Save as mbox..."),
+ NULL,
+ N_("Save selected messages as an mbox file"),
+ G_CALLBACK (action_mail_save_as_cb) },
+
+ { "mail-search-folder-from-mailing-list",
+ NULL,
+ N_("Search Folder from Mailing _List..."),
+ NULL,
+ N_("Create a search folder for this mailing list"),
+ G_CALLBACK (action_mail_search_folder_from_mailing_list_cb) },
+
+ { "mail-search-folder-from-recipients",
+ NULL,
+ N_("Search Folder from Recipien_ts..."),
+ NULL,
+ N_("Create a search folder for these recipients"),
+ G_CALLBACK (action_mail_search_folder_from_recipients_cb) },
+
+ { "mail-search-folder-from-sender",
+ NULL,
+ N_("Search Folder from Sen_der..."),
+ NULL,
+ N_("Create a search folder for this sender"),
+ G_CALLBACK (action_mail_search_folder_from_sender_cb) },
+
+ { "mail-search-folder-from-subject",
+ NULL,
+ N_("Search Folder from S_ubject..."),
+ NULL,
+ N_("Create a search folder for this subject"),
+ G_CALLBACK (action_mail_search_folder_from_subject_cb) },
+
+ { "mail-select-all",
+ NULL,
+ N_("Select _All Text"),
+ "<Shift><Control>x",
+ N_("Select all the text in a message"),
+ G_CALLBACK (action_mail_select_all_cb) },
+
+ { "mail-show-source",
+ NULL,
+ N_("_Message Source"),
+ "<Control>u",
+ N_("Show the raw email source of the message"),
+ G_CALLBACK (action_mail_show_source_cb) },
+
+ { "mail-toggle-important",
+ NULL,
+ NULL, /* No menu item; key press only */
+ NULL,
+ NULL,
+ G_CALLBACK (action_mail_toggle_important_cb) },
+
+ { "mail-undelete",
+ NULL,
+ N_("_Undelete Message"),
+ "<Shift><Control>d",
+ N_("Undelete the selected messages"),
+ G_CALLBACK (action_mail_undelete_cb) },
+
+ { "mail-zoom-100",
+ GTK_STOCK_ZOOM_100,
+ N_("_Normal Size"),
+ "<Control>0",
+ N_("Reset the text to its original size"),
+ G_CALLBACK (action_mail_zoom_100_cb) },
+
+ { "mail-zoom-in",
+ GTK_STOCK_ZOOM_IN,
+ N_("_Zoom In"),
+ "<Control>plus",
+ N_("Increase the text size"),
+ G_CALLBACK (action_mail_zoom_in_cb) },
+
+ { "mail-zoom-out",
+ GTK_STOCK_ZOOM_OUT,
+ N_("Zoom _Out"),
+ "<Control>minus",
+ N_("Decrease the text size"),
+ G_CALLBACK (action_mail_zoom_out_cb) },
+
+ /*** Menus ***/
+
+ { "mail-create-rule-menu",
+ NULL,
+ N_("Create R_ule"),
+ NULL,
+ NULL,
+ NULL },
+
+ { "mail-encoding-menu",
+ NULL,
+ N_("Ch_aracter Encoding"),
+ NULL,
+ NULL,
+ NULL },
+
+ { "mail-forward-as-menu",
+ NULL,
+ N_("F_orward As..."),
+ NULL,
+ NULL,
+ NULL },
+
+ { "mail-goto-menu",
+ GTK_STOCK_JUMP_TO,
+ N_("_Go To"),
+ NULL,
+ NULL,
+ NULL },
+
+ { "mail-mark-as-menu",
+ NULL,
+ N_("Mar_k As"),
+ NULL,
+ NULL,
+ NULL },
+
+ { "mail-message-menu",
+ NULL,
+ N_("_Message"),
+ NULL,
+ NULL,
+ NULL },
+
+ { "mail-zoom-menu",
+ NULL,
+ N_("_Zoom"),
+ NULL,
+ NULL,
+ NULL }
+};
+
+static GtkToggleActionEntry mail_reader_toggle_entries[] = {
+
+ { "mail-caret-mode",
+ NULL,
+ N_("_Caret Mode"),
+ "F7",
+ N_("Show a blinking cursor in the body of displayed messages"),
+ G_CALLBACK (action_mail_caret_mode_cb),
+ FALSE },
+
+ { "mail-show-all-headers",
+ NULL,
+ N_("All Message _Headers"),
+ NULL,
+ N_("Show messages with all email headers"),
+ G_CALLBACK (action_mail_show_all_headers_cb),
+ FALSE }
+};
+
+static void
+mail_reader_double_click_cb (EMailReader *reader,
+ gint row,
+ ETreePath path,
+ gint col,
+ GdkEvent *event)
+{
+ /* Ignore double clicks on columns that handle their own state. */
+ if (MESSAGE_LIST_COLUMN_IS_ACTIVE (col))
+ return;
+
+ e_mail_reader_activate (reader, "mail-message-open");
+}
+
+static gint
+mail_reader_key_press_cb (EMailReader *reader,
+ gint row,
+ ETreePath path,
+ gint col,
+ GdkEvent *event)
+{
+ const gchar *action_name;
+
+ if ((event->key.state & GDK_CONTROL_MASK) != 0)
+ return FALSE;
+
+ switch (event->key.keyval) {
+ case GDK_Return:
+ case GDK_KP_Enter:
+ case GDK_ISO_Enter:
+ action_name = "mail-message-open";
+ break;
+
+#ifdef HAVE_XFREE
+ case XF86XK_Reply:
+ action_name = "mail-reply-all";
+ break;
+
+ case XF86XK_MailForward:
+ action_name = "mail-forward";
+ break;
+#endif
+
+ case '!':
+ action_name = "mail-toggle-important";
+ break;
+
+ default:
+ return FALSE;
+ }
+
+ e_mail_reader_activate (reader, action_name);
+
+ return TRUE;
+}
+
+static void
+mail_reader_class_init (EMailReaderIface *iface)
+{
+}
+
+GType
+e_mail_reader_get_type (void)
+{
+ static GType type = 0;
+
+ if (G_UNLIKELY (type == 0)) {
+ static const GTypeInfo type_info = {
+ sizeof (EMailReaderIface),
+ (GBaseInitFunc) NULL,
+ (GBaseFinalizeFunc) NULL,
+ (GClassInitFunc) mail_reader_class_init,
+ (GClassFinalizeFunc) NULL,
+ NULL, /* class_data */
+ 0, /* instance_size */
+ 0, /* n_preallocs */
+ NULL, /* instance_init */
+ NULL /* value_table */
+ };
+
+ type = g_type_register_static (
+ G_TYPE_INTERFACE, "EMailReader", &type_info, 0);
+
+ g_type_interface_add_prerequisite (type, G_TYPE_OBJECT);
+ }
+
+ return type;
+}
+
+void
+e_mail_reader_init (EMailReader *reader)
+{
+ MessageList *message_list;
+ GtkActionGroup *action_group;
+ GConfBridge *bridge;
+ GtkAction *action;
+ const gchar *key;
+
+ g_return_if_fail (E_IS_MAIL_READER (reader));
+
+ action_group = e_mail_reader_get_action_group (reader);
+ message_list = e_mail_reader_get_message_list (reader);
+
+ gtk_action_group_add_actions (
+ action_group, mail_reader_entries,
+ G_N_ELEMENTS (mail_reader_entries), reader);
+ gtk_action_group_add_toggle_actions (
+ action_group, mail_reader_toggle_entries,
+ G_N_ELEMENTS (mail_reader_toggle_entries), reader);
+
+ /* Bind GObject properties to GConf keys. */
+
+ bridge = gconf_bridge_get ();
+
+ key = "/apps/evolution/mail/display/caret_mode";
+ action = gtk_action_group_get_action (action_group, "mail-caret-mode");
+ gconf_bridge_bind_property (bridge, key, G_OBJECT (action), "active");
+
+ /* Fine tuning. */
+
+ action = gtk_action_group_get_action (action_group, "mail-delete");
+ g_object_set (action, "short-label", _("Delete"), NULL);
+
+ action = gtk_action_group_get_action (action_group, "mail-next");
+ g_object_set (action, "short-label", _("Next"), NULL);
+
+ action = gtk_action_group_get_action (action_group, "mail-previous");
+ g_object_set (action, "short-label", _("Previous"), NULL);
+
+ action = gtk_action_group_get_action (action_group, "mail-reply");
+ g_object_set (action, "short-label", _("Reply"), NULL);
+
+ /* Connect signals. */
+
+ g_signal_connect_swapped (
+ message_list->tree, "double-click",
+ G_CALLBACK (mail_reader_double_click_cb), reader);
+
+ g_signal_connect_swapped (
+ message_list->tree, "key-press",
+ G_CALLBACK (mail_reader_key_press_cb), reader);
+}
+
+GtkActionGroup *
+e_mail_reader_get_action_group (EMailReader *reader)
+{
+ EMailReaderIface *iface;
+
+ g_return_val_if_fail (E_IS_MAIL_READER (reader), NULL);
+
+ iface = E_MAIL_READER_GET_IFACE (reader);
+ g_return_val_if_fail (iface->get_action_group != NULL, NULL);
+
+ return iface->get_action_group (reader);
+}
+
+EMFormatHTMLDisplay *
+e_mail_reader_get_display (EMailReader *reader)
+{
+ EMailReaderIface *iface;
+
+ g_return_val_if_fail (E_IS_MAIL_READER (reader), NULL);
+
+ iface = E_MAIL_READER_GET_IFACE (reader);
+ g_return_val_if_fail (iface->get_display != NULL, NULL);
+
+ return iface->get_display (reader);
+}
+
+CamelFolder *
+e_mail_reader_get_folder (EMailReader *reader)
+{
+ EMailReaderIface *iface;
+
+ g_return_val_if_fail (E_IS_MAIL_READER (reader), NULL);
+
+ iface = E_MAIL_READER_GET_IFACE (reader);
+ g_return_val_if_fail (iface->get_folder != NULL, NULL);
+
+ return iface->get_folder (reader);
+}
+
+const gchar *
+e_mail_reader_get_folder_uri (EMailReader *reader)
+{
+ EMailReaderIface *iface;
+
+ g_return_val_if_fail (E_IS_MAIL_READER (reader), NULL);
+
+ iface = E_MAIL_READER_GET_IFACE (reader);
+ g_return_val_if_fail (iface->get_folder_uri != NULL, NULL);
+
+ return iface->get_folder_uri (reader);
+}
+
+gboolean
+e_mail_reader_get_hide_deleted (EMailReader *reader)
+{
+ EMailReaderIface *iface;
+
+ g_return_val_if_fail (E_IS_MAIL_READER (reader), FALSE);
+
+ iface = E_MAIL_READER_GET_IFACE (reader);
+ g_return_val_if_fail (iface->get_hide_deleted != NULL, FALSE);
+
+ return iface->get_hide_deleted (reader);
+}
+
+MessageList *
+e_mail_reader_get_message_list (EMailReader *reader)
+{
+ EMailReaderIface *iface;
+
+ g_return_val_if_fail (E_IS_MAIL_READER (reader), NULL);
+
+ iface = E_MAIL_READER_GET_IFACE (reader);
+ g_return_val_if_fail (iface->get_message_list != NULL, NULL);
+
+ return iface->get_message_list (reader);
+}
+
+EShellSettings *
+e_mail_reader_get_shell_settings (EMailReader *reader)
+{
+ EMailReaderIface *iface;
+
+ g_return_val_if_fail (E_IS_MAIL_READER (reader), NULL);
+
+ iface = E_MAIL_READER_GET_IFACE (reader);
+ g_return_val_if_fail (iface->get_shell_settings != NULL, NULL);
+
+ return iface->get_shell_settings (reader);
+}
+
+EMFolderTreeModel *
+e_mail_reader_get_tree_model (EMailReader *reader)
+{
+ EMailReaderIface *iface;
+
+ g_return_val_if_fail (E_IS_MAIL_READER (reader), NULL);
+
+ iface = E_MAIL_READER_GET_IFACE (reader);
+ g_return_val_if_fail (iface->get_tree_model != NULL, NULL);
+
+ return iface->get_tree_model (reader);
+}
+
+GtkWindow *
+e_mail_reader_get_window (EMailReader *reader)
+{
+ EMailReaderIface *iface;
+
+ g_return_val_if_fail (E_IS_MAIL_READER (reader), NULL);
+
+ iface = E_MAIL_READER_GET_IFACE (reader);
+ g_return_val_if_fail (iface->get_window != NULL, NULL);
+
+ return iface->get_window (reader);
+}
diff --git a/mail/e-mail-reader.h b/mail/e-mail-reader.h
new file mode 100644
index 0000000000..8e14c52c60
--- /dev/null
+++ b/mail/e-mail-reader.h
@@ -0,0 +1,85 @@
+/*
+ * e-mail-reader.h
+ *
+ * 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/>
+ *
+ *
+ * Copyright (C) 1999-2008 Novell, Inc. (www.novell.com)
+ *
+ */
+
+#ifndef E_MAIL_READER_H
+#define E_MAIL_READER_H
+
+#include <gtk/gtk.h>
+#include <camel/camel-folder.h>
+#include <mail/em-folder-tree-model.h>
+#include <mail/em-format-html-display.h>
+#include <mail/message-list.h>
+#include <shell/e-shell-settings.h>
+
+/* Standard GObject macros */
+#define E_TYPE_MAIL_READER \
+ (e_mail_reader_get_type ())
+#define E_MAIL_READER(obj) \
+ (G_TYPE_CHECK_INSTANCE_CAST \
+ ((obj), E_TYPE_MAIL_READER, EMailReader))
+#define E_IS_MAIL_READER(obj) \
+ (G_TYPE_CHECK_INSTANCE_TYPE \
+ ((obj), E_TYPE_MAIL_READER))
+#define E_MAIL_READER_GET_IFACE(obj) \
+ (G_TYPE_INSTANCE_GET_INTERFACE \
+ ((obj), E_TYPE_MAIL_READER, EMailReaderIface))
+
+G_BEGIN_DECLS
+
+typedef struct _EMailReader EMailReader;
+typedef struct _EMailReaderIface EMailReaderIface;
+
+struct _EMailReaderIface {
+ GTypeInterface parent_iface;
+
+ /* XXX This is getting kinda bloated. Try to reduce. */
+ GtkActionGroup *
+ (*get_action_group) (EMailReader *reader);
+ EMFormatHTMLDisplay *
+ (*get_display) (EMailReader *reader);
+ CamelFolder * (*get_folder) (EMailReader *reader);
+ const gchar * (*get_folder_uri) (EMailReader *reader);
+ gboolean (*get_hide_deleted) (EMailReader *reader);
+ MessageList * (*get_message_list) (EMailReader *reader);
+ EShellSettings *(*get_shell_settings) (EMailReader *reader);
+ EMFolderTreeModel *
+ (*get_tree_model) (EMailReader *reader);
+ GtkWindow * (*get_window) (EMailReader *reader);
+};
+
+GType e_mail_reader_get_type (void);
+void e_mail_reader_init (EMailReader *reader);
+GtkActionGroup *
+ e_mail_reader_get_action_group (EMailReader *reader);
+EMFormatHTMLDisplay *
+ e_mail_reader_get_display (EMailReader *reader);
+CamelFolder * e_mail_reader_get_folder (EMailReader *reader);
+const gchar * e_mail_reader_get_folder_uri (EMailReader *reader);
+gboolean e_mail_reader_get_hide_deleted (EMailReader *reader);
+MessageList * e_mail_reader_get_message_list (EMailReader *reader);
+EShellSettings *e_mail_reader_get_shell_settings(EMailReader *reader);
+EMFolderTreeModel *
+ e_mail_reader_get_tree_model (EMailReader *reader);
+GtkWindow * e_mail_reader_get_window (EMailReader *reader);
+
+G_END_DECLS
+
+#endif /* E_MAIL_READER_H */
diff --git a/mail/e-mail-shell-content.c b/mail/e-mail-shell-content.c
index f6b07ea728..271b8b2635 100644
--- a/mail/e-mail-shell-content.c
+++ b/mail/e-mail-shell-content.c
@@ -34,6 +34,9 @@
#include "em-utils.h"
#include "mail-config.h"
+#include "e-mail-reader.h"
+#include "e-mail-shell-module.h"
+
#define E_MAIL_SHELL_CONTENT_GET_PRIVATE(obj) \
(G_TYPE_INSTANCE_GET_PRIVATE \
((obj), E_TYPE_MAIL_SHELL_CONTENT, EMailShellContentPrivate))
@@ -359,6 +362,101 @@ mail_shell_content_check_state (EShellContent *shell_content)
return state;
}
+static GtkActionGroup *
+mail_shell_content_get_action_group (EMailReader *reader)
+{
+ EShellContent *shell_content;
+ EShellWindow *shell_window;
+ EShellView *shell_view;
+
+ shell_content = E_SHELL_CONTENT (reader);
+ shell_view = e_shell_content_get_shell_view (shell_content);
+ shell_window = e_shell_view_get_shell_window (shell_view);
+
+ return e_shell_window_get_action_group (shell_window, "mail");
+}
+
+static EMFormatHTMLDisplay *
+mail_shell_content_get_display (EMailReader *reader)
+{
+ EMailShellContent *mail_shell_content;
+
+ mail_shell_content = E_MAIL_SHELL_CONTENT (reader);
+
+ return e_mail_shell_content_get_preview_format (mail_shell_content);
+}
+
+static CamelFolder *
+mail_shell_content_get_folder (EMailReader *reader)
+{
+ EMailShellContent *mail_shell_content;
+ EMFolderView *folder_view;
+
+ mail_shell_content = E_MAIL_SHELL_CONTENT (reader);
+ folder_view = e_mail_shell_content_get_folder_view (mail_shell_content);
+
+ return folder_view->folder;
+}
+
+static const gchar *
+mail_shell_content_get_folder_uri (EMailReader *reader)
+{
+ EMailShellContent *mail_shell_content;
+ EMFolderView *folder_view;
+
+ mail_shell_content = E_MAIL_SHELL_CONTENT (reader);
+ folder_view = e_mail_shell_content_get_folder_view (mail_shell_content);
+
+ return folder_view->folder_uri;
+}
+
+static gboolean
+mail_shell_content_get_hide_deleted (EMailReader *reader)
+{
+ /* FIXME */
+ return TRUE;
+}
+
+static MessageList *
+mail_shell_content_get_message_list (EMailReader *reader)
+{
+ EMailShellContent *mail_shell_content;
+ EMFolderView *folder_view;
+
+ mail_shell_content = E_MAIL_SHELL_CONTENT (reader);
+ folder_view = e_mail_shell_content_get_folder_view (mail_shell_content);
+
+ return folder_view->list;
+}
+
+static EMFolderTreeModel *
+mail_shell_content_get_tree_model (EMailReader *reader)
+{
+ EShellContent *shell_content;
+ EShellModule *shell_module;
+ EShellView *shell_view;
+
+ shell_content = E_SHELL_CONTENT (reader);
+ shell_view = e_shell_content_get_shell_view (shell_content);
+ shell_module = e_shell_view_get_shell_module (shell_view);
+
+ return e_mail_shell_module_get_folder_tree_model (shell_module);
+}
+
+static GtkWindow *
+mail_shell_content_get_window (EMailReader *reader)
+{
+ EShellContent *shell_content;
+ EShellWindow *shell_window;
+ EShellView *shell_view;
+
+ shell_content = E_SHELL_CONTENT (reader);
+ shell_view = e_shell_content_get_shell_view (shell_content);
+ shell_window = e_shell_view_get_shell_window (shell_view);
+
+ return GTK_WINDOW (shell_window);
+}
+
static void
mail_shell_content_class_init (EMailShellContentClass *class)
{
@@ -401,6 +499,19 @@ mail_shell_content_class_init (EMailShellContentClass *class)
}
static void
+mail_shell_content_iface_init (EMailReaderIface *iface)
+{
+ iface->get_action_group = mail_shell_content_get_action_group;
+ iface->get_display = mail_shell_content_get_display;
+ iface->get_folder = mail_shell_content_get_folder;
+ iface->get_folder_uri = mail_shell_content_get_folder_uri;
+ iface->get_hide_deleted = mail_shell_content_get_hide_deleted;
+ iface->get_message_list = mail_shell_content_get_message_list;
+ iface->get_tree_model = mail_shell_content_get_tree_model;
+ iface->get_window = mail_shell_content_get_window;
+}
+
+static void
mail_shell_content_init (EMailShellContent *mail_shell_content)
{
mail_shell_content->priv =
@@ -430,9 +541,18 @@ e_mail_shell_content_get_type (void)
NULL /* value_table */
};
+ static const GInterfaceInfo iface_info = {
+ (GInterfaceInitFunc) mail_shell_content_iface_init,
+ (GInterfaceFinalizeFunc) NULL,
+ NULL /* interface_data */
+ };
+
type = g_type_register_static (
E_TYPE_SHELL_CONTENT, "EMailShellContent",
&type_info, 0);
+
+ g_type_add_interface_static (
+ type, E_TYPE_MAIL_READER, &iface_info);
}
return type;
diff --git a/mail/e-mail-shell-module-settings.c b/mail/e-mail-shell-module-settings.c
index 05754ac854..04388a92f5 100644
--- a/mail/e-mail-shell-module-settings.c
+++ b/mail/e-mail-shell-module-settings.c
@@ -245,6 +245,18 @@ e_mail_shell_module_init_settings (EShell *shell)
e_shell_settings_install_property (
g_param_spec_boolean (
+ "mail-prompt-delete-in-vfolder",
+ NULL,
+ NULL,
+ FALSE,
+ G_PARAM_READWRITE));
+
+ e_shell_settings_bind_to_gconf (
+ shell_settings, "mail-prompt-delete-in-vfolder",
+ "/apps/evolution/mail/prompts/delete_in_vfolder");
+
+ e_shell_settings_install_property (
+ g_param_spec_boolean (
"mail-show-animated-images",
NULL,
NULL,
diff --git a/mail/e-mail-shell-module.c b/mail/e-mail-shell-module.c
index 464349a3a7..c918cf64af 100644
--- a/mail/e-mail-shell-module.c
+++ b/mail/e-mail-shell-module.c
@@ -38,9 +38,11 @@
#include "em-account-prefs.h"
#include "em-composer-prefs.h"
+#include "em-composer-utils.h"
#include "em-config.h"
#include "em-event.h"
#include "em-folder-tree-model.h"
+#include "em-folder-utils.h"
#include "em-format-hook.h"
#include "em-format-html-display.h"
#include "em-junk-hook.h"
@@ -399,14 +401,58 @@ static void
action_mail_folder_new_cb (GtkAction *action,
EShellWindow *shell_window)
{
- /* FIXME */
+ EMFolderTree *folder_tree = NULL;
+ EMailShellSidebar *mail_shell_sidebar;
+ EShellSidebar *shell_sidebar;
+ EShellView *shell_view;
+ const gchar *view_name;
+
+ /* Take care not to unnecessarily load the mail shell view. */
+ view_name = e_shell_window_get_active_view (shell_window);
+ if (g_strcmp0 (view_name, MODULE_NAME) != 0)
+ goto exit;
+
+ shell_view = e_shell_window_get_shell_view (shell_window, view_name);
+ shell_sidebar = e_shell_view_get_shell_sidebar (shell_view);
+
+ mail_shell_sidebar = E_MAIL_SHELL_SIDEBAR (shell_sidebar);
+ folder_tree = e_mail_shell_sidebar_get_folder_tree (mail_shell_sidebar);
+
+exit:
+ em_folder_utils_create_folder (NULL, folder_tree);
}
static void
action_mail_message_new_cb (GtkAction *action,
EShellWindow *shell_window)
{
- /* FIXME */
+ GtkWindow *window = GTK_WINDOW (shell_window);
+ EMailShellSidebar *mail_shell_sidebar;
+ EShellSidebar *shell_sidebar;
+ EShellView *shell_view;
+ EMFolderTree *folder_tree;
+ const gchar *view_name;
+ gchar *uri = NULL;
+
+ if (!em_utils_check_user_can_send_mail (window))
+ return;
+
+ /* Take care not to unnecessarily load the mail shell view. */
+ view_name = e_shell_window_get_active_view (shell_window);
+ if (g_strcmp0 (view_name, MODULE_NAME) != 0)
+ goto exit;
+
+ shell_view = e_shell_window_get_shell_view (shell_window, view_name);
+ shell_sidebar = e_shell_view_get_shell_sidebar (shell_view);
+
+ mail_shell_sidebar = E_MAIL_SHELL_SIDEBAR (shell_sidebar);
+ folder_tree = e_mail_shell_sidebar_get_folder_tree (mail_shell_sidebar);
+ uri = em_folder_tree_get_selected_uri (folder_tree);
+
+exit:
+ em_utils_compose_new_message (uri);
+
+ g_free (uri);
}
static GtkActionEntry item_entries[] = {
@@ -842,11 +888,65 @@ fail:
return NULL;
}
+/* Helper for e_mail_shell_module_remove_store() */
+static void
+mail_shell_module_remove_store_cb (CamelStore *store,
+ gpointer event_data,
+ gpointer user_data)
+{
+ camel_service_disconnect (CAMEL_SERVICE (store), TRUE, NULL);
+ camel_object_unref (store);
+}
+
+void
+e_mail_shell_module_remove_store (EShellModule *shell_module,
+ CamelStore *store)
+{
+ g_return_if_fail (E_IS_SHELL_MODULE (shell_module));
+ g_return_if_fail (CAMEL_IS_STORE (store));
+
+ /* Because the store hash holds a reference to each store used
+ * as a key in it, none of them will ever be gc'ed, meaning any
+ * call to camel_session_get_{service,store} with the same URL
+ * will always return the same object. So this works. */
+
+ if (g_hash_table_lookup (store_hash, store) == NULL)
+ return;
+
+ camel_object_ref (store);
+ g_hash_table_remove (store_hash, store);
+ mail_note_store_remove (store);
+ em_folder_tree_model_remove_store (folder_tree_model, store);
+
+ mail_async_event_emit (
+ async_event, MAIL_ASYNC_THREAD,
+ (MailAsyncFunc) mail_shell_module_remove_store_cb,
+ store, NULL, NULL);
+}
+
void
e_mail_shell_module_remove_store_by_uri (EShellModule *shell_module,
const gchar *uri)
{
- /* FIXME */
+ CamelStore *store;
+ CamelProvider *provider;
+
+ g_return_if_fail (E_IS_SHELL_MODULE (shell_module));
+ g_return_if_fail (uri != NULL);
+
+ provider = camel_provider_get (uri, NULL);
+ if (provider == NULL)
+ return;
+
+ if (!(provider->flags & CAMEL_PROVIDER_IS_STORAGE))
+ return;
+
+ store = (CamelStore *) camel_session_get_service (
+ session, uri, CAMEL_PROVIDER_STORE, NULL);
+ if (store != NULL) {
+ e_mail_shell_module_remove_store (shell_module, store);
+ camel_object_unref (store);
+ }
}
void
diff --git a/mail/e-mail-shell-module.h b/mail/e-mail-shell-module.h
index 567e5f2778..d27e35f7d4 100644
--- a/mail/e-mail-shell-module.h
+++ b/mail/e-mail-shell-module.h
@@ -66,6 +66,8 @@ CamelStore * e_mail_shell_module_load_store_by_uri
(EShellModule *shell_module,
const gchar *uri,
const gchar *name);
+void e_mail_shell_module_remove_store(EShellModule *shell_module,
+ CamelStore *store);
void e_mail_shell_module_remove_store_by_uri
(EShellModule *shell_module,
const gchar *uri);
diff --git a/mail/e-mail-shell-view-actions.c b/mail/e-mail-shell-view-actions.c
index 83131c2a92..ff0089d2ce 100644
--- a/mail/e-mail-shell-view-actions.c
+++ b/mail/e-mail-shell-view-actions.c
@@ -21,153 +21,6 @@
#include "e-mail-shell-view-private.h"
-/* Remembers the previously selected folder when transferring messages. */
-static gchar *default_xfer_messages_uri;
-
-static void
-action_mail_add_sender_cb (GtkAction *action,
- EMailShellView *mail_shell_view)
-{
- EMailShellContent *mail_shell_content;
- EMFolderView *folder_view;
- EShellWindow *shell_window;
- EShellView *shell_view;
- CamelMessageInfo *info;
- GPtrArray *uids;
- const gchar *address;
-
- shell_view = E_SHELL_VIEW (mail_shell_view);
- shell_window = e_shell_view_get_shell_window (shell_view);
-
- mail_shell_content = mail_shell_view->priv->mail_shell_content;
- folder_view = e_mail_shell_content_get_folder_view (mail_shell_content);
-
- uids = message_list_get_selected (folder_view->list);
-
- if (uids->len != 1)
- goto exit;
-
- info = camel_folder_get_message_info (
- folder_view->folder, uids->pdata[0]);
- if (info == NULL)
- goto exit;
-
- address = camel_message_info_from (info);
- if (address == NULL || *address == '\0')
- goto exit;
-
- em_utils_add_address (GTK_WIDGET (shell_window), address);
-
-exit:
- em_utils_uids_free (uids);
-}
-
-static void
-action_mail_caret_mode_cb (GtkToggleAction *action,
- EMailShellView *mail_shell_view)
-{
- EMailShellContent *mail_shell_content;
- EMFormatHTMLDisplay *format;
- gboolean active;
-
- mail_shell_content = mail_shell_view->priv->mail_shell_content;
- format = e_mail_shell_content_get_preview_format (mail_shell_content);
- active = gtk_toggle_action_get_active (action);
-
- em_format_html_display_set_caret_mode (format, active);
-}
-
-static void
-action_mail_check_for_junk_cb (GtkAction *action,
- EMailShellView *mail_shell_view)
-{
- EMailShellContent *mail_shell_content;
- EMFolderView *folder_view;
- GPtrArray *uids;
-
- mail_shell_content = mail_shell_view->priv->mail_shell_content;
- folder_view = e_mail_shell_content_get_folder_view (mail_shell_content);
-
- uids = message_list_get_selected (folder_view->list);
-
- mail_filter_junk (folder_view->folder, uids);
-}
-
-static void
-action_mail_clipboard_copy_cb (GtkAction *action,
- EMailShellView *mail_shell_view)
-{
- EMailShellContent *mail_shell_content;
- GtkWidget *preview;
-
- mail_shell_content = mail_shell_view->priv->mail_shell_content;
- preview = e_mail_shell_content_get_preview_widget (mail_shell_content);
-
- gtk_html_copy (GTK_HTML (preview));
-}
-
-static void
-action_mail_copy_cb (GtkAction *action,
- EMailShellView *mail_shell_view)
-{
- EMailShellContent *mail_shell_content;
- EShellModule *shell_module;
- EShellView *shell_view;
- EMFolderTreeModel *model;
- EMFolderView *folder_view;
- GtkWidget *folder_tree;
- GtkWidget *dialog;
- GPtrArray *selected;
- const gchar *uri;
-
- shell_view = E_SHELL_VIEW (mail_shell_view);
- shell_module = e_shell_view_get_shell_module (shell_view);
- model = e_mail_shell_module_get_folder_tree_model (shell_module);
-
- mail_shell_content = mail_shell_view->priv->mail_shell_content;
- folder_view = e_mail_shell_content_get_folder_view (mail_shell_content);
- selected = message_list_get_selected (folder_view->list);
-
- folder_tree = em_folder_tree_new_with_model (model);
-
- em_folder_tree_set_excluded (
- EM_FOLDER_TREE (folder_tree),
- EMFT_EXCLUDE_NOSELECT | EMFT_EXCLUDE_VIRTUAL |
- EMFT_EXCLUDE_VTRASH);
-
- dialog = em_folder_selector_new (
- EM_FOLDER_TREE (folder_tree),
- EM_FOLDER_SELECTOR_CAN_CREATE,
- _("Select Folder"), NULL, _("C_opy"));
-
- if (default_xfer_messages_uri != NULL)
- em_folder_selector_set_selected (
- EM_FOLDER_SELECTOR (dialog),
- default_xfer_messages_uri);
-
- if (gtk_dialog_run (GTK_DIALOG (dialog)) != GTK_RESPONSE_OK)
- goto exit;
-
- uri = em_folder_selector_get_selected_uri (
- EM_FOLDER_SELECTOR (dialog));
-
- g_free (default_xfer_messages_uri);
- default_xfer_messages_uri = g_strdup (uri);
-
- if (uri != NULL) {
- mail_transfer_messages (
- folder_view->folder, selected,
- FALSE, uri, 0, NULL, NULL);
- selected = NULL;
- }
-
-exit:
- if (selected != NULL)
- em_utils_uids_free (selected);
-
- gtk_widget_destroy (dialog);
-}
-
static void
action_mail_create_search_folder_cb (GtkAction *action,
EMailShellView *mail_shell_view)
@@ -177,14 +30,6 @@ action_mail_create_search_folder_cb (GtkAction *action,
}
static void
-action_mail_delete_cb (GtkAction *action,
- EMailShellView *mail_shell_view)
-{
- /* FIXME */
- g_print ("Action: %s\n", gtk_action_get_name (GTK_ACTION (action)));
-}
-
-static void
action_mail_download_cb (GtkAction *action,
EMailShellView *mail_shell_view)
{
@@ -206,136 +51,6 @@ action_mail_empty_trash_cb (GtkAction *action,
}
static void
-action_mail_filter_on_mailing_list_cb (GtkAction *action,
- EMailShellView *mail_shell_view)
-{
- e_mail_shell_view_create_filter_from_selected (
- mail_shell_view, AUTO_MLIST);
-}
-
-static void
-action_mail_filter_on_recipients_cb (GtkAction *action,
- EMailShellView *mail_shell_view)
-{
- e_mail_shell_view_create_filter_from_selected (
- mail_shell_view, AUTO_TO);
-}
-
-static void
-action_mail_filter_on_sender_cb (GtkAction *action,
- EMailShellView *mail_shell_view)
-{
- e_mail_shell_view_create_filter_from_selected (
- mail_shell_view, AUTO_FROM);
-}
-
-static void
-action_mail_filter_on_subject_cb (GtkAction *action,
- EMailShellView *mail_shell_view)
-{
- e_mail_shell_view_create_filter_from_selected (
- mail_shell_view, AUTO_SUBJECT);
-}
-
-static void
-action_mail_filters_apply_cb (GtkAction *action,
- EMailShellView *mail_shell_view)
-{
- EMailShellContent *mail_shell_content;
- EMFolderView *folder_view;
- GPtrArray *uids;
-
- mail_shell_content = mail_shell_view->priv->mail_shell_content;
- folder_view = e_mail_shell_content_get_folder_view (mail_shell_content);
-
- uids = message_list_get_selected (folder_view->list);
-
- mail_filter_on_demand (folder_view->folder, uids);
-}
-
-static void
-action_mail_find_cb (GtkAction *action,
- EMailShellView *mail_shell_view)
-{
- /* FIXME */
- g_print ("Action: %s\n", gtk_action_get_name (GTK_ACTION (action)));
-}
-
-static void
-action_mail_flag_clear_cb (GtkAction *action,
- EMailShellView *mail_shell_view)
-{
- EMailShellContent *mail_shell_content;
- EMFormatHTMLDisplay *format;
- EMFolderView *folder_view;
- EShellWindow *shell_window;
- EShellView *shell_view;
- GPtrArray *uids;
-
- shell_view = E_SHELL_VIEW (mail_shell_view);
- shell_window = e_shell_view_get_shell_window (shell_view);
-
- mail_shell_content = mail_shell_view->priv->mail_shell_content;
- folder_view = e_mail_shell_content_get_folder_view (mail_shell_content);
- format = e_mail_shell_content_get_preview_format (mail_shell_content);
-
- uids = message_list_get_selected (folder_view->list);
-
- em_utils_flag_for_followup_clear (
- GTK_WIDGET (shell_window), folder_view->folder, uids);
-
- em_format_redraw ((EMFormat *) format);
-}
-
-static void
-action_mail_flag_completed_cb (GtkAction *action,
- EMailShellView *mail_shell_view)
-{
- EMailShellContent *mail_shell_content;
- EMFormatHTMLDisplay *format;
- EMFolderView *folder_view;
- EShellWindow *shell_window;
- EShellView *shell_view;
- GPtrArray *uids;
-
- shell_view = E_SHELL_VIEW (mail_shell_view);
- shell_window = e_shell_view_get_shell_window (shell_view);
-
- mail_shell_content = mail_shell_view->priv->mail_shell_content;
- folder_view = e_mail_shell_content_get_folder_view (mail_shell_content);
- format = e_mail_shell_content_get_preview_format (mail_shell_content);
-
- uids = message_list_get_selected (folder_view->list);
-
- em_utils_flag_for_followup_completed (
- GTK_WIDGET (shell_window), folder_view->folder, uids);
-
- em_format_redraw ((EMFormat *) format);
-}
-
-static void
-action_mail_flag_for_followup_cb (GtkAction *action,
- EMailShellView *mail_shell_view)
-{
- EMailShellContent *mail_shell_content;
- EMFolderView *folder_view;
- EShellWindow *shell_window;
- EShellView *shell_view;
- GPtrArray *uids;
-
- shell_view = E_SHELL_VIEW (mail_shell_view);
- shell_window = e_shell_view_get_shell_window (shell_view);
-
- mail_shell_content = mail_shell_view->priv->mail_shell_content;
- folder_view = e_mail_shell_content_get_folder_view (mail_shell_content);
-
- uids = message_list_get_selected (folder_view->list);
-
- em_utils_flag_for_followup (
- GTK_WIDGET (shell_window), folder_view->folder, uids);
-}
-
-static void
action_mail_flush_outbox_cb (GtkAction *action,
EMailShellView *mail_shell_view)
{
@@ -531,106 +246,6 @@ action_mail_folder_select_subthread_cb (GtkAction *action,
}
static void
-action_mail_forward_cb (GtkAction *action,
- EMailShellView *mail_shell_view)
-{
- EMailShellContent *mail_shell_content;
- EMFolderView *folder_view;
- EShellWindow *shell_window;
- EShellView *shell_view;
- GPtrArray *uids;
-
- shell_view = E_SHELL_VIEW (mail_shell_view);
- shell_window = e_shell_view_get_shell_window (shell_view);
-
- mail_shell_content = mail_shell_view->priv->mail_shell_content;
- folder_view = e_mail_shell_content_get_folder_view (mail_shell_content);
-
- if (!em_utils_check_user_can_send_mail (GTK_WIDGET (shell_window)))
- return;
-
- uids = message_list_get_selected (folder_view->list);
-
- em_utils_forward_messages (
- folder_view->folder, uids, folder_view->folder_uri);
-}
-
-static void
-action_mail_forward_attached_cb (GtkAction *action,
- EMailShellView *mail_shell_view)
-{
- EMailShellContent *mail_shell_content;
- EMFolderView *folder_view;
- EShellWindow *shell_window;
- EShellView *shell_view;
- GPtrArray *uids;
-
- shell_view = E_SHELL_VIEW (mail_shell_view);
- shell_window = e_shell_view_get_shell_window (shell_view);
-
- mail_shell_content = mail_shell_view->priv->mail_shell_content;
- folder_view = e_mail_shell_content_get_folder_view (mail_shell_content);
-
- if (!em_utils_check_user_can_send_mail (GTK_WIDGET (shell_window)))
- return;
-
- uids = message_list_get_selected (folder_view->list);
-
- em_utils_forward_attached (
- folder_view->folder, uids, folder_view->folder_uri);
-}
-
-static void
-action_mail_forward_inline_cb (GtkAction *action,
- EMailShellView *mail_shell_view)
-{
- EMailShellContent *mail_shell_content;
- EMFolderView *folder_view;
- EShellWindow *shell_window;
- EShellView *shell_view;
- GPtrArray *uids;
-
- shell_view = E_SHELL_VIEW (mail_shell_view);
- shell_window = e_shell_view_get_shell_window (shell_view);
-
- mail_shell_content = mail_shell_view->priv->mail_shell_content;
- folder_view = e_mail_shell_content_get_folder_view (mail_shell_content);
-
- if (!em_utils_check_user_can_send_mail (GTK_WIDGET (shell_window)))
- return;
-
- uids = message_list_get_selected (folder_view->list);
-
- em_utils_forward_inline (
- folder_view->folder, uids, folder_view->folder_uri);
-}
-
-static void
-action_mail_forward_quoted_cb (GtkAction *action,
- EMailShellView *mail_shell_view)
-{
- EMailShellContent *mail_shell_content;
- EMFolderView *folder_view;
- EShellWindow *shell_window;
- EShellView *shell_view;
- GPtrArray *uids;
-
- shell_view = E_SHELL_VIEW (mail_shell_view);
- shell_window = e_shell_view_get_shell_window (shell_view);
-
- mail_shell_content = mail_shell_view->priv->mail_shell_content;
- folder_view = e_mail_shell_content_get_folder_view (mail_shell_content);
-
- if (!em_utils_check_user_can_send_mail (GTK_WIDGET (shell_window)))
- return;
-
- uids = message_list_get_selected (folder_view->list);
-
- em_utils_forward_quoted (
- folder_view->folder, uids, folder_view->folder_uri);
-}
-
-static void
action_mail_hide_deleted_cb (GtkToggleAction *action,
EMailShellView *mail_shell_view)
{
@@ -671,331 +286,6 @@ action_mail_hide_selected_cb (GtkAction *action,
}
static void
-action_mail_load_images_cb (GtkAction *action,
- EMailShellView *mail_shell_view)
-{
- EMailShellContent *mail_shell_content;
- EMFormatHTMLDisplay *format;
-
- mail_shell_content = mail_shell_view->priv->mail_shell_content;
- format = e_mail_shell_content_get_preview_format (mail_shell_content);
-
- em_format_html_load_http ((EMFormatHTML *) format);
-}
-
-static void
-action_mail_mark_important_cb (GtkAction *action,
- EMailShellView *mail_shell_view)
-{
- EMailShellContent *mail_shell_content;
- EMFolderView *folder_view;
- guint32 mask, set;
-
- mail_shell_content = mail_shell_view->priv->mail_shell_content;
- folder_view = e_mail_shell_content_get_folder_view (mail_shell_content);
-
- mask = CAMEL_MESSAGE_FLAGGED | CAMEL_MESSAGE_DELETED;
- set = CAMEL_MESSAGE_FLAGGED;
-
- em_folder_view_mark_selected (folder_view, mask, set);
-}
-
-static void
-action_mail_mark_junk_cb (GtkAction *action,
- EMailShellView *mail_shell_view)
-{
- EMailShellContent *mail_shell_content;
- EMFolderView *folder_view;
- guint32 mask, set;
- gint count;
-
- mail_shell_content = mail_shell_view->priv->mail_shell_content;
- folder_view = e_mail_shell_content_get_folder_view (mail_shell_content);
-
- mask = CAMEL_MESSAGE_SEEN | CAMEL_MESSAGE_JUNK |
- CAMEL_MESSAGE_NOTJUNK | CAMEL_MESSAGE_JUNK_LEARN;
- set = CAMEL_MESSAGE_SEEN | CAMEL_MESSAGE_JUNK |
- CAMEL_MESSAGE_JUNK_LEARN;
-
- count = em_folder_view_mark_selected (folder_view, mask, set);
- em_folder_view_select_next_message (folder_view, count, TRUE);
-}
-
-static void
-action_mail_mark_notjunk_cb (GtkAction *action,
- EMailShellView *mail_shell_view)
-{
- EMailShellContent *mail_shell_content;
- EMFolderView *folder_view;
- guint32 mask, set;
- gint count;
-
- mail_shell_content = mail_shell_view->priv->mail_shell_content;
- folder_view = e_mail_shell_content_get_folder_view (mail_shell_content);
-
- mask = CAMEL_MESSAGE_JUNK | CAMEL_MESSAGE_NOTJUNK |
- CAMEL_MESSAGE_JUNK_LEARN;
- set = CAMEL_MESSAGE_NOTJUNK | CAMEL_MESSAGE_JUNK_LEARN;
-
- count = em_folder_view_mark_selected (folder_view, mask, set);
- em_folder_view_select_next_message (folder_view, count, TRUE);
-}
-
-static void
-action_mail_mark_read_cb (GtkAction *action,
- EMailShellView *mail_shell_view)
-{
- EMailShellContent *mail_shell_content;
- EMFolderView *folder_view;
- guint32 mask, set;
-
- mail_shell_content = mail_shell_view->priv->mail_shell_content;
- folder_view = e_mail_shell_content_get_folder_view (mail_shell_content);
-
- mask = CAMEL_MESSAGE_SEEN;
- set = CAMEL_MESSAGE_SEEN;
-
- em_folder_view_mark_selected (folder_view, mask, set);
-}
-
-static void
-action_mail_mark_unimportant_cb (GtkAction *action,
- EMailShellView *mail_shell_view)
-{
- EMailShellContent *mail_shell_content;
- EMFolderView *folder_view;
- guint32 mask, set;
-
- mail_shell_content = mail_shell_view->priv->mail_shell_content;
- folder_view = e_mail_shell_content_get_folder_view (mail_shell_content);
-
- mask = CAMEL_MESSAGE_FLAGGED;
- set = 0;
-
- em_folder_view_mark_selected (folder_view, mask, set);
-}
-
-static void
-action_mail_mark_unread_cb (GtkAction *action,
- EMailShellView *mail_shell_view)
-{
- EMailShellContent *mail_shell_content;
- EMFolderView *folder_view;
- guint32 mask, set;
-
- mail_shell_content = mail_shell_view->priv->mail_shell_content;
- folder_view = e_mail_shell_content_get_folder_view (mail_shell_content);
-
- mask = CAMEL_MESSAGE_SEEN | CAMEL_MESSAGE_DELETED;
- set = 0;
-
- em_folder_view_mark_selected (folder_view, mask, set);
-
- if (folder_view->list->seen_id != 0) {
- g_source_remove (folder_view->list->seen_id);
- folder_view->list->seen_id = 0;
- }
-}
-
-static void
-action_mail_message_edit_cb (GtkAction *action,
- EMailShellView *mail_shell_view)
-{
- EMailShellContent *mail_shell_content;
- EMFolderView *folder_view;
- EShellWindow *shell_window;
- EShellView *shell_view;
- GPtrArray *uids;
-
- shell_view = E_SHELL_VIEW (mail_shell_view);
- shell_window = e_shell_view_get_shell_window (shell_view);
-
- mail_shell_content = mail_shell_view->priv->mail_shell_content;
- folder_view = e_mail_shell_content_get_folder_view (mail_shell_content);
-
- if (!em_utils_check_user_can_send_mail (GTK_WIDGET (shell_window)))
- return;
-
- uids = message_list_get_selected (folder_view->list);
-
- em_utils_edit_messages (folder_view->folder, uids, FALSE);
-}
-
-static void
-action_mail_message_new_cb (GtkAction *action,
- EMailShellView *mail_shell_view)
-{
- EMailShellContent *mail_shell_content;
- EMFolderView *folder_view;
- EShellWindow *shell_window;
- EShellView *shell_view;
-
- shell_view = E_SHELL_VIEW (mail_shell_view);
- shell_window = e_shell_view_get_shell_window (shell_view);
-
- mail_shell_content = mail_shell_view->priv->mail_shell_content;
- folder_view = e_mail_shell_content_get_folder_view (mail_shell_content);
-
- if (!em_utils_check_user_can_send_mail (GTK_WIDGET (shell_window)))
- return;
-
- em_utils_compose_new_message (folder_view->folder_uri);
-}
-
-static void
-action_mail_message_open_cb (GtkAction *action,
- EMailShellView *mail_shell_view)
-{
- /* FIXME */
- g_print ("Action: %s\n", gtk_action_get_name (GTK_ACTION (action)));
-}
-
-static void
-action_mail_message_post_cb (GtkAction *action,
- EMailShellView *mail_shell_view)
-{
- EMailShellContent *mail_shell_content;
- EMFolderView *folder_view;
-
- mail_shell_content = mail_shell_view->priv->mail_shell_content;
- folder_view = e_mail_shell_content_get_folder_view (mail_shell_content);
-
- em_utils_post_to_folder (folder_view->folder);
-}
-
-static void
-action_mail_move_cb (GtkAction *action,
- EMailShellView *mail_shell_view)
-{
- EMailShellContent *mail_shell_content;
- EShellModule *shell_module;
- EShellView *shell_view;
- EMFolderTreeModel *model;
- EMFolderView *folder_view;
- GtkWidget *folder_tree;
- GtkWidget *dialog;
- GPtrArray *selected;
- const gchar *uri;
-
- shell_view = E_SHELL_VIEW (mail_shell_view);
- shell_module = e_shell_view_get_shell_module (shell_view);
- model = e_mail_shell_module_get_folder_tree_model (shell_module);
-
- mail_shell_content = mail_shell_view->priv->mail_shell_content;
- folder_view = e_mail_shell_content_get_folder_view (mail_shell_content);
- selected = message_list_get_selected (folder_view->list);
-
- folder_tree = em_folder_tree_new_with_model (model);
-
- em_folder_tree_set_excluded (
- EM_FOLDER_TREE (folder_tree),
- EMFT_EXCLUDE_NOSELECT | EMFT_EXCLUDE_VIRTUAL |
- EMFT_EXCLUDE_VTRASH);
-
- dialog = em_folder_selector_new (
- EM_FOLDER_TREE (folder_tree),
- EM_FOLDER_SELECTOR_CAN_CREATE,
- _("Select Folder"), NULL, _("_Move"));
-
- if (default_xfer_messages_uri != NULL)
- em_folder_selector_set_selected (
- EM_FOLDER_SELECTOR (dialog),
- default_xfer_messages_uri);
-
- if (gtk_dialog_run (GTK_DIALOG (dialog)) != GTK_RESPONSE_OK)
- goto exit;
-
- uri = em_folder_selector_get_selected_uri (
- EM_FOLDER_SELECTOR (dialog));
-
- g_free (default_xfer_messages_uri);
- default_xfer_messages_uri = g_strdup (uri);
-
- if (uri != NULL) {
- mail_transfer_messages (
- folder_view->folder, selected,
- TRUE, uri, 0, NULL, NULL);
- selected = NULL;
- }
-
-exit:
- if (selected != NULL)
- em_utils_uids_free (selected);
-
- gtk_widget_destroy (dialog);
-}
-
-static void
-action_mail_next_cb (GtkAction *action,
- EMailShellView *mail_shell_view)
-{
- EMailShellContent *mail_shell_content;
- MessageListSelectDirection direction;
- EMFolderView *folder_view;
- guint32 flags, mask;
-
- mail_shell_content = mail_shell_view->priv->mail_shell_content;
- folder_view = e_mail_shell_content_get_folder_view (mail_shell_content);
-
- direction = MESSAGE_LIST_SELECT_NEXT;
- flags = 0;
- mask = 0;
-
- message_list_select (folder_view->list, direction, flags, mask);
-}
-
-static void
-action_mail_next_important_cb (GtkAction *action,
- EMailShellView *mail_shell_view)
-{
- EMailShellContent *mail_shell_content;
- MessageListSelectDirection direction;
- EMFolderView *folder_view;
- guint32 flags, mask;
-
- mail_shell_content = mail_shell_view->priv->mail_shell_content;
- folder_view = e_mail_shell_content_get_folder_view (mail_shell_content);
-
- direction = MESSAGE_LIST_SELECT_NEXT | MESSAGE_LIST_SELECT_WRAP;
- flags = CAMEL_MESSAGE_FLAGGED;
- mask = CAMEL_MESSAGE_FLAGGED;
-
- message_list_select (folder_view->list, direction, flags, mask);
-}
-
-static void
-action_mail_next_thread_cb (GtkAction *action,
- EMailShellView *mail_shell_view)
-{
- EMailShellContent *mail_shell_content;
- EMFolderView *folder_view;
-
- mail_shell_content = mail_shell_view->priv->mail_shell_content;
- folder_view = e_mail_shell_content_get_folder_view (mail_shell_content);
-
- message_list_select_next_thread (folder_view->list);
-}
-
-static void
-action_mail_next_unread_cb (GtkAction *action,
- EMailShellView *mail_shell_view)
-{
- EMailShellContent *mail_shell_content;
- MessageListSelectDirection direction;
- EMFolderView *folder_view;
- guint32 flags, mask;
-
- mail_shell_content = mail_shell_view->priv->mail_shell_content;
- folder_view = e_mail_shell_content_get_folder_view (mail_shell_content);
-
- direction = MESSAGE_LIST_SELECT_NEXT | MESSAGE_LIST_SELECT_WRAP;
- flags = 0;
- mask = CAMEL_MESSAGE_SEEN;
-
- message_list_select (folder_view->list, direction, flags, mask);
-}
-
-static void
action_mail_preview_cb (GtkToggleAction *action,
EMailShellView *mail_shell_view)
{
@@ -1010,252 +300,6 @@ action_mail_preview_cb (GtkToggleAction *action,
}
static void
-action_mail_previous_cb (GtkAction *action,
- EMailShellView *mail_shell_view)
-{
- EMailShellContent *mail_shell_content;
- MessageListSelectDirection direction;
- EMFolderView *folder_view;
- guint32 flags, mask;
-
- mail_shell_content = mail_shell_view->priv->mail_shell_content;
- folder_view = e_mail_shell_content_get_folder_view (mail_shell_content);
-
- direction = MESSAGE_LIST_SELECT_PREVIOUS;
- flags = 0;
- mask = 0;
-
- message_list_select (folder_view->list, direction, flags, mask);
-}
-
-static void
-action_mail_previous_important_cb (GtkAction *action,
- EMailShellView *mail_shell_view)
-{
- EMailShellContent *mail_shell_content;
- MessageListSelectDirection direction;
- EMFolderView *folder_view;
- guint32 flags, mask;
-
- mail_shell_content = mail_shell_view->priv->mail_shell_content;
- folder_view = e_mail_shell_content_get_folder_view (mail_shell_content);
-
- direction = MESSAGE_LIST_SELECT_PREVIOUS | MESSAGE_LIST_SELECT_WRAP;
- flags = CAMEL_MESSAGE_FLAGGED;
- mask = CAMEL_MESSAGE_FLAGGED;
-
- message_list_select (folder_view->list, direction, flags, mask);
-}
-
-static void
-action_mail_previous_unread_cb (GtkAction *action,
- EMailShellView *mail_shell_view)
-{
- EMailShellContent *mail_shell_content;
- MessageListSelectDirection direction;
- EMFolderView *folder_view;
- guint32 flags, mask;
-
- mail_shell_content = mail_shell_view->priv->mail_shell_content;
- folder_view = e_mail_shell_content_get_folder_view (mail_shell_content);
-
- direction = MESSAGE_LIST_SELECT_PREVIOUS | MESSAGE_LIST_SELECT_WRAP;
- flags = 0;
- mask = CAMEL_MESSAGE_SEEN;
-
- message_list_select (folder_view->list, direction, flags, mask);
-}
-
-static void
-action_mail_print_cb (GtkAction *action,
- EMailShellView *mail_shell_view)
-{
- EMailShellContent *mail_shell_content;
- GtkPrintOperationAction print_action;
- EMFolderView *folder_view;
-
- mail_shell_content = mail_shell_view->priv->mail_shell_content;
- folder_view = e_mail_shell_content_get_folder_view (mail_shell_content);
-
- print_action = GTK_PRINT_OPERATION_ACTION_PRINT_DIALOG;
- em_folder_view_print (folder_view, print_action);
-}
-
-static void
-action_mail_print_preview_cb (GtkAction *action,
- EMailShellView *mail_shell_view)
-{
- EMailShellContent *mail_shell_content;
- GtkPrintOperationAction print_action;
- EMFolderView *folder_view;
-
- mail_shell_content = mail_shell_view->priv->mail_shell_content;
- folder_view = e_mail_shell_content_get_folder_view (mail_shell_content);
-
- print_action = GTK_PRINT_OPERATION_ACTION_PREVIEW;
- em_folder_view_print (folder_view, print_action);
-}
-
-static void
-action_mail_redirect_cb (GtkAction *action,
- EMailShellView *mail_shell_view)
-{
- EMailShellContent *mail_shell_content;
- EMFolderView *folder_view;
- EShellWindow *shell_window;
- EShellView *shell_view;
-
- shell_view = E_SHELL_VIEW (mail_shell_view);
- shell_window = e_shell_view_get_shell_window (shell_view);
-
- mail_shell_content = mail_shell_view->priv->mail_shell_content;
- folder_view = e_mail_shell_content_get_folder_view (mail_shell_content);
-
- if (folder_view->list->cursor_uid == NULL)
- return;
-
- if (!em_utils_check_user_can_send_mail (GTK_WIDGET (shell_window)))
- return;
-
- em_utils_redirect_message_by_uid (
- folder_view->folder, folder_view->list->cursor_uid);
-}
-
-static void
-action_mail_reply_all_cb (GtkAction *action,
- EMailShellView *mail_shell_view)
-{
- EMailShellContent *mail_shell_content;
- EMFolderView *folder_view;
-
- mail_shell_content = mail_shell_view->priv->mail_shell_content;
- folder_view = e_mail_shell_content_get_folder_view (mail_shell_content);
-
- em_folder_view_message_reply (folder_view, REPLY_MODE_ALL);
-}
-
-static void
-action_mail_reply_list_cb (GtkAction *action,
- EMailShellView *mail_shell_view)
-{
- EMailShellContent *mail_shell_content;
- EMFolderView *folder_view;
-
- mail_shell_content = mail_shell_view->priv->mail_shell_content;
- folder_view = e_mail_shell_content_get_folder_view (mail_shell_content);
-
- em_folder_view_message_reply (folder_view, REPLY_MODE_LIST);
-}
-
-static void
-action_mail_reply_post_cb (GtkAction *action,
- EMailShellView *mail_shell_view)
-{
- EMailShellContent *mail_shell_content;
- EMFolderView *folder_view;
- EShellWindow *shell_window;
- EShellView *shell_view;
-
- shell_view = E_SHELL_VIEW (mail_shell_view);
- shell_window = e_shell_view_get_shell_window (shell_view);
-
- mail_shell_content = mail_shell_view->priv->mail_shell_content;
- folder_view = e_mail_shell_content_get_folder_view (mail_shell_content);
-
- if (folder_view->list->cursor_uid == NULL)
- return;
-
- if (!em_utils_check_user_can_send_mail (GTK_WIDGET (shell_window)))
- return;
-
- em_utils_post_reply_to_message_by_uid (
- folder_view->folder, folder_view->list->cursor_uid);
-}
-
-static void
-action_mail_reply_sender_cb (GtkAction *action,
- EMailShellView *mail_shell_view)
-{
- EMailShellContent *mail_shell_content;
- EMFolderView *folder_view;
-
- mail_shell_content = mail_shell_view->priv->mail_shell_content;
- folder_view = e_mail_shell_content_get_folder_view (mail_shell_content);
-
- em_folder_view_message_reply (folder_view, REPLY_MODE_SENDER);
-}
-
-static void
-action_mail_save_as_cb (GtkAction *action,
- EMailShellView *mail_shell_view)
-{
- EMailShellContent *mail_shell_content;
- EMFolderView *folder_view;
- EShellWindow *shell_window;
- EShellView *shell_view;
- GPtrArray *uids;
-
- shell_view = E_SHELL_VIEW (mail_shell_view);
- shell_window = e_shell_view_get_shell_window (shell_view);
-
- mail_shell_content = mail_shell_view->priv->mail_shell_content;
- folder_view = e_mail_shell_content_get_folder_view (mail_shell_content);
-
- uids = message_list_get_selected (folder_view->list);
-
- em_utils_save_messages (
- GTK_WIDGET (shell_window), folder_view->folder, uids);
-}
-
-static void
-action_mail_search_folder_from_mailing_list_cb (GtkAction *action,
- EMailShellView *mail_shell_view)
-{
- e_mail_shell_view_create_vfolder_from_selected (
- mail_shell_view, AUTO_MLIST);
-}
-
-static void
-action_mail_search_folder_from_recipients_cb (GtkAction *action,
- EMailShellView *mail_shell_view)
-{
- e_mail_shell_view_create_vfolder_from_selected (
- mail_shell_view, AUTO_TO);
-}
-
-static void
-action_mail_search_folder_from_sender_cb (GtkAction *action,
- EMailShellView *mail_shell_view)
-{
- e_mail_shell_view_create_vfolder_from_selected (
- mail_shell_view, AUTO_FROM);
-}
-
-static void
-action_mail_search_folder_from_subject_cb (GtkAction *action,
- EMailShellView *mail_shell_view)
-{
- e_mail_shell_view_create_vfolder_from_selected (
- mail_shell_view, AUTO_SUBJECT);
-}
-
-static void
-action_mail_select_all_cb (GtkAction *action,
- EMailShellView *mail_shell_view)
-{
- /* FIXME */
- g_print ("Action: %s\n", gtk_action_get_name (GTK_ACTION (action)));
-}
-
-static void
-action_mail_show_all_headers_cb (GtkToggleAction *action,
- EMailShellView *mail_shell_view)
-{
- /* FIXME */
- g_print ("Action: %s\n", gtk_action_get_name (GTK_ACTION (action)));
-}
-
-static void
action_mail_show_hidden_cb (GtkAction *action,
EMailShellView *mail_shell_view)
{
@@ -1269,14 +313,6 @@ action_mail_show_hidden_cb (GtkAction *action,
}
static void
-action_mail_show_source_cb (GtkAction *action,
- EMailShellView *mail_shell_view)
-{
- /* FIXME */
- g_print ("Action: %s\n", gtk_action_get_name (GTK_ACTION (action)));
-}
-
-static void
action_mail_stop_cb (GtkAction *action,
EMailShellView *mail_shell_view)
{
@@ -1356,23 +392,6 @@ action_mail_tools_subscriptions_cb (GtkAction *action,
}
static void
-action_mail_undelete_cb (GtkAction *action,
- EMailShellView *mail_shell_view)
-{
- EMailShellContent *mail_shell_content;
- EMFolderView *folder_view;
- guint32 mask, set;
-
- mail_shell_content = mail_shell_view->priv->mail_shell_content;
- folder_view = e_mail_shell_content_get_folder_view (mail_shell_content);
-
- mask = CAMEL_MESSAGE_DELETED;
- set = 0;
-
- em_folder_view_mark_selected (folder_view, mask, set);
-}
-
-static void
action_mail_uri_call_to_cb (GtkAction *action,
EMailShellView *mail_shell_view)
{
@@ -1413,45 +432,6 @@ action_mail_uri_to_search_folder_sender_cb (GtkAction *action,
}
static void
-action_mail_zoom_100_cb (GtkAction *action,
- EMailShellView *mail_shell_view)
-{
- EMailShellContent *mail_shell_content;
- EMFormatHTMLDisplay *format;
-
- mail_shell_content = mail_shell_view->priv->mail_shell_content;
- format = e_mail_shell_content_get_preview_format (mail_shell_content);
-
- em_format_html_display_zoom_reset (format);
-}
-
-static void
-action_mail_zoom_in_cb (GtkAction *action,
- EMailShellView *mail_shell_view)
-{
- EMailShellContent *mail_shell_content;
- EMFormatHTMLDisplay *format;
-
- mail_shell_content = mail_shell_view->priv->mail_shell_content;
- format = e_mail_shell_content_get_preview_format (mail_shell_content);
-
- em_format_html_display_zoom_in (format);
-}
-
-static void
-action_mail_zoom_out_cb (GtkAction *action,
- EMailShellView *mail_shell_view)
-{
- EMailShellContent *mail_shell_content;
- EMFormatHTMLDisplay *format;
-
- mail_shell_content = mail_shell_view->priv->mail_shell_content;
- format = e_mail_shell_content_get_preview_format (mail_shell_content);
-
- em_format_html_display_zoom_out (format);
-}
-
-static void
action_mail_view_cb (GtkRadioAction *action,
GtkRadioAction *current,
EMailShellView *mail_shell_view)
@@ -1468,34 +448,6 @@ action_mail_view_cb (GtkRadioAction *action,
static GtkActionEntry mail_entries[] = {
- { "mail-add-sender",
- NULL,
- N_("A_dd Sender to Address Book"),
- NULL,
- N_("Add sender to address book"),
- G_CALLBACK (action_mail_add_sender_cb) },
-
- { "mail-check-for-junk",
- "mail-mark-junk",
- N_("Check for _Junk"),
- NULL,
- N_("Filter the selected messages for junk status"),
- G_CALLBACK (action_mail_check_for_junk_cb) },
-
- { "mail-clipboard-copy",
- GTK_STOCK_COPY,
- NULL,
- NULL,
- N_("Copy selected messages to the clipboard"),
- G_CALLBACK (action_mail_clipboard_copy_cb) },
-
- { "mail-copy",
- "mail-copy",
- N_("_Copy to Folder"),
- "<Shift><Control>y",
- N_("Copy selected messages to another folder"),
- G_CALLBACK (action_mail_copy_cb) },
-
{ "mail-create-search-folder",
NULL,
N_("C_reate Search Folder From Search..."),
@@ -1503,13 +455,7 @@ static GtkActionEntry mail_entries[] = {
NULL, /* XXX Add a tooltip! */
G_CALLBACK (action_mail_create_search_folder_cb) },
- { "mail-delete",
- "user-trash",
- N_("_Delete Message"),
- "<Control>d",
- N_("Mark the selected messages for deletion"),
- G_CALLBACK (action_mail_delete_cb) },
-
+#if 0
/* XXX Work around one-accelerator-per-action limit. */
{ "mail-delete-1",
NULL,
@@ -1525,6 +471,7 @@ static GtkActionEntry mail_entries[] = {
"KP_Delete",
NULL,
G_CALLBACK (action_mail_delete_cb) },
+#endif
{ "mail-download",
NULL,
@@ -1540,69 +487,6 @@ static GtkActionEntry mail_entries[] = {
N_("Permanently remove all the deleted messages from all folders"),
G_CALLBACK (action_mail_empty_trash_cb) },
- { "mail-filter-on-mailing-list",
- NULL,
- N_("Filter on Mailing _List..."),
- NULL,
- N_("Create a rule to filter messages to this mailing list"),
- G_CALLBACK (action_mail_filter_on_mailing_list_cb) },
-
- { "mail-filter-on-recipients",
- NULL,
- N_("Filter on _Recipients..."),
- NULL,
- N_("Create a rule to filter messages to these recipients"),
- G_CALLBACK (action_mail_filter_on_recipients_cb) },
-
- { "mail-filter-on-sender",
- NULL,
- N_("Filter on Se_nder..."),
- NULL,
- N_("Create a rule to filter messages from this sender"),
- G_CALLBACK (action_mail_filter_on_sender_cb) },
-
- { "mail-filter-on-subject",
- NULL,
- N_("Filter on _Subject..."),
- NULL,
- N_("Create a rule to filter messages with this subject"),
- G_CALLBACK (action_mail_filter_on_subject_cb) },
-
- { "mail-filters-apply",
- "stock_mail-filters-apply",
- N_("A_pply filters"),
- "<Control>y",
- N_("Apply filter rules to the selected messages"),
- G_CALLBACK (action_mail_filters_apply_cb) },
-
- { "mail-find",
- GTK_STOCK_FIND,
- N_("_Find in Message..."),
- "<Shift><Control>f",
- N_("Search for text in the body of the displayed message"),
- G_CALLBACK (action_mail_find_cb) },
-
- { "mail-flag-clear",
- NULL,
- N_("_Clear Flag"),
- NULL,
- N_("Remove the follow-up flag from the selected messages"),
- G_CALLBACK (action_mail_flag_clear_cb) },
-
- { "mail-flag-completed",
- NULL,
- N_("_Flag Completed"),
- NULL,
- N_("Set the follow-up flag to completed on the selected messages"),
- G_CALLBACK (action_mail_flag_completed_cb) },
-
- { "mail-flag-for-followup",
- "stock_mail-flag-for-followup",
- N_("Follow _Up..."),
- "<Shift><Control>g",
- N_("Flag the selected messages for follow-up"),
- G_CALLBACK (action_mail_flag_for_followup_cb) },
-
{ "mail-flush-outbox",
"mail-send",
N_("Fl_ush Outbox"),
@@ -1694,34 +578,6 @@ static GtkActionEntry mail_entries[] = {
N_("Select all replies to the currently selected message"),
G_CALLBACK (action_mail_folder_select_subthread_cb) },
- { "mail-forward",
- "mail-forward",
- N_("_Forward"),
- "<Control>f",
- N_("Forward the selected message to someone"),
- G_CALLBACK (action_mail_forward_cb) },
-
- { "mail-forward-attached",
- NULL,
- N_("_Attached"),
- NULL,
- N_("Forward the selected message to someone as an attachment"),
- G_CALLBACK (action_mail_forward_attached_cb) },
-
- { "mail-forward-inline",
- NULL,
- N_("_Inline"),
- NULL,
- N_("Forward the selected message in the body of a new message"),
- G_CALLBACK (action_mail_forward_inline_cb) },
-
- { "mail-forward-quoted",
- NULL,
- N_("_Quoted"),
- NULL,
- N_("Forward the selected message quoted like a reply"),
- G_CALLBACK (action_mail_forward_quoted_cb) },
-
{ "mail-hide-read",
NULL,
N_("Hide _Read Messages"),
@@ -1736,118 +592,7 @@ static GtkActionEntry mail_entries[] = {
N_("Temporarily hide the selected messages"),
G_CALLBACK (action_mail_hide_selected_cb) },
- { "mail-load-images",
- "image-x-generic",
- N_("_Load Images"),
- "<Control>i",
- N_("Force images in HTML mail to be loaded"),
- G_CALLBACK (action_mail_load_images_cb) },
-
- { "mail-mark-important",
- "mail-mark-important",
- N_("_Important"),
- NULL,
- N_("Mark the selected messages as important"),
- G_CALLBACK (action_mail_mark_important_cb) },
-
- { "mail-mark-junk",
- "mail-mark-junk",
- N_("_Junk"),
- "<Control>j",
- N_("Mark the selected messages as junk"),
- G_CALLBACK (action_mail_mark_junk_cb) },
-
- { "mail-mark-notjunk",
- "mail-mark-notjunk",
- N_("_Not Junk"),
- "<Shift><Control>j",
- N_("Mark the selected messages as not being junk"),
- G_CALLBACK (action_mail_mark_notjunk_cb) },
-
- { "mail-mark-read",
- "mail-mark-read",
- N_("_Read"),
- "<Control>k",
- N_("Mark the selected messages as having been read"),
- G_CALLBACK (action_mail_mark_read_cb) },
-
- { "mail-mark-unimportant",
- NULL,
- N_("Uni_mportant"),
- NULL,
- N_("Mark the selected messages as unimportant"),
- G_CALLBACK (action_mail_mark_unimportant_cb) },
-
- { "mail-mark-unread",
- "mail-mark-unread",
- N_("_Unread"),
- "<Shift><Control>k",
- N_("Mark the selected messages as not having been read"),
- G_CALLBACK (action_mail_mark_unread_cb) },
-
- { "mail-message-edit",
- NULL,
- N_("_Edit as New Message..."),
- NULL,
- N_("Open the selected messages in the composer for editing"),
- G_CALLBACK (action_mail_message_edit_cb) },
-
- { "mail-message-new",
- "mail-message-new",
- N_("Compose _New Message"),
- "<Shift><Control>m",
- N_("Open a window for composing a mail message"),
- G_CALLBACK (action_mail_message_new_cb) },
-
- { "mail-message-open",
- NULL,
- N_("_Open in New Window"),
- "<Control>o",
- N_("Open the selected messages in a new window"),
- G_CALLBACK (action_mail_message_open_cb) },
-
- { "mail-message-post",
- NULL,
- N_("Pos_t New Message to Folder"),
- NULL,
- N_("Post a message to a public folder"),
- G_CALLBACK (action_mail_message_post_cb) },
-
- { "mail-move",
- "mail-move",
- N_("_Move to Folder"),
- "<Shift><Control>v",
- N_("Move selected messages to another folder"),
- G_CALLBACK (action_mail_move_cb) },
-
- { "mail-next",
- GTK_STOCK_GO_FORWARD,
- N_("_Next Message"),
- "<Control>Page_Down",
- N_("Display the next message"),
- G_CALLBACK (action_mail_next_cb) },
-
- { "mail-next-important",
- NULL,
- N_("Next _Important Message"),
- NULL,
- N_("Display the next important message"),
- G_CALLBACK (action_mail_next_important_cb) },
-
- { "mail-next-thread",
- NULL,
- N_("Next _Thread"),
- NULL,
- N_("Display the next thread"),
- G_CALLBACK (action_mail_next_thread_cb) },
-
- { "mail-next-unread",
- NULL,
- N_("Next _Unread Message"),
- "<Control>bracketright",
- N_("Display the next unread message"),
- G_CALLBACK (action_mail_next_unread_cb) },
-
+#if 0
/* XXX Work around one-accelerator-per-action limit. */
{ "mail-next-unread-1",
NULL,
@@ -1864,27 +609,6 @@ static GtkActionEntry mail_entries[] = {
NULL,
G_CALLBACK (action_mail_next_unread_cb) },
- { "mail-previous",
- GTK_STOCK_GO_BACK,
- N_("_Previous Message"),
- "<Control>Page_Up",
- N_("Display the previous message"),
- G_CALLBACK (action_mail_previous_cb) },
-
- { "mail-previous-important",
- NULL,
- N_("Pr_evious Important Message"),
- NULL,
- N_("Display the previous important message"),
- G_CALLBACK (action_mail_previous_important_cb) },
-
- { "mail-previous-unread",
- NULL,
- N_("P_revious Unread Message"),
- "<Control>bracketleft",
- N_("Display the previous unread message"),
- G_CALLBACK (action_mail_previous_unread_cb) },
-
/* XXX Work around one-accelerator-per-action limit. */
{ "mail-previous-unread-1",
NULL,
@@ -1900,97 +624,7 @@ static GtkActionEntry mail_entries[] = {
"<Control>comma",
NULL,
G_CALLBACK (action_mail_previous_unread_cb) },
-
- { "mail-print",
- GTK_STOCK_PRINT,
- NULL,
- NULL,
- N_("Print this message"),
- G_CALLBACK (action_mail_print_cb) },
-
- { "mail-print-preview",
- GTK_STOCK_PRINT_PREVIEW,
- NULL,
- NULL,
- N_("Preview the message to be printed"),
- G_CALLBACK (action_mail_print_preview_cb) },
-
- { "mail-redirect",
- NULL,
- N_("Re_direct"),
- NULL,
- N_("Redirect (bounce) the selected message to someone"),
- G_CALLBACK (action_mail_redirect_cb) },
-
- { "mail-reply-all",
- "mail-reply-all",
- N_("Reply to _All"),
- "<Shift><Control>r",
- N_("Compose a reply to all the recipients of the selected message"),
- G_CALLBACK (action_mail_reply_all_cb) },
-
- { "mail-reply-list",
- NULL,
- N_("Reply to _List"),
- "<Control>l",
- N_("Compose a reply to the mailing list of the selected message"),
- G_CALLBACK (action_mail_reply_list_cb) },
-
- { "mail-reply-post",
- NULL,
- N_("Post a Repl_y"),
- NULL,
- N_("Post a reply to a message in a public folder"),
- G_CALLBACK (action_mail_reply_post_cb) },
-
- { "mail-reply-sender",
- "mail-reply-sender",
- N_("_Reply to Sender"),
- "<Control>r",
- N_("Compose a reply to the sender of the selected message"),
- G_CALLBACK (action_mail_reply_sender_cb) },
-
- { "mail-save-as",
- GTK_STOCK_SAVE_AS,
- N_("_Save As mbox..."),
- NULL,
- N_("Save selected message as an mbox file"),
- G_CALLBACK (action_mail_save_as_cb) },
-
- { "mail-search-folder-from-mailing-list",
- NULL,
- N_("Search Folder from Mailing _List..."),
- NULL,
- N_("Create a search folder for this mailing list"),
- G_CALLBACK (action_mail_search_folder_from_mailing_list_cb) },
-
- { "mail-search-folder-from-recipients",
- NULL,
- N_("Search Folder from Recipien_ts..."),
- NULL,
- N_("Create a search folder for these recipients"),
- G_CALLBACK (action_mail_search_folder_from_recipients_cb) },
-
- { "mail-search-folder-from-sender",
- NULL,
- N_("Search Folder from Sen_der..."),
- NULL,
- N_("Create a search folder for this sender"),
- G_CALLBACK (action_mail_search_folder_from_sender_cb) },
-
- { "mail-search-folder-from-subject",
- NULL,
- N_("Search Folder from S_ubject..."),
- NULL,
- N_("Create a search folder for this subject"),
- G_CALLBACK (action_mail_search_folder_from_subject_cb) },
-
- { "mail-select-all",
- NULL,
- N_("Select _All Text"),
- "<Shift><Control>x",
- N_("Select all the text in a message"),
- G_CALLBACK (action_mail_select_all_cb) },
+#endif
{ "mail-show-hidden",
NULL,
@@ -1999,13 +633,6 @@ static GtkActionEntry mail_entries[] = {
N_("Show messages that have been temporarily hidden"),
G_CALLBACK (action_mail_show_hidden_cb) },
- { "mail-show-source",
- NULL,
- N_("_Message Source"),
- "<Control>u",
- N_("Show the raw email source of the message"),
- G_CALLBACK (action_mail_show_source_cb) },
-
{ "mail-stop",
GTK_STOCK_STOP,
N_("Cancel"),
@@ -2048,13 +675,6 @@ static GtkActionEntry mail_entries[] = {
N_("Subscribe or unsubscribe to folders on remote servers"),
G_CALLBACK (action_mail_tools_subscriptions_cb) },
- { "mail-undelete",
- NULL,
- N_("_Undelete Message"),
- "<Shift><Control>d",
- N_("Undelete the selected messages"),
- G_CALLBACK (action_mail_undelete_cb) },
-
{ "mail-uri-call-to",
NULL,
N_("C_all To..."),
@@ -2090,43 +710,8 @@ static GtkActionEntry mail_entries[] = {
NULL, /* XXX Add a tooltip! */
G_CALLBACK (action_mail_uri_to_search_folder_sender_cb) },
- { "mail-zoom-100",
- GTK_STOCK_ZOOM_100,
- N_("_Normal Size"),
- "<Control>0",
- N_("Reset the text to its original size"),
- G_CALLBACK (action_mail_zoom_100_cb) },
-
- { "mail-zoom-in",
- GTK_STOCK_ZOOM_IN,
- N_("_Zoom In"),
- "<Control>plus",
- N_("Increase the text size"),
- G_CALLBACK (action_mail_zoom_in_cb) },
-
- { "mail-zoom-out",
- GTK_STOCK_ZOOM_OUT,
- N_("Zoom _Out"),
- "<Control>minus",
- N_("Decreate the text size"),
- G_CALLBACK (action_mail_zoom_out_cb) },
-
/*** Menus ***/
- { "mail-create-rule-menu",
- NULL,
- N_("Create R_ule"),
- NULL,
- NULL,
- NULL },
-
- { "mail-encoding-menu",
- NULL,
- N_("Ch_aracter Encoding"),
- NULL,
- NULL,
- NULL },
-
{ "mail-folder-menu",
NULL,
N_("F_older"),
@@ -2134,20 +719,6 @@ static GtkActionEntry mail_entries[] = {
NULL,
NULL },
- { "mail-forward-as-menu",
- NULL,
- N_("F_orward As..."),
- NULL,
- NULL,
- NULL },
-
- { "mail-goto-menu",
- GTK_STOCK_JUMP_TO,
- N_("_Go To"),
- NULL,
- NULL,
- NULL },
-
{ "mail-label-menu",
NULL,
N_("_Label"),
@@ -2155,20 +726,6 @@ static GtkActionEntry mail_entries[] = {
NULL,
NULL },
- { "mail-mark-as-menu",
- NULL,
- N_("Mar_k As"),
- NULL,
- NULL,
- NULL },
-
- { "mail-message-menu",
- NULL,
- N_("_Message"),
- NULL,
- NULL,
- NULL },
-
{ "mail-preview-menu",
NULL,
N_("_Preview"),
@@ -2181,26 +738,11 @@ static GtkActionEntry mail_entries[] = {
N_("Create _Search Folder"),
NULL,
NULL,
- NULL },
-
- { "mail-zoom-menu",
- NULL,
- N_("_Zoom"),
- NULL,
- NULL,
NULL }
};
static GtkToggleActionEntry mail_toggle_entries[] = {
- { "mail-caret-mode",
- NULL,
- N_("_Caret Mode"),
- "F7",
- N_("Show a blinking cursor in the body of displayed messages"),
- G_CALLBACK (action_mail_caret_mode_cb),
- FALSE },
-
{ "mail-hide-deleted",
NULL,
N_("Hide _Deleted Messages"),
@@ -2218,14 +760,6 @@ static GtkToggleActionEntry mail_toggle_entries[] = {
G_CALLBACK (action_mail_preview_cb),
TRUE },
- { "mail-show-all-headers",
- NULL,
- N_("All Message _Headers"),
- NULL,
- N_("Show messages with all email headers"),
- G_CALLBACK (action_mail_show_all_headers_cb),
- FALSE },
-
{ "mail-threads-group-by",
NULL,
N_("_Group By Threads"),
@@ -2492,10 +1026,6 @@ e_mail_shell_view_actions_init (EMailShellView *mail_shell_view)
bridge = gconf_bridge_get ();
- object = G_OBJECT (ACTION (MAIL_CARET_MODE));
- key = "/apps/evolution/mail/display/caret_mode";
- gconf_bridge_bind_property (bridge, key, object, "active");
-
object = G_OBJECT (ACTION (MAIL_PREVIEW));
key = "/apps/evolution/mail/display/show_preview";
gconf_bridge_bind_property (bridge, key, object, "active");
@@ -2507,18 +1037,4 @@ e_mail_shell_view_actions_init (EMailShellView *mail_shell_view)
object = G_OBJECT (ACTION (MAIL_THREADS_GROUP_BY));
key = "/apps/evolution/mail/display/thread_list";
gconf_bridge_bind_property (bridge, key, object, "active");
-
- /* Fine tuning. */
-
- action = ACTION (MAIL_DELETE);
- g_object_set (action, "short-label", _("Delete"), NULL);
-
- action = ACTION (MAIL_NEXT);
- g_object_set (action, "short-label", _("Next"), NULL);
-
- action = ACTION (MAIL_PREVIOUS);
- g_object_set (action, "short-label", _("Previous"), NULL);
-
- action = ACTION (MAIL_REPLY_SENDER);
- g_object_set (action, "short-label", _("Reply"), NULL);
}
diff --git a/mail/e-mail-shell-view-private.c b/mail/e-mail-shell-view-private.c
index 1ead83c162..8dbaf56877 100644
--- a/mail/e-mail-shell-view-private.c
+++ b/mail/e-mail-shell-view-private.c
@@ -125,6 +125,8 @@ e_mail_shell_view_private_init (EMailShellView *mail_shell_view,
{
EMailShellViewPrivate *priv = mail_shell_view->priv;
+ /* Note: EMailShellContent retrieves the "mail" action group
+ * by name to satisfy its EMailReader interface. */
priv->mail_actions = gtk_action_group_new ("mail");
priv->filter_actions = gtk_action_group_new ("mail-filter");
@@ -186,6 +188,7 @@ e_mail_shell_view_private_constructed (EMailShellView *mail_shell_view)
mail_shell_view);
e_mail_shell_view_actions_init (mail_shell_view);
+ e_mail_reader_init (E_MAIL_READER (mail_shell_content));
/* Restore the previously selected folder. */
folder_tree_model = em_folder_tree_get_model (folder_tree);
diff --git a/mail/e-mail-shell-view-private.h b/mail/e-mail-shell-view-private.h
index ed379dc9a7..50ccf3000b 100644
--- a/mail/e-mail-shell-view-private.h
+++ b/mail/e-mail-shell-view-private.h
@@ -31,6 +31,7 @@
#include "e-util/gconf-bridge.h"
#include "widgets/menus/gal-view-instance.h"
+#include "e-mail-reader.h"
#include "em-composer-utils.h"
#include "em-folder-properties.h"
#include "em-folder-selector.h"
diff --git a/mail/em-folder-view.c b/mail/em-folder-view.c
index b129d3fba6..5ce7473566 100644
--- a/mail/em-folder-view.c
+++ b/mail/em-folder-view.c
@@ -112,8 +112,6 @@
static void emfv_list_message_selected(MessageList *ml, const char *uid, EMFolderView *emfv);
static void emfv_list_built(MessageList *ml, EMFolderView *emfv);
static int emfv_list_right_click(ETree *tree, gint row, ETreePath path, gint col, GdkEvent *event, EMFolderView *emfv);
-static void emfv_list_double_click(ETree *tree, gint row, ETreePath path, gint col, GdkEvent *event, EMFolderView *emfv);
-static int emfv_list_key_press(ETree *tree, int row, ETreePath path, int col, GdkEvent *ev, EMFolderView *emfv);
static void emfv_list_selection_change(ETree *tree, EMFolderView *emfv);
static void emfv_format_link_clicked(EMFormatHTMLDisplay *efhd, const char *uri, EMFolderView *);
@@ -271,8 +269,8 @@ emfv_init(GObject *o)
/* FIXME: should this hang off message-list instead? */
g_signal_connect(emfv->list->tree, "right_click", G_CALLBACK(emfv_list_right_click), emfv);
- g_signal_connect(emfv->list->tree, "double_click", G_CALLBACK(emfv_list_double_click), emfv);
- g_signal_connect(emfv->list->tree, "key_press", G_CALLBACK(emfv_list_key_press), emfv);
+// g_signal_connect(emfv->list->tree, "double_click", G_CALLBACK(emfv_list_double_click), emfv);
+// g_signal_connect(emfv->list->tree, "key_press", G_CALLBACK(emfv_list_key_press), emfv);
g_signal_connect(emfv->list->tree, "selection_change", G_CALLBACK(emfv_list_selection_change), emfv);
emfv->preview = (EMFormatHTMLDisplay *)em_format_html_display_new();
@@ -663,52 +661,6 @@ emfv_popup_open(EPopup *ep, EPopupItem *pitem, void *data)
em_folder_view_open_selected(emfv);
}
-//static void
-//emfv_popup_edit (EPopup *ep, EPopupItem *pitem, void *data)
-//{
-// EMFolderView *emfv = data;
-// GPtrArray *uids;
-//
-// if (!em_utils_check_user_can_send_mail((GtkWidget *)emfv))
-// return;
-//
-// uids = message_list_get_selected(emfv->list);
-// em_utils_edit_messages (emfv->folder, uids, FALSE);
-//}
-
-//static void
-//emfv_popup_saveas(EPopup *ep, EPopupItem *pitem, void *data)
-//{
-// EMFolderView *emfv = data;
-// GPtrArray *uids;
-//
-// uids = message_list_get_selected(emfv->list);
-// em_utils_save_messages((GtkWidget *)emfv, emfv->folder, uids);
-//}
-
-//static void
-//emfv_view_load_images(BonoboUIComponent *uic, void *data, const char *path)
-//{
-// EMFolderView *emfv = data;
-//
-// if (emfv->preview)
-// em_format_html_load_http((EMFormatHTML *)emfv->preview);
-//}
-
-//static void
-//emfv_popup_print(EPopup *ep, EPopupItem *pitem, void *data)
-//{
-// EMFolderView *emfv = data;
-// em_folder_view_print(emfv, GTK_PRINT_OPERATION_ACTION_PRINT_DIALOG);
-//}
-
-//static void
-//emfv_popup_copy_text(EPopup *ep, EPopupItem *pitem, void *data)
-//{
-// EMFolderView *emfv = data;
-// gtk_html_copy (((EMFormatHTML *)emfv->preview)->html);
-//}
-
static void
emfv_popup_source(EPopup *ep, EPopupItem *pitem, void *data)
{
@@ -728,312 +680,104 @@ emfv_popup_source(EPopup *ep, EPopupItem *pitem, void *data)
message_list_free_uids(emfv->list, uids);
}
-//static void
-//emfv_mail_compose(BonoboUIComponent *uid, void *data, const char *path)
-//{
-// EMFolderView *emfv = data;
-//
-// if (!em_utils_check_user_can_send_mail((GtkWidget *)emfv))
-// return;
-//
-// em_utils_compose_new_message(emfv->folder_uri);
-//}
-
-//static void
-//emfv_popup_reply_sender(EPopup *ep, EPopupItem *pitem, void *data)
-//{
-// EMFolderView *emfv = data;
-// em_folder_view_message_reply(emfv, REPLY_MODE_SENDER);
-//}
-
-//static void
-//emfv_popup_reply_list(EPopup *ep, EPopupItem *pitem, void *data)
-//{
-// EMFolderView *emfv = data;
-// em_folder_view_message_reply(emfv, REPLY_MODE_LIST);
-//}
-
-//static void
-//emfv_popup_reply_all(EPopup *ep, EPopupItem *pitem, void *data)
-//{
-// EMFolderView *emfv = data;
-// em_folder_view_message_reply(emfv, REPLY_MODE_ALL);
-//}
-
-//static void
-//emfv_popup_forward(EPopup *ep, EPopupItem *pitem, void *data)
-//{
-// EMFolderView *emfv = data;
-// GPtrArray *uids;
-//
-// if (!em_utils_check_user_can_send_mail((GtkWidget *)emfv))
-// return;
-//
-// uids = message_list_get_selected(emfv->list);
-// em_utils_forward_messages (emfv->folder, uids, emfv->folder_uri);
-//}
-
-//static void
-//emfv_popup_flag_followup(EPopup *ep, EPopupItem *pitem, void *data)
-//{
-// EMFolderView *emfv = data;
-// GPtrArray *uids = message_list_get_selected(emfv->list);
-//
-// em_utils_flag_for_followup((GtkWidget *)emfv, emfv->folder, uids);
-//}
-
-//static void
-//emfv_popup_flag_completed(EPopup *ep, EPopupItem *pitem, void *data)
-//{
-// EMFolderView *emfv = data;
-// GPtrArray *uids;
-//
-// uids = message_list_get_selected(emfv->list);
-// em_utils_flag_for_followup_completed((GtkWidget *)emfv, emfv->folder, uids);
-//
-// if (emfv->preview)
-// em_format_redraw (emfv->preview);
-//}
-
-//static void
-//emfv_popup_flag_clear(EPopup *ep, EPopupItem *pitem, void *data)
-//{
-// EMFolderView *emfv = data;
-// GPtrArray *uids = message_list_get_selected(emfv->list);
-//
-// em_utils_flag_for_followup_clear((GtkWidget *)emfv, emfv->folder, uids);
-//
-// if (emfv->preview)
-// em_format_redraw (emfv->preview);
-//}
-
-//static void
-//emfv_popup_mark_read(EPopup *ep, EPopupItem *pitem, void *data)
-//{
-// EMFolderView *emfv = data;
-// em_folder_view_mark_selected(emfv, CAMEL_MESSAGE_SEEN, CAMEL_MESSAGE_SEEN);
-//}
+//#define DelInVFolderCheckName "DelInVFolderCheck"
+//#define DelInVFolderKey "/apps/evolution/mail/prompts/delete_in_vfolder"
//static void
-//emfv_popup_mark_unread(EPopup *ep, EPopupItem *pitem, void *data)
+//emfv_delete_msg_response (GtkWidget *dialog, int response, gpointer data)
//{
-// EMFolderView *emfv = data;
-// em_folder_view_mark_selected(emfv, CAMEL_MESSAGE_SEEN|CAMEL_MESSAGE_DELETED, 0);
-//
-// if (emfv->list->seen_id) {
-// g_source_remove(emfv->list->seen_id);
-// emfv->list->seen_id = 0;
+// if (response == GTK_RESPONSE_OK) {
+// EMFolderView *emfv = data;
+// int count;
+// GPtrArray *uids;
+//
+// if (dialog) {
+// GList *children, *l;
+// GtkWidget *check = NULL;
+//
+// children = gtk_container_get_children (GTK_CONTAINER (GTK_DIALOG (dialog)->vbox));
+// for (l = children; l; l = l->next) {
+// if (GTK_IS_ALIGNMENT (l->data)) {
+// check = gtk_bin_get_child (GTK_BIN (l->data));
+//
+// if (check && GTK_IS_CHECK_BUTTON (check) &&
+// !strcmp (gtk_widget_get_name (check), DelInVFolderCheckName))
+// break;
+//
+// check = NULL;
+// }
+// }
+//
+// if (check) {
+// GConfClient *gconf = gconf_client_get_default ();
+// gconf_client_set_bool (gconf, DelInVFolderKey, gtk_toggle_button_get_active (GTK_TOGGLE_BUTTON (check)), NULL);
+// g_object_unref (gconf);
+// }
+//
+// g_list_free (children);
+// }
+//
+// uids = message_list_get_selected(emfv->list);
+// camel_folder_freeze(emfv->folder);
+//
+// for (count=0; count < uids->len; count++) {
+// if (camel_folder_get_message_flags (emfv->folder, uids->pdata[count]) & CAMEL_MESSAGE_USER_NOT_DELETABLE) {
+// if (emfv->preview_active) {
+// GtkHTMLStream *hstream = gtk_html_begin(((EMFormatHTML *)emfv->preview)->html);
+//
+// gtk_html_stream_printf(hstream, "<h2>%s</h2><p>%s</p>",
+// _("Mail Deletion Failed"),
+// _("You do not have sufficient permissions to delete this mail."));
+// gtk_html_stream_close(hstream, GTK_HTML_STREAM_OK);
+// } else {
+// GtkWidget *w = e_error_new (NULL, "mail:no-delete-permission", "", NULL);
+// em_utils_show_error_silent (w);
+// }
+//
+// count = -1;
+// break;
+// } else
+// camel_folder_set_message_flags(emfv->folder, uids->pdata[count], CAMEL_MESSAGE_SEEN|CAMEL_MESSAGE_DELETED, CAMEL_MESSAGE_SEEN|CAMEL_MESSAGE_DELETED );
+// }
+//
+// message_list_free_uids(emfv->list, uids);
+// camel_folder_thaw(emfv->folder);
+//
+// em_folder_view_select_next_message (emfv, count, FALSE);
// }
-//}
-
-//static void
-//emfv_popup_mark_important(EPopup *ep, EPopupItem *pitem, void *data)
-//{
-// EMFolderView *emfv = data;
-// em_folder_view_mark_selected(emfv, CAMEL_MESSAGE_FLAGGED|CAMEL_MESSAGE_DELETED, CAMEL_MESSAGE_FLAGGED);
-//}
-
-//static void
-//emfv_popup_mark_unimportant(EPopup *ep, EPopupItem *pitem, void *data)
-//{
-// EMFolderView *emfv = data;
-// em_folder_view_mark_selected(emfv, CAMEL_MESSAGE_FLAGGED, 0);
-//}
-
-void
-em_folder_view_select_next_message (EMFolderView *emfv, int count, gboolean always_can_previous)
-{
- if (emfv && count == 1) {
- if (!message_list_select (emfv->list, MESSAGE_LIST_SELECT_NEXT, 0, 0) && (emfv->hide_deleted || always_can_previous))
- message_list_select (emfv->list, MESSAGE_LIST_SELECT_PREVIOUS, 0, 0);
- }
-}
-
-//static void
-//emfv_popup_mark_junk (EPopup *ep, EPopupItem *pitem, void *data)
-//{
-// EMFolderView *emfv = data;
-// int count;
-//
-// count = em_folder_view_mark_selected(emfv,
-// CAMEL_MESSAGE_SEEN|CAMEL_MESSAGE_JUNK|CAMEL_MESSAGE_NOTJUNK|CAMEL_MESSAGE_JUNK_LEARN,
-// CAMEL_MESSAGE_SEEN|CAMEL_MESSAGE_JUNK|CAMEL_MESSAGE_JUNK_LEARN);
//
-// em_folder_view_select_next_message (emfv, count, TRUE);
+// if (dialog)
+// gtk_widget_destroy (dialog);
//}
//static void
-//emfv_popup_mark_nojunk (EPopup *ep, EPopupItem *pitem, void *data)
+//emfv_popup_delete (EPopup *ep, EPopupItem *pitem, void *data)
//{
// EMFolderView *emfv = data;
-// int count;
-//
-// count = em_folder_view_mark_selected(emfv,
-// CAMEL_MESSAGE_JUNK|CAMEL_MESSAGE_NOTJUNK|CAMEL_MESSAGE_JUNK_LEARN,
-// CAMEL_MESSAGE_NOTJUNK|CAMEL_MESSAGE_JUNK_LEARN);
-//
-// em_folder_view_select_next_message (emfv, count, TRUE);
-//}
-
-#define DelInVFolderCheckName "DelInVFolderCheck"
-#define DelInVFolderKey "/apps/evolution/mail/prompts/delete_in_vfolder"
-
-static void
-emfv_delete_msg_response (GtkWidget *dialog, int response, gpointer data)
-{
- if (response == GTK_RESPONSE_OK) {
- EMFolderView *emfv = data;
- int count;
- GPtrArray *uids;
-
- if (dialog) {
- GList *children, *l;
- GtkWidget *check = NULL;
-
- children = gtk_container_get_children (GTK_CONTAINER (GTK_DIALOG (dialog)->vbox));
- for (l = children; l; l = l->next) {
- if (GTK_IS_ALIGNMENT (l->data)) {
- check = gtk_bin_get_child (GTK_BIN (l->data));
-
- if (check && GTK_IS_CHECK_BUTTON (check) &&
- !strcmp (gtk_widget_get_name (check), DelInVFolderCheckName))
- break;
-
- check = NULL;
- }
- }
-
- if (check) {
- GConfClient *gconf = gconf_client_get_default ();
- gconf_client_set_bool (gconf, DelInVFolderKey, gtk_toggle_button_get_active (GTK_TOGGLE_BUTTON (check)), NULL);
- g_object_unref (gconf);
- }
-
- g_list_free (children);
- }
-
- uids = message_list_get_selected(emfv->list);
- camel_folder_freeze(emfv->folder);
-
- for (count=0; count < uids->len; count++) {
- if (camel_folder_get_message_flags (emfv->folder, uids->pdata[count]) & CAMEL_MESSAGE_USER_NOT_DELETABLE) {
- if (emfv->preview_active) {
- GtkHTMLStream *hstream = gtk_html_begin(((EMFormatHTML *)emfv->preview)->html);
-
- gtk_html_stream_printf(hstream, "<h2>%s</h2><p>%s</p>",
- _("Mail Deletion Failed"),
- _("You do not have sufficient permissions to delete this mail."));
- gtk_html_stream_close(hstream, GTK_HTML_STREAM_OK);
- } else {
- GtkWidget *w = e_error_new (NULL, "mail:no-delete-permission", "", NULL);
- em_utils_show_error_silent (w);
- }
-
- count = -1;
- break;
- } else
- camel_folder_set_message_flags(emfv->folder, uids->pdata[count], CAMEL_MESSAGE_SEEN|CAMEL_MESSAGE_DELETED, CAMEL_MESSAGE_SEEN|CAMEL_MESSAGE_DELETED );
- }
-
- message_list_free_uids(emfv->list, uids);
- camel_folder_thaw(emfv->folder);
-
- em_folder_view_select_next_message (emfv, count, FALSE);
- }
-
- if (dialog)
- gtk_widget_destroy (dialog);
-}
-
-static void
-emfv_popup_delete (EPopup *ep, EPopupItem *pitem, void *data)
-{
- EMFolderView *emfv = data;
- GConfClient *gconf = gconf_client_get_default ();
-
- if (emfv->folder && emfv->folder->parent_store && CAMEL_IS_VEE_STORE (emfv->folder->parent_store)
- && !gconf_client_get_bool (gconf, DelInVFolderKey, NULL)) {
- GtkWidget *dialog, *checkbox, *align;
-
- dialog = e_error_new (NULL, "mail:ask-delete-vfolder-msg", emfv->folder->full_name, NULL);
- g_signal_connect (dialog, "response", G_CALLBACK (emfv_delete_msg_response), emfv);
- checkbox = gtk_check_button_new_with_label (_("Do not ask me again."));
- gtk_widget_set_name (checkbox, DelInVFolderCheckName);
- align = gtk_alignment_new (0.5, 0.5, 0.0, 0.0);
- gtk_container_add (GTK_CONTAINER (align), checkbox);
- gtk_widget_show (checkbox);
- gtk_box_pack_end (GTK_BOX (GTK_DIALOG (dialog)->vbox), align, TRUE, TRUE, 6);
- gtk_widget_show (align);
- gtk_widget_show (dialog);
- } else {
- emfv_delete_msg_response (NULL, GTK_RESPONSE_OK, emfv);
- }
-
- g_object_unref (gconf);
-}
-#undef DelInVFolderCheckName
-#undef DelInVFolderKey
-
-//static void
-//emfv_popup_undelete(EPopup *ep, EPopupItem *pitem, void *data)
-//{
-// EMFolderView *emfv = data;
-// em_folder_view_mark_selected(emfv, CAMEL_MESSAGE_DELETED, 0);
-//}
-
-//struct _move_data {
-// EMFolderView *emfv;
-// GPtrArray *uids;
-// int delete;
-//};
-
-//static char *default_xfer_messages_uri = NULL;
-
-//static void
-//emfv_popup_move_cb(const char *uri, void *data)
-//{
-// struct _move_data *d = data;
-//
-// if (uri) {
-// g_free (default_xfer_messages_uri);
-// default_xfer_messages_uri = g_strdup (uri);
-// mail_transfer_messages(d->emfv->folder, d->uids, d->delete, uri, 0, NULL, NULL);
-// } else
-// em_utils_uids_free(d->uids);
-//
-// g_object_unref(d->emfv);
-// g_free(d);
-//}
-
-//static void
-//emfv_popup_move(EPopup *ep, EPopupItem *pitem, void *data)
-//{
-// EMFolderView *emfv = data;
-// struct _move_data *d;
-//
-// d = g_malloc(sizeof(*d));
-// d->emfv = emfv;
-// g_object_ref(emfv);
-// d->uids = message_list_get_selected(emfv->list);
-// d->delete = TRUE;
-//
-// em_select_folder ((GtkWindow *) emfv, _("Select folder"), _("_Move"), default_xfer_messages_uri, NULL, emfv_popup_move_cb, d);
-//}
-
-//static void
-//emfv_popup_copy(EPopup *ep, EPopupItem *pitem, void *data)
-//{
-// EMFolderView *emfv = data;
-// struct _move_data *d;
-//
-// d = g_malloc(sizeof(*d));
-// d->emfv = emfv;
-// g_object_ref(emfv);
-// d->uids = message_list_get_selected(emfv->list);
-// d->delete = FALSE;
+// GConfClient *gconf = gconf_client_get_default ();
+//
+// if (emfv->folder && emfv->folder->parent_store && CAMEL_IS_VEE_STORE (emfv->folder->parent_store)
+// && !gconf_client_get_bool (gconf, DelInVFolderKey, NULL)) {
+// GtkWidget *dialog, *checkbox, *align;
+//
+// dialog = e_error_new (NULL, "mail:ask-delete-vfolder-msg", emfv->folder->full_name, NULL);
+// g_signal_connect (dialog, "response", G_CALLBACK (emfv_delete_msg_response), emfv);
+// checkbox = gtk_check_button_new_with_label (_("Do not ask me again."));
+// gtk_widget_set_name (checkbox, DelInVFolderCheckName);
+// align = gtk_alignment_new (0.5, 0.5, 0.0, 0.0);
+// gtk_container_add (GTK_CONTAINER (align), checkbox);
+// gtk_widget_show (checkbox);
+// gtk_box_pack_end (GTK_BOX (GTK_DIALOG (dialog)->vbox), align, TRUE, TRUE, 6);
+// gtk_widget_show (align);
+// gtk_widget_show (dialog);
+// } else {
+// emfv_delete_msg_response (NULL, GTK_RESPONSE_OK, emfv);
+// }
//
-// em_select_folder ((GtkWindow *) emfv, _("Select folder"), _("C_opy"), default_xfer_messages_uri, NULL, emfv_popup_move_cb, d);
+// g_object_unref (gconf);
//}
+//#undef DelInVFolderCheckName
+//#undef DelInVFolderKey
static void
emfv_set_label (EMFolderView *emfv, const char *label)
@@ -1097,93 +841,17 @@ emfv_popup_label_new (EPopup *ep, EPopupItem *pitem, void *data)
}
}
-//static void
-//emfv_popup_add_sender(EPopup *ep, EPopupItem *pitem, void *data)
-//{
-// EMFolderView *emfv = data;
-// GPtrArray *uids = message_list_get_selected(emfv->list);
-// CamelMessageInfo *info;
-// const char *addr;
-//
-// if (uids->len == 1
-// && (info = camel_folder_get_message_info(emfv->folder, uids->pdata[0])) != NULL
-// && (addr = camel_message_info_from(info)) != NULL
-// && addr[0] != 0)
-// em_utils_add_address((GtkWidget *)emfv, addr);
-//
-// em_utils_uids_free(uids);
-//}
-
-//static void
-//emfv_popup_apply_filters(EPopup *ep, EPopupItem *pitem, void *data)
-//{
-// EMFolderView *emfv = data;
-// GPtrArray *uids = message_list_get_selected(emfv->list);
-//
-// mail_filter_on_demand(emfv->folder, uids);
-//}
-
-//static void
-//emfv_popup_filter_junk(EPopup *ep, EPopupItem *pitem, void *data)
-//{
-// EMFolderView *emfv = data;
-// GPtrArray *uids = message_list_get_selected(emfv->list);
-//
-// mail_filter_junk(emfv->folder, uids);
-//}
-
-/* filter callbacks, this will eventually be a wizard, see
- filter_type_current/vfolder_type_current for implementation */
-
-//#define EMFV_POPUP_AUTO_TYPE(autotype, name, type) \
-//static void \
-//name(EPopup *ep, EPopupItem *item, void *data) \
-//{ \
-// EMFolderView *emfv = data; \
-// autotype(emfv, type); \
-//}
-
-//EMFV_POPUP_AUTO_TYPE(vfolder_type_current, emfv_popup_vfolder_subject, AUTO_SUBJECT)
-//EMFV_POPUP_AUTO_TYPE(vfolder_type_current, emfv_popup_vfolder_sender, AUTO_FROM)
-//EMFV_POPUP_AUTO_TYPE(vfolder_type_current, emfv_popup_vfolder_recipients, AUTO_TO)
-//EMFV_POPUP_AUTO_TYPE(vfolder_type_current, emfv_popup_vfolder_mlist, AUTO_MLIST)
-
-//EMFV_POPUP_AUTO_TYPE(filter_type_current, emfv_popup_filter_subject, AUTO_SUBJECT)
-//EMFV_POPUP_AUTO_TYPE(filter_type_current, emfv_popup_filter_sender, AUTO_FROM)
-//EMFV_POPUP_AUTO_TYPE(filter_type_current, emfv_popup_filter_recipients, AUTO_TO)
-//EMFV_POPUP_AUTO_TYPE(filter_type_current, emfv_popup_filter_mlist, AUTO_MLIST)
-
-/* TODO: Move some of these to be 'standard' menu's */
-
static EPopupItem emfv_popup_items[] = {
-// { E_POPUP_ITEM, "00.emfv.00", N_("_Copy"), emfv_popup_copy_text, NULL, "edit-copy", EM_FOLDER_VIEW_SELECT_DISPLAY|EM_FOLDER_VIEW_SELECT_SELECTION },
{ E_POPUP_BAR, "10.emfv", NULL, NULL, NULL, NULL },
-// { E_POPUP_ITEM, "10.emfv.00", N_("_Reply to Sender"), emfv_popup_reply_sender, NULL, "mail-reply-sender", EM_POPUP_SELECT_ONE },
-// { E_POPUP_ITEM, "10.emfv.01", N_("Reply to _All"), emfv_popup_reply_all, NULL, "mail-reply-all", EM_POPUP_SELECT_ONE },
-// { E_POPUP_ITEM, "10.emfv.02", N_("_Forward"), emfv_popup_forward, NULL, "mail-forward", EM_POPUP_SELECT_MANY },
{ E_POPUP_BAR, "20.emfv", NULL, NULL, NULL, NULL },
- /* EM_POPUP_EDIT was used here. This is changed to EM_POPUP_SELECT_ONE as Edit-as-new-messaeg need not be restricted to Sent-Items folder alone */
-// { E_POPUP_ITEM, "20.emfv.00", N_("_Edit as New Message..."), emfv_popup_edit, NULL, NULL, EM_POPUP_SELECT_ONE },
-// { E_POPUP_ITEM, "20.emfv.01", N_("_Save As..."), emfv_popup_saveas, NULL, "document-save-as", EM_POPUP_SELECT_MANY },
-// { E_POPUP_ITEM, "20.emfv.02", N_("_Print..."), emfv_popup_print, NULL, "document-print", EM_POPUP_SELECT_ONE },
{ E_POPUP_BAR, "40.emfv", NULL, NULL, NULL, NULL },
- { E_POPUP_ITEM, "40.emfv.00", N_("_Delete"), emfv_popup_delete, NULL, "edit-delete", EM_POPUP_SELECT_DELETE|EM_FOLDER_VIEW_SELECT_LISTONLY },
-// { E_POPUP_ITEM, "40.emfv.01", N_("U_ndelete"), emfv_popup_undelete, NULL, NULL, EM_POPUP_SELECT_UNDELETE|EM_FOLDER_VIEW_SELECT_LISTONLY },
-// { E_POPUP_ITEM, "40.emfv.02", N_("_Move to Folder..."), emfv_popup_move, NULL, "mail-move", EM_POPUP_SELECT_MANY|EM_FOLDER_VIEW_SELECT_LISTONLY },
-// { E_POPUP_ITEM, "40.emfv.03", N_("_Copy to Folder..."), emfv_popup_copy, NULL, "mail-copy", EM_POPUP_SELECT_MANY|EM_FOLDER_VIEW_SELECT_LISTONLY },
+// { E_POPUP_ITEM, "40.emfv.00", N_("_Delete"), emfv_popup_delete, NULL, "edit-delete", EM_POPUP_SELECT_DELETE|EM_FOLDER_VIEW_SELECT_LISTONLY },
{ E_POPUP_BAR, "50.emfv", NULL, NULL, NULL, NULL },
-// { E_POPUP_ITEM, "50.emfv.00", N_("Mar_k as Read"), emfv_popup_mark_read, NULL, "mail-mark-read", EM_POPUP_SELECT_MARK_READ|EM_FOLDER_VIEW_SELECT_LISTONLY },
-// { E_POPUP_ITEM, "50.emfv.01", N_("Mark as _Unread"), emfv_popup_mark_unread, NULL, "mail-mark-unread", EM_POPUP_SELECT_MARK_UNREAD|EM_FOLDER_VIEW_SELECT_LISTONLY },
-// { E_POPUP_ITEM, "50.emfv.02", N_("Mark as _Important"), emfv_popup_mark_important, NULL, "mail-mark-important", EM_POPUP_SELECT_MARK_IMPORTANT|EM_FOLDER_VIEW_SELECT_LISTONLY },
-// { E_POPUP_ITEM, "50.emfv.03", N_("Mark as Un_important"), emfv_popup_mark_unimportant, NULL, NULL, EM_POPUP_SELECT_MARK_UNIMPORTANT|EM_FOLDER_VIEW_SELECT_LISTONLY },
-// { E_POPUP_ITEM, "50.emfv.04", N_("Mark as _Junk"), emfv_popup_mark_junk, NULL, "mail-mark-junk", EM_POPUP_SELECT_MANY|EM_FOLDER_VIEW_SELECT_LISTONLY|EM_POPUP_SELECT_JUNK },
-// { E_POPUP_ITEM, "50.emfv.05", N_("Mark as _Not Junk"), emfv_popup_mark_nojunk, NULL, "mail-mark-notjunk", EM_POPUP_SELECT_MANY|EM_FOLDER_VIEW_SELECT_LISTONLY|EM_POPUP_SELECT_NOT_JUNK },
-// { E_POPUP_ITEM, "50.emfv.06", N_("Mark for Follo_w Up..."), emfv_popup_flag_followup, NULL, "stock_mail-flag-for-followup", EM_POPUP_SELECT_FLAG_FOLLOWUP|EM_FOLDER_VIEW_SELECT_LISTONLY },
{ E_POPUP_SUBMENU, "60.label.00", N_("_Label"), NULL, NULL, NULL, EM_POPUP_SELECT_MANY|EM_FOLDER_VIEW_SELECT_LISTONLY },
{ E_POPUP_ITEM, "60.label.00/00.label", N_("_None"), emfv_popup_label_clear, NULL, NULL, EM_POPUP_SELECT_MANY|EM_FOLDER_VIEW_SELECT_LISTONLY },
@@ -1193,25 +861,10 @@ static EPopupItem emfv_popup_items[] = {
{ E_POPUP_BAR, "70.emfv.06", NULL, NULL, NULL, NULL },
-// { E_POPUP_ITEM, "70.emfv.07", N_("Fla_g Completed"), emfv_popup_flag_completed, NULL, "stock_mail-flag-for-followup-done", EM_POPUP_SELECT_FLAG_COMPLETED|EM_FOLDER_VIEW_SELECT_LISTONLY },
-// { E_POPUP_ITEM, "70.emfv.08", N_("Cl_ear Flag"), emfv_popup_flag_clear, NULL, NULL, EM_POPUP_SELECT_FLAG_CLEAR|EM_FOLDER_VIEW_SELECT_LISTONLY },
{ E_POPUP_BAR, "90.filter", NULL, NULL, NULL, NULL },
- { E_POPUP_SUBMENU, "90.filter.00", N_("Crea_te Rule From Message"), NULL, NULL, NULL, EM_POPUP_SELECT_ONE|EM_FOLDER_VIEW_SELECT_LISTONLY },
- /* Translators: The following strings are used while creating a new search folder, to specify what parameter the search folder would be based on. */
-// { E_POPUP_ITEM, "90.filter.00/00.00", N_("Search Folder based on _Subject"), emfv_popup_vfolder_subject, NULL, NULL, EM_POPUP_SELECT_ONE|EM_FOLDER_VIEW_SELECT_LISTONLY },
-// { E_POPUP_ITEM, "90.filter.00/00.01", N_("Search Folder based on Se_nder"), emfv_popup_vfolder_sender, NULL, NULL, EM_POPUP_SELECT_ONE|EM_FOLDER_VIEW_SELECT_LISTONLY },
-// { E_POPUP_ITEM, "90.filter.00/00.02", N_("Search Folder based on _Recipients"), emfv_popup_vfolder_recipients, NULL, NULL, EM_POPUP_SELECT_ONE|EM_FOLDER_VIEW_SELECT_LISTONLY },
-// { E_POPUP_ITEM, "90.filter.00/00.03", N_("Search Folder based on Mailing _List"),
-// emfv_popup_vfolder_mlist, NULL, NULL, EM_POPUP_SELECT_ONE|EM_POPUP_SELECT_MAILING_LIST|EM_FOLDER_VIEW_SELECT_LISTONLY },
{ E_POPUP_BAR, "90.filter.00/10", NULL, NULL, NULL, NULL },
- /* Translators: The following strings are used while creating a new message filter, to specify what parameter the filter would be based on. */
-// { E_POPUP_ITEM, "90.filter.00/10.00", N_("Filter based on Sub_ject"), emfv_popup_filter_subject, NULL, NULL, EM_POPUP_SELECT_ONE|EM_FOLDER_VIEW_SELECT_LISTONLY },
-// { E_POPUP_ITEM, "90.filter.00/10.01", N_("Filter based on Sen_der"), emfv_popup_filter_sender, NULL, NULL, EM_POPUP_SELECT_ONE|EM_FOLDER_VIEW_SELECT_LISTONLY },
-// { E_POPUP_ITEM, "90.filter.00/10.02", N_("Filter based on Re_cipients"), emfv_popup_filter_recipients, NULL, NULL, EM_POPUP_SELECT_ONE|EM_FOLDER_VIEW_SELECT_LISTONLY },
-// { E_POPUP_ITEM, "90.filter.00/10.03", N_("Filter based on _Mailing List"),
-// emfv_popup_filter_mlist, NULL, NULL, EM_POPUP_SELECT_ONE|EM_POPUP_SELECT_MAILING_LIST|EM_FOLDER_VIEW_SELECT_LISTONLY },
};
static enum _e_popup_t
@@ -1353,40 +1006,10 @@ from(BonoboUIComponent *uid, void *data, const char *path) \
to(NULL, NULL, data); \
}
-//EMFV_MAP_CALLBACK(emfv_add_sender_addressbook, emfv_popup_add_sender)
-//EMFV_MAP_CALLBACK(emfv_message_apply_filters, emfv_popup_apply_filters)
-//EMFV_MAP_CALLBACK(emfv_message_filter_junk, emfv_popup_filter_junk)
-//EMFV_MAP_CALLBACK(emfv_message_copy, emfv_popup_copy)
-//EMFV_MAP_CALLBACK(emfv_message_move, emfv_popup_move)
-//EMFV_MAP_CALLBACK(emfv_message_forward, emfv_popup_forward)
-//EMFV_MAP_CALLBACK(emfv_message_reply_all, emfv_popup_reply_all)
-//EMFV_MAP_CALLBACK(emfv_message_reply_list, emfv_popup_reply_list)
-//EMFV_MAP_CALLBACK(emfv_message_reply_sender, emfv_popup_reply_sender)
-//EMFV_MAP_CALLBACK(emfv_message_mark_read, emfv_popup_mark_read)
-//EMFV_MAP_CALLBACK(emfv_message_mark_unread, emfv_popup_mark_unread)
-//EMFV_MAP_CALLBACK(emfv_message_mark_important, emfv_popup_mark_important)
-//EMFV_MAP_CALLBACK(emfv_message_mark_unimportant, emfv_popup_mark_unimportant)
-//EMFV_MAP_CALLBACK(emfv_message_mark_junk, emfv_popup_mark_junk)
-//EMFV_MAP_CALLBACK(emfv_message_mark_nojunk, emfv_popup_mark_nojunk)
-EMFV_MAP_CALLBACK(emfv_message_delete, emfv_popup_delete)
-//EMFV_MAP_CALLBACK(emfv_message_undelete, emfv_popup_undelete)
-//EMFV_MAP_CALLBACK(emfv_message_followup_flag, emfv_popup_flag_followup)
-//EMFV_MAP_CALLBACK(emfv_message_followup_clear, emfv_popup_flag_clear)
-//EMFV_MAP_CALLBACK(emfv_message_followup_completed, emfv_popup_flag_completed)
+//EMFV_MAP_CALLBACK(emfv_message_delete, emfv_popup_delete)
EMFV_MAP_CALLBACK(emfv_message_open, emfv_popup_open)
-//EMFV_MAP_CALLBACK(emfv_message_edit, emfv_popup_edit)
-//EMFV_MAP_CALLBACK(emfv_message_saveas, emfv_popup_saveas)
-//EMFV_MAP_CALLBACK(emfv_print_message, emfv_popup_print)
EMFV_MAP_CALLBACK(emfv_message_source, emfv_popup_source)
-//static void
-//emfv_empty_trash(BonoboUIComponent *uid, void *data, const char *path)
-//{
-// EMFolderView *emfv = data;
-//
-// em_utils_empty_trash (gtk_widget_get_toplevel ((GtkWidget *) emfv));
-//}
-
static void
prepare_offline(void *key, void *value, void *data)
{
@@ -1447,211 +1070,6 @@ emfv_select_all_text(BonoboUIComponent *uid, void *data, const char *path)
}
-//static void
-//emfv_mail_next(BonoboUIComponent *uid, void *data, const char *path)
-//{
-// EMFolderView *emfv = data;
-//
-// e_profile_event_emit("goto.next", "", 0);
-//
-// message_list_select(emfv->list, MESSAGE_LIST_SELECT_NEXT, 0, 0);
-//}
-
-//static void
-//emfv_mail_next_flagged(BonoboUIComponent *uid, void *data, const char *path)
-//{
-// EMFolderView *emfv = data;
-//
-// message_list_select(emfv->list, MESSAGE_LIST_SELECT_NEXT|MESSAGE_LIST_SELECT_WRAP, CAMEL_MESSAGE_FLAGGED, CAMEL_MESSAGE_FLAGGED);
-//}
-
-//static void
-//emfv_mail_next_unread(BonoboUIComponent *uid, void *data, const char *path)
-//{
-// EMFolderView *emfv = data;
-//
-// gtk_widget_grab_focus((GtkWidget *) emfv->list);
-// message_list_select(emfv->list, MESSAGE_LIST_SELECT_NEXT|MESSAGE_LIST_SELECT_WRAP, 0, CAMEL_MESSAGE_SEEN);
-//}
-
-//static void
-//emfv_mail_next_thread(BonoboUIComponent *uid, void *data, const char *path)
-//{
-// EMFolderView *emfv = data;
-//
-// message_list_select_next_thread(emfv->list);
-//}
-
-//static void
-//emfv_mail_previous(BonoboUIComponent *uid, void *data, const char *path)
-//{
-// EMFolderView *emfv = data;
-//
-// message_list_select(emfv->list, MESSAGE_LIST_SELECT_PREVIOUS, 0, 0);
-//}
-
-//static void
-//emfv_mail_previous_flagged(BonoboUIComponent *uid, void *data, const char *path)
-//{
-// EMFolderView *emfv = data;
-//
-// message_list_select(emfv->list, MESSAGE_LIST_SELECT_PREVIOUS|MESSAGE_LIST_SELECT_WRAP, CAMEL_MESSAGE_FLAGGED, CAMEL_MESSAGE_FLAGGED);
-//}
-
-//static void
-//emfv_mail_previous_unread(BonoboUIComponent *uid, void *data, const char *path)
-//{
-// EMFolderView *emfv = data;
-//
-// gtk_widget_grab_focus((GtkWidget *) emfv->list);
-// message_list_select(emfv->list, MESSAGE_LIST_SELECT_PREVIOUS|MESSAGE_LIST_SELECT_WRAP, 0, CAMEL_MESSAGE_SEEN);
-//}
-
-//static void
-//emfv_message_forward_attached (BonoboUIComponent *uic, void *data, const char *path)
-//{
-// EMFolderView *emfv = data;
-// GPtrArray *uids;
-//
-// if (!em_utils_check_user_can_send_mail ((GtkWidget *) emfv))
-// return;
-//
-// uids = message_list_get_selected (emfv->list);
-// em_utils_forward_attached (emfv->folder, uids, emfv->folder_uri);
-//}
-
-//static void
-//emfv_message_forward_inline (BonoboUIComponent *uic, void *data, const char *path)
-//{
-// EMFolderView *emfv = data;
-// GPtrArray *uids;
-//
-// if (!em_utils_check_user_can_send_mail ((GtkWidget *) emfv))
-// return;
-//
-// uids = message_list_get_selected (emfv->list);
-// em_utils_forward_inline (emfv->folder, uids, emfv->folder_uri);
-//}
-
-//static void
-//emfv_message_forward_quoted (BonoboUIComponent *uic, void *data, const char *path)
-//{
-// EMFolderView *emfv = data;
-// GPtrArray *uids;
-//
-// if (!em_utils_check_user_can_send_mail ((GtkWidget *) emfv))
-// return;
-//
-// uids = message_list_get_selected (emfv->list);
-// em_utils_forward_quoted (emfv->folder, uids, emfv->folder_uri);
-//}
-
-//static void
-//emfv_message_redirect (BonoboUIComponent *uic, void *data, const char *path)
-//{
-// EMFolderView *emfv = data;
-//
-// if (emfv->list->cursor_uid == NULL)
-// return;
-//
-// if (!em_utils_check_user_can_send_mail ((GtkWidget *) emfv))
-// return;
-//
-// em_utils_redirect_message_by_uid (emfv->folder, emfv->list->cursor_uid);
-//}
-
-//static void
-//emfv_message_post_reply (BonoboUIComponent *uic, void *data, const char *path)
-//{
-// EMFolderView *emfv = data;
-//
-// if (emfv->list->cursor_uid == NULL)
-// return;
-//
-// if (!em_utils_check_user_can_send_mail ((GtkWidget *) emfv))
-// return;
-//
-// em_utils_post_reply_to_message_by_uid (emfv->folder, emfv->list->cursor_uid);
-//}
-
-static gboolean
-html_contains_nonwhitespace (const char *html, gint len)
-{
- const char *p;
- gunichar c = 0;
-
- if (!html || len<=0)
- return FALSE;
-
- p = html;
-
- while (p && p - html < len) {
- c = g_utf8_get_char (p);
- if (!c)
- break;
-
- if (c == '<') {
- /* skip until next '>' */
- while (c = g_utf8_get_char (p), c && c != '>' && p - html < len)
- p = g_utf8_next_char (p);
- if (!c)
- break;
- }else if (c == '&') {
- /* sequence '&nbsp;' is a space */
- if (g_ascii_strncasecmp (p, "&nbsp;", 6) == 0)
- p = p + 5;
- else
- break;
- }else if (!g_unichar_isspace (c)) {
- break;
- }
-
- p = g_utf8_next_char (p);
- }
-
- return p - html < len - 1 && c != 0;
-}
-
-void
-em_folder_view_message_reply(EMFolderView *emfv, int mode)
-{
- char *html = NULL;
- gint len;
-
- if (emfv->list->cursor_uid == NULL)
- return;
-
- if (!em_utils_check_user_can_send_mail ((GtkWidget *) emfv))
- return;
-
- if (gtk_html_command(((EMFormatHTML *)emfv->preview)->html, "is-selection-active")
- && (html = gtk_html_get_selection_html (((EMFormatHTML *)emfv->preview)->html, &len))
- && len && html[0] && html_contains_nonwhitespace (html, len)) {
- CamelMimeMessage *msg, *src;
- struct _camel_header_raw *header;
-
- src = (CamelMimeMessage *)((EMFormat *)emfv->preview)->message;
- msg = camel_mime_message_new();
-
- /* need to strip content- headers */
- header = ((CamelMimePart *)src)->headers;
- while (header) {
- if (g_ascii_strncasecmp(header->name, "content-", 8) != 0)
- camel_medium_add_header((CamelMedium *)msg, header->name, header->value);
- header = header->next;
- }
- camel_mime_part_set_encoding((CamelMimePart *)msg, CAMEL_TRANSFER_ENCODING_8BIT);
- camel_mime_part_set_content((CamelMimePart *)msg,
- html, len, "text/html");
- em_utils_reply_to_message (emfv->folder, emfv->list->cursor_uid, msg, mode, NULL);
- camel_object_unref(msg);
- } else {
- em_utils_reply_to_message (emfv->folder, emfv->list->cursor_uid, NULL, mode, (EMFormat *)emfv->preview);
- }
-
- g_free (html);
-}
-
static void
emfv_message_search(BonoboUIComponent *uic, void *data, const char *path)
{
@@ -1668,115 +1086,6 @@ emfv_message_search(BonoboUIComponent *uic, void *data, const char *path)
#endif
}
-//static void
-//emfv_print_preview_message(BonoboUIComponent *uic, void *data, const char *path)
-//{
-// EMFolderView *emfv = data;
-//
-// em_folder_view_print(emfv, GTK_PRINT_OPERATION_ACTION_PREVIEW);
-//}
-
-//static void
-//emfv_text_zoom_in(BonoboUIComponent *uic, void *data, const char *path)
-//{
-// EMFolderView *emfv = data;
-//
-// if (emfv->preview)
-// em_format_html_display_zoom_in(emfv->preview);
-//}
-
-//static void
-//emfv_text_zoom_out(BonoboUIComponent *uic, void *data, const char *path)
-//{
-// EMFolderView *emfv = data;
-//
-// if (emfv->preview)
-// em_format_html_display_zoom_out(emfv->preview);
-//}
-
-//static void
-//emfv_text_zoom_reset(BonoboUIComponent *uic, void *data, const char *path)
-//{
-// EMFolderView *emfv = data;
-//
-// if (emfv->preview)
-// em_format_html_display_zoom_reset(emfv->preview);
-//}
-
-/* ********************************************************************** */
-
-//struct _filter_data {
-// const char *source;
-// char *uri;
-// int type;
-//};
-
-//static void
-//filter_data_free (struct _filter_data *fdata)
-//{
-// g_free (fdata->uri);
-// g_free (fdata);
-//}
-
-//static void
-//filter_type_got_message (CamelFolder *folder, const char *uid, CamelMimeMessage *msg, void *user_data)
-//{
-// struct _filter_data *data = user_data;
-//
-// if (msg)
-// filter_gui_add_from_message (msg, data->source, data->type);
-//
-// filter_data_free (data);
-//}
-
-//static void
-//filter_type_uid (CamelFolder *folder, const char *uid, const char *source, int type)
-//{
-// struct _filter_data *data;
-//
-// data = g_malloc0 (sizeof (*data));
-// data->type = type;
-// data->source = source;
-//
-// mail_get_message (folder, uid, filter_type_got_message, data, mail_msg_unordered_push);
-//}
-
-//static void
-//filter_type_current (EMFolderView *emfv, int type)
-//{
-// const char *source;
-// GPtrArray *uids;
-//
-// if (em_utils_folder_is_sent (emfv->folder, emfv->folder_uri)
-// || em_utils_folder_is_outbox (emfv->folder, emfv->folder_uri))
-// source = FILTER_SOURCE_OUTGOING;
-// else
-// source = FILTER_SOURCE_INCOMING;
-//
-// uids = message_list_get_selected (emfv->list);
-//
-// if (uids->len == 1)
-// filter_type_uid (emfv->folder, (char *) uids->pdata[0], source, type);
-//
-// em_utils_uids_free (uids);
-//}
-
-//EMFV_MAP_CALLBACK(emfv_tools_filter_subject, emfv_popup_filter_subject)
-//EMFV_MAP_CALLBACK(emfv_tools_filter_sender, emfv_popup_filter_sender)
-//EMFV_MAP_CALLBACK(emfv_tools_filter_recipient, emfv_popup_filter_recipients)
-//EMFV_MAP_CALLBACK(emfv_tools_filter_mlist, emfv_popup_filter_mlist)
-
-//static void
-//vfolder_type_got_message (CamelFolder *folder, const char *uid, CamelMimeMessage *msg, void *user_data)
-//{
-// struct _filter_data *data = user_data;
-//
-// if (msg)
-// vfolder_gui_add_from_message (msg, data->type, data->uri);
-//
-// filter_data_free (data);
-//}
-
static void
emp_uri_popup_vfolder_sender(EPopup *ep, EPopupItem *pitem, void *data)
{
@@ -1833,44 +1142,9 @@ emp_uri_popup_vfolder_recipient(EPopup *ep, EPopupItem *pitem, void *data)
camel_url_free(url);
}
-//static void
-//vfolder_type_uid (CamelFolder *folder, const char *uid, const char *uri, int type)
-//{
-// struct _filter_data *data;
-//
-// data = g_malloc0 (sizeof (*data));
-// data->type = type;
-// data->uri = g_strdup (uri);
-//
-// mail_get_message (folder, uid, vfolder_type_got_message, data, mail_msg_unordered_push);
-//}
-
-//static void
-//vfolder_type_current (EMFolderView *emfv, int type)
-//{
-// GPtrArray *uids;
-//
-// uids = message_list_get_selected (emfv->list);
-//
-// if (uids->len == 1) {
-// /* ensures vfolder is running */
-// vfolder_load_storage ();
-//
-// vfolder_type_uid (emfv->folder, (char *) uids->pdata[0], emfv->folder_uri, type);
-// }
-//
-// em_utils_uids_free (uids);
-//}
-
-//EMFV_MAP_CALLBACK(emfv_tools_vfolder_subject, emfv_popup_vfolder_subject)
-//EMFV_MAP_CALLBACK(emfv_tools_vfolder_sender, emfv_popup_vfolder_sender)
-//EMFV_MAP_CALLBACK(emfv_tools_vfolder_recipient, emfv_popup_vfolder_recipients)
-//EMFV_MAP_CALLBACK(emfv_tools_vfolder_mlist, emfv_popup_vfolder_mlist)
-
/* ********************************************************************** */
static BonoboUIVerb emfv_message_verbs[] = {
-// BONOBO_UI_UNSAFE_VERB ("EmptyTrash", emfv_empty_trash),
BONOBO_UI_UNSAFE_VERB ("PrepareForOffline", emfv_prepare_offline),
BONOBO_UI_UNSAFE_VERB ("EditCut", emfv_edit_cut),
BONOBO_UI_UNSAFE_VERB ("EditCopy", emfv_edit_copy),
@@ -1878,71 +1152,13 @@ static BonoboUIVerb emfv_message_verbs[] = {
BONOBO_UI_UNSAFE_VERB ("SelectAllText", emfv_select_all_text),
-// BONOBO_UI_UNSAFE_VERB ("MailNext", emfv_mail_next),
-// BONOBO_UI_UNSAFE_VERB ("MailNextFlagged", emfv_mail_next_flagged),
-// BONOBO_UI_UNSAFE_VERB ("MailNextUnread", emfv_mail_next_unread),
-// BONOBO_UI_UNSAFE_VERB ("MailNextThread", emfv_mail_next_thread),
-// BONOBO_UI_UNSAFE_VERB ("MailPrevious", emfv_mail_previous),
-// BONOBO_UI_UNSAFE_VERB ("MailPreviousFlagged", emfv_mail_previous_flagged),
-// BONOBO_UI_UNSAFE_VERB ("MailPreviousUnread", emfv_mail_previous_unread),
-
-// BONOBO_UI_UNSAFE_VERB ("AddSenderToAddressbook", emfv_add_sender_addressbook),
-
-// BONOBO_UI_UNSAFE_VERB ("MessageApplyFilters", emfv_message_apply_filters),
-// BONOBO_UI_UNSAFE_VERB ("MessageFilterJunk", emfv_message_filter_junk),
-// BONOBO_UI_UNSAFE_VERB ("MessageCopy", emfv_message_copy),
- BONOBO_UI_UNSAFE_VERB ("MessageDelete", emfv_message_delete),
- BONOBO_UI_UNSAFE_VERB ("MessageDeleteKey", emfv_message_delete),
-// BONOBO_UI_UNSAFE_VERB ("MessageForward", emfv_message_forward),
-// BONOBO_UI_UNSAFE_VERB ("MessageForwardAttached", emfv_message_forward_attached),
-// BONOBO_UI_UNSAFE_VERB ("MessageForwardInline", emfv_message_forward_inline),
-// BONOBO_UI_UNSAFE_VERB ("MessageForwardQuoted", emfv_message_forward_quoted),
-// BONOBO_UI_UNSAFE_VERB ("MessageRedirect", emfv_message_redirect),
-// BONOBO_UI_UNSAFE_VERB ("MessageMarkAsRead", emfv_message_mark_read),
-// BONOBO_UI_UNSAFE_VERB ("MessageMarkAsUnRead", emfv_message_mark_unread),
-// BONOBO_UI_UNSAFE_VERB ("MessageMarkAsImportant", emfv_message_mark_important),
-// BONOBO_UI_UNSAFE_VERB ("MessageMarkAsUnimportant", emfv_message_mark_unimportant),
-// BONOBO_UI_UNSAFE_VERB ("MessageMarkAsJunk", emfv_message_mark_junk),
-// BONOBO_UI_UNSAFE_VERB ("MessageMarkAsNotJunk", emfv_message_mark_nojunk),
-// BONOBO_UI_UNSAFE_VERB ("MessageFollowUpFlag", emfv_message_followup_flag),
-// BONOBO_UI_UNSAFE_VERB ("MessageFollowUpComplete", emfv_message_followup_completed),
-// BONOBO_UI_UNSAFE_VERB ("MessageFollowUpClear", emfv_message_followup_clear),
-// BONOBO_UI_UNSAFE_VERB ("MessageMove", emfv_message_move),
+// BONOBO_UI_UNSAFE_VERB ("MessageDelete", emfv_message_delete),
+// BONOBO_UI_UNSAFE_VERB ("MessageDeleteKey", emfv_message_delete),
BONOBO_UI_UNSAFE_VERB ("MessageOpen", emfv_message_open),
-// BONOBO_UI_UNSAFE_VERB ("MessagePostReply", emfv_message_post_reply),
-// BONOBO_UI_UNSAFE_VERB ("MessageReplyAll", emfv_message_reply_all),
-// BONOBO_UI_UNSAFE_VERB ("MessageReplyList", emfv_message_reply_list),
-// BONOBO_UI_UNSAFE_VERB ("MessageReplySender", emfv_message_reply_sender),
-// BONOBO_UI_UNSAFE_VERB ("MessageEdit", emfv_message_edit),
-// BONOBO_UI_UNSAFE_VERB ("MessageSaveAs", emfv_message_saveas),
BONOBO_UI_UNSAFE_VERB ("MessageSearch", emfv_message_search),
-// BONOBO_UI_UNSAFE_VERB ("MessageUndelete", emfv_message_undelete),
-
-// BONOBO_UI_UNSAFE_VERB ("PrintMessage", emfv_print_message),
-// BONOBO_UI_UNSAFE_VERB ("PrintPreviewMessage", emfv_print_preview_message),
-
-// BONOBO_UI_UNSAFE_VERB ("TextZoomIn", emfv_text_zoom_in),
-// BONOBO_UI_UNSAFE_VERB ("TextZoomOut", emfv_text_zoom_out),
-// BONOBO_UI_UNSAFE_VERB ("TextZoomReset", emfv_text_zoom_reset),
BONOBO_UI_UNSAFE_VERB ("ViewSource", emfv_message_source),
-// BONOBO_UI_UNSAFE_VERB ("MailCompose", emfv_mail_compose),
-
- /* TODO: This stuff should just be 1 item that runs a wizard */
-// BONOBO_UI_UNSAFE_VERB ("ToolsFilterMailingList", emfv_tools_filter_mlist),
-// BONOBO_UI_UNSAFE_VERB ("ToolsFilterRecipient", emfv_tools_filter_recipient),
-// BONOBO_UI_UNSAFE_VERB ("ToolsFilterSender", emfv_tools_filter_sender),
-// BONOBO_UI_UNSAFE_VERB ("ToolsFilterSubject", emfv_tools_filter_subject),
-// BONOBO_UI_UNSAFE_VERB ("ToolsVFolderMailingList", emfv_tools_vfolder_mlist),
-// BONOBO_UI_UNSAFE_VERB ("ToolsVFolderRecipient", emfv_tools_vfolder_recipient),
-// BONOBO_UI_UNSAFE_VERB ("ToolsVFolderSender", emfv_tools_vfolder_sender),
-// BONOBO_UI_UNSAFE_VERB ("ToolsVFolderSubject", emfv_tools_vfolder_subject),
-
-// BONOBO_UI_UNSAFE_VERB ("ViewLoadImages", emfv_view_load_images),
- /* ViewHeaders stuff is a radio */
- /* CaretMode is a toggle */
-
BONOBO_UI_VERB_END
};
@@ -2111,37 +1327,6 @@ emfv_activate(EMFolderView *emfv, BonoboUIComponent *uic, int act)
}
}
-int
-em_folder_view_print (EMFolderView *emfv, GtkPrintOperationAction action)
-{
- EMFormatHTMLPrint *efhp;
- GPtrArray *uids;
-
- if (emfv->folder == NULL)
- return 0;
-
- uids = message_list_get_selected (emfv->list);
- if (uids->len != 1)
- goto exit;
-
- efhp = em_format_html_print_new (
- (EMFormatHTML *) emfv->preview, action);
- em_format_set_session (
- (EMFormat *) efhp,
- ((EMFormat *) emfv->preview)->session);
- em_format_merge_handler ((EMFormat *) efhp,
- (EMFormat *) emfv->preview);
-
- em_format_html_print_message (
- efhp, emfv->folder, uids->pdata[0]);
- g_object_unref (efhp);
-
-exit:
- message_list_free_uids (emfv->list, uids);
-
- return 0;
-}
-
EMPopupTargetSelect *
em_folder_view_get_popup_target(EMFolderView *emfv, EMPopup *emp, int on_display)
{
@@ -2406,15 +1591,15 @@ emfv_list_built(MessageList *ml, EMFolderView *emfv)
}
}
-static void
-emfv_list_double_click(ETree *tree, gint row, ETreePath path, gint col, GdkEvent *event, EMFolderView *emfv)
-{
- /* Ignore double-clicks on columns that handle thier own state */
- if (MESSAGE_LIST_COLUMN_IS_ACTIVE (col))
- return;
-
- em_folder_view_open_selected(emfv);
-}
+//static void
+//emfv_list_double_click(ETree *tree, gint row, ETreePath path, gint col, GdkEvent *event, EMFolderView *emfv)
+//{
+// /* Ignore double-clicks on columns that handle thier own state */
+// if (MESSAGE_LIST_COLUMN_IS_ACTIVE (col))
+// return;
+//
+// em_folder_view_open_selected(emfv);
+//}
static int
emfv_list_right_click(ETree *tree, gint row, ETreePath path, gint col, GdkEvent *event, EMFolderView *emfv)
@@ -2424,52 +1609,52 @@ emfv_list_right_click(ETree *tree, gint row, ETreePath path, gint col, GdkEvent
return TRUE;
}
-static int
-emfv_list_key_press(ETree *tree, int row, ETreePath path, int col, GdkEvent *ev, EMFolderView *emfv)
-{
- GPtrArray *uids;
- int i;
- guint32 flags;
-
- if ((ev->key.state & GDK_CONTROL_MASK) != 0)
- return FALSE;
-
- switch (ev->key.keyval) {
- case GDK_Return:
- case GDK_KP_Enter:
- case GDK_ISO_Enter:
- em_folder_view_open_selected(emfv);
- break;
-#ifdef HAVE_XFREE
- case XF86XK_Reply:
- em_folder_view_message_reply(emfv, REPLY_MODE_ALL);
- break;
- case XF86XK_MailForward:
- uids = message_list_get_selected(emfv->list);
- em_utils_forward_messages (emfv->folder, uids, emfv->folder_uri);
- break;
-#endif /* HAVE_XFREE */
- case '!':
- uids = message_list_get_selected(emfv->list);
-
- camel_folder_freeze(emfv->folder);
- for (i = 0; i < uids->len; i++) {
- flags = camel_folder_get_message_flags(emfv->folder, uids->pdata[i]) ^ CAMEL_MESSAGE_FLAGGED;
- if (flags & CAMEL_MESSAGE_FLAGGED)
- flags &= ~CAMEL_MESSAGE_DELETED;
- camel_folder_set_message_flags(emfv->folder, uids->pdata[i],
- CAMEL_MESSAGE_FLAGGED|CAMEL_MESSAGE_DELETED, flags);
- }
- camel_folder_thaw(emfv->folder);
-
- message_list_free_uids(emfv->list, uids);
- break;
- default:
- return FALSE;
- }
-
- return TRUE;
-}
+//static int
+//emfv_list_key_press(ETree *tree, int row, ETreePath path, int col, GdkEvent *ev, EMFolderView *emfv)
+//{
+// GPtrArray *uids;
+// int i;
+// guint32 flags;
+//
+// if ((ev->key.state & GDK_CONTROL_MASK) != 0)
+// return FALSE;
+//
+// switch (ev->key.keyval) {
+// case GDK_Return:
+// case GDK_KP_Enter:
+// case GDK_ISO_Enter:
+// em_folder_view_open_selected(emfv);
+// break;
+//#ifdef HAVE_XFREE
+// case XF86XK_Reply:
+// em_folder_view_message_reply(emfv, REPLY_MODE_ALL);
+// break;
+// case XF86XK_MailForward:
+// uids = message_list_get_selected(emfv->list);
+// em_utils_forward_messages (emfv->folder, uids, emfv->folder_uri);
+// break;
+//#endif /* HAVE_XFREE */
+// case '!':
+// uids = message_list_get_selected(emfv->list);
+//
+// camel_folder_freeze(emfv->folder);
+// for (i = 0; i < uids->len; i++) {
+// flags = camel_folder_get_message_flags(emfv->folder, uids->pdata[i]) ^ CAMEL_MESSAGE_FLAGGED;
+// if (flags & CAMEL_MESSAGE_FLAGGED)
+// flags &= ~CAMEL_MESSAGE_DELETED;
+// camel_folder_set_message_flags(emfv->folder, uids->pdata[i],
+// CAMEL_MESSAGE_FLAGGED|CAMEL_MESSAGE_DELETED, flags);
+// }
+// camel_folder_thaw(emfv->folder);
+//
+// message_list_free_uids(emfv->list, uids);
+// break;
+// default:
+// return FALSE;
+// }
+//
+// return TRUE;
+//}
static gboolean
emfv_popup_menu (GtkWidget *widget)
diff --git a/mail/em-message-browser.c b/mail/em-message-browser.c
index c3a427f601..8b3ff99152 100644
--- a/mail/em-message-browser.c
+++ b/mail/em-message-browser.c
@@ -96,7 +96,7 @@ emmb_set_message (EMFolderView *emfv,
folder_view_class = EM_FOLDER_VIEW_CLASS (parent_class);
folder_view_class->set_message (emfv, uid, nomarkseen);
- f (uid == NULL) {
+ if (uid == NULL) {
gtk_widget_destroy (GTK_WIDGET (emfv));
return;
}
diff --git a/mail/em-utils.c b/mail/em-utils.c
index 5f93e39361..fe51e693ad 100644
--- a/mail/em-utils.c
+++ b/mail/em-utils.c
@@ -193,13 +193,14 @@ druid_destroy_cb (gpointer user_data, GObject *deadbeef)
* otherwise.
**/
gboolean
-em_utils_configure_account (GtkWidget *parent)
+em_utils_configure_account (GtkWindow *parent)
{
EMAccountEditor *emae;
+ g_return_val_if_fail (GTK_IS_WINDOW (parent), FALSE);
+
emae = em_account_editor_new(NULL, EMAE_DRUID, "org.gnome.evolution.mail.config.accountDruid");
- if (parent != NULL)
- e_dialog_set_transient_for((GtkWindow *)emae->editor, parent);
+ gtk_window_set_transient_for (GTK_WINDOW (emae->editor), parent);
g_object_weak_ref((GObject *)emae->editor, (GWeakNotify) druid_destroy_cb, NULL);
gtk_widget_show(emae->editor);
@@ -223,10 +224,12 @@ em_utils_configure_account (GtkWidget *parent)
* or %FALSE otherwise.
**/
gboolean
-em_utils_check_user_can_send_mail (GtkWidget *parent)
+em_utils_check_user_can_send_mail (GtkWindow *parent)
{
EAccount *account;
+ g_return_val_if_fail (GTK_IS_WINDOW (parent), FALSE);
+
if (!mail_config_is_configured ()) {
if (!em_utils_configure_account (parent))
return FALSE;
@@ -387,12 +390,14 @@ emu_save_get_filename_for_part (CamelMimePart *part)
* Saves a mime part to disk (prompting the user for filename).
**/
void
-em_utils_save_part (GtkWidget *parent, const char *prompt, CamelMimePart *part)
+em_utils_save_part (GtkWindow *parent, const char *prompt, CamelMimePart *part)
{
GtkWidget *file_chooser;
const gchar *utf8_filename;
gchar *uri = NULL, *filename;
+ g_return_if_fail (GTK_IS_WINDOW (parent));
+
utf8_filename = emu_save_get_filename_for_part (part);
filename = g_filename_from_utf8 (utf8_filename, -1, NULL, NULL, NULL);
em_filename_make_safe (filename);
@@ -502,7 +507,7 @@ get_unique_file_names (GSList *parts)
}
void
-em_utils_save_parts (GtkWidget *parent, const gchar *prompt, GSList *parts)
+em_utils_save_parts (GtkWindow *parent, const gchar *prompt, GSList *parts)
{
GtkWidget *file_chooser;
gchar *path_uri;
@@ -558,7 +563,7 @@ exit:
* Returns %TRUE if saving succeeded, %FALSE otherwise
**/
gboolean
-em_utils_save_part_to_file(GtkWidget *parent, const char *filename, CamelMimePart *part)
+em_utils_save_part_to_file(GtkWindow *parent, const char *filename, CamelMimePart *part)
{
int done;
char *dirname;
@@ -569,7 +574,7 @@ em_utils_save_part_to_file(GtkWidget *parent, const char *filename, CamelMimePar
dirname = g_path_get_dirname(filename);
if (g_mkdir_with_parents(dirname, 0777) == -1) {
- GtkWidget *w = e_error_new((GtkWindow *)parent, "mail:no-create-path", filename, g_strerror(errno), NULL);
+ GtkWidget *w = e_error_new(parent, "mail:no-create-path", filename, g_strerror(errno), NULL);
g_free(dirname);
em_utils_show_error_silent (w);
return FALSE;
@@ -578,13 +583,13 @@ em_utils_save_part_to_file(GtkWidget *parent, const char *filename, CamelMimePar
if (g_access(filename, F_OK) == 0) {
if (g_access(filename, W_OK) != 0) {
- e_error_run((GtkWindow *)parent, E_ERROR_ASK_FILE_EXISTS_OVERWRITE, filename, NULL);
+ e_error_run(parent, E_ERROR_ASK_FILE_EXISTS_OVERWRITE, filename, NULL);
return FALSE;
}
}
if (g_stat(filename, &st) != -1 && !S_ISREG(st.st_mode)) {
- GtkWidget *w = e_error_new((GtkWindow *)parent, "mail:no-write-path-notfile", filename, NULL);
+ GtkWidget *w = e_error_new(parent, "mail:no-write-path-notfile", filename, NULL);
em_utils_show_error_silent (w);
return FALSE;
}
@@ -637,13 +642,14 @@ emu_save_messages_response(GtkWidget *filesel, int response, struct _save_messag
* user for filename).
**/
void
-em_utils_save_messages (GtkWidget *parent, CamelFolder *folder, GPtrArray *uids)
+em_utils_save_messages (GtkWindow *parent, CamelFolder *folder, GPtrArray *uids)
{
struct _save_messages_data *data;
GtkWidget *filesel;
char *filename = NULL;
CamelMessageInfo *info = NULL;
+ g_return_if_fail (GTK_IS_WINDOW (parent));
g_return_if_fail (CAMEL_IS_FOLDER (folder));
g_return_if_fail (uids != NULL);
@@ -683,7 +689,7 @@ emu_add_address_cb(BonoboListener *listener, const char *name, const CORBA_any *
/* one of email or vcard should be always NULL, never both of them */
static void
-emu_add_address_or_vcard (struct _GtkWidget *parent, const char *email, const char *vcard)
+emu_add_address_or_vcard (GtkWindow *parent, const char *email, const char *vcard)
{
GtkWidget *win;
GtkWidget *control;
@@ -706,14 +712,7 @@ emu_add_address_or_vcard (struct _GtkWidget *parent, const char *email, const ch
win = gtk_window_new(GTK_WINDOW_TOPLEVEL);
gtk_window_set_title((GtkWindow *)win, _("Add address"));
- if (parent && !GTK_IS_WINDOW (parent)) {
- parent = gtk_widget_get_toplevel (parent);
- if (!parent || !(GTK_WIDGET_TOPLEVEL (parent)))
- parent = NULL;
- }
-
- if (parent)
- gtk_window_set_transient_for((GtkWindow *)win, ((GtkWindow *)parent));
+ gtk_window_set_transient_for((GtkWindow *)win, parent);
gtk_window_set_position((GtkWindow *)win, GTK_WIN_POS_CENTER_ON_PARENT);
gtk_window_set_type_hint((GtkWindow *)win, GDK_WINDOW_TYPE_HINT_DIALOG);
@@ -744,8 +743,10 @@ emu_add_address_or_vcard (struct _GtkWidget *parent, const char *email, const ch
* Add address @email to the addressbook.
**/
void
-em_utils_add_address (struct _GtkWidget *parent, const char *email)
+em_utils_add_address (GtkWindow *parent, const char *email)
{
+ g_return_if_fail (GTK_IS_WINDOW (parent));
+
emu_add_address_or_vcard (parent, email, NULL);
}
@@ -754,8 +755,10 @@ em_utils_add_address (struct _GtkWidget *parent, const char *email)
* Adds whole vCard to the addressbook.
**/
void
-em_utils_add_vcard (struct _GtkWidget *parent, const char *vcard)
+em_utils_add_vcard (GtkWindow *parent, const char *vcard)
{
+ g_return_if_fail (GTK_IS_WINDOW (parent));
+
emu_add_address_or_vcard (parent, NULL, vcard);
}
@@ -822,19 +825,18 @@ tag_editor_response (GtkWidget *dialog, int button, struct ted_t *ted)
* @folder and @uids.
**/
void
-em_utils_flag_for_followup (GtkWidget *parent, CamelFolder *folder, GPtrArray *uids)
+em_utils_flag_for_followup (GtkWindow *parent, CamelFolder *folder, GPtrArray *uids)
{
GtkWidget *editor;
struct ted_t *ted;
int i;
+ g_return_if_fail (GTK_IS_WINDOW (parent));
g_return_if_fail (CAMEL_IS_FOLDER (folder));
g_return_if_fail (uids != NULL);
editor = (GtkWidget *) message_tag_followup_new ();
-
- if (parent != NULL)
- e_dialog_set_transient_for ((GtkWindow *) editor, parent);
+ gtk_window_set_transient_for (GTK_WINDOW (editor), parent);
camel_object_ref (folder);
@@ -886,10 +888,11 @@ em_utils_flag_for_followup (GtkWidget *parent, CamelFolder *folder, GPtrArray *u
* @folder and @uids.
**/
void
-em_utils_flag_for_followup_clear (GtkWidget *parent, CamelFolder *folder, GPtrArray *uids)
+em_utils_flag_for_followup_clear (GtkWindow *parent, CamelFolder *folder, GPtrArray *uids)
{
int i;
+ g_return_if_fail (GTK_IS_WINDOW (parent));
g_return_if_fail (CAMEL_IS_FOLDER (folder));
g_return_if_fail (uids != NULL);
@@ -920,11 +923,12 @@ em_utils_flag_for_followup_clear (GtkWidget *parent, CamelFolder *folder, GPtrAr
* Flag-for-Followup.
**/
void
-em_utils_flag_for_followup_completed (GtkWidget *parent, CamelFolder *folder, GPtrArray *uids)
+em_utils_flag_for_followup_completed (GtkWindow *parent, CamelFolder *folder, GPtrArray *uids)
{
char *now;
int i;
+ g_return_if_fail (GTK_IS_WINDOW (parent));
g_return_if_fail (CAMEL_IS_FOLDER (folder));
g_return_if_fail (uids != NULL);
diff --git a/mail/em-utils.h b/mail/em-utils.h
index 0bce56d7f3..56dd4c6713 100644
--- a/mail/em-utils.h
+++ b/mail/em-utils.h
@@ -23,79 +23,71 @@
#ifndef __EM_UTILS_H__
#define __EM_UTILS_H__
-#include <glib.h>
-
-#ifdef __cplusplus
-extern "C" {
-#pragma }
-#endif /* __cplusplus */
-
+#include <gtk/gtk.h>
#include <sys/types.h>
+#include <camel/camel-exception.h>
+#include <camel/camel-folder.h>
+#include <camel/camel-internet-address.h>
+#include <camel/camel-mime-message.h>
+#include <camel/camel-mime-part.h>
+#include <camel/camel-stream.h>
+
+G_BEGIN_DECLS
-struct _GtkWidget;
-struct _GtkWindow;
-struct _CamelFolder;
-struct _CamelInternetAddress;
-struct _CamelStream;
-struct _CamelMimeMessage;
-struct _CamelMimePart;
-struct _GtkSelectionData;
-struct _GtkAdjustment;
-struct _CamelException;
struct _EMFormat;
-gboolean em_utils_prompt_user(struct _GtkWindow *parent, const char *promptkey, const char *tag, const char *arg0, ...);
+gboolean em_utils_prompt_user(GtkWindow *parent, const char *promptkey, const char *tag, const char *arg0, ...);
GPtrArray *em_utils_uids_copy (GPtrArray *uids);
void em_utils_uids_free (GPtrArray *uids);
-gboolean em_utils_configure_account (struct _GtkWidget *parent);
-gboolean em_utils_check_user_can_send_mail (struct _GtkWidget *parent);
+gboolean em_utils_configure_account (GtkWindow *parent);
+gboolean em_utils_check_user_can_send_mail (GtkWindow *parent);
-void em_utils_edit_filters (struct _GtkWidget *parent);
+void em_utils_edit_filters (GtkWidget *parent);
void em_filename_make_safe (gchar *string);
-void em_utils_edit_vfolders (struct _GtkWidget *parent);
+void em_utils_edit_vfolders (GtkWidget *parent);
-void em_utils_save_part(struct _GtkWidget *parent, const char *prompt, struct _CamelMimePart *part);
-gboolean em_utils_save_part_to_file(struct _GtkWidget *parent, const char *filename, struct _CamelMimePart *part);
-void em_utils_save_messages (struct _GtkWidget *parent, struct _CamelFolder *folder, GPtrArray *uids);
+void em_utils_save_part(GtkWindow *parent, const char *prompt, CamelMimePart *part);
+gboolean em_utils_save_part_to_file(GtkWindow *parent, const char *filename, CamelMimePart *part);
+void em_utils_save_messages (GtkWindow *parent, CamelFolder *folder, GPtrArray *uids);
-void em_utils_add_address(struct _GtkWidget *parent, const char *email);
-void em_utils_add_vcard(struct _GtkWidget *parent, const char *vcard);
+void em_utils_add_address(GtkWindow *parent, const char *email);
+void em_utils_add_vcard(GtkWindow *parent, const char *vcard);
-void em_utils_flag_for_followup (struct _GtkWidget *parent, struct _CamelFolder *folder, GPtrArray *uids);
-void em_utils_flag_for_followup_clear (struct _GtkWidget *parent, struct _CamelFolder *folder, GPtrArray *uids);
-void em_utils_flag_for_followup_completed (struct _GtkWidget *parent, struct _CamelFolder *folder, GPtrArray *uids);
+void em_utils_flag_for_followup (GtkWindow *parent, CamelFolder *folder, GPtrArray *uids);
+void em_utils_flag_for_followup_clear (GtkWindow *parent, CamelFolder *folder, GPtrArray *uids);
+void em_utils_flag_for_followup_completed (GtkWindow *parent, CamelFolder *folder, GPtrArray *uids);
/* This stuff that follows probably doesn't belong here, then again, the stuff above probably belongs elsewhere */
-void em_utils_selection_set_mailbox(struct _GtkSelectionData *data, struct _CamelFolder *folder, GPtrArray *uids);
-void em_utils_selection_get_mailbox(struct _GtkSelectionData *data, struct _CamelFolder *folder);
-void em_utils_selection_get_message(struct _GtkSelectionData *data, struct _CamelFolder *folder);
-/* FIXME: be nice if these also worked on struct _CamelFolder's, no easy way to get uri from folder yet tho */
-void em_utils_selection_set_uidlist(struct _GtkSelectionData *data, const char *uri, GPtrArray *uids);
-void em_utils_selection_get_uidlist(struct _GtkSelectionData *data, struct _CamelFolder *dest, int move, struct _CamelException *ex);
-void em_utils_selection_set_urilist(struct _GtkSelectionData *data, struct _CamelFolder *folder, GPtrArray *uids);
-void em_utils_selection_get_urilist(struct _GtkSelectionData *data, struct _CamelFolder *folder);
+void em_utils_selection_set_mailbox(GtkSelectionData *data, CamelFolder *folder, GPtrArray *uids);
+void em_utils_selection_get_mailbox(GtkSelectionData *data, CamelFolder *folder);
+void em_utils_selection_get_message(GtkSelectionData *data, CamelFolder *folder);
+/* FIXME: be nice if these also worked on CamelFolder's, no easy way to get uri from folder yet tho */
+void em_utils_selection_set_uidlist(GtkSelectionData *data, const char *uri, GPtrArray *uids);
+void em_utils_selection_get_uidlist(GtkSelectionData *data, CamelFolder *dest, int move, CamelException *ex);
+void em_utils_selection_set_urilist(GtkSelectionData *data, CamelFolder *folder, GPtrArray *uids);
+void em_utils_selection_get_urilist(GtkSelectionData *data, CamelFolder *folder);
-char *em_utils_temp_save_part(struct _GtkWidget *parent, struct _CamelMimePart *part, gboolean mode);
-void em_utils_save_parts (struct _GtkWidget *parent, const char *prompt, GSList * parts);
+char *em_utils_temp_save_part(GtkWidget *parent, CamelMimePart *part, gboolean mode);
+void em_utils_save_parts (GtkWindow *parent, const char *prompt, GSList * parts);
-gboolean em_utils_folder_is_drafts(struct _CamelFolder *folder, const char *uri);
-gboolean em_utils_folder_is_templates(struct _CamelFolder *folder, const char *uri);
-gboolean em_utils_folder_is_sent(struct _CamelFolder *folder, const char *uri);
-gboolean em_utils_folder_is_outbox(struct _CamelFolder *folder, const char *uri);
+gboolean em_utils_folder_is_drafts(CamelFolder *folder, const char *uri);
+gboolean em_utils_folder_is_templates(CamelFolder *folder, const char *uri);
+gboolean em_utils_folder_is_sent(CamelFolder *folder, const char *uri);
+gboolean em_utils_folder_is_outbox(CamelFolder *folder, const char *uri);
-void em_utils_adjustment_page(struct _GtkAdjustment *adj, gboolean down);
+void em_utils_adjustment_page(GtkAdjustment *adj, gboolean down);
char *em_utils_get_proxy_uri(void);
/* FIXME: should this have an override charset? */
-char *em_utils_part_to_html(struct _CamelMimePart *part, ssize_t *len, struct _EMFormat *source);
-char *em_utils_message_to_html(struct _CamelMimeMessage *msg, const char *credits, guint32 flags, ssize_t *len, struct _EMFormat *source, const char *append);
+char *em_utils_part_to_html(CamelMimePart *part, ssize_t *len, struct _EMFormat *source);
+char *em_utils_message_to_html(CamelMimeMessage *msg, const char *credits, guint32 flags, ssize_t *len, struct _EMFormat *source, const char *append);
-void em_utils_expunge_folder (struct _GtkWidget *parent, struct _CamelFolder *folder);
-void em_utils_empty_trash (struct _GtkWidget *parent);
+void em_utils_expunge_folder (GtkWidget *parent, CamelFolder *folder);
+void em_utils_empty_trash (GtkWidget *parent);
/* returns the folder name portion of an URI */
char *em_utils_folder_name_from_uri (const char *uri);
@@ -105,20 +97,18 @@ char *em_uri_from_camel (const char *curi);
char *em_uri_to_camel (const char *euri);
/* Run errors silently on the status bar */
-void em_utils_show_error_silent (struct _GtkWidget *widget);
-void em_utils_show_info_silent (struct _GtkWidget *widget);
+void em_utils_show_error_silent (GtkWidget *widget);
+void em_utils_show_info_silent (GtkWidget *widget);
/* is this address in the addressbook? caches results */
-gboolean em_utils_in_addressbook (struct _CamelInternetAddress *addr, gboolean local_only);
-struct _CamelMimePart *em_utils_contact_photo (struct _CamelInternetAddress *addr, gboolean local);
+gboolean em_utils_in_addressbook (CamelInternetAddress *addr, gboolean local_only);
+CamelMimePart *em_utils_contact_photo (CamelInternetAddress *addr, gboolean local);
-const char *em_utils_snoop_type(struct _CamelMimePart *part);
+const char *em_utils_snoop_type(CamelMimePart *part);
/* clears flag 'get_password_canceled' at every known accounts, so if needed, get_password will show dialog */
void em_utils_clear_get_password_canceled_accounts_flag (void);
-#ifdef __cplusplus
-}
-#endif /* __cplusplus */
+G_END_DECLS
#endif /* __EM_UTILS_H__ */
diff --git a/mail/mail-component.c b/mail/mail-component.c
index 77d125ce71..7fa34785d8 100644
--- a/mail/mail-component.c
+++ b/mail/mail-component.c
@@ -97,7 +97,6 @@
#define d(x)
-static void create_local_item_cb(EUserCreatableItemsHandler *handler, const char *item_type_name, void *data);
static void view_changed_timeout_remove (EComponentView *component_view);
#define MAIL_COMPONENT_DEFAULT(mc) if (mc == NULL) mc = mail_component_peek();
@@ -942,44 +941,44 @@ impl_quit(PortableServer_Servant servant, CORBA_Environment *ev)
// return list;
//}
-static int
-create_item(const char *type, EMFolderTreeModel *model, const char *uri, gpointer tree)
-{
- if (strcmp(type, "message") == 0) {
- if (!em_utils_check_user_can_send_mail(NULL))
- return 0;
-
- em_utils_compose_new_message(uri);
- } else if (strcmp(type, "folder") == 0) {
- em_folder_utils_create_folder(NULL, tree);
- } else
- return -1;
-
- return 0;
-}
-
-static void
-create_local_item_cb(EUserCreatableItemsHandler *handler, const char *item_type_name, void *data)
-{
- EMFolderTree *tree = data;
- char *uri = em_folder_tree_get_selected_uri(tree);
-
- create_item(item_type_name, em_folder_tree_get_model(tree), uri, (gpointer) tree);
- g_free(uri);
-}
+//static int
+//create_item(const char *type, EMFolderTreeModel *model, const char *uri, gpointer tree)
+//{
+// if (strcmp(type, "message") == 0) {
+// if (!em_utils_check_user_can_send_mail(NULL))
+// return 0;
+//
+// em_utils_compose_new_message(uri);
+// } else if (strcmp(type, "folder") == 0) {
+// em_folder_utils_create_folder(NULL, tree);
+// } else
+// return -1;
+//
+// return 0;
+//}
-static void
-impl_requestCreateItem (PortableServer_Servant servant,
- const CORBA_char *item_type_name,
- CORBA_Environment *ev)
-{
- MailComponent *mc = MAIL_COMPONENT(bonobo_object_from_servant(servant));
+//static void
+//create_local_item_cb(EUserCreatableItemsHandler *handler, const char *item_type_name, void *data)
+//{
+// EMFolderTree *tree = data;
+// char *uri = em_folder_tree_get_selected_uri(tree);
+//
+// create_item(item_type_name, em_folder_tree_get_model(tree), uri, (gpointer) tree);
+// g_free(uri);
+//}
- if (create_item(item_type_name, mc->priv->model, NULL, NULL) == -1) {
- CORBA_exception_set (ev, CORBA_USER_EXCEPTION,
- ex_GNOME_Evolution_Component_UnknownType, NULL);
- }
-}
+//static void
+//impl_requestCreateItem (PortableServer_Servant servant,
+// const CORBA_char *item_type_name,
+// CORBA_Environment *ev)
+//{
+// MailComponent *mc = MAIL_COMPONENT(bonobo_object_from_servant(servant));
+//
+// if (create_item(item_type_name, mc->priv->model, NULL, NULL) == -1) {
+// CORBA_exception_set (ev, CORBA_USER_EXCEPTION,
+// ex_GNOME_Evolution_Component_UnknownType, NULL);
+// }
+//}
static void
handleuri_got_folder(char *uri, CamelFolder *folder, void *data)
@@ -1258,12 +1257,12 @@ mail_component_class_init (MailComponentClass *class)
mepv->test = impl_mail_test;
}
-static void
-store_hash_free (struct _store_info *si)
-{
- si->removed = 1;
- store_info_unref(si);
-}
+//static void
+//store_hash_free (struct _store_info *si)
+//{
+// si->removed = 1;
+// store_info_unref(si);
+//}
static void
mail_component_init (MailComponent *component)
@@ -1417,63 +1416,63 @@ struct _CamelSession *mail_component_peek_session(MailComponent *component)
// return store;
//}
-static void
-store_disconnect (CamelStore *store, void *event_data, void *user_data)
-{
- camel_service_disconnect (CAMEL_SERVICE (store), TRUE, NULL);
- camel_object_unref (store);
-}
-
-void
-mail_component_remove_store (MailComponent *component, CamelStore *store)
-{
- MailComponentPrivate *priv;
-
- MAIL_COMPONENT_DEFAULT(component);
-
- priv = component->priv;
-
- /* Because the store_hash holds a reference to each store
- * used as a key in it, none of them will ever be gc'ed, meaning
- * any call to camel_session_get_{service,store} with the same
- * URL will always return the same object. So this works.
- */
-
- if (g_hash_table_lookup (priv->store_hash, store) == NULL)
- return;
-
- camel_object_ref (store);
- g_hash_table_remove (priv->store_hash, store);
-
- /* so i guess potentially we could have a race, add a store while one
- being removed. ?? */
- mail_note_store_remove (store);
-
- em_folder_tree_model_remove_store (priv->model, store);
-
- mail_async_event_emit (priv->async_event, MAIL_ASYNC_THREAD, (MailAsyncFunc) store_disconnect, store, NULL, NULL);
-}
-
-void
-mail_component_remove_store_by_uri (MailComponent *component, const char *uri)
-{
- CamelProvider *prov;
- CamelStore *store;
-
- MAIL_COMPONENT_DEFAULT(component);
-
- if (!(prov = camel_provider_get(uri, NULL)))
- return;
+//static void
+//store_disconnect (CamelStore *store, void *event_data, void *user_data)
+//{
+// camel_service_disconnect (CAMEL_SERVICE (store), TRUE, NULL);
+// camel_object_unref (store);
+//}
- if (!(prov->flags & CAMEL_PROVIDER_IS_STORAGE))
- return;
+//void
+//mail_component_remove_store (MailComponent *component, CamelStore *store)
+//{
+// MailComponentPrivate *priv;
+//
+// MAIL_COMPONENT_DEFAULT(component);
+//
+// priv = component->priv;
+//
+// /* Because the store_hash holds a reference to each store
+// * used as a key in it, none of them will ever be gc'ed, meaning
+// * any call to camel_session_get_{service,store} with the same
+// * URL will always return the same object. So this works.
+// */
+//
+// if (g_hash_table_lookup (priv->store_hash, store) == NULL)
+// return;
+//
+// camel_object_ref (store);
+// g_hash_table_remove (priv->store_hash, store);
+//
+// /* so i guess potentially we could have a race, add a store while one
+// being removed. ?? */
+// mail_note_store_remove (store);
+//
+// em_folder_tree_model_remove_store (priv->model, store);
+//
+// mail_async_event_emit (priv->async_event, MAIL_ASYNC_THREAD, (MailAsyncFunc) store_disconnect, store, NULL, NULL);
+//}
- store = (CamelStore *) camel_session_get_service (session, uri, CAMEL_PROVIDER_STORE, NULL);
- if (store != NULL) {
- mail_component_remove_store (component, store);
- camel_object_unref (store);
- }
-}
+//void
+//mail_component_remove_store_by_uri (MailComponent *component, const char *uri)
+//{
+// CamelProvider *prov;
+// CamelStore *store;
+//
+// MAIL_COMPONENT_DEFAULT(component);
+//
+// if (!(prov = camel_provider_get(uri, NULL)))
+// return;
+//
+// if (!(prov->flags & CAMEL_PROVIDER_IS_STORAGE))
+// return;
+//
+// store = (CamelStore *) camel_session_get_service (session, uri, CAMEL_PROVIDER_STORE, NULL);
+// if (store != NULL) {
+// mail_component_remove_store (component, store);
+// camel_object_unref (store);
+// }
+//}
// [KILL-BONOBO] Unused.
//int