diff options
author | Chris Toshok <toshok@helixcode.com> | 2001-01-10 07:55:13 +0800 |
---|---|---|
committer | Chris Toshok <toshok@src.gnome.org> | 2001-01-10 07:55:13 +0800 |
commit | f75e9f44f928347bb280e927de94e861dcf3260a (patch) | |
tree | 0875821393161e6f61210a6ad6597770f33a2ef7 /addressbook/gui/component | |
parent | 289cbd41bc8c3bdfe417f3c78e5061bbed07dcfb (diff) | |
download | gsoc2013-evolution-f75e9f44f928347bb280e927de94e861dcf3260a.tar.gz gsoc2013-evolution-f75e9f44f928347bb280e927de94e861dcf3260a.tar.zst gsoc2013-evolution-f75e9f44f928347bb280e927de94e861dcf3260a.zip |
connect with the EAddressbookView's status_message signal.
2001-01-09 Chris Toshok <toshok@helixcode.com>
* gui/component/addressbook.c (addressbook_factory_new_control):
connect with the EAddressbookView's status_message signal.
(set_status_message): set the status message on the ShellView
Interface associated with our control.
(retrieve_shell_view_interface_from_control): new function. get
the shell view inteface associated with a control.
* gui/widgets/e-addressbook-view.c
(e_addressbook_view_class_init): register status_message signal.
(status_message): new function, emit our status_message signal.
(change_view_type): connect with the view->object's
"status_message" signal.
* gui/widgets/e-addressbook-view.h (struct
_EAddressbookViewClass): add status_message signal.
svn path=/trunk/; revision=7346
Diffstat (limited to 'addressbook/gui/component')
-rw-r--r-- | addressbook/gui/component/addressbook.c | 62 |
1 files changed, 62 insertions, 0 deletions
diff --git a/addressbook/gui/component/addressbook.c b/addressbook/gui/component/addressbook.c index e9d4f45527..531106b2c4 100644 --- a/addressbook/gui/component/addressbook.c +++ b/addressbook/gui/component/addressbook.c @@ -603,6 +603,63 @@ addressbook_query_changed (ESearchBar *esb, AddressbookView *view) g_free (search_word); } +static GNOME_Evolution_ShellView +retrieve_shell_view_interface_from_control (BonoboControl *control) +{ + Bonobo_ControlFrame control_frame; + GNOME_Evolution_ShellView shell_view_interface; + CORBA_Environment ev; + + shell_view_interface = gtk_object_get_data (GTK_OBJECT (control), + "shell_view_interface"); + + if (shell_view_interface) + return shell_view_interface; + + control_frame = bonobo_control_get_control_frame (control); + + 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) + gtk_object_set_data (GTK_OBJECT (control), + "shell_view_interface", + shell_view_interface); + else + g_warning ("Control frame doesn't have Evolution/ShellView."); + + return shell_view_interface; +} + +static void +set_status_message (EAddressbookView *eav, const char *message, AddressbookView *view) +{ + CORBA_Environment ev; + GNOME_Evolution_ShellView shell_view_interface; + + CORBA_exception_init (&ev); + + shell_view_interface = retrieve_shell_view_interface_from_control (view->control); + + if (message == NULL || message[0] == 0) { + printf ("clearing message\n"); + GNOME_Evolution_ShellView_unsetMessage (shell_view_interface, &ev); + } + else { + printf ("setting message %s\n", message); + GNOME_Evolution_ShellView_setMessage (shell_view_interface, + message, 0 /* XXX */, &ev); + } + + CORBA_exception_free (&ev); +} + BonoboControl * addressbook_factory_new_control (void) { @@ -650,6 +707,11 @@ addressbook_factory_new_control (void) bonobo_control_set_properties (view->control, view->properties); + gtk_signal_connect (GTK_OBJECT (view->view), + "status_message", + GTK_SIGNAL_FUNC(set_status_message), + view); + view->uri = NULL; gtk_signal_connect (GTK_OBJECT (view->control), "activate", |