diff options
author | Dan Winship <danw@src.gnome.org> | 2001-04-28 05:08:08 +0800 |
---|---|---|
committer | Dan Winship <danw@src.gnome.org> | 2001-04-28 05:08:08 +0800 |
commit | 63e96e100291b330e75cc3b3b49795c720e5ffa0 (patch) | |
tree | e87946a64b23a35dacb190c43676f14691187b98 /camel/camel-session.h | |
parent | d06ca412e46d6b4fc2ecd3e1e956b1e8970c8867 (diff) | |
download | gsoc2013-evolution-63e96e100291b330e75cc3b3b49795c720e5ffa0.tar.gz gsoc2013-evolution-63e96e100291b330e75cc3b3b49795c720e5ffa0.tar.zst gsoc2013-evolution-63e96e100291b330e75cc3b3b49795c720e5ffa0.zip |
Redo this a lot so that instead of having a class full of callbacks, we
* camel-session.c: Redo this a lot so that instead of having a
class full of callbacks, we have a subclassable class. Also,
replace the increasingly horrifying
camel_session_query_authenticator with three new routines,
camel_session_get_password, camel_session_forget_password, and
camel_session_alert_user.
* camel-pgp-context.c:
* camel-pkcs7-context.c:
* camel-smime-context.c:
* providers/imap/camel-imap-store.c:
* providers/pop3/camel-pop3-store.c:
* providers/smtp/camel-smtp-transport.c:
Use camel_session_get_password / camel_session_forget_password.
* camel-tcp-stream-ssl.c (ssl_bad_cert): Use
camel_session_alert_user.
svn path=/trunk/; revision=9617
Diffstat (limited to 'camel/camel-session.h')
-rw-r--r-- | camel/camel-session.h | 143 |
1 files changed, 86 insertions, 57 deletions
diff --git a/camel/camel-session.h b/camel/camel-session.h index c73fa853ce..e777bdcb6c 100644 --- a/camel/camel-session.h +++ b/camel/camel-session.h @@ -43,22 +43,12 @@ extern "C" { #define CAMEL_IS_SESSION(o) (CAMEL_CHECK_TYPE((o), CAMEL_SESSION_TYPE)) -typedef enum { - CAMEL_AUTHENTICATOR_ASK, - CAMEL_AUTHENTICATOR_TELL, - CAMEL_AUTHENTICATOR_ACCEPT -} CamelAuthCallbackMode; - -typedef gpointer (*CamelAuthCallback) (CamelAuthCallbackMode mode, - char *data, gboolean secret, - CamelService *service, char *item, - CamelException *ex); - typedef gboolean (*CamelTimeoutCallback) (gpointer data); -typedef guint (*CamelTimeoutRegisterCallback) (guint32 interval, - CamelTimeoutCallback cb, - gpointer camel_data); -typedef gboolean (*CamelTimeoutRemoveCallback) (guint id); +typedef enum { + CAMEL_SESSION_ALERT_INFO, + CAMEL_SESSION_ALERT_WARNING, + CAMEL_SESSION_ALERT_ERROR +} CamelSessionAlertType; struct _CamelSession { @@ -66,16 +56,50 @@ struct _CamelSession struct _CamelSessionPrivate *priv; char *storage_path; - CamelAuthCallback authenticator; - CamelTimeoutRegisterCallback registrar; - CamelTimeoutRemoveCallback remover; - GHashTable *providers, *modules; }; typedef struct { CamelObjectClass parent_class; + void (*register_provider) (CamelSession *session, + CamelProvider *provider); + GList * (*list_providers) (CamelSession *session, + gboolean load); + CamelProvider * (*get_provider) (CamelSession *session, + const char *url_string, + CamelException *ex); + + CamelService * (*get_service) (CamelSession *session, + const char *url_string, + CamelProviderType type, + CamelException *ex); + char * (*get_storage_path) (CamelSession *session, + CamelService *service, + CamelException *ex); + + char * (*get_password) (CamelSession *session, + const char *prompt, + gboolean secret, + CamelService *service, + const char *item, + CamelException *ex); + void (*forget_password) (CamelSession *session, + CamelService *service, + const char *item, + CamelException *ex); + gboolean (*alert_user) (CamelSession *session, + CamelSessionAlertType type, + const char *prompt, + gboolean cancel); + + guint (*register_timeout) (CamelSession *session, + guint32 interval, + CamelTimeoutCallback callback, + gpointer user_data); + gboolean (*remove_timeout) (CamelSession *session, + guint handle); + } CamelSessionClass; @@ -85,53 +109,58 @@ typedef struct { CamelType camel_session_get_type (void); -CamelSession * camel_session_new (const char *storage_path, - CamelAuthCallback authenticator, - CamelTimeoutRegisterCallback registrar, - CamelTimeoutRemoveCallback remover); +void camel_session_construct (CamelSession *session, + const char *storage_path); -void camel_session_register_provider (CamelSession *session, - CamelProvider *provider); -GList * camel_session_list_providers (CamelSession *session, - gboolean load); +void camel_session_register_provider (CamelSession *session, + CamelProvider *provider); +GList * camel_session_list_providers (CamelSession *session, + gboolean load); -CamelProvider * camel_session_get_provider (CamelSession *session, - const char *url_string, - CamelException *ex); +CamelProvider * camel_session_get_provider (CamelSession *session, + const char *url_string, + CamelException *ex); -CamelService * camel_session_get_service (CamelSession *session, - const char *url_string, - CamelProviderType type, - CamelException *ex); -CamelService * camel_session_get_service_connected (CamelSession *session, - const char *url_string, - CamelProviderType type, - CamelException *ex); +CamelService * camel_session_get_service (CamelSession *session, + const char *url_string, + CamelProviderType type, + CamelException *ex); +CamelService * camel_session_get_service_connected (CamelSession *session, + const char *url_string, + CamelProviderType type, + CamelException *ex); #define camel_session_get_store(session, url_string, ex) \ ((CamelStore *) camel_session_get_service_connected (session, url_string, CAMEL_PROVIDER_STORE, ex)) #define camel_session_get_transport(session, url_string, ex) \ ((CamelTransport *) camel_session_get_service_connected (session, url_string, CAMEL_PROVIDER_TRANSPORT, ex)) -char * camel_session_get_storage_path (CamelSession *session, - CamelService *service, - CamelException *ex); - -gpointer camel_session_query_authenticator (CamelSession *session, - CamelAuthCallbackMode mode, - char *prompt, - gboolean secret, - CamelService *service, - char *item, - CamelException *ex); - -guint camel_session_register_timeout (CamelSession *session, - guint32 interval, - CamelTimeoutCallback callback, - gpointer user_data); - -gboolean camel_session_remove_timeout (CamelSession *session, - guint handle); +char * camel_session_get_storage_path (CamelSession *session, + CamelService *service, + CamelException *ex); + +char * camel_session_get_password (CamelSession *session, + const char *prompt, + gboolean secret, + CamelService *service, + const char *item, + CamelException *ex); +void camel_session_forget_password (CamelSession *session, + CamelService *service, + const char *item, + CamelException *ex); +gboolean camel_session_alert_user (CamelSession *session, + CamelSessionAlertType type, + const char *prompt, + gboolean cancel); + +guint camel_session_register_timeout (CamelSession *session, + guint32 interval, + CamelTimeoutCallback callback, + gpointer user_data); + +gboolean camel_session_remove_timeout (CamelSession *session, + guint handle); #ifdef __cplusplus } |