diff options
Diffstat (limited to 'shell/importer/evolution-importer-client.c')
-rw-r--r-- | shell/importer/evolution-importer-client.c | 124 |
1 files changed, 122 insertions, 2 deletions
diff --git a/shell/importer/evolution-importer-client.c b/shell/importer/evolution-importer-client.c index 1687679cc4..da17cecbfd 100644 --- a/shell/importer/evolution-importer-client.c +++ b/shell/importer/evolution-importer-client.c @@ -1,5 +1,5 @@ /* -*- Mode: C; indent-tabs-mode: t; c-basic-offset: 8; tab-width: 8 -*- */ -/* evolution-importer-listener.c +/* evolution-importer-client.c * * Copyright (C) 2000 Helix Code, Inc. * @@ -30,6 +30,8 @@ #include <bonobo/bonobo-main.h> #include <gal/util/e-util.h> +#include <liboaf/liboaf.h> + #include "GNOME_Evolution_Importer.h" #include "evolution-importer-client.h" @@ -254,7 +256,7 @@ init (EvolutionImporterClient *client) client->private = priv; } -void +static void evolution_importer_client_construct (EvolutionImporterClient *client, CORBA_Object corba_object) { @@ -265,6 +267,14 @@ evolution_importer_client_construct (EvolutionImporterClient *client, bonobo_object_client_construct (BONOBO_OBJECT_CLIENT (client), corba_object); } +/** + * evolution_importer_client_new: + * @objref: The CORBA_Object to make a client for. + * + * Makes a client for @objref. @objref should be an Evolution_Importer. + * + * Returns: A newly created EvolutionImporterClient. + */ EvolutionImporterClient * evolution_importer_client_new (const CORBA_Object objref) { @@ -278,7 +288,108 @@ evolution_importer_client_new (const CORBA_Object objref) return client; } +/** + * evolution_importer_client_new_from_id: + * @id: The oafiid of the component to make a client for. + * + * Makes a client for the object returned by activating @id. + * + * Returns: A newly created EvolutionImporterClient. + */ +EvolutionImporterClient * +evolution_importer_client_new_from_id (const char *id) +{ + CORBA_Environment ev; + CORBA_Object objref; + + g_return_val_if_fail (id != NULL, NULL); + + CORBA_exception_init (&ev); + objref = oaf_activate_from_id ((char *) id, 0, NULL, &ev); + if (ev._major != CORBA_NO_EXCEPTION) { + CORBA_exception_free (&ev); + g_warning ("Could not start %s.", id); + return NULL; + } + + if (objref == CORBA_OBJECT_NIL) { + g_warning ("Could not activate component %s", id); + return NULL; + } + + return evolution_importer_client_new (objref); +} + /* API */ +/** + * evolution_importer_client_support_format: + * @client: The EvolutionImporterClient. + * @filename: Name of the file to check. + * + * Checks whether @client is able to import @filename. + * + * Returns: TRUE if @client can import @filename, FALSE otherwise. + */ +gboolean +evolution_importer_client_support_format (EvolutionImporterClient *client, + const char *filename) +{ + GNOME_Evolution_Importer corba_importer; + gboolean result; + CORBA_Environment ev; + + g_return_val_if_fail (client != NULL, FALSE); + g_return_val_if_fail (EVOLUTION_IS_IMPORTER_CLIENT (client), FALSE); + g_return_val_if_fail (filename != NULL, FALSE); + + CORBA_exception_init (&ev); + corba_importer = bonobo_object_corba_objref (BONOBO_OBJECT (client)); + result = GNOME_Evolution_Importer_supportFormat (corba_importer, + filename, &ev); + CORBA_exception_free (&ev); + + return result; +} + +/** + * evolution_importer_client_load_file: + * @client: The EvolutionImporterClient. + * @filename: The file to load. + * + * Loads and initialises the importer. + * + * Returns: TRUE on sucess, FALSE on failure. + */ +gboolean +evolution_importer_client_load_file (EvolutionImporterClient *client, + const char *filename) +{ + GNOME_Evolution_Importer corba_importer; + gboolean result; + CORBA_Environment ev; + + g_return_val_if_fail (client != NULL, FALSE); + g_return_val_if_fail (EVOLUTION_IS_IMPORTER_CLIENT (client), FALSE); + g_return_val_if_fail (filename != NULL, FALSE); + + CORBA_exception_init (&ev); + corba_importer = bonobo_object_corba_objref (BONOBO_OBJECT (client)); + result = GNOME_Evolution_Importer_loadFile (corba_importer, + filename, &ev); + CORBA_exception_free (&ev); + + return result; +} + +/** + * evolution_importer_client_process_item: + * @client: The EvolutionImporterClient. + * @callback: The function to be called once the item has been processed. + * @closure: The data to be passed to this function. + * + * Starts importing the next item in the file and calls @callback when the + * item has finished importing. + */ void evolution_importer_client_process_item (EvolutionImporterClient *client, EvolutionImporterClientCallback callback, @@ -312,6 +423,15 @@ evolution_importer_client_process_item (EvolutionImporterClient *client, CORBA_exception_free (&ev); } +/** + * evolution_importer_client_get_error: + * @client: The EvolutionImporterClient. + * + * Gets the error as a string. + * + * Returns: The error as a string. If there is no error NULL is returned. + * Importers need not support this method and if so, NULL is also returned. + */ const char * evolution_importer_client_get_error (EvolutionImporterClient *client) { |