From 0fa29927fc5a0913388dc8fbc4a9b816c0a11119 Mon Sep 17 00:00:00 2001 From: Dan Winship Date: Thu, 2 Nov 2000 00:11:53 +0000 Subject: Add "highligted" field to Folder. Add update_folder method to * Evolution-Storage.idl: Add "highligted" field to Folder. Add update_folder method to StorageListener to change display_name and highlight status. * e-folder.c: Add "highlighted" to EFolder to match the Evolution::Folder type. (e_folder_get_highlighted, e_folder_set_highlighted): Added * evolution-storage-listener.c (impl_Evolution_StorageListener_update_folder, etc): * e-storage.c (e_storage_updated_folder, etc): * e-corba-storage.c (impl_StorageListener_update_folder, etc): Implement update_folder. * e-storage-set.c (storage_updated_folder_cb, etc): Re-emit updated_folder signals received from EStorage. * e-storage-set-view.c (various): Add another model column to the ETable and set it up as a bold_column based on e_folder_get_highligted. (updated_folder_cb, etc): Listen to EStorageSet update_folder signal and emit ETree node_changed signals. * evolution-storage.c (evolution_storage_update_folder): Client function to update a folder's display_name and highlighted status. * Evolution-LocalStorage.idl: * evolution-local-storage.c: * e-local-storage.c: Change set_display_name to update_folder to match Evolution::StorageListener svn path=/trunk/; revision=6328 --- shell/evolution-storage.c | 61 +++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 61 insertions(+) (limited to 'shell/evolution-storage.c') diff --git a/shell/evolution-storage.c b/shell/evolution-storage.c index 4d271cefa8..d1a1285297 100644 --- a/shell/evolution-storage.c +++ b/shell/evolution-storage.c @@ -544,6 +544,67 @@ evolution_storage_new_folder (EvolutionStorage *evolution_storage, return result; } +EvolutionStorageResult +evolution_storage_update_folder (EvolutionStorage *evolution_storage, + const char *path, const char *display_name, + gboolean highlighted) +{ + EvolutionStorageResult result; + EvolutionStoragePrivate *priv; + CORBA_Environment ev; + GList *p; + Evolution_Folder *corba_folder; + + g_return_val_if_fail (evolution_storage != NULL, + EVOLUTION_STORAGE_ERROR_INVALIDPARAMETER); + g_return_val_if_fail (EVOLUTION_IS_STORAGE (evolution_storage), + EVOLUTION_STORAGE_ERROR_INVALIDPARAMETER); + g_return_val_if_fail (path != NULL, EVOLUTION_STORAGE_ERROR_INVALIDPARAMETER); + g_return_val_if_fail (g_path_is_absolute (path), EVOLUTION_STORAGE_ERROR_INVALIDPARAMETER); + + priv = evolution_storage->priv; + + if (priv->corba_storage_listeners == NULL) + return EVOLUTION_STORAGE_ERROR_NOTREGISTERED; + + CORBA_exception_init (&ev); + + result = EVOLUTION_STORAGE_OK; + + for (p = priv->corba_storage_listeners; p != NULL; p = p->next) { + Evolution_StorageListener listener; + + listener = p->data; + Evolution_StorageListener_update_folder (listener, path, display_name, highlighted, &ev); + + if (ev._major != CORBA_NO_EXCEPTION) + continue; + + if (ev._major != CORBA_USER_EXCEPTION) + result = EVOLUTION_STORAGE_ERROR_CORBA; + else if (strcmp (CORBA_exception_id (&ev), ex_Evolution_StorageListener_NotFound) == 0) + result = EVOLUTION_STORAGE_ERROR_NOTFOUND; + else + result = EVOLUTION_STORAGE_ERROR_GENERIC; + + break; + } + + CORBA_exception_free (&ev); + + if (result == EVOLUTION_STORAGE_OK) { + corba_folder = e_folder_tree_get_folder (priv->folder_tree, path); + if (corba_folder != NULL) { + CORBA_free (corba_folder->display_name); + corba_folder->display_name = CORBA_string_dup (display_name); + corba_folder->highlighted = highlighted; + } else + result = EVOLUTION_STORAGE_ERROR_NOTFOUND; + } + + return result; +} + EvolutionStorageResult evolution_storage_removed_folder (EvolutionStorage *evolution_storage, const char *path) -- cgit v1.2.3