aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--mail/ChangeLog6
-rw-r--r--mail/Makefile.am2
-rw-r--r--mail/folder-browser-factory.c193
-rw-r--r--mail/folder-browser-factory.h23
-rw-r--r--mail/mail-component.c38
5 files changed, 39 insertions, 223 deletions
diff --git a/mail/ChangeLog b/mail/ChangeLog
index 17a38d9be6..32c12a7581 100644
--- a/mail/ChangeLog
+++ b/mail/ChangeLog
@@ -1,8 +1,14 @@
2003-11-14 Jeffrey Stedfast <fejj@ximian.com>
+ * folder-browser-factory.[c,h]: Removed.
+
* mail-component.c (folder_selected_cb): Don't create a new view
anymore, simply set the new folder uri on the folder browser. This
makes the mailer use a lot less memory than in 1.x
+ (view_control_activate_cb): Moved here from
+ folder-browser-factory.c
+ (impl_createControls): Connect to the activate signal on the view
+ control.
2003-11-14 Jeffrey Stedfast <fejj@ximian.com>
diff --git a/mail/Makefile.am b/mail/Makefile.am
index 858f25c3de..b3a5e6e828 100644
--- a/mail/Makefile.am
+++ b/mail/Makefile.am
@@ -119,8 +119,6 @@ libevolution_mail_la_SOURCES = \
em-junk-plugin.h \
em-html-stream.c \
em-html-stream.h \
- folder-browser-factory.c \
- folder-browser-factory.h \
mail-account-editor.c \
mail-account-editor.h \
mail-account-gui.c \
diff --git a/mail/folder-browser-factory.c b/mail/folder-browser-factory.c
deleted file mode 100644
index 194396b062..0000000000
--- a/mail/folder-browser-factory.c
+++ /dev/null
@@ -1,193 +0,0 @@
-/* -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 8 -*- */
-/*
- * Authors: Miguel de Icaza <miguel@ximian.com>
- *
- * Copyright 2002 Ximian, Inc. (www.ximian.com)
- *
- * This program is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 2 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 59 Temple Street #330, Boston, MA 02111-1307, USA.
- *
- */
-
-
-#ifdef HAVE_CONFIG_H
-#include <config.h>
-#endif
-
-#include <string.h>
-
-#include <bonobo/bonobo-main.h>
-#include <bonobo/bonobo-object.h>
-#include <bonobo/bonobo-generic-factory.h>
-#include <bonobo/bonobo-control.h>
-#include <bonobo/bonobo-ui-component.h>
-#include <bonobo/bonobo-ui-util.h>
-
-#include <gal/util/e-util.h>
-#include <gal/widgets/e-gui-utils.h>
-
-#include "widgets/menus/gal-view-menus.h"
-
-#include <gal/menus/gal-view-factory-etable.h>
-#include <gal/menus/gal-view-etable.h>
-
-#include "folder-browser-factory.h"
-
-#include "mail.h"
-#include "shell/Evolution.h"
-#include "mail-config.h"
-#include "mail-ops.h"
-#include "mail-session.h"
-#include "mail-folder-cache.h"
-
-#include "em-folder-browser.h"
-#include "em-format.h"
-
-#include "evolution-shell-component-utils.h"
-
-/* The FolderBrowser BonoboControls we have. */
-static EList *control_list = NULL;
-
-/* copied from mail-display.c for now.... */
-static GNOME_Evolution_ShellView
-fb_get_svi (BonoboControl *control)
-{
- Bonobo_ControlFrame control_frame;
- GNOME_Evolution_ShellView shell_view_interface;
- CORBA_Environment ev;
-
- control_frame = bonobo_control_get_control_frame (control, NULL);
-
- if (control_frame == NULL)
- return CORBA_OBJECT_NIL;
-
- CORBA_exception_init (&ev);
- shell_view_interface = Bonobo_Unknown_queryInterface (control_frame,
- "IDL:GNOME/Evolution/ShellView:1.0",
- &ev);
- CORBA_exception_free (&ev);
-
- if (shell_view_interface == CORBA_OBJECT_NIL)
- g_warning ("Control frame doesn't have Evolution/ShellView.");
-
- return shell_view_interface;
-}
-
-static void
-control_activate_cb (BonoboControl *control,
- gboolean activate,
- gpointer user_data)
-{
- BonoboUIComponent *uic;
-
- uic = bonobo_control_get_ui_component(control);
- g_assert (uic != NULL);
-
- if (activate) {
- Bonobo_UIContainer container;
-
- container = bonobo_control_get_remote_ui_container(control, NULL);
- bonobo_ui_component_set_container(uic, container, NULL);
- bonobo_object_release_unref(container, NULL);
-
- g_assert(container == bonobo_ui_component_get_container(uic));
- g_return_if_fail(container != CORBA_OBJECT_NIL);
-
- em_folder_view_activate(user_data, uic, activate);
- } else {
- em_folder_view_activate(user_data, uic, activate);
- bonobo_ui_component_unset_container(uic, NULL);
- }
-}
-
-static void
-control_destroy_cb (GtkObject *fb, GObject *control)
-{
- e_list_remove (control_list, control);
-}
-
-BonoboControl *
-folder_browser_factory_new_control (const char *uri)
-{
- BonoboControl *control;
- GtkWidget *fb;
-
-#if 0
- if (!(fb = folder_browser_new (uri)))
- return NULL;
-
- FOLDER_BROWSER (fb)->pref_master = TRUE; /* save UI settings changed in this FB */
-#endif
- fb = em_folder_browser_new();
- gtk_widget_show (fb);
- em_folder_view_set_folder_uri((EMFolderView *)fb, uri);
- em_format_set_session((EMFormat *)((EMFolderView *)fb)->preview, session);
-
- control = bonobo_control_new (fb);
-
- if (control == NULL) {
- g_object_unref (fb);
- return NULL;
- }
-
- g_signal_connect (control, "activate", G_CALLBACK (control_activate_cb), fb);
-
- g_object_weak_ref (G_OBJECT(control), (GWeakNotify) control_destroy_cb, fb);
-
- if (!control_list)
- control_list = e_list_new (NULL, NULL, NULL);
-
- e_list_append (control_list, control);
-
- return control;
-}
-
-EList *
-folder_browser_factory_get_control_list (void)
-{
- if (!control_list)
- control_list = e_list_new (NULL, NULL, NULL);
- return control_list;
-}
-
-struct _EMFolderBrowser *
-folder_browser_factory_get_browser(const char *uri)
-{
- EList *controls;
- EIterator *it;
- BonoboControl *control;
- EMFolderBrowser *fb = NULL;
-
- return NULL;
-
- if (control_list == NULL)
- return NULL;
-
- controls = folder_browser_factory_get_control_list ();
-
- it = e_list_get_iterator (controls);
- while (e_iterator_is_valid (it)) {
- control = BONOBO_CONTROL (e_iterator_get (it));
- fb = (EMFolderBrowser *)bonobo_control_get_widget(control);
- if (((EMFolderView *)fb)->folder_uri && strcmp (((EMFolderView *)fb)->folder_uri, uri) == 0)
- break;
- fb = NULL;
-
- e_iterator_next (it);
- }
-
- g_object_unref (it);
-
- return fb;
-}
diff --git a/mail/folder-browser-factory.h b/mail/folder-browser-factory.h
deleted file mode 100644
index 109938c27e..0000000000
--- a/mail/folder-browser-factory.h
+++ /dev/null
@@ -1,23 +0,0 @@
-/* -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 8 -*- */
-/*
- * folder-browser-factory.c: A Bonobo Control factory for Folder Browsers
- *
- * Author:
- * Miguel de Icaza (miguel@ximian.com)
- *
- * (C) 2000 Ximian, Inc.
- */
-
-#ifndef _FOLDER_BROWSER_FACTORY_H
-#define _FOLDER_BROWSER_FACTORY_H
-
-#include <bonobo/bonobo-control.h>
-#include "Evolution.h"
-#include "e-util/e-list.h"
-
-BonoboControl *folder_browser_factory_new_control (const char *uri);
-EList *folder_browser_factory_get_control_list (void);
-
-struct _EMFolderBrowser *folder_browser_factory_get_browser(const char *uri);
-
-#endif /* _FOLDER_BROWSER_FACTORY_H */
diff --git a/mail/mail-component.c b/mail/mail-component.c
index c036deac8b..a551eb26ce 100644
--- a/mail/mail-component.c
+++ b/mail/mail-component.c
@@ -33,12 +33,14 @@
#include <fcntl.h>
#include <errno.h>
+#include "em-popup.h"
+#include "em-utils.h"
+#include "em-format.h"
#include "em-folder-tree.h"
#include "em-folder-browser.h"
#include "em-folder-selector.h"
#include "em-folder-selection.h"
-#include "folder-browser-factory.h"
#include "mail-config.h"
#include "mail-component.h"
#include "mail-folder-cache.h"
@@ -49,8 +51,6 @@
#include "mail-send-recv.h"
#include "mail-session.h"
-#include "em-popup.h"
-#include "em-utils.h"
#include "em-migrate.h"
#include <gtk/gtklabel.h>
@@ -232,6 +232,31 @@ folder_selected_cb (EMFolderTree *emft, const char *path, const char *uri, EMFol
em_folder_view_set_folder_uri (view, uri);
}
+static void
+view_control_activate_cb (BonoboControl *control, gboolean activate, EMFolderView *view)
+{
+ BonoboUIComponent *uic;
+
+ uic = bonobo_control_get_ui_component (control);
+ g_assert (uic != NULL);
+
+ if (activate) {
+ Bonobo_UIContainer container;
+
+ container = bonobo_control_get_remote_ui_container (control, NULL);
+ bonobo_ui_component_set_container (uic, container, NULL);
+ bonobo_object_release_unref (container, NULL);
+
+ g_assert (container == bonobo_ui_component_get_container(uic));
+ g_return_if_fail (container != CORBA_OBJECT_NIL);
+
+ em_folder_view_activate (view, uic, activate);
+ } else {
+ em_folder_view_activate (view, uic, activate);
+ bonobo_ui_component_unset_container (uic, NULL);
+ }
+}
+
/* GObject methods. */
@@ -304,6 +329,7 @@ impl_createControls (PortableServer_Servant servant,
tree_widget = (GtkWidget *) priv->emft;
view_widget = em_folder_browser_new ();
+ em_format_set_session ((EMFormat *) ((EMFolderView *) view_widget)->preview, session);
gtk_widget_show (tree_widget);
gtk_widget_show (view_widget);
@@ -314,6 +340,8 @@ impl_createControls (PortableServer_Servant servant,
*corba_tree_control = CORBA_Object_duplicate (BONOBO_OBJREF (tree_control), ev);
*corba_view_control = CORBA_Object_duplicate (BONOBO_OBJREF (view_control), ev);
+ g_signal_connect (view_control, "activate", G_CALLBACK (view_control_activate_cb), view_widget);
+
g_signal_connect (tree_widget, "folder-selected", G_CALLBACK (folder_selected_cb), view_widget);
}
@@ -396,7 +424,7 @@ mail_component_init (MailComponent *component)
if (camel_mkdir (priv->base_directory, 0777) == -1 && errno != EEXIST)
abort ();
- priv->emft = em_folder_tree_new ();
+ priv->emft = (EMFolderTree *) em_folder_tree_new ();
/* EPFIXME: Turn into an object? */
mail_session_init (priv->base_directory);
@@ -642,7 +670,7 @@ mail_component_get_tree_model (MailComponent *component)
{
EMFolderTreeModel *model;
- model = em_folder_tree_get_model ((GtkTreeView *) component->priv->emft);
+ model = em_folder_tree_get_model (component->priv->emft);
g_object_ref (model);
return model;