new method to set the default provider for a protocol.
1999-04-25 bertrand <Bertrand.Guiheneuf@inria.fr> * camel/camel-session.c (camel_session_set_provider): new method to set the default provider for a protocol. (camel_session_get_store_from_provider): new method to instantiate a folder from a provider. * camel/camel-provider.h: s/GString/gchar/g + typo fix. svn path=/trunk/; revision=878
This commit is contained in:
committed by
Bertrand Guiheneuf
parent
8fa0292a20
commit
f9595bb213
@ -1,5 +1,13 @@
|
||||
1999-04-25 bertrand <Bertrand.Guiheneuf@inria.fr>
|
||||
|
||||
* camel/camel-session.c (camel_session_set_provider):
|
||||
new method to set the default provider for a protocol.
|
||||
(camel_session_get_store_from_provider):
|
||||
new method to instantiate a folder from a provider.
|
||||
|
||||
* camel/camel-provider.h: s/GString/gchar/g
|
||||
+ typo fix.
|
||||
|
||||
* camel/camel-provider.[ch]:
|
||||
basic provider structure. Have to write the
|
||||
code for dynamic loading.
|
||||
|
||||
@ -40,10 +40,10 @@ typedef enum {
|
||||
typedef struct {
|
||||
GtkType object_type; /* used to create instance of the provider */
|
||||
ProviderType provider_type; /* is a store or a transport */
|
||||
GString *protocol; /* name of the protocol ("imap"/"smtp"/"mh" ...) */
|
||||
GString *provider_name; /* name of the provider ("Raymond the imap provider") */
|
||||
GString *description; /* Useful when multiple providers are available for a same protocol */
|
||||
} CameProvider;
|
||||
gchar *protocol; /* name of the protocol ("imap"/"smtp"/"mh" ...) */
|
||||
gchar *provider_name; /* name of the provider ("Raymond the imap provider") */
|
||||
gchar *description; /* Useful when multiple providers are available for a same protocol */
|
||||
} CamelProvider;
|
||||
|
||||
|
||||
|
||||
|
||||
@ -43,6 +43,13 @@ camel_session_class_init (CamelSessionClass *camel_session_class)
|
||||
|
||||
|
||||
|
||||
static void
|
||||
camel_session_init (CamelSession *session)
|
||||
{
|
||||
store_provider_list = g_hash_table_new (g_str_hash, g_str_equal);
|
||||
transport_provider_list = g_hash_table_new (g_str_hash, g_str_equal);
|
||||
}
|
||||
|
||||
|
||||
|
||||
GtkType
|
||||
@ -57,7 +64,7 @@ camel_session_get_type (void)
|
||||
sizeof (CamelSession),
|
||||
sizeof (CamelSessionClass),
|
||||
(GtkClassInitFunc) camel_session_class_init,
|
||||
(GtkObjectInitFunc) NULL,
|
||||
(GtkObjectInitFunc) camel_session_init,
|
||||
/* reserved_1 */ NULL,
|
||||
/* reserved_2 */ NULL,
|
||||
(GtkClassInitFunc) NULL,
|
||||
@ -69,3 +76,56 @@ camel_session_get_type (void)
|
||||
return camel_session_type;
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* camel_session_set_provider: set the default provider for a protocol
|
||||
* @session: session object for wich the provider will the default
|
||||
* @provider: provider object
|
||||
*
|
||||
* Set the default implementation for a protocol. The protocol
|
||||
* is determined by provider->protocol field (See CamelProtocol).
|
||||
* It overrides the default provider for this protocol.
|
||||
*
|
||||
**/
|
||||
void
|
||||
camel_session_set_provider (CamelSession *session, CamelProvider *provider)
|
||||
{
|
||||
GHashTable *table;
|
||||
|
||||
g_assert(session);
|
||||
g_assert(provider);
|
||||
|
||||
if (provider->provider_type == PROVIDER_STORE)
|
||||
table = session->store_provider_list;
|
||||
else
|
||||
table = session->transport_provider_list;
|
||||
|
||||
g_hash_table_insert (table, (gpointer)(provider->protocol), (gpointer)(provider));
|
||||
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
/**
|
||||
* camel_session_get_store_from_provider: create a folder instance for a given provider
|
||||
* @session: session object the folder will be initialized with
|
||||
* @provider: provider folder to instantiate
|
||||
*
|
||||
*
|
||||
*
|
||||
* Return value: the newly instantiated folder
|
||||
**/
|
||||
CamelStore *
|
||||
camel_session_get_store_from_provider (CamelSession *session, CamelProvider *provider)
|
||||
{
|
||||
CamelStore *store;
|
||||
|
||||
g_assert(session);
|
||||
g_assert(provider);
|
||||
|
||||
store = gtk_object_new (provider->object_type, NULL);
|
||||
#warning add session initialisation on object
|
||||
return store;
|
||||
}
|
||||
|
||||
@ -32,7 +32,7 @@ extern "C" {
|
||||
#endif /* __cplusplus }*/
|
||||
|
||||
#include <gtk/gtk.h>
|
||||
|
||||
#include "camel-provider.h"
|
||||
|
||||
#define CAMEL_SESSION_TYPE (camel_session_get_type ())
|
||||
#define CAMEL_SESSION(obj) (GTK_CHECK_CAST((obj), CAMEL_SESSION_TYPE, CamelSession))
|
||||
@ -46,6 +46,9 @@ typedef struct _CamelSession CamelSession;
|
||||
struct _CamelSession
|
||||
{
|
||||
GtkObject parent_object;
|
||||
GHashTable *store_provider_list; /* providers are identified by their protocol */
|
||||
GHashTable *transport_provider_list;
|
||||
|
||||
|
||||
};
|
||||
|
||||
@ -53,7 +56,7 @@ struct _CamelSession
|
||||
|
||||
typedef struct {
|
||||
GtkObjectClass parent_class;
|
||||
|
||||
|
||||
/* Virtual methods */
|
||||
|
||||
} CamelSessionClass;
|
||||
@ -66,6 +69,7 @@ GtkType camel_session_get_type (void);
|
||||
|
||||
|
||||
|
||||
void camel_session_set_provider (CamelSession *session, CamelProvider *provider);
|
||||
|
||||
|
||||
#ifdef __cplusplus
|
||||
|
||||
Reference in New Issue
Block a user