aboutsummaryrefslogtreecommitdiffstats
path: root/executive-summary/evolution-services/executive-summary-component.c
diff options
context:
space:
mode:
Diffstat (limited to 'executive-summary/evolution-services/executive-summary-component.c')
-rw-r--r--executive-summary/evolution-services/executive-summary-component.c434
1 files changed, 201 insertions, 233 deletions
diff --git a/executive-summary/evolution-services/executive-summary-component.c b/executive-summary/evolution-services/executive-summary-component.c
index ba0c3b7832..1b1070da21 100644
--- a/executive-summary/evolution-services/executive-summary-component.c
+++ b/executive-summary/evolution-services/executive-summary-component.c
@@ -31,9 +31,7 @@
#include <gal/util/e-util.h>
#include "Executive-Summary.h"
-#include "executive-summary.h"
#include "executive-summary-component.h"
-#include "executive-summary-component-view.h"
#include "executive-summary-client.h"
static void executive_summary_component_destroy (GtkObject *object);
@@ -41,22 +39,26 @@ static void executive_summary_component_init (ExecutiveSummaryComponent *compone
static void executive_summary_component_class_init (ExecutiveSummaryComponentClass *esc_class);
#define PARENT_TYPE (bonobo_object_get_type ())
+#define FACTORY_PARENT_TYPE (bonobo_object_get_type ())
static BonoboObjectClass *parent_class;
+static BonoboObjectClass *factory_parent_class;
struct _ExecutiveSummaryComponentPrivate {
- EvolutionServicesCreateViewFn create_view;
- EvolutionServicesConfigureFn configure;
-
+ int dummy;
+#if 0
ExecutiveSummaryClient *owner_client;
-
- void *closure;
+#endif
+};
- GHashTable *id_to_view;
+struct _ExecutiveSummaryComponentFactoryPrivate {
+ EvolutionServicesCreateViewFn create_view;
+ void *closure;
};
/* CORBA interface */
static POA_GNOME_Evolution_Summary_Component__vepv SummaryComponent_vepv;
+static POA_GNOME_Evolution_Summary_ComponentFactory__vepv ComponentFactory_vepv;
static POA_GNOME_Evolution_Summary_Component *
create_servant (void)
@@ -80,37 +82,19 @@ create_servant (void)
return servant;
}
-#if 0
-static void
-impl_GNOME_Evolution_Summary_Component_supports (PortableServer_Servant servant,
- CORBA_boolean *html,
- CORBA_boolean *bonobo,
- CORBA_Environment *ev)
-{
- BonoboObject *bonobo_object;
- ExecutiveSummaryComponent *component;
- ExecutiveSummaryComponentPrivate *priv;
-
- bonobo_object = bonobo_object_from_servant (servant);
- component = EXECUTIVE_SUMMARY_COMPONENT (bonobo_object);
- priv = component->private;
-
- *html = (priv->create_html_view != NULL);
- *bonobo = (priv->create_bonobo_view != NULL);
-}
-#endif
-
static void
impl_GNOME_Evolution_Summary_Component_set_owner (PortableServer_Servant servant,
- GNOME_Evolution_Summary_ViewFrame summary,
- CORBA_Environment *ev)
+ GNOME_Evolution_Summary_ViewFrame summary,
+ CORBA_Environment *ev)
{
+#if 0
+
BonoboObject *bonobo_object;
ExecutiveSummaryComponent *component;
ExecutiveSummaryComponentPrivate *priv;
ExecutiveSummaryClient *client;
GNOME_Evolution_Summary_ViewFrame summary_duplicate;
-
+
bonobo_object = bonobo_object_from_servant (servant);
component = EXECUTIVE_SUMMARY_COMPONENT (bonobo_object);
priv = component->private;
@@ -122,12 +106,14 @@ impl_GNOME_Evolution_Summary_Component_set_owner (PortableServer_Servant servant
executive_summary_client_construct (client, summary_duplicate);
priv->owner_client = client;
+#endif
}
static void
impl_GNOME_Evolution_Summary_Component_unset_owner (PortableServer_Servant servant,
CORBA_Environment *ev)
{
+#if 0
BonoboObject *bonobo_object;
ExecutiveSummaryComponent *component;
ExecutiveSummaryComponentPrivate *priv;
@@ -141,127 +127,7 @@ impl_GNOME_Evolution_Summary_Component_unset_owner (PortableServer_Servant serva
bonobo_object_unref (BONOBO_OBJECT (priv->owner_client));
priv->owner_client = NULL;
-}
-
-static CORBA_long
-impl_GNOME_Evolution_Summary_Component_create_view (PortableServer_Servant servant,
- CORBA_long id,
- Bonobo_Control *control,
- CORBA_char **html,
- CORBA_char **title,
- CORBA_char **icon,
- CORBA_Environment *ev)
-{
- ExecutiveSummaryComponentView *view;
- BonoboObject *bonobo_object;
- ExecutiveSummaryComponent *component;
- ExecutiveSummaryComponentPrivate *priv;
- BonoboObject *initial_control;
- const char *initial_title, *initial_icon, *initial_html;
-
- bonobo_object = bonobo_object_from_servant (servant);
- component = EXECUTIVE_SUMMARY_COMPONENT (bonobo_object);
- priv = component->private;
-
- view = gtk_type_new (executive_summary_component_view_get_type ());
- executive_summary_component_view_set_id (view, id);
-
- (* priv->create_view) (component, view, priv->closure);
-
- /* Extract the values */
- initial_title = executive_summary_component_view_get_title (view);
- initial_icon = executive_summary_component_view_get_icon (view);
- initial_html = executive_summary_component_view_get_html (view);
- initial_control = executive_summary_component_view_get_control (view);
-
- /* Put the view in the hash table so it can be found later */
- g_hash_table_insert (priv->id_to_view, GINT_TO_POINTER (id), view);
-
- /* Duplicate the values */
- if (initial_control != NULL) {
- *control = bonobo_object_corba_objref (BONOBO_OBJECT (initial_control));
- } else {
- *control = CORBA_OBJECT_NIL;
- }
-
- *html = CORBA_string_dup (initial_html ? initial_html:"");
- *title = CORBA_string_dup (initial_title ? initial_title:"");
- *icon = CORBA_string_dup (initial_icon ? initial_icon:"");
-
- return id;
-}
-
-#if 0
-static CORBA_char *
-impl_GNOME_Evolution_Summary_Component_create_html_view (PortableServer_Servant servant,
- CORBA_char **title,
- CORBA_char **icon,
- CORBA_Environment *ev)
-{
- BonoboObject *bonobo_object;
- ExecutiveSummaryComponent *component;
- ExecutiveSummaryComponentPrivate *priv;
- CORBA_char *ret_str;
- char *ret_html;
- char *initial_title, *initial_icon;
-
- bonobo_object = bonobo_object_from_servant (servant);
- component = EXECUTIVE_SUMMARY_COMPONENT (bonobo_object);
- priv = component->private;
-
- ret_html = (* priv->create_html_view) (component, &initial_title,
- &initial_icon,
- priv->closure);
-
- *title = CORBA_string_dup (initial_title ? initial_title:"");
- *icon = CORBA_string_dup (initial_icon ? initial_icon:"");
- g_free (initial_title);
- g_free (initial_icon);
-
- ret_str = CORBA_string_dup (ret_html ? ret_html:"");
- g_free (ret_html);
- return ret_str;
-}
-#endif
-
-static void
-impl_GNOME_Evolution_Summary_Component_destroy_view (PortableServer_Servant servant,
- CORBA_long id,
- CORBA_Environment *ev)
-{
- BonoboObject *bonobo_object;
- ExecutiveSummaryComponent *component;
- ExecutiveSummaryComponentPrivate *priv;
- ExecutiveSummaryComponentView *view;
-
- g_print ("%s\n", __FUNCTION__);
- bonobo_object = bonobo_object_from_servant (servant);
- component = EXECUTIVE_SUMMARY_COMPONENT (bonobo_object);
- priv = component->private;
-
- view = g_hash_table_lookup (priv->id_to_view, GINT_TO_POINTER (id));
- if (view == NULL) {
- g_warning ("Unknown view: %d. Emit exception", id);
- return;
- }
-
- /* Destroy the view */
- gtk_object_unref (GTK_OBJECT (view));
-}
-
-static void
-impl_GNOME_Evolution_Summary_Component_configure (PortableServer_Servant servant,
- CORBA_Environment *ev)
-{
- BonoboObject *bonobo_object;
- ExecutiveSummaryComponent *component;
- ExecutiveSummaryComponentPrivate *priv;
-
- bonobo_object = bonobo_object_from_servant (servant);
- component = EXECUTIVE_SUMMARY_COMPONENT (bonobo_object);
- priv = component->private;
-
- (* priv->configure) (component, priv->closure);
+#endif
}
static void
@@ -278,11 +144,13 @@ executive_summary_component_destroy (GtkObject *object)
return;
CORBA_exception_init (&ev);
-
+
+#if 0
if (priv->owner_client != NULL) {
bonobo_object_unref (BONOBO_OBJECT (priv->owner_client));
priv->owner_client = NULL;
}
+#endif
CORBA_exception_free (&ev);
@@ -308,10 +176,7 @@ corba_class_init (void)
epv = g_new0 (POA_GNOME_Evolution_Summary_Component__epv, 1);
epv->setOwner = impl_GNOME_Evolution_Summary_Component_set_owner;
epv->unsetOwner = impl_GNOME_Evolution_Summary_Component_unset_owner;
- epv->createView = impl_GNOME_Evolution_Summary_Component_create_view;
- epv->destroyView = impl_GNOME_Evolution_Summary_Component_destroy_view;
- epv->configure = impl_GNOME_Evolution_Summary_Component_configure;
-
+
vepv = &SummaryComponent_vepv;
vepv->_base_epv = base_epv;
vepv->Bonobo_Unknown_epv = bonobo_object_get_epv ();
@@ -336,44 +201,37 @@ executive_summary_component_init (ExecutiveSummaryComponent *component)
{
ExecutiveSummaryComponentPrivate *priv;
- priv = g_new0 (ExecutiveSummaryComponentPrivate, 1);
+ priv = g_new (ExecutiveSummaryComponentPrivate, 1);
- priv->create_view = NULL;
- priv->configure = NULL;
-
- priv->owner_client = NULL;
- priv->closure = NULL;
-
- priv->id_to_view = g_hash_table_new (NULL, NULL);
component->private = priv;
}
+E_MAKE_TYPE (executive_summary_component, "ExecutiveSummaryComponent",
+ ExecutiveSummaryComponent, executive_summary_component_class_init,
+ executive_summary_component_init, PARENT_TYPE);
+
+
static void
executive_summary_component_construct (ExecutiveSummaryComponent *component,
- GNOME_Evolution_Summary_Component corba_object,
- EvolutionServicesCreateViewFn create_view,
- EvolutionServicesConfigureFn configure,
- void *closure)
+ GNOME_Evolution_Summary_Component corba_object)
{
- ExecutiveSummaryComponentPrivate *priv;
-
g_return_if_fail (component != NULL);
g_return_if_fail (corba_object != CORBA_OBJECT_NIL);
bonobo_object_construct (BONOBO_OBJECT (component), corba_object);
-
- priv = component->private;
-
- priv->create_view = create_view;
- priv->configure = configure;
-
- priv->closure = closure;
}
+
+/*** Public API ***/
+/**
+ * executive_summary_component_new:
+ *
+ * Creates a BonoboObject that implements the Summary::Component interface.
+ *
+ * Returns: A pointer to a BonoboObject.
+ */
BonoboObject *
-executive_summary_component_new (EvolutionServicesCreateViewFn create_view,
- EvolutionServicesConfigureFn configure,
- void *closure)
+executive_summary_component_new (void)
{
ExecutiveSummaryComponent *component;
POA_GNOME_Evolution_Summary_Component *servant;
@@ -387,23 +245,18 @@ executive_summary_component_new (EvolutionServicesCreateViewFn create_view,
corba_object = bonobo_object_activate_servant (BONOBO_OBJECT (component),
servant);
- executive_summary_component_construct (component, corba_object,
- create_view, configure, closure);
+ executive_summary_component_construct (component, corba_object);
return BONOBO_OBJECT (component);
}
-E_MAKE_TYPE (executive_summary_component, "ExecutiveSummaryComponent",
- ExecutiveSummaryComponent, executive_summary_component_class_init,
- executive_summary_component_init, PARENT_TYPE);
-
+#if 0
void
-executive_summary_component_set_title (ExecutiveSummaryComponent *component,
- gpointer view)
+executive_summary_component_flash (ExecutiveSummaryComponent *component,
+ gpointer view)
{
ExecutiveSummaryComponentPrivate *priv;
int id;
- const char *title;
g_return_if_fail (component != NULL);
g_return_if_fail (IS_EXECUTIVE_SUMMARY_COMPONENT (component));
@@ -416,18 +269,17 @@ executive_summary_component_set_title (ExecutiveSummaryComponent *component,
}
id = executive_summary_component_view_get_id (EXECUTIVE_SUMMARY_COMPONENT_VIEW (view));
- title = executive_summary_component_view_get_title (EXECUTIVE_SUMMARY_COMPONENT_VIEW (view));
- executive_summary_client_set_title (priv->owner_client, id, title);
+ executive_summary_client_flash (priv->owner_client, id);
}
void
-executive_summary_component_set_icon (ExecutiveSummaryComponent *component,
- gpointer view)
+executive_summary_component_update (ExecutiveSummaryComponent *component,
+ gpointer view)
{
ExecutiveSummaryComponentPrivate *priv;
int id;
- const char *icon;
+ const char *html;
g_return_if_fail (component != NULL);
g_return_if_fail (IS_EXECUTIVE_SUMMARY_COMPONENT (component));
@@ -435,68 +287,184 @@ executive_summary_component_set_icon (ExecutiveSummaryComponent *component,
priv = component->private;
if (priv->owner_client == NULL) {
- g_warning ("Component not owned!");
+ g_warning ("Component not ownded!");
return;
}
id = executive_summary_component_view_get_id (EXECUTIVE_SUMMARY_COMPONENT_VIEW (view));
- icon = executive_summary_component_view_get_icon (EXECUTIVE_SUMMARY_COMPONENT_VIEW (view));
+ html = executive_summary_component_view_get_html (EXECUTIVE_SUMMARY_COMPONENT_VIEW (view));
- executive_summary_client_set_icon (priv->owner_client, id, icon);
+ executive_summary_client_update (priv->owner_client, id, html);
}
+#endif
-void
-executive_summary_component_flash (ExecutiveSummaryComponent *component,
- gpointer view)
+
+/**** ComponentFactory implementation ****/
+
+static POA_GNOME_Evolution_Summary_ComponentFactory *
+create_factory_servant (void)
{
- ExecutiveSummaryComponentPrivate *priv;
- int id;
+ POA_GNOME_Evolution_Summary_ComponentFactory *servant;
+ CORBA_Environment ev;
+
+ servant = (POA_GNOME_Evolution_Summary_ComponentFactory *)g_new0 (BonoboObjectServant, 1);
+ servant->vepv = &ComponentFactory_vepv;
+
+ CORBA_exception_init (&ev);
+ POA_GNOME_Evolution_Summary_ComponentFactory__init ((PortableServer_Servant) servant, &ev);
+ if (ev._major != CORBA_NO_EXCEPTION) {
+ g_free (servant);
+ CORBA_exception_free (&ev);
+ return NULL;
+ }
+
+ CORBA_exception_free (&ev);
+
+ return servant;
+}
- g_return_if_fail (component != NULL);
- g_return_if_fail (IS_EXECUTIVE_SUMMARY_COMPONENT (component));
+static GNOME_Evolution_Summary_Component
+impl_GNOME_Evolution_Summary_ComponentFactory_createView (PortableServer_Servant servant,
+ CORBA_Environment *ev)
+{
+ BonoboObject *bonobo_object;
+ ExecutiveSummaryComponent *view;
+ ExecutiveSummaryComponentFactory *factory;
+ ExecutiveSummaryComponentFactoryPrivate *priv;
+ GNOME_Evolution_Summary_Component component, component_dup;
+ CORBA_Environment ev2;
- priv = component->private;
+ bonobo_object = bonobo_object_from_servant (servant);
+ factory = EXECUTIVE_SUMMARY_COMPONENT_FACTORY (bonobo_object);
+ priv = factory->private;
- if (priv->owner_client == NULL) {
- g_warning ("Component not owned!");
- return;
- }
+ g_warning ("Hello?");
+ view = (* priv->create_view) (factory, priv->closure);
+ g_return_val_if_fail (view != NULL, CORBA_OBJECT_NIL);
- id = executive_summary_component_view_get_id (EXECUTIVE_SUMMARY_COMPONENT_VIEW (view));
+ component = bonobo_object_corba_objref (BONOBO_OBJECT (view));
- executive_summary_client_flash (priv->owner_client, id);
+ return component;
}
-void
-executive_summary_component_update (ExecutiveSummaryComponent *component,
- gpointer view)
+static void
+corba_factory_init (void)
{
- ExecutiveSummaryComponentPrivate *priv;
- int id;
- const char *html;
+ POA_GNOME_Evolution_Summary_ComponentFactory__vepv *vepv;
+ POA_GNOME_Evolution_Summary_ComponentFactory__epv *epv;
+ PortableServer_ServantBase__epv *base_epv;
+
+ base_epv = g_new0 (PortableServer_ServantBase__epv, 1);
+ base_epv->_private = NULL;
+ base_epv->finalize = NULL;
+ base_epv->default_POA = NULL;
+
+ epv = g_new0 (POA_GNOME_Evolution_Summary_ComponentFactory__epv, 1);
+ epv->createView = impl_GNOME_Evolution_Summary_ComponentFactory_createView;
- g_return_if_fail (component != NULL);
- g_return_if_fail (IS_EXECUTIVE_SUMMARY_COMPONENT (component));
+ vepv = &ComponentFactory_vepv;
+ vepv->_base_epv = base_epv;
+ vepv->Bonobo_Unknown_epv = bonobo_object_get_epv ();
+ vepv->GNOME_Evolution_Summary_ComponentFactory_epv = epv;
+}
- priv = component->private;
+/* GtkObject methods */
+static void
+executive_summary_component_factory_destroy (GtkObject *object)
+{
+ ExecutiveSummaryComponentFactory *factory;
+ ExecutiveSummaryComponentFactoryPrivate *priv;
- if (priv->owner_client == NULL) {
- g_warning ("Component not ownded!");
+ factory = EXECUTIVE_SUMMARY_COMPONENT_FACTORY (object);
+ priv = factory->private;
+
+ if (priv == NULL)
return;
- }
- id = executive_summary_component_view_get_id (EXECUTIVE_SUMMARY_COMPONENT_VIEW (view));
- html = executive_summary_component_view_get_html (EXECUTIVE_SUMMARY_COMPONENT_VIEW (view));
+ g_free (priv);
+ factory->private = NULL;
- executive_summary_client_update (priv->owner_client, id, html);
+ (* GTK_OBJECT_CLASS (factory_parent_class)->destroy) (object);
}
-int
-executive_summary_component_create_unique_id (void)
+static void
+executive_summary_component_factory_class_init (ExecutiveSummaryComponentFactoryClass *klass)
{
- static int id = 0;
+ GtkObjectClass *object_class;
+
+ object_class = GTK_OBJECT_CLASS (klass);
+ object_class->destroy = executive_summary_component_factory_destroy;
- id++;
- g_print ("%s -- %d\n", __FUNCTION__, id);
- return id;
+ factory_parent_class = gtk_type_class (FACTORY_PARENT_TYPE);
+ corba_factory_init ();
}
+
+static void
+executive_summary_component_factory_init (ExecutiveSummaryComponentFactory *factory)
+{
+ ExecutiveSummaryComponentFactoryPrivate *priv;
+
+ priv = g_new (ExecutiveSummaryComponentFactoryPrivate, 1);
+
+ priv->create_view = NULL;
+ priv->closure = NULL;
+ factory->private = priv;
+}
+
+E_MAKE_TYPE (executive_summary_component_factory,
+ "ExecutiveSummaryComponentFactory",
+ ExecutiveSummaryComponentFactory,
+ executive_summary_component_factory_class_init,
+ executive_summary_component_factory_init, FACTORY_PARENT_TYPE);
+
+static void
+executive_summary_component_factory_construct (ExecutiveSummaryComponentFactory *factory,
+ GNOME_Evolution_Summary_ComponentFactory corba_object,
+ EvolutionServicesCreateViewFn create_view,
+ void *closure)
+{
+ ExecutiveSummaryComponentFactoryPrivate *priv;
+
+ g_return_if_fail (factory != NULL);
+ g_return_if_fail (corba_object != CORBA_OBJECT_NIL);
+
+ bonobo_object_construct (BONOBO_OBJECT (factory), corba_object);
+ priv = factory->private;
+
+ priv->create_view = create_view;
+ priv->closure = closure;
+}
+
+
+/*** Public API ***/
+/**
+ * executive_summary_component_factory_new:
+ * @create_view: A pointer to the function to create a new view.
+ * @closure: The data to be passed to the @create_view function when it is
+ * called.
+ *
+ * Creates a BonoboObject that implements the Summary::ComponentFactory
+ * interface.
+ *
+ * Returns: A pointer to a BonoboObject.
+ */
+BonoboObject *
+executive_summary_component_factory_new (EvolutionServicesCreateViewFn create_view,
+ void *closure)
+{
+ ExecutiveSummaryComponentFactory *factory;
+ POA_GNOME_Evolution_Summary_ComponentFactory *servant;
+ GNOME_Evolution_Summary_ComponentFactory corba_object;
+
+ servant = create_factory_servant ();
+ if (servant == NULL)
+ return NULL;
+
+ factory = gtk_type_new (executive_summary_component_factory_get_type ());
+ corba_object = bonobo_object_activate_servant (BONOBO_OBJECT (factory),
+ servant);
+ executive_summary_component_factory_construct (factory, corba_object,
+ create_view, closure);
+ return BONOBO_OBJECT (factory);
+}
+