1. thats not 'easy'.
2. it wont work if you have the same path in different stores.

On Tue, 2003-03-11 at 22:29, Rodrigo Moya wrote:
> On Tue, 2003-03-11 at 02:58, Not Zed wrote:
> > Looked into this problem - the whole importer framework explictly only
> > supports local folders.
> > 
> I fixed it for the calendar importers some time ago. The fix was as easy
> as to convert the folderpath you get in the importer callbacks to its
> associated URI (in calendar/importers/icalendar-importer.c):
> 
> static char*
> get_uri_from_folder_path (ICalImporter *ici, const char *folderpath)
> {
>       GNOME_Evolution_StorageRegistry corba_registry;
>       GNOME_Evolution_StorageRegistry_StorageList *storage_list;
>       GNOME_Evolution_Folder *corba_folder;
>       CORBA_Environment ev;
>       int i;
>       char *uri = NULL;
> 
>       corba_registry = evolution_shell_client_get_storage_registry_interface
> (ici->shell_client);
>       if (!corba_registry) {
>               return g_strdup_printf ("%s/evolution/local/Calendar/calendar.ics",
>                                       g_get_home_dir ());
>       }
> 
>       CORBA_exception_init (&ev);
>       storage_list = GNOME_Evolution_StorageRegistry_getStorageList
> (corba_registry, &ev);
>       if (BONOBO_EX (&ev)) {
>               g_warning (_("Can't get storage list from registry: %s"),
> CORBA_exception_id (&ev));
>               CORBA_exception_free (&ev);
>               return NULL;
>       }
> 
>       CORBA_exception_free (&ev);
> 
>       for (i = 0; i < storage_list->_length; i++) {
>               CORBA_exception_init (&ev);
>               corba_folder = GNOME_Evolution_Storage_getFolderAtPath
> (storage_list->_buffer[i],
>                                                                       folderpath, 
> &ev);
>               if (BONOBO_EX (&ev)) {
>                       g_warning (_("Can't call getFolderAtPath on storage: %s"),
> CORBA_exception_id (&ev));
>                       CORBA_exception_free (&ev);
>                       continue;
>               }
>       
>               CORBA_exception_free (&ev);
> 
>               if (corba_folder) {
>                       ici->folder_contains_events = FALSE;
>                       ici->folder_contains_tasks = FALSE;
> 
>                       if (!strncmp (corba_folder->physicalUri, "file:", 5)) {
>                               if (!strcmp (corba_folder->type, "tasks")) {
>                                       ici->folder_contains_tasks = TRUE;
>                                       uri = g_strdup_printf ("%s/tasks.ics",
>                                                              
> corba_folder->physicalUri);
>                               }
>                               else if (!strcmp (corba_folder->type, "calendar")) {
>                                       ici->folder_contains_events = TRUE;
>                                       uri = g_strdup_printf ("%s/calendar.ics",
>                                                              
> corba_folder->physicalUri);
>                               }
>                       } else {
>                               uri = g_strdup (corba_folder->physicalUri);
> 
>                               if (!strcmp (corba_folder->type, "tasks") ||
>                                   !strcmp (corba_folder->type, "tasks/public"))
>                                       ici->folder_contains_tasks = TRUE;
>                               else if (!strcmp (corba_folder->type, "calendar") ||
>                                        !strcmp (corba_folder->type, 
> "calendar/public"))
>                                       ici->folder_contains_events = TRUE;
>                       }
> 
>                       CORBA_free (corba_folder);
>                       break;
>               }
>       }
> 
>       CORBA_free (storage_list);
> 
>       return uri;
> }
> 
> I guess we could move this function to some shared place and make all
> importers use it. This was all I needed to fix it for the calendar
> importer, so I guess for mail/addressbook, it should be the same.
> 
> cheers
> 

_______________________________________________
evolution-hackers maillist  -  [EMAIL PROTECTED]
http://lists.ximian.com/mailman/listinfo/evolution-hackers

Reply via email to