Removed. (KEY_NUM_CALENDARS_TO_LOAD): New key, containing the number of

* gui/alarm-notify/save.c (KEY_CALENDARS_TO_LOAD):
Removed.
(KEY_NUM_CALENDARS_TO_LOAD): New key, containing the number of
calendars to load.
(BASE_KEY_CALENDAR_TO_LOAD): New base key name for the URIs of the
calendars to load.
(save_calendars_to_load): Rewrote to not use a sequence, to work
around an ORBit bug that causes bonobo-moniker-xmldb to crash.
(get_calendars_to_load): Likewise.

svn path=/trunk/; revision=14520
This commit is contained in:
Ettore Perazzoli
2001-10-31 08:30:35 +00:00
parent a419fc54e6
commit a377caf4d8
2 changed files with 44 additions and 66 deletions

View File

@ -1,3 +1,15 @@
2001-10-31 Ettore Perazzoli <ettore@ximian.com>
* gui/alarm-notify/save.c (KEY_CALENDARS_TO_LOAD):
Removed.
(KEY_NUM_CALENDARS_TO_LOAD): New key, containing the number of
calendars to load.
(BASE_KEY_CALENDAR_TO_LOAD): New base key name for the URIs of the
calendars to load.
(save_calendars_to_load): Rewrote to not use a sequence, to work
around an ORBit bug that causes bonobo-moniker-xmldb to crash.
(get_calendars_to_load): Likewise.
2001-10-30 Damon Chaplin <damon@ximian.com>
* gui/dialogs/comp-editor.c (comp_editor_remove_page): disconnect

View File

@ -33,7 +33,8 @@
/* Key names for the configuration values */
#define KEY_LAST_NOTIFICATION_TIME "/Calendar/AlarmNotify/LastNotificationTime"
#define KEY_CALENDARS_TO_LOAD "/Calendar/AlarmNotify/CalendarsToLoad"
#define KEY_NUM_CALENDARS_TO_LOAD "/Calendar/AlarmNotify/NumCalendarsToLoad"
#define BASE_KEY_CALENDAR_TO_LOAD "/Calendar/AlarmNotify/CalendarToLoad"
@ -145,10 +146,8 @@ void
save_calendars_to_load (GPtrArray *uris)
{
Bonobo_ConfigDatabase db;
int len, i;
GNOME_Evolution_Calendar_StringSeq *seq;
CORBA_Environment ev;
CORBA_any *any;
int len, i;
g_return_if_fail (uris != NULL);
@ -156,38 +155,30 @@ save_calendars_to_load (GPtrArray *uris)
if (db == CORBA_OBJECT_NIL)
return;
/* Build the sequence of URIs */
len = uris->len;
seq = GNOME_Evolution_Calendar_StringSeq__alloc ();
seq->_length = len;
seq->_buffer = CORBA_sequence_CORBA_string_allocbuf (len);
CORBA_sequence_set_release (seq, TRUE);
for (i = 0; i < len; i++) {
char *uri;
uri = uris->pdata[i];
seq->_buffer[i] = CORBA_string_dup (uri);
}
/* Save it */
any = bonobo_arg_new (TC_GNOME_Evolution_Calendar_StringSeq);
any->_value = seq;
CORBA_exception_init (&ev);
bonobo_config_set_value (db, KEY_CALENDARS_TO_LOAD, any, &ev);
bonobo_config_set_long (db, KEY_NUM_CALENDARS_TO_LOAD, len, &ev);
if (ev._major != CORBA_NO_EXCEPTION)
g_message ("save_calendars_to_load(): Could not save the list of calendars");
g_warning ("Cannot save config key %s -- %s", KEY_NUM_CALENDARS_TO_LOAD, ev._repo_id);
for (i = 0; i < len; i++) {
const char *uri;
char *key;
uri = uris->pdata[i];
key = g_strdup_printf ("%s%d", BASE_KEY_CALENDAR_TO_LOAD, i);
bonobo_config_set_string (db, key, uri, &ev);
if (ev._major != CORBA_NO_EXCEPTION)
g_warning ("Cannot save config key %s -- %s", key, ev._repo_id);
g_free (key);
}
CORBA_exception_free (&ev);
discard_config_db (db);
bonobo_arg_release (any); /* this releases the sequence */
}
/**
@ -202,11 +193,9 @@ GPtrArray *
get_calendars_to_load (void)
{
Bonobo_ConfigDatabase db;
GNOME_Evolution_Calendar_StringSeq *seq;
CORBA_Environment ev;
CORBA_any *any;
int len, i;
GPtrArray *uris;
int len, i;
db = get_config_db ();
if (db == CORBA_OBJECT_NIL)
@ -216,49 +205,26 @@ get_calendars_to_load (void)
CORBA_exception_init (&ev);
any = bonobo_config_get_value (db, KEY_CALENDARS_TO_LOAD,
TC_GNOME_Evolution_Calendar_StringSeq,
&ev);
discard_config_db (db);
if (ev._major == CORBA_USER_EXCEPTION) {
char *ex_id;
ex_id = CORBA_exception_id (&ev);
if (strcmp (ex_id, ex_Bonobo_ConfigDatabase_NotFound) == 0) {
CORBA_exception_free (&ev);
uris = g_ptr_array_new ();
g_ptr_array_set_size (uris, 0);
return uris;
}
}
len = bonobo_config_get_long_with_default (db, KEY_NUM_CALENDARS_TO_LOAD, 0, &ev);
if (ev._major != CORBA_NO_EXCEPTION) {
g_message ("get_calendars_to_load(): Could not get the list of calendars");
CORBA_exception_free (&ev);
return NULL;
g_warning ("Cannot read key %s -- %s", KEY_NUM_CALENDARS_TO_LOAD, ev._repo_id);
len = 0;
}
CORBA_exception_free (&ev);
/* Decode the value */
seq = any->_value;
len = seq->_length;
uris = g_ptr_array_new ();
g_ptr_array_set_size (uris, len);
for (i = 0; i < len; i++)
uris->pdata[i] = g_strdup (seq->_buffer[i]);
for (i = 0; i < len; i++) {
char *key;
#if 0
/* FIXME: The any and sequence are leaked. If we release them this way,
* we crash inside the ORB freeing routines :(
*/
bonobo_arg_release (any);
#endif
key = g_strdup_printf ("%s%d", BASE_KEY_CALENDAR_TO_LOAD, i);
uris->pdata[i] = bonobo_config_get_string_with_default (db, key, "", &ev);
if (ev._major != NULL)
g_warning ("Cannot read key %s -- %s", key, ev._repo_id);
g_free (key);
}
CORBA_exception_free (&ev);
return uris;
}